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