5575 lines
148 KiB
Text
5575 lines
148 KiB
Text
|
|
##################################################
|
||
|
|
# INFO
|
||
|
|
# Extra contracts for laamps. Various types of contracts with interesting things to get and do, like wars, travel, artifacts and more.
|
||
|
|
#
|
||
|
|
##################################################
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# GROUPS (for populate_task_contracts_for_area)
|
||
|
|
#
|
||
|
|
# laamp_contracts_war_group
|
||
|
|
# laamp_contracts_criminal_group
|
||
|
|
# laamp_contracts_transport_group
|
||
|
|
# laamp_contracts_diplomacy_group
|
||
|
|
# laamp_contracts_intrigue_group
|
||
|
|
#
|
||
|
|
#
|
||
|
|
# NOTICEBOARD GROUPS (for Visit Settlement - ep3_laamp_decision_event.1025)
|
||
|
|
# laamp_contracts_noticeboard_group
|
||
|
|
#
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
#
|
||
|
|
# laamp_raid_contract - Raid for Captives
|
||
|
|
# laamp_join_war_contract - Stand with Us
|
||
|
|
# laamp_help_claimant_contract - Press My Claims
|
||
|
|
# laamp_steal_artifact_contract - Reclaim Artifact
|
||
|
|
# laamp_construction_contract - Construction Work
|
||
|
|
# laamp_treasure_hunting_contract - Treasure Hunting
|
||
|
|
# laamp_cultural_minority_contract - Protect Heritage
|
||
|
|
# laamp_religious_minority_contract - Reward the Faithful
|
||
|
|
# laamp_prison_break_contract - Prison Break
|
||
|
|
# laamp_treasure_map_contract - Treasure Map
|
||
|
|
# laamp_legitimist_support_contract
|
||
|
|
# laamp_join_faction_contract - Support Faction
|
||
|
|
# laamp_help_faith_conversion_contract - Missionary Duties
|
||
|
|
# laamp_fight_faith_conversion_contract - Protect the Adherents
|
||
|
|
# laamp_help_train_commanders_contract - Knight's Coach
|
||
|
|
# laamp_help_find_secrets_contract - Private Eye
|
||
|
|
# laamp_help_fabricate_claim_contract - Forgotten Claims
|
||
|
|
# laamp_help_increase_control_contract - Fight Corruption
|
||
|
|
#
|
||
|
|
##################################################
|
||
|
|
|
||
|
|
## Raid for Captives
|
||
|
|
# scope:employer = ruler wanting to capture prisoners
|
||
|
|
# task_contract_target = character to declare war on
|
||
|
|
# task_contract_destination = capital of task_contract_target
|
||
|
|
laamp_raid_contract = {
|
||
|
|
group = laamp_contracts_war_group
|
||
|
|
icon = "gfx/interface/icons/casus_bellis/request_mercenary.dds"
|
||
|
|
travel = no
|
||
|
|
use_diplomatic_range = no
|
||
|
|
|
||
|
|
# 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 = {
|
||
|
|
OR = {
|
||
|
|
any_relation = {
|
||
|
|
type = rival
|
||
|
|
is_ai = yes
|
||
|
|
is_adult = yes
|
||
|
|
is_landed = yes
|
||
|
|
capital_province.building_max_garrison < root.current_military_strength
|
||
|
|
is_within_diplo_range = { CHARACTER = scope:employer }
|
||
|
|
any_courtier_or_guest = {
|
||
|
|
count >= 3
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
has_dynasty = yes
|
||
|
|
dynasty = prev.dynasty
|
||
|
|
}
|
||
|
|
is_consort_of = prev
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
any_neighboring_top_liege_realm_owner = {
|
||
|
|
is_ai = yes
|
||
|
|
is_adult = yes
|
||
|
|
is_landed = yes
|
||
|
|
capital_province.building_max_garrison < root.current_military_strength
|
||
|
|
house_has_feud_relation_with_trigger = { TARGET = scope:employer }
|
||
|
|
any_courtier_or_guest = {
|
||
|
|
count >= 3
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
has_dynasty = yes
|
||
|
|
dynasty = prev.dynasty
|
||
|
|
}
|
||
|
|
is_consort_of = prev
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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_mercenary_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
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { exists = scope:task_contract.task_contract_target }
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
any_neighboring_top_liege_realm_owner = {
|
||
|
|
is_ai = yes
|
||
|
|
is_adult = yes
|
||
|
|
is_landed = yes
|
||
|
|
capital_province.building_max_garrison < root.current_military_strength
|
||
|
|
house_has_feud_relation_with_trigger = { TARGET = scope:task_contract_employer }
|
||
|
|
any_courtier_or_guest = {
|
||
|
|
count >= 3
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
has_dynasty = yes
|
||
|
|
dynasty = prev.dynasty
|
||
|
|
}
|
||
|
|
is_consort_of = prev
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
random_neighboring_top_liege_realm_owner = {
|
||
|
|
limit = {
|
||
|
|
is_ai = yes
|
||
|
|
is_adult = yes
|
||
|
|
is_landed = yes
|
||
|
|
capital_province.building_max_garrison < root.current_military_strength
|
||
|
|
house_has_feud_relation_with_trigger = { TARGET = scope:task_contract_employer }
|
||
|
|
any_courtier_or_guest = {
|
||
|
|
count >= 3
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
has_dynasty = yes
|
||
|
|
dynasty = prev.dynasty
|
||
|
|
}
|
||
|
|
is_consort_of = prev
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
capital_province = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
random_relation = {
|
||
|
|
type = rival
|
||
|
|
limit = {
|
||
|
|
is_ai = yes
|
||
|
|
is_adult = yes
|
||
|
|
is_landed = yes
|
||
|
|
capital_province.building_max_garrison < root.current_military_strength
|
||
|
|
is_within_diplo_range = { CHARACTER = scope:task_contract_employer }
|
||
|
|
any_courtier_or_guest = {
|
||
|
|
count >= 3
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
has_dynasty = yes
|
||
|
|
dynasty = prev.dynasty
|
||
|
|
}
|
||
|
|
is_consort_of = prev
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
capital_province = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { exists = scope:task_contract.task_contract_destination }
|
||
|
|
}
|
||
|
|
scope:task_contract_target = {
|
||
|
|
capital_province = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract_target
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract_target
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0003
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
var:task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_raid_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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 = {
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
scope:task_contract.var:task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
}
|
||
|
|
#saving scopes for custom tooltip
|
||
|
|
save_scope_as = attacker
|
||
|
|
scope:task_contract.var:task_contract_target = {
|
||
|
|
save_scope_as = defender
|
||
|
|
}
|
||
|
|
custom_tooltip = ep3_laamp_raid_contract_cb_prisoners.tt_attacker
|
||
|
|
custom_tooltip = ep3_laamp_raid_contract_cb_prisoners.tt_gold
|
||
|
|
trigger_event = ep3_contract_event.0004
|
||
|
|
show_as_tooltip = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
faith != scope:defender.faith
|
||
|
|
}
|
||
|
|
add_piety = minor_piety_gain
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Huck 'em into our contact list.
|
||
|
|
add_contact = scope:task_contract_employer
|
||
|
|
# Give hook as well as contact
|
||
|
|
add_hook_if_possible_default_length_effect = {
|
||
|
|
TARGET = scope:task_contract_employer
|
||
|
|
TYPE = contact_list_weak_hook
|
||
|
|
}
|
||
|
|
war_contracts_completed_tracker_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_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
scope:task_contract.task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_outcome
|
||
|
|
value = flag:failure
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_tier
|
||
|
|
value = scope:task_contract.task_contract_tier
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0004
|
||
|
|
}
|
||
|
|
show_as_tooltip = {
|
||
|
|
task_contract_taker = {
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Stand with Us
|
||
|
|
# scope:employer = ruler needing help in a civil/religious/de_hure war
|
||
|
|
# scope:task_contract_war = civil/religious/de_hure war to join on the side of employer
|
||
|
|
laamp_join_war_contract = {
|
||
|
|
group = laamp_contracts_war_group
|
||
|
|
icon = "gfx/interface/icons/trait_level_tracks/mercenary.dds"
|
||
|
|
travel = no
|
||
|
|
use_diplomatic_range = no
|
||
|
|
|
||
|
|
# Validity Triggers
|
||
|
|
valid_to_create = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
employer_has_treasury_to_offer_job_trigger = yes
|
||
|
|
# Specific flavour triggers.
|
||
|
|
scope:employer = {
|
||
|
|
any_character_war = {
|
||
|
|
ep3_adventurer_mercenary_war_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
save_temporary_scope_as = temp_war
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#don't spawn contracts for the same wars
|
||
|
|
NOT = {
|
||
|
|
any_character_task_contract = {
|
||
|
|
task_contract_type = laamp_join_war_contract
|
||
|
|
var:task_contract_war ?= scope:temp_war
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#or if you are already an ally in a war with someone in that war, to prevent being an ally and an enemy at the same time
|
||
|
|
scope:temp_war = {
|
||
|
|
any_war_participant = {
|
||
|
|
NOT = {
|
||
|
|
is_allied_in_war = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_accept = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_accept_only_trigger = yes
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
custom_tooltip = {
|
||
|
|
text = laamp_join_war_contract.valid_war
|
||
|
|
any_character_task_contract = {
|
||
|
|
task_contract_type = laamp_join_war_contract
|
||
|
|
exists = var:task_contract_war
|
||
|
|
task_contract_employer = scope:employer
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_keep = {
|
||
|
|
exists = root.var:task_contract_war
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_very_rare_value
|
||
|
|
add = laamp_contracts_weight_up_mercenary_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 = {
|
||
|
|
random_character_war = {
|
||
|
|
limit = {
|
||
|
|
is_war_leader = prev
|
||
|
|
OR = {
|
||
|
|
using_civil_war_cb_trigger = yes
|
||
|
|
using_non_ghw_holy_war_cb_trigger = yes
|
||
|
|
using_de_jure_cb_trigger = yes
|
||
|
|
using_conquest_cb_trigger = yes
|
||
|
|
}
|
||
|
|
any_war_participant = {
|
||
|
|
this != scope:task_contract.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_war
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_war
|
||
|
|
value = scope:task_contract_war
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract_employer
|
||
|
|
}
|
||
|
|
scope:task_contract_war = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
is_attacker = scope:task_contract_employer
|
||
|
|
}
|
||
|
|
primary_defender = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
primary_attacker = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract_target
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0008
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_grace_period
|
||
|
|
days = 90
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_join_war_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_reward = {
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
var:task_contract_war = {
|
||
|
|
save_scope_as = war
|
||
|
|
}
|
||
|
|
task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
save_scope_as = attacker
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_as = task_contract_taker
|
||
|
|
save_scope_as = defender
|
||
|
|
custom_tooltip = laamp_join_war_contract.contribution_based_reward_gold
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
faith != scope:task_contract.var:task_contract_target.faith
|
||
|
|
}
|
||
|
|
custom_tooltip = laamp_join_war_contract.contribution_based_reward_piety
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_reward
|
||
|
|
value = flag:success_standard
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = war_contribution_value
|
||
|
|
value = "scope:war.war_contribution(scope:task_contract_taker)"
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
exists = scope:task_contract_employer.var:valuable_prisoners
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = war_valuable_prisoners
|
||
|
|
value = scope:task_contract_employer.var:valuable_prisoners
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_tier
|
||
|
|
value = scope:task_contract.task_contract_tier
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0013
|
||
|
|
# Huck 'em into our contact list.
|
||
|
|
add_contact = scope:task_contract_employer
|
||
|
|
# Give hook as well as contact
|
||
|
|
add_hook_if_possible_default_length_effect = {
|
||
|
|
TARGET = scope:task_contract_employer
|
||
|
|
TYPE = contact_list_weak_hook
|
||
|
|
}
|
||
|
|
war_contracts_completed_tracker_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" }
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { has_variable = task_contract_grace_period }
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract
|
||
|
|
var:task_contract_war = {
|
||
|
|
save_scope_as = war
|
||
|
|
}
|
||
|
|
task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
add_prestige = task_contract_failure_prestige_loss_full_value
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_reward
|
||
|
|
value = flag:failure_standard
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_tier
|
||
|
|
value = scope:task_contract.task_contract_tier
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0013
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Help Legitimate claim
|
||
|
|
# scope:employer = ruler with a valid claim
|
||
|
|
# task_contract_target = character to declare war on
|
||
|
|
# task_contract_destination = capital of task_contract_target
|
||
|
|
laamp_help_claimant_contract = {
|
||
|
|
group = laamp_contracts_war_group
|
||
|
|
icon = "gfx/interface/icons/casus_bellis/claim_cb.dds"
|
||
|
|
travel = no
|
||
|
|
use_diplomatic_range = no
|
||
|
|
|
||
|
|
# 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 = {
|
||
|
|
is_at_war = no
|
||
|
|
NAND = {
|
||
|
|
government_allows = administrative
|
||
|
|
liege = { government_allows = administrative }
|
||
|
|
}
|
||
|
|
liege = { has_realm_law_flag = vassal_all_wars_banned }
|
||
|
|
NOT = {
|
||
|
|
vassal_contract_has_flag = vassal_contract_war_override
|
||
|
|
}
|
||
|
|
any_claim = {
|
||
|
|
holder ?= {
|
||
|
|
NOT = { is_allied_to = scope:employer }
|
||
|
|
NOT = { any_liege_or_above = { this = scope:employer } }
|
||
|
|
scope:employer = {
|
||
|
|
has_cb_on = {
|
||
|
|
target = prev
|
||
|
|
cb = claim_cb
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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_mercenary_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
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { exists = scope:task_contract.task_contract_target }
|
||
|
|
}
|
||
|
|
random_claim = {
|
||
|
|
limit = {
|
||
|
|
holder ?= {
|
||
|
|
NOT = { is_allied_to = root }
|
||
|
|
NOT = { any_liege_or_above = { this = root } }
|
||
|
|
scope:task_contract_employer = {
|
||
|
|
has_cb_on = {
|
||
|
|
target = prev
|
||
|
|
cb = claim_cb
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_title
|
||
|
|
holder = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract_target
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract_target
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_title
|
||
|
|
value = scope:task_contract_title
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0060
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_help_claimant_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_reward = {
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
var:task_contract_title = {
|
||
|
|
save_scope_as = task_contract_title
|
||
|
|
}
|
||
|
|
task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
save_scope_as = attacker
|
||
|
|
show_as_tooltip = {
|
||
|
|
get_title = scope:task_contract_title
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_as = task_contract_taker
|
||
|
|
save_scope_as = defender
|
||
|
|
custom_tooltip = laamp_join_war_contract.contribution_based_reward_gold
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
faith != scope:task_contract.var:task_contract_target.faith
|
||
|
|
}
|
||
|
|
custom_tooltip = laamp_join_war_contract.contribution_based_reward_piety
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_reward
|
||
|
|
value = flag:success_standard
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_tier
|
||
|
|
value = scope:task_contract.task_contract_tier
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0013
|
||
|
|
# Huck 'em into our contact list.
|
||
|
|
add_contact = scope:task_contract_employer
|
||
|
|
# Give hook as well as contact
|
||
|
|
add_hook_if_possible_default_length_effect = {
|
||
|
|
TARGET = scope:task_contract_employer
|
||
|
|
TYPE = contact_list_weak_hook
|
||
|
|
}
|
||
|
|
war_contracts_completed_tracker_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_as = task_contract
|
||
|
|
var:task_contract_title = {
|
||
|
|
save_scope_as = task_contract_title
|
||
|
|
}
|
||
|
|
task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
add_prestige = task_contract_failure_prestige_loss_full_value
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_reward
|
||
|
|
value = flag:failure_standard
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_tier
|
||
|
|
value = scope:task_contract.task_contract_tier
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0013
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Reclaim Artifact
|
||
|
|
# scope:employer = ruler wanting to steal an artifact
|
||
|
|
# task_contract_target = character to steal an artifact from
|
||
|
|
# task_contract_object = an artifact to steal
|
||
|
|
laamp_steal_artifact_contract = {
|
||
|
|
group = laamp_contracts_criminal_group
|
||
|
|
icon = "gfx/interface/icons/character_interactions/icon_scheme_steal_back_artifact.dds"
|
||
|
|
travel = yes
|
||
|
|
use_diplomatic_range = no
|
||
|
|
is_criminal = yes
|
||
|
|
|
||
|
|
# 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 = {
|
||
|
|
OR = {
|
||
|
|
#target any artifact you have a claim on
|
||
|
|
any_claimed_artifact = {
|
||
|
|
artifact_owner = {
|
||
|
|
is_within_diplo_range = { CHARACTER = root }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#or if you are greedy target at least a masterwork artifact of someone that is up to 1 tier above you
|
||
|
|
AND = {
|
||
|
|
ai_greed >= 50
|
||
|
|
any_neighboring_top_liege_realm_owner = {
|
||
|
|
highest_held_title_tier <= {
|
||
|
|
value = scope:employer.highest_held_title_tier
|
||
|
|
add = 1
|
||
|
|
}
|
||
|
|
any_character_artifact = {
|
||
|
|
artifact_high_rarity_trigger = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_keep = {
|
||
|
|
exists = root.var:task_contract_object
|
||
|
|
root.var:task_contract_object = {
|
||
|
|
artifact_owner != root.task_contract_employer
|
||
|
|
}
|
||
|
|
task_contract_target = {
|
||
|
|
NOT = {
|
||
|
|
has_opinion_modifier = {
|
||
|
|
target = root.task_contract_taker
|
||
|
|
modifier = stole_artifact_from_me
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_accept = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_accept_only_trigger = yes
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
exists = root.var:task_contract_object
|
||
|
|
root.var:task_contract_object = {
|
||
|
|
artifact_owner != root.task_contract_employer
|
||
|
|
}
|
||
|
|
task_contract_target = {
|
||
|
|
NOT = {
|
||
|
|
has_opinion_modifier = {
|
||
|
|
target = root.task_contract_taker
|
||
|
|
modifier = stole_artifact_from_me
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_quite_rare_value
|
||
|
|
add = laamp_contracts_weight_up_intrigue_value
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
employs_court_position = master_thief_camp_officer
|
||
|
|
}
|
||
|
|
add = 50
|
||
|
|
}
|
||
|
|
add = task_contract_weight_employer_contact_list_value
|
||
|
|
scope:employer = { multiply = task_contract_weight_by_tier_value }
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_create = {
|
||
|
|
scope:contract = {
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_employer = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
any_claimed_artifact = {
|
||
|
|
artifact_owner = {
|
||
|
|
is_within_diplo_range = { CHARACTER = scope:task_contract.task_contract_taker }
|
||
|
|
}
|
||
|
|
save_temporary_scope_as = claimed_artifact
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:claimed_artifact = {
|
||
|
|
save_scope_as = task_contract_object
|
||
|
|
artifact_owner = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
random_neighboring_top_liege_realm_owner = {
|
||
|
|
limit = {
|
||
|
|
highest_held_title_tier <= {
|
||
|
|
value = scope:task_contract.task_contract_employer.highest_held_title_tier
|
||
|
|
add = 1
|
||
|
|
}
|
||
|
|
any_character_artifact = {
|
||
|
|
artifact_high_rarity_trigger = yes
|
||
|
|
save_temporary_scope_as = claimed_artifact
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:claimed_artifact = {
|
||
|
|
save_scope_as = task_contract_object
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract_target
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract.task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract_target
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_object
|
||
|
|
value = scope:task_contract_object
|
||
|
|
}
|
||
|
|
# 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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0009
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
var:task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_steal_artifact_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_reward = {
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
var:task_contract_object = {
|
||
|
|
save_scope_as = task_contract_object
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
root = {
|
||
|
|
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 = yes
|
||
|
|
EXTRA_REWARD = scope:extra_reward
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Update gallowsbait score.
|
||
|
|
laamp_rewards_apply_criminal_xp_effect = {
|
||
|
|
TRACK = thief
|
||
|
|
XP_MIN = gallowsbait_xp_medium_gain
|
||
|
|
XP_MAX = gallowsbait_xp_medium_gain
|
||
|
|
}
|
||
|
|
}
|
||
|
|
hidden_effect = {
|
||
|
|
scope:task_contract_object = {
|
||
|
|
set_owner = scope:task_contract.task_contract_employer
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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_as = task_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_taker = {
|
||
|
|
# Update gallowsbait score.
|
||
|
|
laamp_rewards_apply_criminal_xp_effect = {
|
||
|
|
TRACK = thief
|
||
|
|
XP_MIN = gallowsbait_xp_minor_gain
|
||
|
|
XP_MAX = gallowsbait_xp_minor_gain
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Construction Work
|
||
|
|
# scope:employer = ruler wanting to build a holding
|
||
|
|
# task_contract_destination = province where the holding is being built
|
||
|
|
laamp_construction_contract = {
|
||
|
|
group = laamp_contracts_transport_group
|
||
|
|
icon = "gfx/interface/icons/vassal_stances/builder.dds"
|
||
|
|
travel = no
|
||
|
|
use_diplomatic_range = no
|
||
|
|
|
||
|
|
# 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 = {
|
||
|
|
NOT = { government_has_flag = government_is_tribal }
|
||
|
|
any_held_title = {
|
||
|
|
county_has_empty_province_trigger = yes
|
||
|
|
}
|
||
|
|
short_term_gold > main_building_tier_1_cost
|
||
|
|
OR = {
|
||
|
|
has_trait = architect
|
||
|
|
AND = {
|
||
|
|
has_royal_court = yes
|
||
|
|
employs_court_position = royal_architect_court_position
|
||
|
|
any_court_position_holder = {
|
||
|
|
type = royal_architect_court_position
|
||
|
|
is_available_ai_adult = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
ai_has_builder_or_pious_builder_personality = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_keep = {
|
||
|
|
var:task_contract_destination ?= {
|
||
|
|
has_ongoing_construction = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_accept = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_accept_only_trigger = yes
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
#once you are there, you need to stay to complete the contract
|
||
|
|
trigger_if = {
|
||
|
|
limit = {
|
||
|
|
var:task_contract_destination.county = {
|
||
|
|
has_county_modifier = massive_construction_efforts_modifier
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_taker.capital_county = var:task_contract_destination.county
|
||
|
|
}
|
||
|
|
NOT = { #start_city_construction_decision invalidation
|
||
|
|
var:task_contract_destination = {
|
||
|
|
has_variable = laamp_city_construction
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_default_value
|
||
|
|
add = laamp_contracts_weight_up_transport_value
|
||
|
|
add = task_contract_weight_employer_contact_list_value
|
||
|
|
scope:employer = { multiply = task_contract_weight_by_tier_value }
|
||
|
|
}
|
||
|
|
# On_Actions
|
||
|
|
on_create = {
|
||
|
|
scope:contract = {
|
||
|
|
save_scope_as = task_contract
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { has_variable = task_contract_destination }
|
||
|
|
}
|
||
|
|
task_contract_employer = {
|
||
|
|
ordered_held_title = {
|
||
|
|
limit = { county_has_empty_province_trigger = yes }
|
||
|
|
order_by = development_level
|
||
|
|
random_county_province = {
|
||
|
|
limit = { province_has_no_holding_trigger = yes }
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
random_list = {
|
||
|
|
1 = {
|
||
|
|
begin_create_holding = {
|
||
|
|
type = castle_holding
|
||
|
|
refund_cost = { gold = 0 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
1 = {
|
||
|
|
modifier = {
|
||
|
|
add = 10
|
||
|
|
county = { county_has_no_city_trigger = yes }
|
||
|
|
}
|
||
|
|
begin_create_holding = {
|
||
|
|
type = church_holding
|
||
|
|
refund_cost = { gold = 0 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
1 = {
|
||
|
|
modifier = {
|
||
|
|
add = 10
|
||
|
|
county = { county_has_no_church_trigger = yes }
|
||
|
|
}
|
||
|
|
begin_create_holding = {
|
||
|
|
type = city_holding
|
||
|
|
refund_cost = { gold = 0 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
remove_short_term_gold = main_building_tier_1_cost
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
var:task_contract_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# 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_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0001
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_construction_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var:task_contract_destination.county = {
|
||
|
|
remove_county_modifier = massive_construction_efforts_modifier
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
remove_character_modifier = ep3_construction_contract_modifier
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_reward = {
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
scope:task_contract.var:task_contract_destination = {
|
||
|
|
switch = {
|
||
|
|
trigger = has_holding_type
|
||
|
|
castle_holding = {
|
||
|
|
scope:task_contract.task_contract_taker = {
|
||
|
|
add_prestige = task_contract_success_prestige_gain_critical_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
church_holding = {
|
||
|
|
scope:task_contract.task_contract_taker = {
|
||
|
|
add_piety = task_contract_success_piety_gain_critical_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
city_holding = {
|
||
|
|
scope:task_contract.task_contract_taker = {
|
||
|
|
add_gold = scope:task_contract.var:gold_success_standard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
is_ai = no
|
||
|
|
}
|
||
|
|
scope:task_contract.task_contract_employer = {
|
||
|
|
pay_short_term_gold = {
|
||
|
|
target = scope:task_contract.task_contract_taker
|
||
|
|
gold = scope:task_contract.var:gold_success_standard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
add_gold = scope:task_contract.var:gold_success_standard
|
||
|
|
}
|
||
|
|
reverse_add_opinion = {
|
||
|
|
modifier = succeeded_task_contract_opinion
|
||
|
|
target = scope:task_contract.task_contract_employer
|
||
|
|
opinion = 20
|
||
|
|
}
|
||
|
|
# Huck 'em into our contact list.
|
||
|
|
add_contact = scope:task_contract.task_contract_employer
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
success_critical = {
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
scope:task_contract.var:task_contract_destination = {
|
||
|
|
switch = {
|
||
|
|
trigger = has_holding_type
|
||
|
|
castle_holding = {
|
||
|
|
scope:task_contract.task_contract_taker = {
|
||
|
|
add_prestige = task_contract_success_prestige_gain_full_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
church_holding = {
|
||
|
|
scope:task_contract.task_contract_taker = {
|
||
|
|
add_piety = task_contract_success_piety_gain_full_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
city_holding = {
|
||
|
|
scope:task_contract.task_contract_taker = {
|
||
|
|
add_gold = scope:task_contract.var:gold_success_critical
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
is_ai = no
|
||
|
|
}
|
||
|
|
scope:task_contract.task_contract_employer = {
|
||
|
|
pay_short_term_gold = {
|
||
|
|
target = scope:task_contract.task_contract_taker
|
||
|
|
gold = scope:task_contract.var:gold_success_critical
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
add_gold = scope:task_contract.var:gold_success_critical
|
||
|
|
}
|
||
|
|
reverse_add_opinion = {
|
||
|
|
modifier = critically_succeeded_task_contract_opinion
|
||
|
|
target = scope:task_contract.task_contract_employer
|
||
|
|
opinion = 50
|
||
|
|
}
|
||
|
|
# Huck 'em into our contact list.
|
||
|
|
add_contact = scope:task_contract.task_contract_employer
|
||
|
|
# Give hook as well as contact
|
||
|
|
add_hook_if_possible_default_length_effect = {
|
||
|
|
TARGET = scope:task_contract.task_contract_employer
|
||
|
|
TYPE = contact_list_weak_hook
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var:task_contract_destination.county ?= {
|
||
|
|
remove_county_modifier = massive_construction_efforts_modifier
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Treasure Hunting
|
||
|
|
# scope:employer = ruler wanting a treasure
|
||
|
|
# task_contract_destination = province where you go to find a treasure - set in the treasure_hunting_contract_decision decision
|
||
|
|
laamp_treasure_hunting_contract = {
|
||
|
|
group = laamp_contracts_transport_group
|
||
|
|
icon = "gfx/interface/icons/inspirations/adventure_inspiration.dds"
|
||
|
|
travel = no
|
||
|
|
use_diplomatic_range = no
|
||
|
|
|
||
|
|
# 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.
|
||
|
|
#There can only be one contract of this type at a time, so that the decision is easier to manage
|
||
|
|
any_character_task_contract = {
|
||
|
|
NOT = { has_task_contract_type = laamp_treasure_hunting_contract }
|
||
|
|
}
|
||
|
|
scope:employer = {
|
||
|
|
highest_held_title_tier > tier_duchy
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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_transport_value
|
||
|
|
add = task_contract_weight_employer_contact_list_value
|
||
|
|
scope:employer = { multiply = task_contract_weight_by_tier_value }
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_as = task_contract_taker
|
||
|
|
}
|
||
|
|
task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
}
|
||
|
|
scope:task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0005
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination ?= {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_treasure_hunting_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_reward = {
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
add_prestige = task_contract_success_prestige_gain_full_value
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
is_ai = no
|
||
|
|
}
|
||
|
|
scope:task_contract.task_contract_employer = {
|
||
|
|
pay_short_term_gold = {
|
||
|
|
target = scope:task_contract.task_contract_taker
|
||
|
|
gold = task_contract_success_gold_gain_full_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
add_short_term_gold = task_contract_success_gold_gain_full_value
|
||
|
|
}
|
||
|
|
reverse_add_opinion = {
|
||
|
|
modifier = succeeded_task_contract_opinion
|
||
|
|
target = scope:task_contract.task_contract_employer
|
||
|
|
opinion = 20
|
||
|
|
}
|
||
|
|
# Huck 'em into our contact list.
|
||
|
|
add_contact = scope:task_contract.task_contract_employer
|
||
|
|
# Give hook as well as contact
|
||
|
|
add_hook_if_possible_default_length_effect = {
|
||
|
|
TARGET = scope:task_contract.task_contract_employer
|
||
|
|
TYPE = contact_list_weak_hook
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Protect Heritage
|
||
|
|
# scope:employer = a minority vassal of the same culture as root wanting to get title revocation rights vassal contract
|
||
|
|
# task_contract_target = liege of task_contract_employer
|
||
|
|
# task_contract_destination = capital of task_contract_employer
|
||
|
|
laamp_cultural_minority_contract = {
|
||
|
|
group = laamp_contracts_diplomacy_group
|
||
|
|
icon = "gfx/interface/icons/character_interactions/icon_culture.dds"
|
||
|
|
travel = yes
|
||
|
|
use_diplomatic_range = no
|
||
|
|
|
||
|
|
# 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 = {
|
||
|
|
top_liege != this
|
||
|
|
has_vassal_stance = minority
|
||
|
|
liege ?= {
|
||
|
|
is_ai = yes
|
||
|
|
}
|
||
|
|
vassal_contract_obligation_level_can_be_increased = title_revocation_rights
|
||
|
|
culture = {
|
||
|
|
this != scope:employer.liege.culture
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_accept = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_accept_only_trigger = yes
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
save_temporary_scope_as = task_contract
|
||
|
|
var:task_contract_target = {
|
||
|
|
any_vassal = {
|
||
|
|
scope:task_contract.var:task_contract_employer = this
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# 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_almost_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_Actions
|
||
|
|
on_create = {
|
||
|
|
scope:contract = {
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_employer = {
|
||
|
|
liege = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
capital_province = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract_target
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract.task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract_target
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract_destination
|
||
|
|
}
|
||
|
|
# 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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0020
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
var:task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_cultural_minority_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract_target = {
|
||
|
|
any_vassal = {
|
||
|
|
count = all
|
||
|
|
scope:task_contract_employer != this
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_invalidation_reason
|
||
|
|
value = flag:not_vassal
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0012
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# 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" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
type = event_toast_effect_good
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
root = {
|
||
|
|
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 = yes
|
||
|
|
EXTRA_REWARD = scope:extra_reward
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract.task_contract_taker.culture != scope:task_contract.task_contract_employer.culture
|
||
|
|
}
|
||
|
|
scope:task_contract.task_contract_taker.culture = {
|
||
|
|
change_cultural_acceptance = {
|
||
|
|
target = scope:task_contract.task_contract_employer.culture
|
||
|
|
value = low_positive_culture_acceptance
|
||
|
|
desc = cultural_acceptance_laamp_cultural_minority_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
show_as_tooltip = {
|
||
|
|
scope:task_contract.task_contract_employer = {
|
||
|
|
vassal_contract_set_obligation_level = {
|
||
|
|
type = title_revocation_rights
|
||
|
|
level = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
type = event_toast_effect_bad
|
||
|
|
title = laamp_transport_contract.transport_failed
|
||
|
|
root = {
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Reward the Faithful
|
||
|
|
# scope:employer = a minority vassal of the same faith as root wanting to get religious rights vassal contract
|
||
|
|
# task_contract_target = liege of task_contract_employer
|
||
|
|
# task_contract_destination = capital of task_contract_employer
|
||
|
|
laamp_religious_minority_contract = {
|
||
|
|
group = laamp_contracts_diplomacy_group
|
||
|
|
icon = "gfx/interface/icons/character_interactions/religious.dds"
|
||
|
|
travel = yes
|
||
|
|
use_diplomatic_range = no
|
||
|
|
|
||
|
|
# 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 = {
|
||
|
|
top_liege != this
|
||
|
|
has_vassal_stance = minority
|
||
|
|
liege ?= {
|
||
|
|
is_ai = yes
|
||
|
|
}
|
||
|
|
vassal_contract_obligation_level_can_be_increased = religious_rights
|
||
|
|
faith != liege.faith
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_accept = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_accept_only_trigger = yes
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
save_temporary_scope_as = task_contract
|
||
|
|
var:task_contract_target = {
|
||
|
|
any_vassal = {
|
||
|
|
scope:task_contract.var:task_contract_employer = this
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# 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_almost_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_Actions
|
||
|
|
on_create = {
|
||
|
|
scope:contract = {
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_employer = {
|
||
|
|
liege = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
capital_province = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract_target
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract.task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract_target
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract_destination
|
||
|
|
}
|
||
|
|
# 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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0021
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
var:task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_religious_minority_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract_target = {
|
||
|
|
any_vassal = {
|
||
|
|
count = all
|
||
|
|
scope:task_contract_employer != this
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_invalidation_reason
|
||
|
|
value = flag:not_vassal
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0012
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# 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" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
type = event_toast_effect_good
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
root = {
|
||
|
|
# Standard Rewards.
|
||
|
|
laamp_rewards_disburse_ordinary_currency_effect = {
|
||
|
|
GOLD = 0
|
||
|
|
PRESTIGE = 0
|
||
|
|
PIETY = task_contract_success_piety_gain_full_value
|
||
|
|
PROVISIONS = 0
|
||
|
|
OPINION = task_contract_opinion_standard_reward_value
|
||
|
|
OPINION_TYPE = succeeded_task_contract_opinion
|
||
|
|
CONTACT = yes
|
||
|
|
CONTACT_HOOK = yes
|
||
|
|
EXTRA_REWARD = scope:extra_reward
|
||
|
|
}
|
||
|
|
}
|
||
|
|
show_as_tooltip = {
|
||
|
|
scope:task_contract.task_contract_employer = {
|
||
|
|
vassal_contract_set_obligation_level = {
|
||
|
|
type = religious_rights
|
||
|
|
level = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
type = event_toast_effect_bad
|
||
|
|
title = laamp_transport_contract.transport_failed
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
root = {
|
||
|
|
# 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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Prison Break
|
||
|
|
# scope:employer = a character that has a spouse, family member, soulmate or best friend imprisoned by another character
|
||
|
|
# task_contract_target = imprisoner
|
||
|
|
# task_contract_destination = capital of task_contract_target
|
||
|
|
# task_contract_object = the imprisoned character to be rescued
|
||
|
|
laamp_prison_break_contract = {
|
||
|
|
group = laamp_contracts_intrigue_group
|
||
|
|
icon = "gfx/interface/icons/casus_bellis/fp3_free_house_member.dds"
|
||
|
|
travel = no
|
||
|
|
use_diplomatic_range = no
|
||
|
|
|
||
|
|
# 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 = {
|
||
|
|
OR = {
|
||
|
|
any_spouse = {
|
||
|
|
is_imprisoned = yes
|
||
|
|
NOR = {
|
||
|
|
is_imprisoned_by = scope:employer
|
||
|
|
is_imprisoned_by = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
any_close_family_member = {
|
||
|
|
is_imprisoned = yes
|
||
|
|
NOR = {
|
||
|
|
is_imprisoned_by = scope:employer
|
||
|
|
is_imprisoned_by = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
any_relation = {
|
||
|
|
type = soulmate
|
||
|
|
is_imprisoned = yes
|
||
|
|
NOR = {
|
||
|
|
is_imprisoned_by = scope:employer
|
||
|
|
is_imprisoned_by = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
any_relation = {
|
||
|
|
type = best_friend
|
||
|
|
is_imprisoned = yes
|
||
|
|
NOR = {
|
||
|
|
is_imprisoned_by = scope:employer
|
||
|
|
is_imprisoned_by = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_keep = {
|
||
|
|
exists = root.var:task_contract_object
|
||
|
|
root.var:task_contract_object = {
|
||
|
|
is_imprisoned = yes
|
||
|
|
}
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_accept = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_accept_only_trigger = yes
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
var:task_contract_object ?= {
|
||
|
|
is_imprisoned = yes
|
||
|
|
is_alive = yes
|
||
|
|
}
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_very_rare_value
|
||
|
|
add = laamp_contracts_weight_up_intrigue_value
|
||
|
|
scope:employer = {
|
||
|
|
if = {
|
||
|
|
limit = { has_trait = compassionate }
|
||
|
|
add = task_contract_weight_bonus_employer_has_associated_traits_value
|
||
|
|
}
|
||
|
|
multiply = task_contract_weight_by_tier_value
|
||
|
|
}
|
||
|
|
add = task_contract_weight_employer_contact_list_value
|
||
|
|
}
|
||
|
|
|
||
|
|
on_create = {
|
||
|
|
scope:contract = {
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_employer = {
|
||
|
|
every_spouse = {
|
||
|
|
limit = {
|
||
|
|
is_imprisoned = yes
|
||
|
|
NOR = {
|
||
|
|
is_imprisoned_by = scope:task_contract.task_contract_employer
|
||
|
|
is_imprisoned_by = scope:task_contract.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_to_list = character_to_breakout
|
||
|
|
}
|
||
|
|
every_close_family_member = {
|
||
|
|
limit = {
|
||
|
|
is_imprisoned = yes
|
||
|
|
NOR = {
|
||
|
|
is_imprisoned_by = scope:task_contract.task_contract_employer
|
||
|
|
is_imprisoned_by = scope:task_contract.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_to_list = character_to_breakout
|
||
|
|
}
|
||
|
|
every_relation = {
|
||
|
|
type = soulmate
|
||
|
|
limit = {
|
||
|
|
is_imprisoned = yes
|
||
|
|
NOR = {
|
||
|
|
is_imprisoned_by = scope:task_contract.task_contract_employer
|
||
|
|
is_imprisoned_by = scope:task_contract.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_to_list = character_to_breakout
|
||
|
|
}
|
||
|
|
every_relation = {
|
||
|
|
type = best_friend
|
||
|
|
limit = {
|
||
|
|
is_imprisoned = yes
|
||
|
|
NOR = {
|
||
|
|
is_imprisoned_by = scope:task_contract.task_contract_employer
|
||
|
|
is_imprisoned_by = scope:task_contract.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_to_list = character_to_breakout
|
||
|
|
}
|
||
|
|
ordered_in_list = {
|
||
|
|
list = character_to_breakout
|
||
|
|
order_by = prison_break_value
|
||
|
|
save_scope_as = task_contract_object
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract.task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_object
|
||
|
|
value = scope:task_contract_object
|
||
|
|
}
|
||
|
|
scope:task_contract_object = {
|
||
|
|
imprisoner = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
capital_province = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_character_flag = being_prisonbroken_by_laamp
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract_target
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract_target
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract_destination
|
||
|
|
}
|
||
|
|
# 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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0030
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
var:task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
var:task_contract_object = {
|
||
|
|
save_scope_as = task_contract_object
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_prison_break_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract_object = {
|
||
|
|
is_alive = no
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_invalidation_reason
|
||
|
|
value = flag:escortee_dead
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0012
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract_object = {
|
||
|
|
is_imprisoned = no
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_invalidation_reason
|
||
|
|
value = flag:prisoner_free
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0012
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# 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" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
type = event_toast_effect_good
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
# Standard Rewards.
|
||
|
|
scope: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_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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:task_contract.var:task_contract_object = {
|
||
|
|
scope:task_contract.var:task_contract_target = {
|
||
|
|
save_scope_as = imprisoner
|
||
|
|
}
|
||
|
|
escape_from_prison_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_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
type = event_toast_effect_bad
|
||
|
|
title = laamp_transport_contract.transport_failed
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
# Standard Penalties.
|
||
|
|
scope: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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Treasure Map
|
||
|
|
# scope:employer = root
|
||
|
|
# task_contract_target = root
|
||
|
|
# contract_treasure_location = ep3_laamp_decision_event.1025
|
||
|
|
# contract_picked_up_in_location = ep3_laamp_decision_event.1025
|
||
|
|
laamp_treasure_map_contract = {
|
||
|
|
group = laamp_contracts_noticeboard_group #These are created in the Visit Local Settlement-decision
|
||
|
|
icon = "gfx/interface/icons/character_interactions/icon_contract_escort.dds"
|
||
|
|
|
||
|
|
# 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.
|
||
|
|
#There can only be one contract of this type at a time
|
||
|
|
any_task_contract = {
|
||
|
|
NOT = { has_task_contract_type = laamp_treasure_map_contract }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_accept = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_accept_only_trigger = yes
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
#We're not already enrolled in a treasure map contract
|
||
|
|
NOT = {
|
||
|
|
any_character_artifact = { has_variable = 1025_treasure_map }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
#We haven't already located the treasure
|
||
|
|
trigger_if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { has_variable = 0045_used_map }
|
||
|
|
}
|
||
|
|
root.task_contract_taker = {
|
||
|
|
any_character_artifact = { has_variable = 1025_treasure_map }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#The employer is still alive and free
|
||
|
|
root.task_contract_employer = {
|
||
|
|
is_alive = yes
|
||
|
|
is_imprisoned = no
|
||
|
|
NOT = { has_trait = incapable }
|
||
|
|
}
|
||
|
|
# 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_transport_value
|
||
|
|
add = task_contract_weight_employer_contact_list_value
|
||
|
|
scope:employer = { multiply = task_contract_weight_by_tier_value }
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = { save_scope_as = task_contract_taker }
|
||
|
|
task_contract_employer = { save_scope_as = task_contract_employer }
|
||
|
|
|
||
|
|
#Create quest item Treasure Map
|
||
|
|
scope:task_contract_taker = {
|
||
|
|
create_artifact = {
|
||
|
|
name = treasure_map
|
||
|
|
description = treasure_map_desc
|
||
|
|
modifier = artifact_monthly_minor_prestige_1_modifier
|
||
|
|
type = miscellaneous
|
||
|
|
visuals = pocket_map
|
||
|
|
max_durability = 10
|
||
|
|
history = {
|
||
|
|
type = given
|
||
|
|
actor = scope:task_contract_employer
|
||
|
|
recipient = scope:task_contract_taker
|
||
|
|
location = scope:task_contract.var:contract_picked_up_in_location
|
||
|
|
}
|
||
|
|
save_scope_as = newly_created_map
|
||
|
|
}
|
||
|
|
#Set variables
|
||
|
|
scope:newly_created_map ?= {
|
||
|
|
set_variable = 1025_treasure_map
|
||
|
|
set_variable = {
|
||
|
|
name = picked_up_in_location
|
||
|
|
value = scope:task_contract.var:contract_picked_up_in_location
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = artifact_treasure_location
|
||
|
|
value = scope:task_contract.var:contract_treasure_location
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
exists = var:picked_up_in_location
|
||
|
|
exists = var:artifact_treasure_location
|
||
|
|
}
|
||
|
|
set_artifact_description = treasure_map_desc
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Chuck the employer in there as well
|
||
|
|
add_courtier = scope:task_contract_employer
|
||
|
|
scope:task_contract_employer = {
|
||
|
|
add_character_flag = {
|
||
|
|
flag = blocked_from_leaving
|
||
|
|
years = 11 #The map should break first, and is set to 10 years
|
||
|
|
}
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0043
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Employer died? Map decayed?
|
||
|
|
on_invalidated = {
|
||
|
|
#Employer unavailable
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
task_contract_employer = {
|
||
|
|
OR = {
|
||
|
|
is_alive = no
|
||
|
|
has_trait = incapable
|
||
|
|
is_imprisoned = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_employer = { save_scope_as = task_contract_employer }
|
||
|
|
#Save the location of the employer
|
||
|
|
var:contract_picked_up_in_location = { save_scope_as = original_contract_location }
|
||
|
|
#Save contract
|
||
|
|
save_scope_as = task_contract
|
||
|
|
#Save tier, realistically always 1
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_tier
|
||
|
|
value = root.task_contract_tier
|
||
|
|
}
|
||
|
|
#Save the destination
|
||
|
|
var:contract_treasure_location ?= { save_scope_as = task_contract_destination }
|
||
|
|
#Destroy the historical artifact if the LAAMP is an AI
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
has_variable = has_unique_historical_artifact
|
||
|
|
task_contract_taker = { is_ai = yes }
|
||
|
|
}
|
||
|
|
var:has_unique_historical_artifact = { save_scope_as = historical_artifact }
|
||
|
|
hidden_effect = { destroy_artifact = scope:historical_artifact }
|
||
|
|
}
|
||
|
|
#Send the appropriate event
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_treasure_map_contract
|
||
|
|
}
|
||
|
|
#Dead
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract_employer = { is_alive = no }
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0041
|
||
|
|
}
|
||
|
|
#Incapable
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract_employer = { has_trait = incapable }
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0041
|
||
|
|
}
|
||
|
|
#Imprisoned
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract_employer = { is_imprisoned = yes }
|
||
|
|
}
|
||
|
|
#Save the invalidation flag
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_invalidation_reason
|
||
|
|
value = flag:unlanded_employer_is_imprisoned
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0012
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#No longer excavating
|
||
|
|
remove_variable ?= ep3_laamp_decision_1000_is_excavating
|
||
|
|
}
|
||
|
|
#Decay-destroyed map is handled via on_artifact_broken_through_decay, leading to ep3_contract_event.0040
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_reward = {
|
||
|
|
#Something to display in the Contract Reward window. Not actually used.
|
||
|
|
success_qualified = {
|
||
|
|
effect = {
|
||
|
|
save_scope_as = task_contract
|
||
|
|
if = { # Camp building extra Criminal Rewards: +50%.
|
||
|
|
limit = {
|
||
|
|
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards }
|
||
|
|
}
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:yes }
|
||
|
|
}
|
||
|
|
else = { # Standard Reward.
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
}
|
||
|
|
#Check for provision overflows
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = provisions_to_add_value
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.domicile.max_provisions
|
||
|
|
max = old_adventurer_stashed_provisions_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = total_provisions_after_reward_value
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.domicile.provisions
|
||
|
|
add = scope:provisions_to_add_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#If there is an overflow
|
||
|
|
if = {
|
||
|
|
limit = { scope:total_provisions_after_reward_value > task_contract_taker.domicile.max_provisions }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = provisions_to_add_value
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.domicile.max_provisions
|
||
|
|
subtract = task_contract_taker.domicile.provisions
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = provisions_overflow_value
|
||
|
|
value = {
|
||
|
|
value = scope:total_provisions_after_reward_value
|
||
|
|
subtract = task_contract_taker.domicile.max_provisions
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = provisions_transformed_to_gold_value
|
||
|
|
value = {
|
||
|
|
value = scope:total_provisions_after_reward_value
|
||
|
|
subtract = task_contract_taker.domicile.max_provisions
|
||
|
|
multiply = 0.05
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
scope:task_contract.task_contract_employer = {
|
||
|
|
pay_short_term_gold = {
|
||
|
|
target = scope:task_contract.task_contract_taker
|
||
|
|
gold = {
|
||
|
|
value = {
|
||
|
|
value = old_adventurer_stashed_gold_value
|
||
|
|
#Extra rewards
|
||
|
|
if = {
|
||
|
|
limit = { scope:extra_reward = flag:yes }
|
||
|
|
multiply = task_contract_extra_reward_multiplier_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
stress_impact = {
|
||
|
|
base = major_stress_impact_loss
|
||
|
|
honest = minor_stress_impact_loss
|
||
|
|
}
|
||
|
|
#1000 seems like a fine, round number for some old adventurer to have stashed somewhere
|
||
|
|
domicile ?= {
|
||
|
|
change_provisions = {
|
||
|
|
#We're capped
|
||
|
|
if = {
|
||
|
|
limit = { provisions >= max_provisions }
|
||
|
|
value = 0 #No provisions, you're full
|
||
|
|
}
|
||
|
|
#We're not capped and our max cap is less than 1000
|
||
|
|
else_if = {
|
||
|
|
limit = { max_provisions < old_adventurer_stashed_provisions_value }
|
||
|
|
value = {
|
||
|
|
value = max_provisions
|
||
|
|
subtract = provisions
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#We're not capped and our max cap is equal to -or more- than 1000
|
||
|
|
else = {
|
||
|
|
value = {
|
||
|
|
value = max_provisions
|
||
|
|
subtract = provisions
|
||
|
|
max = old_adventurer_stashed_provisions_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Inform the player about the overflow
|
||
|
|
if = {
|
||
|
|
limit = { exists = scope:provisions_transformed_to_gold_value }
|
||
|
|
custom_tooltip = {
|
||
|
|
text = overflowing_provisions_to_gold.tt
|
||
|
|
add_gold = scope:provisions_transformed_to_gold_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Handled in ep3_contract_event.0050
|
||
|
|
success_standard = {
|
||
|
|
visible = no
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
if = { # Camp building extra Criminal Rewards: +50%.
|
||
|
|
limit = {
|
||
|
|
task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards }
|
||
|
|
}
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:yes }
|
||
|
|
}
|
||
|
|
else = { # Standard Reward.
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
}
|
||
|
|
#Check for provision overflows
|
||
|
|
if = {
|
||
|
|
limit = { task_contract_taker.domicile.max_provisions < old_adventurer_stashed_provisions_value }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = provisions_to_add_value
|
||
|
|
value = task_contract_taker.domicile.max_provisions
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = provisions_to_add_value
|
||
|
|
value = old_adventurer_stashed_provisions_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = total_provisions_after_reward_value
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.domicile.provisions
|
||
|
|
add = scope:provisions_to_add_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#If there is an overflow
|
||
|
|
if = {
|
||
|
|
limit = { scope:total_provisions_after_reward_value > task_contract_taker.domicile.max_provisions }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = provisions_to_add_value
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.domicile.max_provisions
|
||
|
|
subtract = task_contract_taker.domicile.provisions
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = provisions_overflow_value
|
||
|
|
value = {
|
||
|
|
value = scope:total_provisions_after_reward_value
|
||
|
|
subtract = task_contract_taker.domicile.max_provisions
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = provisions_transformed_to_gold_value
|
||
|
|
value = {
|
||
|
|
value = scope:total_provisions_after_reward_value
|
||
|
|
subtract = task_contract_taker.domicile.max_provisions
|
||
|
|
multiply = 0.05
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#The actual toast
|
||
|
|
task_contract_taker = {
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
#Historical Artifact 'transferred owner'
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract = { has_variable = has_unique_historical_artifact }
|
||
|
|
}
|
||
|
|
scope:task_contract = {
|
||
|
|
var:has_unique_historical_artifact = { save_scope_as = historical_artifact }
|
||
|
|
}
|
||
|
|
show_as_tooltip = {
|
||
|
|
scope:historical_artifact = { set_owner = scope:task_contract.task_contract_employer }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Random Jewellry 'transferred owner'
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract = { has_variable = has_jewelry_artifact }
|
||
|
|
}
|
||
|
|
scope:task_contract = {
|
||
|
|
var:has_jewelry_artifact = { save_scope_as = jewelry_artifact }
|
||
|
|
}
|
||
|
|
show_as_tooltip = {
|
||
|
|
scope:jewelry_artifact = { set_owner = scope:task_contract.task_contract_employer }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Gold reward
|
||
|
|
if = {
|
||
|
|
limit = { is_ai = no }
|
||
|
|
scope:task_contract.task_contract_employer = {
|
||
|
|
if = {
|
||
|
|
limit = { exists = scope:historical_artifact }
|
||
|
|
scope:task_contract.task_contract_employer = {
|
||
|
|
pay_short_term_gold = {
|
||
|
|
target = scope:task_contract.task_contract_taker
|
||
|
|
gold = {
|
||
|
|
value = {
|
||
|
|
value = old_adventurer_stashed_gold_value
|
||
|
|
multiply = 4
|
||
|
|
#Extra rewards
|
||
|
|
if = {
|
||
|
|
limit = { scope:extra_reward = flag:yes }
|
||
|
|
multiply = task_contract_extra_reward_multiplier_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { exists = scope:jewelry_artifact }
|
||
|
|
pay_short_term_gold = {
|
||
|
|
target = scope:task_contract.task_contract_taker
|
||
|
|
gold = {
|
||
|
|
value = {
|
||
|
|
value = old_adventurer_stashed_gold_value
|
||
|
|
multiply = {
|
||
|
|
value = scope:task_contract.var:has_jewelry_artifact.artifact_rarity
|
||
|
|
subtract = 1
|
||
|
|
}
|
||
|
|
#Extra rewards
|
||
|
|
if = {
|
||
|
|
limit = { scope:extra_reward = flag:yes }
|
||
|
|
multiply = task_contract_extra_reward_multiplier_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract = { has_variable = treasure_gold_great }
|
||
|
|
}
|
||
|
|
pay_short_term_gold = {
|
||
|
|
target = scope:task_contract.task_contract_taker
|
||
|
|
gold = {
|
||
|
|
value = {
|
||
|
|
value = old_adventurer_stashed_gold_value
|
||
|
|
multiply = 1.5
|
||
|
|
#Extra rewards
|
||
|
|
if = {
|
||
|
|
limit = { scope:extra_reward = flag:yes }
|
||
|
|
multiply = task_contract_extra_reward_multiplier_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract = {
|
||
|
|
OR = {
|
||
|
|
has_variable = treasure_gold_mediocre
|
||
|
|
has_variable = treasure_gold_poor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
pay_short_term_gold = {
|
||
|
|
target = scope:task_contract.task_contract_taker
|
||
|
|
gold = {
|
||
|
|
value = {
|
||
|
|
value = old_adventurer_stashed_gold_value
|
||
|
|
multiply = 1.25
|
||
|
|
#Extra rewards
|
||
|
|
if = {
|
||
|
|
limit = { scope:extra_reward = flag:yes }
|
||
|
|
multiply = task_contract_extra_reward_multiplier_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract = { has_variable = treasure_pillaged }
|
||
|
|
}
|
||
|
|
pay_short_term_gold = {
|
||
|
|
target = scope:task_contract.task_contract_taker
|
||
|
|
gold = {
|
||
|
|
value = {
|
||
|
|
value = old_adventurer_stashed_gold_value
|
||
|
|
#Extra rewards
|
||
|
|
if = {
|
||
|
|
limit = { scope:extra_reward = flag:yes }
|
||
|
|
multiply = task_contract_extra_reward_multiplier_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#For AI
|
||
|
|
else = {
|
||
|
|
add_short_term_gold = {
|
||
|
|
value = {
|
||
|
|
value = old_adventurer_stashed_gold_value
|
||
|
|
#Extra rewards
|
||
|
|
if = {
|
||
|
|
limit = { scope:extra_reward = flag:yes }
|
||
|
|
multiply = task_contract_extra_reward_multiplier_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Prestige reward
|
||
|
|
if = {
|
||
|
|
limit = { exists = scope:historical_artifact }
|
||
|
|
add_prestige = {
|
||
|
|
value = {
|
||
|
|
value = major_prestige_gain
|
||
|
|
#Extra rewards
|
||
|
|
if = {
|
||
|
|
limit = { scope:extra_reward = flag:yes }
|
||
|
|
multiply = task_contract_extra_reward_multiplier_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Stress loss -- less stress loss if you gained more gold and vice versa (for doing a good thing)
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { exists = scope:historical_artifact }
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
exists = scope:jewelry_artifact
|
||
|
|
scope:task_contract = { has_variable = treasure_gold_great }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
stress_impact = {
|
||
|
|
base = minor_stress_impact_loss
|
||
|
|
honest = minor_stress_impact_loss
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract = {
|
||
|
|
OR = {
|
||
|
|
has_variable = treasure_gold_mediocre
|
||
|
|
has_variable = treasure_gold_poor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
stress_impact = {
|
||
|
|
base = medium_stress_impact_loss
|
||
|
|
honest = minor_stress_impact_loss
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:task_contract = { has_variable = treasure_pillaged }
|
||
|
|
}
|
||
|
|
stress_impact = {
|
||
|
|
base = major_stress_impact_loss
|
||
|
|
honest = minor_stress_impact_loss
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Lose some Gallowsbait xp
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
#... you can't steal a view
|
||
|
|
NOT = {
|
||
|
|
scope:task_contract = { has_variable = has_scenic_riches }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Lose some Gallowsbait xp
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
has_trait = gallowsbait
|
||
|
|
has_trait_xp = {
|
||
|
|
trait = gallowsbait
|
||
|
|
track = thief
|
||
|
|
value > 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
laamp_rewards_apply_criminal_xp_effect = {
|
||
|
|
TRACK = thief
|
||
|
|
XP_MIN = negative_small_lifestyle_random_xp_low
|
||
|
|
XP_MAX = negative_small_lifestyle_random_xp_low
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Inform the player about the overflow
|
||
|
|
if = {
|
||
|
|
limit = { exists = scope:provisions_transformed_to_gold_value }
|
||
|
|
custom_tooltip = {
|
||
|
|
text = overflowing_provisions_to_gold.tt
|
||
|
|
add_gold = scope:provisions_transformed_to_gold_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Throw the historical artifact back in the pool
|
||
|
|
if = {
|
||
|
|
limit = { exists = scope:historical_artifact }
|
||
|
|
hidden_effect = { destroy_artifact = scope:historical_artifact }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#1000 seems like a fine, round number for some old adventurer to have stashed somewhere
|
||
|
|
domicile ?= {
|
||
|
|
change_provisions = {
|
||
|
|
#We're capped
|
||
|
|
if = {
|
||
|
|
limit = { provisions = max_provisions }
|
||
|
|
value = 0 #No provisions, you're full
|
||
|
|
}
|
||
|
|
#We're not capped and our max cap is less than 1000
|
||
|
|
else_if = {
|
||
|
|
limit = { max_provisions < old_adventurer_stashed_provisions_value }
|
||
|
|
value = {
|
||
|
|
value = max_provisions
|
||
|
|
subtract = provisions
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#We're not capped and our max cap is equal to -or more- than 1000
|
||
|
|
else = {
|
||
|
|
value = {
|
||
|
|
value = max_provisions
|
||
|
|
subtract = provisions
|
||
|
|
max = old_adventurer_stashed_provisions_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Sweep, sweep.
|
||
|
|
hidden_effect = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
any_character_artifact = { has_variable = 1025_treasure_map }
|
||
|
|
}
|
||
|
|
random_character_artifact = {
|
||
|
|
limit = { has_variable = 1025_treasure_map }
|
||
|
|
destroy_artifact = this
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#No longer excavating
|
||
|
|
remove_variable ?= ep3_laamp_decision_1000_is_excavating
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Handled in ep3_contract_event.0045
|
||
|
|
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_as = task_contract
|
||
|
|
scope:task_contract = {
|
||
|
|
if = {
|
||
|
|
limit = { has_variable = has_unique_historical_artifact }
|
||
|
|
task_contract_taker = { #Pretty inconsequential, since you couldn't really determine ahead of time
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.transport_failed
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
#And this adventurer doesn't want to see you again
|
||
|
|
progress_towards_rival_effect = {
|
||
|
|
REASON = rival_mia_contract
|
||
|
|
CHARACTER = scope:task_contract.task_contract_employer
|
||
|
|
OPINION = 0
|
||
|
|
}
|
||
|
|
reverse_add_opinion = {
|
||
|
|
modifier = stole_artifact_from_me
|
||
|
|
target = scope:task_contract.task_contract_employer
|
||
|
|
opinion = -50
|
||
|
|
}
|
||
|
|
add_prestige = medium_prestige_loss
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
task_contract_taker = { #Pretty inconsequential, since you couldn't really determine ahead of time
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.transport_failed
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
#And this adventurer doesn't want to see you again
|
||
|
|
hidden_effect = { #For narrative reasons. For mechanical reasons, this character won't get picked in Visit Settlement again
|
||
|
|
progress_towards_rival_effect = {
|
||
|
|
REASON = rival_mia_contract
|
||
|
|
CHARACTER = scope:task_contract.task_contract_employer
|
||
|
|
OPINION = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
reverse_add_opinion = {
|
||
|
|
modifier = disappointed_opinion
|
||
|
|
target = scope:task_contract.task_contract_employer
|
||
|
|
opinion = -30
|
||
|
|
}
|
||
|
|
add_prestige = minor_prestige_loss
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
#Sweep, sweep. (Let the player know the map will be destroyed when failing)
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
any_character_artifact = { has_variable = 1025_treasure_map }
|
||
|
|
}
|
||
|
|
random_character_artifact = {
|
||
|
|
limit = { has_variable = 1025_treasure_map }
|
||
|
|
destroy_artifact = this
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#No longer excavating
|
||
|
|
remove_variable ?= ep3_laamp_decision_1000_is_excavating
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
laamp_legitimist_support_contract = {
|
||
|
|
group = laamp_contracts_legitimist_group
|
||
|
|
icon = "gfx/interface/icons/scheme_types/diplomacy.dds"
|
||
|
|
|
||
|
|
travel = yes
|
||
|
|
use_diplomatic_range = yes
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
value = task_contract_weight_interesting_very_rare_value
|
||
|
|
add = task_contract_weight_employer_contact_list_value
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_create = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
has_realm_law = camp_purpose_legitimists
|
||
|
|
scope:employer = {
|
||
|
|
opinion = {
|
||
|
|
target = root
|
||
|
|
value > 60
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:employer.primary_title.tier >= tier_kingdom
|
||
|
|
}
|
||
|
|
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_create = {
|
||
|
|
scope:contract = {
|
||
|
|
task_contract_employer = {
|
||
|
|
add_character_flag = legitimist_supporter
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_employer = {
|
||
|
|
save_scope_as = petitioned_ruler
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_laamps.8101
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_reward = {
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
task_contract_employer = {
|
||
|
|
save_scope_as = recipient
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
custom_tooltip = laamp_legitimist_support_contract_success
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
failure_standard = {
|
||
|
|
positive = no
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" }
|
||
|
|
task_contract_taker = {
|
||
|
|
custom_tooltip = laamp_legitimist_support_contract_failure
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Support Faction
|
||
|
|
# scope:employer = ruler needing help in a faction
|
||
|
|
# scope:task_contract_faction = faction to join
|
||
|
|
laamp_join_faction_contract = {
|
||
|
|
group = laamp_contracts_war_group
|
||
|
|
icon = "gfx/interface/icons/character_interactions/faction.dds"
|
||
|
|
travel = no
|
||
|
|
use_diplomatic_range = no
|
||
|
|
|
||
|
|
# Validity Triggers
|
||
|
|
valid_to_create = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
employer_has_treasury_to_offer_job_trigger = yes
|
||
|
|
# Specific flavour triggers.
|
||
|
|
scope:employer = {
|
||
|
|
is_a_faction_member = yes
|
||
|
|
joined_faction = {
|
||
|
|
save_temporary_scope_as = temp_faction
|
||
|
|
}
|
||
|
|
}
|
||
|
|
is_a_faction_member = no
|
||
|
|
#don't spawn contracts for the same factions or faction targets
|
||
|
|
NOT = {
|
||
|
|
any_character_task_contract = {
|
||
|
|
task_contract_type = laamp_join_faction_contract
|
||
|
|
OR = {
|
||
|
|
var:task_contract_faction ?= scope:temp_faction
|
||
|
|
task_contract_employer = scope:temp_faction.faction_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
is_adult = yes
|
||
|
|
is_imprisoned = no
|
||
|
|
NOR = {
|
||
|
|
is_allied_to = scope:temp_faction.faction_target
|
||
|
|
scope:temp_faction.faction_target = { has_strong_hook = root }
|
||
|
|
has_trait = incapable
|
||
|
|
has_character_flag = joining_faction_block
|
||
|
|
has_relation_friend = scope:temp_faction.faction_target
|
||
|
|
has_relation_lover = scope:temp_faction.faction_target
|
||
|
|
has_secret_relation_lover = scope:temp_faction.faction_target
|
||
|
|
scope:temp_faction.faction_target = { is_contact_of = root }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_keep = {
|
||
|
|
exists = root.var:task_contract_faction
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_accept = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_accept_only_trigger = yes
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
custom_tooltip = {
|
||
|
|
text = NOT_FACTION_JOIN_CREATE_CONDITION_NOT_FACTION_MEMBER
|
||
|
|
is_a_faction_member = no
|
||
|
|
}
|
||
|
|
#passes_faction_hard_block from 00_rules.txt
|
||
|
|
scope:employer ?= {
|
||
|
|
joined_faction ?= {
|
||
|
|
faction_target ?= {
|
||
|
|
save_temporary_scope_as = target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
custom_description = {
|
||
|
|
text = "FACTION_CANT_JOIN_CREATE_ADULT"
|
||
|
|
is_adult = yes
|
||
|
|
}
|
||
|
|
custom_description = {
|
||
|
|
text = "FACTION_CANT_JOIN_CREATE_ALLIED"
|
||
|
|
trigger_if = {
|
||
|
|
limit = { exists = scope:target }
|
||
|
|
NOT = { is_allied_to = scope:target }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
custom_description = {
|
||
|
|
text = "FACTION_CANT_JOIN_CREATE_HOOK"
|
||
|
|
trigger_if = {
|
||
|
|
limit = { exists = scope:target }
|
||
|
|
scope:target = {
|
||
|
|
NOT = { has_strong_hook = root }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
custom_description = {
|
||
|
|
text = "FACTION_CANT_JOIN_CREATE_IMPRISONED"
|
||
|
|
trigger_if = {
|
||
|
|
limit = {
|
||
|
|
joined_faction ?= {
|
||
|
|
faction_is_at_war = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
trigger_else = {
|
||
|
|
is_imprisoned = no
|
||
|
|
}
|
||
|
|
}
|
||
|
|
custom_description = {
|
||
|
|
text = "FACTION_CANT_JOIN_CREATE_INCAPABLE"
|
||
|
|
NOT = { has_trait = incapable }
|
||
|
|
}
|
||
|
|
custom_description = {
|
||
|
|
text = "character_blocked_from_joining"
|
||
|
|
NOT = { has_character_flag = joining_faction_block }
|
||
|
|
}
|
||
|
|
custom_description = {
|
||
|
|
text = "faction_relation_blocks_joining_friend"
|
||
|
|
trigger_if = {
|
||
|
|
limit = { exists = scope:target }
|
||
|
|
NOT = {
|
||
|
|
root = { has_relation_friend = scope:target }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
custom_description = {
|
||
|
|
text = "faction_relation_blocks_joining_lover"
|
||
|
|
trigger_if = {
|
||
|
|
limit = { exists = scope:target }
|
||
|
|
NOR = {
|
||
|
|
root = { has_relation_lover = scope:target }
|
||
|
|
root = { has_secret_relation_lover = scope:target }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
exists = root.var:task_contract_faction
|
||
|
|
var:task_contract_faction = {
|
||
|
|
any_faction_member = {
|
||
|
|
this = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_almost_rare_value
|
||
|
|
add = laamp_contracts_weight_up_mercenary_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 = {
|
||
|
|
joined_faction = {
|
||
|
|
save_scope_as = task_contract_faction
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_faction
|
||
|
|
value = scope:task_contract_faction
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract_employer
|
||
|
|
}
|
||
|
|
scope:task_contract_faction = {
|
||
|
|
faction_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract_target
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0070
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_join_faction_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { exists = scope:task_contract_faction }
|
||
|
|
NOT = { exists = var:suppress_invalidation_event }
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_invalidation_reason
|
||
|
|
value = flag:faction_disbanded
|
||
|
|
}
|
||
|
|
trigger_event = ep3_contract_event.0012
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
remove_variable = task_contract_faction
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_reward = {
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
var:task_contract_faction = {
|
||
|
|
save_scope_as = faction
|
||
|
|
}
|
||
|
|
task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
save_scope_as = attacker
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_as = task_contract_taker
|
||
|
|
save_scope_as = defender
|
||
|
|
custom_tooltip = laamp_join_war_contract.contribution_based_reward_gold
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
faith != scope:task_contract.var:task_contract_target.faith
|
||
|
|
}
|
||
|
|
custom_tooltip = laamp_join_war_contract.contribution_based_reward_piety
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_reward
|
||
|
|
value = flag:success_standard
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_tier
|
||
|
|
value = scope:task_contract.task_contract_tier
|
||
|
|
}
|
||
|
|
war_contracts_completed_tracker_effect = yes
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
# Huck 'em into our contact list.
|
||
|
|
add_contact = scope:task_contract.task_contract_employer
|
||
|
|
# Give hook as well as contact
|
||
|
|
add_hook_if_possible_default_length_effect = {
|
||
|
|
TARGET = scope:task_contract.task_contract_employer
|
||
|
|
TYPE = contact_list_weak_hook
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
exists = scope:task_contract.var:task_contract_title
|
||
|
|
}
|
||
|
|
scope:attacker = {
|
||
|
|
save_scope_as = actor
|
||
|
|
}
|
||
|
|
save_scope_as = recipient
|
||
|
|
scope:task_contract.var:task_contract_title = {
|
||
|
|
add_to_list = offered_titles
|
||
|
|
}
|
||
|
|
negotiate_settlement_interaction_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_as = task_contract
|
||
|
|
var:task_contract_faction = {
|
||
|
|
save_scope_as = faction
|
||
|
|
}
|
||
|
|
task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_reward
|
||
|
|
value = flag:failure_standard
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = task_contract_tier
|
||
|
|
value = scope:task_contract.task_contract_tier
|
||
|
|
}
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.transport_failed
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
add_prestige = task_contract_failure_prestige_loss_full_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Missionary Duties
|
||
|
|
# scope:employer = ruler converting the county
|
||
|
|
# scope:task_contract_target = court chaplain doing the convert council task
|
||
|
|
# scope:task_contract_destination = county that has the council task active
|
||
|
|
# scope:task_contract_councillor = always the councillor performing the task
|
||
|
|
laamp_help_faith_conversion_contract = {
|
||
|
|
group = laamp_contracts_learning_group
|
||
|
|
icon = "/gfx/interface/icons/council_task_types/task_conversion.dds"
|
||
|
|
travel = yes
|
||
|
|
use_diplomatic_range = yes
|
||
|
|
|
||
|
|
valid_to_create = {
|
||
|
|
any_task_contract = {
|
||
|
|
task_contract_type = laamp_help_faith_conversion_contract
|
||
|
|
NOT = { task_contract_location = scope:employer.location }
|
||
|
|
}
|
||
|
|
council_task_contract_valid_employer_trigger = {
|
||
|
|
COUNCILLOR_TYPE = councillor_court_chaplain
|
||
|
|
COUNCIL_TASK_TYPE = task_conversion
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_accept = {
|
||
|
|
council_task_contract_valid_employer_trigger = {
|
||
|
|
COUNCILLOR_TYPE = councillor_court_chaplain
|
||
|
|
COUNCIL_TASK_TYPE = task_conversion
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_keep = {
|
||
|
|
exists = root.var:task_contract_councillor_liege
|
||
|
|
exists = root.var:task_contract_councillor
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
exists = root.var:task_contract_councillor_liege
|
||
|
|
exists = root.var:task_contract_councillor
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_almost_rare_value
|
||
|
|
add = laamp_contracts_weight_up_learning_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 = {
|
||
|
|
scope:task_contract_employer.cp:councillor_court_chaplain ?= { is_performing_council_task = task_conversion }
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract_employer.cp:councillor_court_chaplain
|
||
|
|
scope:task_contract_employer.cp:councillor_court_chaplain = { save_scope_as = task_contract_councillor }
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
set_task_contract_target = scope:task_contract_employer.liege
|
||
|
|
scope:task_contract_employer = { save_scope_as = task_contract_councillor }
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = root.task_contract_target.councillor_task_target
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = root.task_contract_target
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_councillor
|
||
|
|
value = scope:task_contract_councillor
|
||
|
|
}
|
||
|
|
# 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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0085
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
var:task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_help_faith_conversion_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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 = {
|
||
|
|
success_standard = {
|
||
|
|
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 }
|
||
|
|
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_full_value
|
||
|
|
PROVISIONS = task_contract_failure_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
|
||
|
|
}
|
||
|
|
gain_patron_and_hook_from_council_task_contract_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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Protect the Adherents
|
||
|
|
# scope:employer = pool character resisting county conversion
|
||
|
|
# scope:task_contract_target = court chaplain doing the convert council task
|
||
|
|
# scope:task_contract_destination = county that has the council task active
|
||
|
|
# scope:task_contract_object = task_contract_target's liege
|
||
|
|
laamp_fight_faith_conversion_contract = {
|
||
|
|
group = laamp_contracts_learning_group
|
||
|
|
icon = "/gfx/interface/icons/council_task_types/task_conversion.dds"
|
||
|
|
travel = no
|
||
|
|
use_diplomatic_range = yes
|
||
|
|
|
||
|
|
valid_to_create = {
|
||
|
|
NOT = {
|
||
|
|
any_task_contract = {
|
||
|
|
task_contract_type = laamp_fight_faith_conversion_contract
|
||
|
|
task_contract_location = scope:employer.location
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:employer = {
|
||
|
|
top_liege != this
|
||
|
|
any_liege_or_above = {
|
||
|
|
cp:councillor_court_chaplain ?= {
|
||
|
|
is_performing_council_task = task_conversion
|
||
|
|
councillor_task_target = scope:employer.location
|
||
|
|
}
|
||
|
|
faith != root.faith
|
||
|
|
faith != scope:employer.faith
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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 = {
|
||
|
|
exists = root.var:task_contract_councillor_liege
|
||
|
|
exists = root.var:task_contract_councillor
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_accept = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_accept_only_trigger = yes
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_almost_rare_value
|
||
|
|
add = laamp_contracts_weight_up_learning_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 = {
|
||
|
|
NOT = { exists = scope:task_contract.task_contract_destination }
|
||
|
|
}
|
||
|
|
random_liege_or_above = {
|
||
|
|
limit = {
|
||
|
|
cp:councillor_court_chaplain ?= {
|
||
|
|
is_performing_council_task = task_conversion
|
||
|
|
councillor_task_target = scope:task_contract_employer.location
|
||
|
|
save_temporary_scope_as = temp_councillor
|
||
|
|
}
|
||
|
|
faith != scope:task_contract.task_contract_taker.faith
|
||
|
|
faith != scope:task_contract_employer.faith
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_councillor_liege
|
||
|
|
scope:temp_councillor = {
|
||
|
|
save_scope_as = task_contract_councillor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:task_contract = {
|
||
|
|
#save how the contract was generated for easier debugging
|
||
|
|
set_variable = {
|
||
|
|
name = spawned_by
|
||
|
|
value = flag:populate_effect
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:task_contract = {
|
||
|
|
task_contract_target = {
|
||
|
|
save_scope_as = task_contract_councillor
|
||
|
|
liege = {
|
||
|
|
save_scope_as = task_contract_councillor_liege
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#save how the contract was generated for easier debugging
|
||
|
|
set_variable = {
|
||
|
|
name = spawned_by
|
||
|
|
value = flag:on_action
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Error suppression
|
||
|
|
if = {
|
||
|
|
limit = { exists = var:spawned_by
|
||
|
|
OR = {
|
||
|
|
var:spawned_by = flag:populate_effect
|
||
|
|
var:spawned_by = flag:on_action
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_councillor_liege
|
||
|
|
value = scope:task_contract_councillor_liege
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_councillor
|
||
|
|
value = scope:task_contract_councillor
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { exists = scope:task_contract.task_contract_target }
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract.var:task_contract_councillor
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract.task_contract_target
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
exists = scope:task_contract.task_contract_destination
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract.task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract.var:task_contract_councillor.councillor_task_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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0082
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
var:task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_fight_faith_conversion_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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 = {
|
||
|
|
success_standard = {
|
||
|
|
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 = task_contract_success_piety_gain_full_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 = yes
|
||
|
|
EXTRA_REWARD = scope:extra_reward
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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 = 0
|
||
|
|
PIETY = -25
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Knight's Coach
|
||
|
|
# scope:employer = ruler or marshal needing help in train commanders council task
|
||
|
|
# scope:task_contract_target = marshal or ruler, depending on who's the employer
|
||
|
|
# var:knights_to_train = list of all knights you have to train
|
||
|
|
laamp_help_train_commanders_contract = {
|
||
|
|
group = laamp_contracts_martial_group
|
||
|
|
icon = "/gfx/interface/icons/council_task_types/task_train_commanders.dds"
|
||
|
|
travel = yes
|
||
|
|
use_diplomatic_range = yes
|
||
|
|
|
||
|
|
valid_to_create = {
|
||
|
|
council_task_contract_valid_employer_trigger = {
|
||
|
|
COUNCILLOR_TYPE = councillor_marshal
|
||
|
|
COUNCIL_TASK_TYPE = task_train_commanders
|
||
|
|
}
|
||
|
|
trigger_if = {
|
||
|
|
limit = {
|
||
|
|
scope:employer.cp:councillor_marshal ?= {
|
||
|
|
is_performing_council_task = task_train_commanders
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:employer = {
|
||
|
|
any_knight = { }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
trigger_else = {
|
||
|
|
scope:employer.liege = {
|
||
|
|
any_knight = { }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_accept = {
|
||
|
|
council_task_contract_valid_employer_trigger = {
|
||
|
|
COUNCILLOR_TYPE = councillor_marshal
|
||
|
|
COUNCIL_TASK_TYPE = task_train_commanders
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_keep = {
|
||
|
|
exists = root.var:task_contract_councillor_liege
|
||
|
|
exists = root.var:task_contract_councillor
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_continue = {
|
||
|
|
time_since_contract_taken <= 720
|
||
|
|
has_variable_list = knights_to_train
|
||
|
|
any_in_list = {
|
||
|
|
variable = knights_to_train
|
||
|
|
is_alive = yes
|
||
|
|
is_knight = yes
|
||
|
|
}
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_almost_rare_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
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract_employer
|
||
|
|
}
|
||
|
|
|
||
|
|
assign_council_task_scopes_in_contract_effect = {
|
||
|
|
COUNCILLOR_TYPE = councillor_marshal
|
||
|
|
COUNCIL_TASK_TYPE = task_train_commanders
|
||
|
|
}
|
||
|
|
#save all knights to train
|
||
|
|
scope:task_contract_councillor_liege = {
|
||
|
|
ordered_knight = {
|
||
|
|
order_by = {
|
||
|
|
value = prowess
|
||
|
|
multiply = -1
|
||
|
|
}
|
||
|
|
max = 3
|
||
|
|
add_to_list = knights_list
|
||
|
|
scope:task_contract = {
|
||
|
|
add_to_variable_list = {
|
||
|
|
name = knights_to_train
|
||
|
|
target = prev
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#keep track of success and failure
|
||
|
|
set_variable = {
|
||
|
|
name = knights_trained
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = knights_failed
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = knights_limit
|
||
|
|
value = {
|
||
|
|
value = list_size:knights_list
|
||
|
|
subtract = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#get a list of traits you can teach
|
||
|
|
task_contract_taker = {
|
||
|
|
every_character_trait = {
|
||
|
|
limit = {
|
||
|
|
has_trait_category = commander
|
||
|
|
}
|
||
|
|
scope:task_contract = {
|
||
|
|
add_to_variable_list = {
|
||
|
|
name = takers_commander_traits
|
||
|
|
target = prev
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# 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 = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0090
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
save_scope_as = task_contract
|
||
|
|
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
|
||
|
|
}
|
||
|
|
task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_help_train_commanders_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:task_contract = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NAND = {
|
||
|
|
var:knights_trained = 0
|
||
|
|
var:knights_failed = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
var:knights_trained >= scope:task_contract.var:knights_failed
|
||
|
|
}
|
||
|
|
complete_task_contract = success_standard
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
complete_task_contract = failure_standard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_reward = {
|
||
|
|
success_critical = {
|
||
|
|
effect = {
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract"
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
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_critical
|
||
|
|
PRESTIGE = task_contract_success_prestige_gain_half_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
|
||
|
|
}
|
||
|
|
gain_patron_and_hook_from_council_task_contract_effect = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract"
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.success
|
||
|
|
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_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 = 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
|
||
|
|
task_contract_taker = {
|
||
|
|
play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract"
|
||
|
|
send_interface_toast = {
|
||
|
|
title = laamp_transport_contract.transport_failed
|
||
|
|
left_icon = scope:task_contract.task_contract_taker
|
||
|
|
right_icon = scope:task_contract.task_contract_employer
|
||
|
|
scope:task_contract = {
|
||
|
|
# 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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Private Eye
|
||
|
|
# scope:employer = spymaster or ruler finding secrets
|
||
|
|
# scope:task_contract_target = holder of the claimed title
|
||
|
|
# scope:task_contract_destination = county that has the council task active
|
||
|
|
# scope:task_contract_object = employer's liege or court chaplain, depending on who's the employer
|
||
|
|
laamp_help_find_secrets_contract = {
|
||
|
|
group = laamp_contracts_intrigue_group
|
||
|
|
icon = "/gfx/interface/icons/council_task_types/task_find_secrets.dds"
|
||
|
|
travel = yes
|
||
|
|
use_diplomatic_range = yes
|
||
|
|
|
||
|
|
valid_to_create = {
|
||
|
|
council_task_contract_valid_employer_trigger = {
|
||
|
|
COUNCILLOR_TYPE = councillor_spymaster
|
||
|
|
COUNCIL_TASK_TYPE = task_find_secrets
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_keep = {
|
||
|
|
exists = root.var:task_contract_councillor_liege
|
||
|
|
exists = root.var:task_contract_councillor
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_accept = {
|
||
|
|
council_task_contract_valid_employer_trigger = {
|
||
|
|
COUNCILLOR_TYPE = councillor_spymaster
|
||
|
|
COUNCIL_TASK_TYPE = task_find_secrets
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_continue = {
|
||
|
|
time_since_contract_taken <= 720
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_almost_rare_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
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract.task_contract_location
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = secrets_found
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
assign_council_task_scopes_in_contract_effect = {
|
||
|
|
COUNCILLOR_TYPE = councillor_spymaster
|
||
|
|
COUNCIL_TASK_TYPE = task_find_secrets
|
||
|
|
}
|
||
|
|
# 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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0100
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
save_scope_as = task_contract
|
||
|
|
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
|
||
|
|
}
|
||
|
|
task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_help_find_secrets_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:task_contract = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
var:knights_trained >= scope:task_contract.var:knights_failed
|
||
|
|
}
|
||
|
|
complete_task_contract = success_standard
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
complete_task_contract = failure_standard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
task_contract_reward = {
|
||
|
|
success_standard = {
|
||
|
|
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 = yes
|
||
|
|
EXTRA_REWARD = scope:extra_reward
|
||
|
|
}
|
||
|
|
gain_patron_and_hook_from_council_task_contract_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 = -25
|
||
|
|
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Forgotten Claims
|
||
|
|
# scope:employer = court chaplain or ruler fabricating a claim
|
||
|
|
# scope:task_contract_target = holder of the claimed title
|
||
|
|
# scope:task_contract_destination = county that has the council task active
|
||
|
|
# scope:task_contract_councillor_liege = always liege of the councillor performing the task
|
||
|
|
# scope:task_contract_councillor = always the councillor performing the task
|
||
|
|
laamp_help_fabricate_claim_contract = {
|
||
|
|
group = laamp_contracts_intrigue_group
|
||
|
|
icon = "/gfx/interface/icons/council_task_types/task_fabricate_claim.dds"
|
||
|
|
travel = yes
|
||
|
|
use_diplomatic_range = yes
|
||
|
|
|
||
|
|
valid_to_create = {
|
||
|
|
council_task_contract_valid_employer_trigger = {
|
||
|
|
COUNCILLOR_TYPE = councillor_court_chaplain
|
||
|
|
COUNCIL_TASK_TYPE = task_fabricate_claim
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_keep = {
|
||
|
|
exists = root.var:task_contract_councillor_liege
|
||
|
|
exists = root.var:task_contract_councillor
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_accept = {
|
||
|
|
council_task_contract_valid_employer_trigger = {
|
||
|
|
COUNCILLOR_TYPE = councillor_court_chaplain
|
||
|
|
COUNCIL_TASK_TYPE = task_fabricate_claim
|
||
|
|
}
|
||
|
|
}
|
||
|
|
valid_to_continue = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_almost_rare_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
|
||
|
|
assign_council_task_scopes_in_contract_effect = {
|
||
|
|
COUNCILLOR_TYPE = councillor_court_chaplain
|
||
|
|
COUNCIL_TASK_TYPE = task_fabricate_claim
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
exists = scope:task_contract.task_contract_destination
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract.task_contract_destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:task_contract_councillor.councillor_task_target
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract.task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_target
|
||
|
|
value = scope:task_contract.var:task_contract_destination.province_owner
|
||
|
|
}
|
||
|
|
set_task_contract_target = scope:task_contract.var:task_contract_target
|
||
|
|
# Make our gold rewards static.
|
||
|
|
grab_gold_fuzz_number_effect = yes
|
||
|
|
set_variable = {
|
||
|
|
name = gold_success_critical
|
||
|
|
value = task_contract_taker.task_contract_success_gold_gain_full_value
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = gold_success_standard
|
||
|
|
value = task_contract_taker.task_contract_success_gold_gain_full_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0080
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
var:task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_help_fabricate_claim_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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 = {
|
||
|
|
success_critical = {
|
||
|
|
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_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
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
exists = var:attached_scheme
|
||
|
|
}
|
||
|
|
var:attached_scheme = {
|
||
|
|
scheme_target_title = {
|
||
|
|
save_scope_as = claimed_title
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:task_contract.var:task_contract_destination.county = {
|
||
|
|
save_scope_as = claimed_title
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var:task_contract_councillor_liege = {
|
||
|
|
add_pressed_claim = scope:claimed_title
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
show_as_tooltip = {
|
||
|
|
add_pressed_claim = scope:claimed_title
|
||
|
|
}
|
||
|
|
}
|
||
|
|
gain_patron_and_hook_from_council_task_contract_effect = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
success_standard = {
|
||
|
|
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 = no
|
||
|
|
CONTACT_HOOK = no
|
||
|
|
EXTRA_REWARD = scope:extra_reward
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
exists = var:attached_scheme
|
||
|
|
}
|
||
|
|
var:attached_scheme = {
|
||
|
|
scheme_target_title = {
|
||
|
|
save_scope_as = claimed_title
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:task_contract.var:task_contract_destination.county = {
|
||
|
|
save_scope_as = claimed_title
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var:task_contract_councillor_liege = {
|
||
|
|
add_pressed_claim = scope:claimed_title
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
hidden_effect = {
|
||
|
|
remove_claim = scope:claimed_title
|
||
|
|
}
|
||
|
|
}
|
||
|
|
gain_patron_and_hook_from_council_task_contract_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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
## Fight Corruption
|
||
|
|
# scope:employer = marshal or ruler increasing control
|
||
|
|
# scope:task_contract_target = holder of the claimed title
|
||
|
|
# scope:task_contract_destination = county that has the council task active
|
||
|
|
# scope:task_contract_councillor_liege = always liege of the councillor performing the task
|
||
|
|
# scope:task_contract_councillor = always the councillor performing the task
|
||
|
|
laamp_help_increase_control_contract = {
|
||
|
|
group = laamp_contracts_intrigue_group
|
||
|
|
icon = "/gfx/interface/icons/council_task_types/task_increase_control.dds"
|
||
|
|
travel = no
|
||
|
|
use_diplomatic_range = yes
|
||
|
|
|
||
|
|
valid_to_create = {
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = scope:employer
|
||
|
|
LAAMP = root
|
||
|
|
}
|
||
|
|
OR = {
|
||
|
|
scope:employer = {
|
||
|
|
NOT = { var:issued_help_increase_control_contract_recently ?= root }
|
||
|
|
top_liege = this
|
||
|
|
any_councillor = {
|
||
|
|
OR = {
|
||
|
|
has_council_position = councillor_marshal
|
||
|
|
AND = {
|
||
|
|
is_kurultai_trigger = yes
|
||
|
|
highest_skill = martial
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
any_sub_realm_county = {
|
||
|
|
OR = {
|
||
|
|
has_county_corruption_trigger = yes
|
||
|
|
county_control <= low_county_control
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:employer = {
|
||
|
|
NOT = { var:issued_help_increase_control_contract_recently ?= root }
|
||
|
|
OR = {
|
||
|
|
has_council_position = councillor_marshal
|
||
|
|
AND = {
|
||
|
|
is_kurultai_trigger = yes
|
||
|
|
highest_skill = martial
|
||
|
|
}
|
||
|
|
}
|
||
|
|
is_councillor_of = top_liege
|
||
|
|
top_liege = {
|
||
|
|
NOT = {
|
||
|
|
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:employer }
|
||
|
|
}
|
||
|
|
any_sub_realm_county = {
|
||
|
|
OR = {
|
||
|
|
has_county_corruption_trigger = yes
|
||
|
|
county_control <= low_county_control
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_keep = {
|
||
|
|
var:task_contract_councillor_liege ?= {
|
||
|
|
any_sub_realm_county = {
|
||
|
|
OR = {
|
||
|
|
has_county_corruption_trigger = yes
|
||
|
|
county_control <= low_county_control
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_continue = {
|
||
|
|
# Standard triggers.
|
||
|
|
valid_laamp_basic_trigger = {
|
||
|
|
EMPLOYER = root.task_contract_employer
|
||
|
|
LAAMP = root.task_contract_taker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
valid_to_accept = {
|
||
|
|
}
|
||
|
|
|
||
|
|
weight = {
|
||
|
|
# Standard weights.
|
||
|
|
value = task_contract_weight_interesting_almost_rare_value
|
||
|
|
add = laamp_contracts_weight_up_martial_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 = {
|
||
|
|
set_variable = {
|
||
|
|
name = issued_help_increase_control_contract_recently
|
||
|
|
value = scope:task_contract.task_contract_taker
|
||
|
|
years = 10
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_employer
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
top_liege = this
|
||
|
|
}
|
||
|
|
scope:task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_councillor_liege
|
||
|
|
random_councillor = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
has_council_position = councillor_marshal
|
||
|
|
AND = {
|
||
|
|
is_kurultai_trigger = yes
|
||
|
|
highest_skill = martial
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_as = task_contract_councillor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:task_contract_employer = {
|
||
|
|
save_scope_as = task_contract_councillor
|
||
|
|
top_liege = {
|
||
|
|
save_scope_as = task_contract_councillor_liege
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_councillor_liege
|
||
|
|
value = scope:task_contract_councillor_liege
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_councillor
|
||
|
|
value = scope:task_contract_councillor
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_employer
|
||
|
|
value = scope:task_contract.task_contract_employer
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = support
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = control
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = num_of_corrupt_counties
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
#save the liege as the target
|
||
|
|
set_task_contract_target = scope:task_contract_councillor_liege
|
||
|
|
#save all counties with low control or corruption modifier in liege's realm
|
||
|
|
scope:task_contract_councillor_liege = {
|
||
|
|
ordered_sub_realm_county = {
|
||
|
|
order_by = {
|
||
|
|
value = county_opinion
|
||
|
|
multiply = -1
|
||
|
|
}
|
||
|
|
max = 6
|
||
|
|
check_range_bounds = no
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
has_county_corruption_trigger = yes
|
||
|
|
county_control <= low_county_control
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:task_contract = {
|
||
|
|
add_to_variable_list = {
|
||
|
|
name = corrupt_counties
|
||
|
|
target = prev
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# We do this a bit later on because otherwise it was having some slight issues if only one county was valid.
|
||
|
|
set_variable = {
|
||
|
|
name = num_of_corrupt_counties
|
||
|
|
value = {
|
||
|
|
every_in_list = {
|
||
|
|
variable = corrupt_counties
|
||
|
|
add = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
random_in_list = {
|
||
|
|
variable = corrupt_counties
|
||
|
|
title_province = {
|
||
|
|
save_scope_as = destination
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = task_contract_destination
|
||
|
|
value = scope:destination
|
||
|
|
}
|
||
|
|
# Make our gold rewards static.
|
||
|
|
grab_gold_fuzz_number_effect = yes
|
||
|
|
set_variable = {
|
||
|
|
name = gold_success_critical
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.task_contract_success_gold_gain_full_value
|
||
|
|
multiply = scope:task_contract.var:num_of_corrupt_counties
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = gold_success_standard
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.task_contract_success_gold_gain_full_value
|
||
|
|
multiply = scope:task_contract.var:num_of_corrupt_counties
|
||
|
|
multiply = 0.5
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# On_Actions
|
||
|
|
on_accepted = {
|
||
|
|
save_scope_as = task_contract
|
||
|
|
task_contract_taker = {
|
||
|
|
trigger_event = ep3_contract_event.0092
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_invalidated = {
|
||
|
|
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_destination = {
|
||
|
|
save_scope_as = task_contract_destination
|
||
|
|
}
|
||
|
|
var:task_contract_target = {
|
||
|
|
save_scope_as = task_contract_target
|
||
|
|
}
|
||
|
|
task_contract_taker = {
|
||
|
|
set_variable = {
|
||
|
|
name = invalidated_task_contract_type
|
||
|
|
value = flag:laamp_help_increase_control_contract
|
||
|
|
}
|
||
|
|
}
|
||
|
|
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 = {
|
||
|
|
success_critical = {
|
||
|
|
effect = {
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
set_variable = {
|
||
|
|
name = gold_success_critical
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.task_contract_success_gold_gain_full_value
|
||
|
|
multiply = var:control
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = gold_success_standard
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.task_contract_success_gold_gain_full_value
|
||
|
|
multiply = var:control
|
||
|
|
multiply = 0.5
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# 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_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
|
||
|
|
}
|
||
|
|
gain_patron_and_hook_from_council_task_contract_effect = yes
|
||
|
|
hidden_effect = {
|
||
|
|
scope:task_contract.task_contract_taker= { return_home = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
success_standard = {
|
||
|
|
effect = {
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
set_variable = {
|
||
|
|
name = gold_success_critical
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.task_contract_success_gold_gain_full_value
|
||
|
|
multiply = var:control
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = gold_success_standard
|
||
|
|
value = {
|
||
|
|
value = task_contract_taker.task_contract_success_gold_gain_full_value
|
||
|
|
multiply = var:control
|
||
|
|
multiply = 0.5
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# 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 = no
|
||
|
|
CONTACT_HOOK = no
|
||
|
|
EXTRA_REWARD = scope:extra_reward
|
||
|
|
}
|
||
|
|
gain_patron_and_hook_from_council_task_contract_effect = yes
|
||
|
|
hidden_effect = {
|
||
|
|
scope:task_contract.task_contract_taker = {
|
||
|
|
return_home = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
failure_standard = {
|
||
|
|
positive = no
|
||
|
|
effect = {
|
||
|
|
save_scope_value_as = { name = extra_reward value = flag:no }
|
||
|
|
save_scope_as = task_contract
|
||
|
|
# 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
|
||
|
|
}
|
||
|
|
hidden_effect = {
|
||
|
|
scope:task_contract.task_contract_taker = {
|
||
|
|
return_home = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|