diff --git a/common/domiciles/buildings/00_camp_buildings.txt b/common/domiciles/buildings/00_camp_buildings.txt index e066e7ee..2106efb1 100644 --- a/common/domiciles/buildings/00_camp_buildings.txt +++ b/common/domiciles/buildings/00_camp_buildings.txt @@ -466,7 +466,7 @@ camp_main_04 = { supply_tent_01 = { internal_slots = 1 construction_time = @camp_building_main_slot_construction_duration_t1 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } cost = { gold = supply_tent_01_domicile_building_gold_cost_value } refund = { @@ -513,7 +513,7 @@ supply_tent_01 = { } supply_tent_02 = { construction_time = @camp_building_main_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_01 internal_slots = 2 @@ -563,7 +563,7 @@ supply_tent_02 = { } supply_tent_03 = { construction_time = @camp_building_main_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_02 internal_slots = 3 @@ -614,7 +614,7 @@ supply_tent_03 = { } supply_tent_04 = { construction_time = @camp_building_main_slot_construction_duration_t4 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_03 internal_slots = 4 @@ -666,7 +666,7 @@ supply_tent_04 = { } supply_tent_05 = { construction_time = @camp_building_main_slot_construction_duration_t5 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_04 internal_slots = 5 @@ -719,7 +719,7 @@ supply_tent_05 = { } supply_tent_06 = { construction_time = @camp_building_main_slot_construction_duration_t6 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_05 internal_slots = 6 @@ -775,7 +775,7 @@ supply_tent_06 = { supply_tent_sutler = { # Sutler slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t1 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_01 cost = { gold = supply_tent_sutler_domicile_building_gold_cost_value } @@ -829,7 +829,7 @@ supply_tent_sutler = { # Sutler supply_tent_mender = { # Mender slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t1 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_01 cost = { gold = supply_tent_mender_domicile_building_gold_cost_value } @@ -884,7 +884,7 @@ supply_tent_mender = { # Mender supply_tent_smithy = { # Smithy slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_01 cost = { gold = supply_tent_smithy_domicile_building_gold_cost_value } @@ -952,7 +952,7 @@ supply_tent_smithy = { # Smithy supply_tent_arsenal = { # Arsenal slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_01 cost = { gold = supply_tent_arsenal_domicile_building_gold_cost_value } @@ -1009,7 +1009,7 @@ supply_tent_arsenal = { # Arsenal supply_tent_reserve_provisions = { # Reserve Provisions slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_01 cost = { gold = supply_tent_reserve_provisions_domicile_building_gold_cost_value } @@ -1077,7 +1077,7 @@ supply_tent_reserve_provisions = { # Reserve Provisions supply_tent_reserve_water = { # Reserve Water slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_01 cost = { gold = supply_tent_reserve_water_domicile_building_gold_cost_value } @@ -1144,7 +1144,7 @@ supply_tent_reserve_water = { # Reserve Water supply_tent_climbing_gear = { # Climbing Gear slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t1 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_01 cost = { gold = supply_tent_climbing_gear_domicile_building_gold_cost_value } @@ -1208,7 +1208,7 @@ supply_tent_climbing_gear = { # Climbing Gear supply_tent_subdued_gear = { # Subdued Gear slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = supply_tent_01 cost = { gold = supply_tent_subdued_gear_domicile_building_gold_cost_value } @@ -1889,7 +1889,7 @@ barber_tent_morticians_tools = { # Mortician's Tools baggage_train_01 = { internal_slots = 1 construction_time = @camp_building_main_slot_construction_duration_t1 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } cost = { gold = baggage_train_01_domicile_building_gold_cost_value } refund = { @@ -1939,7 +1939,7 @@ baggage_train_01 = { } baggage_train_02 = { construction_time = @camp_building_main_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 internal_slots = 2 @@ -1992,7 +1992,7 @@ baggage_train_02 = { } baggage_train_03 = { construction_time = @camp_building_main_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_02 internal_slots = 3 @@ -2046,7 +2046,7 @@ baggage_train_03 = { } baggage_train_04 = { construction_time = @camp_building_main_slot_construction_duration_t4 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_03 internal_slots = 4 @@ -2101,7 +2101,7 @@ baggage_train_04 = { } baggage_train_05 = { construction_time = @camp_building_main_slot_construction_duration_t5 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_04 internal_slots = 5 @@ -2157,7 +2157,7 @@ baggage_train_05 = { } baggage_train_06 = { construction_time = @camp_building_main_slot_construction_duration_t6 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_05 internal_slots = 6 @@ -2216,7 +2216,7 @@ baggage_train_06 = { baggage_train_ample_steeds = { # Ample Steeds slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_ample_steeds_domicile_building_gold_cost_value } @@ -2283,7 +2283,7 @@ baggage_train_ample_steeds = { # Ample Steeds baggage_train_porters = { # Porters slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t1 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_porters_domicile_building_gold_cost_value } @@ -2347,7 +2347,7 @@ baggage_train_porters = { # Porters baggage_train_trackers = { # Trackers slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_trackers_domicile_building_gold_cost_value } @@ -2410,7 +2410,7 @@ baggage_train_trackers = { # Trackers baggage_train_kennel = { # Kennel slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_kennel_domicile_building_gold_cost_value } @@ -2467,7 +2467,7 @@ baggage_train_kennel = { # Kennel baggage_train_siege_engineers = { # Siege Engineers slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_siege_engineers_domicile_building_gold_cost_value } @@ -2530,7 +2530,7 @@ baggage_train_siege_engineers = { # Siege Engineers baggage_train_shrine = { # Shrine slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_shrine_domicile_building_gold_cost_value } @@ -2598,7 +2598,7 @@ baggage_train_shrine = { # Shrine baggage_train_scribes = { # Scribes slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_scribes_domicile_building_gold_cost_value } @@ -2661,7 +2661,7 @@ baggage_train_scribes = { # Scribes baggage_train_bartering_grounds = { # Bartering Grounds slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t1 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_bartering_grounds_domicile_building_gold_cost_value } @@ -2718,7 +2718,7 @@ baggage_train_bartering_grounds = { # Bartering Grounds baggage_train_proof_of_claims = { # Proof of Claims slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_proof_of_claims_domicile_building_gold_cost_value } @@ -2844,7 +2844,7 @@ baggage_train_ransom_cages = { # Ransom Cages baggage_train_negotiators = { # Negotiators slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } previous_building = baggage_train_01 cost = { gold = baggage_train_negotiators_domicile_building_gold_cost_value } @@ -4423,7 +4423,7 @@ camp_fire_juicy_rumors = { # Juicy Rumors proving_grounds_01 = { internal_slots = 1 construction_time = @camp_building_main_slot_construction_duration_t1 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community } cost = { gold = proving_grounds_01_domicile_building_gold_cost_value } refund = { @@ -4469,7 +4469,7 @@ proving_grounds_01 = { } proving_grounds_02 = { construction_time = @camp_building_main_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 internal_slots = 2 @@ -4518,7 +4518,7 @@ proving_grounds_02 = { } proving_grounds_03 = { construction_time = @camp_building_main_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_02 internal_slots = 3 @@ -4567,7 +4567,7 @@ proving_grounds_03 = { } proving_grounds_04 = { construction_time = @camp_building_main_slot_construction_duration_t4 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_03 internal_slots = 4 @@ -4619,7 +4619,7 @@ proving_grounds_04 = { } proving_grounds_05 = { construction_time = @camp_building_main_slot_construction_duration_t5 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_04 internal_slots = 5 @@ -4670,7 +4670,7 @@ proving_grounds_05 = { } proving_grounds_06 = { construction_time = @camp_building_main_slot_construction_duration_t6 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_05 internal_slots = 6 @@ -4725,7 +4725,7 @@ proving_grounds_06 = { proving_grounds_horse_run = { # Horse Run slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_horse_run_domicile_building_gold_cost_value } @@ -4790,7 +4790,7 @@ proving_grounds_horse_run = { # Horse Run proving_grounds_camel_run = { # Camel Run slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_camel_run_domicile_building_gold_cost_value } @@ -4859,7 +4859,7 @@ proving_grounds_camel_run = { # Camel Run proving_grounds_elephantry_reserve = { # Elephantry Reserve slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_elephantry_reserve_domicile_building_gold_cost_value } @@ -4922,7 +4922,7 @@ proving_grounds_elephantry_reserve = { # Elephantry Reserve proving_grounds_nightly_barding_drills = { # Nightly Barding Drills slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_nightly_barding_drills_domicile_building_gold_cost_value } @@ -4987,7 +4987,7 @@ proving_grounds_nightly_barding_drills = { # Nightly Barding Drills proving_grounds_life_in_the_saddle = { # Life in the Saddle slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_life_in_the_saddle_domicile_building_gold_cost_value } @@ -5065,7 +5065,7 @@ proving_grounds_life_in_the_saddle = { # Life in the Saddle proving_grounds_the_stump = { # The Stump slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_the_stump_domicile_building_gold_cost_value } @@ -5130,7 +5130,7 @@ proving_grounds_the_stump = { # The Stump proving_grounds_personal_bouts = { # Personal Bouts slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_personal_bouts_domicile_building_gold_cost_value } @@ -5196,7 +5196,7 @@ proving_grounds_personal_bouts = { # Personal Bouts proving_grounds_training_circle = { # Training Circle slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_training_circle_domicile_building_gold_cost_value } @@ -5262,7 +5262,7 @@ proving_grounds_training_circle = { # Training Circle proving_grounds_mock_battle_drills = { # Mock Battle Drills slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_mock_battle_drills_domicile_building_gold_cost_value } @@ -5327,7 +5327,7 @@ proving_grounds_mock_battle_drills = { # Mock Battle Drills proving_grounds_lockwagon = { # Lockwagon slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t2 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_lockwagon_domicile_building_gold_cost_value } @@ -5392,7 +5392,7 @@ proving_grounds_lockwagon = { # Lockwagon proving_grounds_martial_study = { # Martial Study slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_martial_study_domicile_building_gold_cost_value } @@ -5454,7 +5454,7 @@ proving_grounds_martial_study = { # Martial Study proving_grounds_the_stick_game = { # The Stick Game slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t1 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_the_stick_game_domicile_building_gold_cost_value } @@ -5514,7 +5514,7 @@ proving_grounds_the_stick_game = { # The Stick Game proving_grounds_bodyguard_drills = { # Bodyguard Drills slot_type = internal construction_time = @camp_building_internal_slot_construction_duration_t3 - allowed_domicile_types = { camp } + allowed_domicile_types = { camp minority_community} previous_building = proving_grounds_01 cost = { gold = proving_grounds_bodyguard_drills_domicile_building_gold_cost_value } diff --git a/common/domiciles/buildings/NEOW_minority_community_buildings.txt b/common/domiciles/buildings/NEOW_minority_community_buildings.txt index 41ea9c88..c5fdc111 100644 --- a/common/domiciles/buildings/NEOW_minority_community_buildings.txt +++ b/common/domiciles/buildings/NEOW_minority_community_buildings.txt @@ -2,7 +2,7 @@ minority_community_main_01 = { slot_type = main internal_slots = 2 - construction_time = 730 + construction_time = 1 allowed_domicile_types = { minority_community } cost = { @@ -11,7 +11,7 @@ minority_community_main_01 = { character_modifier = { domicile_monthly_gold_add = 0.25 - domicile_monthly_influence_add = 1 + health = 0.5 domicile_external_slots_capacity_add = 2 } @@ -95,8 +95,11 @@ minority_community_main_02 = { character_modifier = { domicile_monthly_gold_add = 0.25 - domicile_monthly_influence_add = 0.5 domicile_external_slots_capacity_add = 1 + men_at_arms_cap = 1 + enemy_hostile_scheme_phase_duration_add = miniscule_scheme_phase_duration_malus_value + character_travel_safety_mult = 0.02 + provisions_capacity_add = 100 } ai_value = { @@ -180,8 +183,11 @@ minority_community_main_03 = { character_modifier = { domicile_monthly_gold_add = 0.5 domicile_monthly_gold_mult = 0.02 - domicile_monthly_influence_add = 0.5 domicile_external_slots_capacity_add = 1 + maa_toughness_mult = 0.05 + enemy_hostile_scheme_phase_duration_add = minor_scheme_phase_duration_malus_value + character_travel_safety_mult = 0.02 + provisions_capacity_add = 150 } ai_value = { @@ -265,8 +271,12 @@ minority_community_main_04 = { character_modifier = { domicile_monthly_gold_add = 0.5 domicile_monthly_gold_mult = 0.03 - domicile_monthly_influence_add = 0.5 domicile_external_slots_capacity_add = 1 + maa_toughness_mult = 0.05 + men_at_arms_cap = 1 + enemy_hostile_scheme_phase_duration_add = medium_scheme_phase_duration_malus_value + character_travel_safety_mult = 0.02 + provisions_capacity_add = 250 } ai_value = { @@ -350,8 +360,12 @@ minority_community_main_05 = { character_modifier = { domicile_monthly_gold_add = 0.75 domicile_monthly_gold_mult = 0.05 - domicile_monthly_influence_add = 0.5 domicile_external_slots_capacity_add = 1 + maa_toughness_mult = 0.1 + men_at_arms_cap = 1 + enemy_hostile_scheme_phase_duration_add = medium_scheme_phase_duration_malus_value + character_travel_safety_mult = 0.04 + provisions_capacity_add = 300 } ai_value = { diff --git a/common/domiciles/types/NEOW_domicile_types.txt b/common/domiciles/types/NEOW_domicile_types.txt index b06a97b4..ac231d46 100644 --- a/common/domiciles/types/NEOW_domicile_types.txt +++ b/common/domiciles/types/NEOW_domicile_types.txt @@ -10,6 +10,7 @@ minority_community = { map_pin_lobby = yes travel = yes + provisions = yes can_move_manually = yes culture_and_faith = yes @@ -199,71 +200,97 @@ minority_community = { position = { 19.7% 5.5% } size = { 15% 30% } - empty_slot_asset = { - trigger = { - owner.culture = { - OR = { - has_graphical_chinese_culture_group_trigger = yes - has_graphical_japanese_culture_group_trigger = yes - } - } - } - icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/yurt_empty_slot_01.dds" - intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_01_mask.png" - } - + ### EMPTY SLOT GREEN TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = hills + terrain = plains + terrain = forest + terrain = farmlands + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_mask.png" + } + + ### EMPTY SLOT ROUGH TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = taiga + terrain = steppe + terrain = drylands + terrain = mountains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_rough.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_rough_mask.png" + } + + ### EMPTY SLOT WETLANDS TERRAIN empty_slot_asset = { trigger = { domicile_location = { OR = { - terrain = jungle terrain = wetlands terrain = floodplains } } } icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/estate_jungle_empty_02.dds" - intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_02_mask.png" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_mask.png" } + ### EMPTY SLOT JUNGLE TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + terrain = jungle + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_wetlands.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_wetlands_mask.png" + } + + ### EMPTY SLOT SNOW TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_wetlands.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_wetlands_mask.png" + } + + ### EMPTY SLOT DESERT TERRAIN empty_slot_asset = { trigger = { domicile_location = { OR = { - terrain = drylands terrain = desert terrain = desert_mountains terrain = oasis - terrain = steppe } } } icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/estate_drylands_empty.dds" - intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_mask.png" - } - - empty_slot_asset = { - trigger = { - domicile_location = { - OR = { - terrain = mountains - terrain = hills - terrain = terraced_hills - } - } - } - icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/estate_rough_empty.dds" - intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_mask.png" - } - - empty_slot_asset = { - icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/estate_grassland_empty_05.dds" - intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_05_mask.png" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_drylands.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_drylands_mask.png" } @@ -312,6 +339,7 @@ minority_community = { position = { 49.0% 2.5% } size = { 15% 30% } + ### EMPTY SLOT ASIAN empty_slot_asset = { trigger = { owner.culture = { @@ -322,61 +350,119 @@ minority_community = { } } icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/yurt_empty_slot_04.dds" + texture = "gfx/interface/window_domiciles/asian_empty_slot_04.dds" intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_04_mask.png" } + ### EMPTY SLOT SNOW MOUNTAIN TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + terrain = mountains + + OR = { + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_snow_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_snow_02_mask.png" + } + + ### EMPTY SLOT SNOW TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier + + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_snow_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_snow_02_mask.png" + } + + ### EMPTY SLOT GREEN TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = hills + terrain = plains + terrain = forest + terrain = farmlands + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_02_mask.png" + } + + ### EMPTY SLOT ROUGH TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = taiga + terrain = steppe + terrain = drylands + terrain = mountains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_rough_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_rough_02_mask.png" + } + + ### EMPTY SLOT WETLANDS TERRAIN empty_slot_asset = { trigger = { domicile_location = { OR = { - terrain = jungle terrain = wetlands terrain = floodplains } } } icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/estate_jungle_empty_05.dds" - intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_05_mask.png" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_02_mask.png" } + ### EMPTY SLOT JUNGLE TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + terrain = jungle + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_jungle_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_jungle_03_mask.png" + } + + ### EMPTY SLOT DESERT TERRAIN empty_slot_asset = { trigger = { domicile_location = { OR = { - terrain = drylands terrain = desert terrain = desert_mountains terrain = oasis - terrain = steppe } } } icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/estate_drylands_empty_03.dds" - intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_03_mask.png" - } - - empty_slot_asset = { - trigger = { - domicile_location = { - OR = { - terrain = mountains - terrain = hills - terrain = terraced_hills - } - } - } - icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/estate_rough_empty_03.dds" - intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_03_mask.png" - } - - empty_slot_asset = { - icon = "gfx/interface/icons/flat_icons/plus.dds" - texture = "gfx/interface/window_domiciles/estate_grassland_empty_03.dds" - intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_03_mask.png" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_drylands_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_drylands_03_mask.png" } @@ -987,79 +1073,152 @@ minority_community = { } } - # Backgrounds - domicile_asset = { - trigger = { - domicile_location.culture = { - has_graphical_east_asia_culture_group_trigger = yes - } - } - background = "gfx/interface/window_domiciles/estate_background_steppe_terrain.dds" - foreground = "gfx/interface/window_domiciles/estate_background_steppe_terrain_foreground.dds" - ambience = "event:/DLC/CE2/Ambience/2D/Domicile/ce2_amb_2d_domicile_yurt" - } - + ### MOUNTAIN SNOW BACKGROUND domicile_asset = { trigger = { domicile_location = { - this = root.owner.top_liege.capital_province + terrain = mountains + + OR = { + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier + } } } - background = "gfx/interface/window_domiciles/estate_background_urban_terrain.dds" - foreground = "gfx/interface/window_domiciles/estate_background_urban_terrain_foreground.dds" - ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_byzantine_urban" + background = "gfx/interface/window_domiciles/camp_terrain_snow_mountains_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_snow_mountains_fg.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_rough_lands" } + ### SNOW BACKGROUND domicile_asset = { trigger = { domicile_location = { OR = { - terrain = jungle - terrain = wetlands - terrain = floodplains + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier } } } - background = "gfx/interface/window_domiciles/estate_background_jungle_terrain.dds" - foreground = "gfx/interface/window_domiciles/estate_background_jungle_terrain_foreground.dds" + background = "gfx/interface/window_domiciles/camp_terrain_snow_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_snow_fg.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_rough_lands" + } + + + + ### JUNGLE BACKGROUND + domicile_asset = { + trigger = { + domicile_location = { + terrain = jungle + } + } + background = "gfx/interface/window_domiciles/camp_terrain_jungle_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_jungle_fg.dds" ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_wetlands" } + ### DESERT BACKGROUND domicile_asset = { trigger = { domicile_location = { OR = { - terrain = drylands terrain = desert terrain = desert_mountains terrain = oasis - terrain = steppe } } } - background = "gfx/interface/window_domiciles/estate_background_dry_terrain.dds" - foreground = "gfx/interface/window_domiciles/estate_background_dry_terrain_foreground.dds" + background = "gfx/interface/window_domiciles/camp_terrain_dry_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_dry_fg.dds" ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_dry_lands" } + ### ASIAN BACKGROUND + domicile_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + background = "gfx/interface/window_domiciles/camp_terrain_asian_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_asian_fg.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_green_lands" + } + + ### GREEN BACKGROUND domicile_asset = { trigger = { domicile_location = { OR = { terrain = hills - terrain = mountains + terrain = plains + terrain = forest + terrain = farmlands terrain = terraced_hills } } } - background = "gfx/interface/window_domiciles/estate_background_rough_terrain.dds" - foreground = "gfx/interface/window_domiciles/estate_background_rough_terrain_foreground.dds" + background = "gfx/interface/window_domiciles/camp_terrain_green_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_green_fg.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_green_lands" + } + + ### ROUGH BACKGROUND + domicile_asset = { + trigger = { + domicile_location = { + OR = { + terrain = taiga + terrain = steppe + terrain = drylands + terrain = mountains + } + } + } + background = "gfx/interface/window_domiciles/camp_terrain_rough_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_rough_fg.dds" ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_rough_lands" } + ### WETLANDS BACKGROUND domicile_asset = { - background = "gfx/interface/window_domiciles/estate_background_green_terrain.dds" - foreground = "gfx/interface/window_domiciles/estate_background_green_terrain_foreground.dds" + trigger = { + domicile_location = { + OR = { + terrain = wetlands + terrain = floodplains + } + } + } + background = "gfx/interface/window_domiciles/camp_terrain_green_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_green_fg.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_wetlands" + } + + domicile_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + background = "gfx/interface/window_domiciles/camp_terrain_dry_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_dry_fg.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_dry_lands" + } + + domicile_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + background = "gfx/interface/window_domiciles/camp_terrain_rough_bg.dds" + foreground = "gfx/interface/window_domiciles/camp_terrain_rough_fg.dds" ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_green_lands" } } diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index bff952d3..aae9aaf5 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -554,6 +554,7 @@ landless_minority_government = { rulers_should_have_dynasty = yes landless_playable = yes use_title_tier_modifiers = no + conditional_maa_refill = yes mercenary = yes allow_out_of_realm_inheritance = yes use_as_base_on_landed = yes diff --git a/common/scripted_triggers/00_laamp_triggers.txt b/common/scripted_triggers/00_laamp_triggers.txt index 896a9962..b9f31e08 100644 --- a/common/scripted_triggers/00_laamp_triggers.txt +++ b/common/scripted_triggers/00_laamp_triggers.txt @@ -15,7 +15,7 @@ maa_regiments_valid_for_cheap_reinforcement_trigger = { } maa_regiments_cost_more_to_reinforce_per_soldier_trigger = { - regiment_owner = { government_has_flag = government_is_landless_adventurer } + regiment_owner = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } OR = { is_unit_type = elephant_cavalry is_unit_type = siege_weapon @@ -26,7 +26,7 @@ maa_regiments_valid_to_refill_trigger = { maa_current_troops_count < maa_max_troops_count trigger_if = { limit = { - scope:actor = { government_has_flag = government_is_landless_adventurer } + scope:actor = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } is_unit_type = elephant_cavalry } scope:actor.domicile ?= { has_domicile_parameter = camp_reinforce_elephant_regiments_anywhere } @@ -405,7 +405,7 @@ valid_laamp_basic_trigger = { $EMPLOYER$ = { OR = { employer = $LAAMP$ - NOT = { government_has_flag = government_is_landless_adventurer } + NOT = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } } } # Don't offer to work with those who've wronged us. @@ -435,7 +435,7 @@ valid_laamp_basic_trigger = { } } } - $LAAMP$ = { government_has_flag = government_is_landless_adventurer } + $LAAMP$ = { OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority } } $LAAMP$ = { trigger_if = { limit = { is_at_war = no } diff --git a/common/task_contracts/_task_contracts.info b/common/task_contracts/_task_contracts.info new file mode 100644 index 00000000..eda4e53a --- /dev/null +++ b/common/task_contracts/_task_contracts.info @@ -0,0 +1,104 @@ + = { + # for grouping together contract types, e.g. mercenary, potentially determines map icon + group = test_group + + # Icon used in the UI + icon = "path/to/image.dds" + + # Description or 'back-story' of the task contract, defaults to "_desc" + # root = task_contract_type + desc = "" + + # Description for request telling 'what to do' in order to complete the contract, defaults to "_request" + # root = task_contract_type + task_contract_request = "" + + # Contract owner should travel to contract location to accept and stay there for the duration of the contract + travel = no + + # Contract is of a criminal nature + is_criminal = no + + # Range setting + # yes - uses diplomatic range to contract employer + # no - uses ADVENTURER_DISTANCE_RESTRICTION define as radius + use_diplomatic_range = no + + # Validity Triggers + ## Can contract appear? (if triggers are true) + # root - contract owner + # scope:employer - contract employer, can be empty + valid_to_create = { + + } + + # Can contract be accepted? (if triggers are true) + # root - contract owner + # scope:employer - contract employer, can be empty + valid_to_accept = { + + } + + # Should contract invalidate? (if triggers are false) + # root - existing contract + valid_to_continue = { + + } + + # Should not taken contract invalidate? (if triggers are false) + # root - existing contract + valid_to_keep = { + + } + + # On-Action Effects + ## Effects called when contract is created (create_task_contract effect) + on_create = { + + } + + ## Effects called when contract is accepted (accept_task_contract effect) + on_accepted = { + + } + + # Effects called when contract is completed successfully, along with rewards (complete_task_contract effect) + on_completed = { + + } + + # Effects called when contract is invalidated (valid_to_continue is false, or invalidate_task_contract effect) + on_invalidated = { + + } + + # Default = no, showing completed contract toast animation + should_show_toast_on_complete = no + + # Contract Reward Effects + task_contract_reward = { + #reward name + = { + # Default = no, showing completed contract reward effect desription + should_print_on_complete = no + effect = { + + } + + # Should this possible reward be shown in the UI. It will still be displayed in the effect on completion + # if that's what owner gets + visible = yes + + # Is this reward positive 'Upon Success' or negative 'Upon Failure' + # default is yes + positive = yes + } + } + + # scripted value how likely this contract type is to be picked when populating for area + # root - contract owner + # scope:employer - contract employer, can be empty + weight = { + value = 0 + } +} diff --git a/common/task_contracts/admin_contracts.txt b/common/task_contracts/admin_contracts.txt new file mode 100644 index 00000000..563bab2f --- /dev/null +++ b/common/task_contracts/admin_contracts.txt @@ -0,0 +1,2966 @@ +################## +# ADMIN CONTRACTS +################## +# AKA Governance + +# Overdue Taxes: A village hasn't paid taxes +overdue_taxes = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/money.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.1000 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + task_contract_taker ?= { + save_scope_as = task_contract_character + send_interface_message = { + type = event_generic_bad_with_text + title = admin_contract_invalidated_title + left_icon = scope:task_contract_character + desc = admin_contract_invalidated_desc + + current_travel_plan ?= { + if = { + limit = { + next_destination_province = root.task_contract_location + can_cancel = yes + } + cancel_travel_plan = yes + } + } + } + } + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + taxes_governor = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = scope:task_contract.task_contract_location.monthly_income + multiply = 25 + multiply = governance_task_contract_tier_value + min = 5 + } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_development_level = 1 + } + } + } + taxes_paid_in_full = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = scope:task_contract.task_contract_location.monthly_income + multiply = 40 + min = 10 + } + } + } + } + taxes_paid_partially = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = scope:task_contract.task_contract_location.monthly_income + multiply = 20 + min = 2 + } + add_prestige = minor_prestige_gain + } + } + } + taxes_station_troops = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = ep3_governance_stationed_troops + years = 10 + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 10 + } + } + } + } + taxes_assign_administrator = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = scope:task_contract.task_contract_location.monthly_income + multiply = 20 + min = 5 + } + change_influence = minor_influence_gain + } + } + } + taxes_lower_taxes = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + } + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = ep3_governance_tax_relief + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + task_contract_taker ?= { + change_influence = minor_influence_loss + if = { + limit = { + has_trait = governor + has_trait_xp = { + trait = governor + value > 0 + } + } + add_trait_xp = { + trait = governor + value = -5 + } + } + } + } + } + } +} + +# Hoarding Mayor: A greedy mayor in your employ is hoarding all the gold +hoarding_mayor = { + group = admin_governance_group + icon = "gfx/interface/icons/character_interactions/request_funding_interaction.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + task_contract_employer = { + is_alive = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = hoarding_mayor + } + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.1010 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + mayor_governor = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + task_contract_employer ?= { + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = { + value = scope:task_contract.task_contract_employer.gold + multiply = 0.35 + round = yes + } + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_governance_infrastructure + years = 10 + } + } + } + } + mayor_claim_gold = { + visible = no + effect = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + task_contract_employer ?= { + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = { + value = scope:task_contract.task_contract_employer.gold + multiply = 0.5 + round = yes + } + } + } + } + } + mayor_invest_in_buildings = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_prestige = minor_prestige_gain + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_governance_infrastructure + years = 10 + } + change_development_progress_with_overflow = 10 + } + } + } + mayor_hold_festivities = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_governance_festivities + years = 10 + } + } + } + } + mayor_reprimand = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + rightfully_imprison_character_less_verbose_effect = { + TARGET = scope:task_contract.task_contract_employer + IMPRISONER = scope:task_contract.task_contract_taker + } + add_prestige = medium_prestige_gain + } + task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 10 + } + } + } + } + mayor_hook = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + if = { + limit = { + can_add_hook = { + target = scope:task_contract.task_contract_employer + type = obligation_hook + } + } + add_hook = { + target = scope:task_contract.task_contract_employer + type = obligation_hook + } + } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + task_contract_taker ?= { + change_influence = minor_influence_loss + add_prestige = medium_prestige_loss + } + } + } + } +} + +# Bountiful Harvest: The harvest was greater than expected +bountiful_harvest = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/a_catch_all_councillor_icon.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + sub_realm_size > 1 + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.1020 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + task_contract_taker ?= { + save_scope_as = task_contract_character + send_interface_message = { + type = event_generic_bad_with_text + title = admin_contract_invalidated_title + left_icon = scope:task_contract_character + desc = admin_contract_invalidated_desc + } + } + } + } + + task_contract_reward = { + success = { + effect = { + custom_tooltip = admin_contract_success_tt_rewards + } + } + harvest_governor = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + every_sub_realm_county = { + add_county_modifier = { + modifier = ep3_governance_harvest + years = 10 + } + } + if = { # Gain some extra Governor trait exp + limit = { has_trait = governor } + increase_governance_effect = { VALUE = 6 } + } + add_merit_if_relevant_effect = { + MERIT = minor_merit_value + } + } + } + } + harvest_distribute = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + every_sub_realm_county = { + change_development_progress_with_overflow = 10 + } + if = { # Gain some extra Governor trait exp + limit = { has_trait = governor } + increase_governance_effect = { VALUE = 6 } + } + add_merit_if_relevant_effect = { + MERIT = minor_merit_value + } + } + } + } + harvest_capital = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_prestige = { + value = minor_prestige_gain + multiply = governance_task_contract_tier_value + } + add_merit_if_relevant_effect = { + MERIT = minor_merit_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_governance_great_harvest + years = 10 + } + change_development_progress_with_overflow = 10 + } + } + } + harvest_charity = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_piety = { + value = medium_piety_gain + multiply = governance_task_contract_tier_value + } + } + } + } + harvest_sell_excess = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = scope:task_contract.task_contract_location.monthly_income + multiply = 10 + multiply = governance_task_contract_tier_value + round = yes + min = 2 + } + increase_governance_effect = { VALUE = 2 } + add_merit_if_relevant_effect = { + MERIT = minor_merit_value + } + } + task_contract_location.county = { + change_development_progress_with_overflow = 5 + } + } + } + harvest_claim_it_yourself = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = scope:task_contract.task_contract_location.monthly_income + multiply = 25 + multiply = governance_task_contract_tier_value + + if = { + limit = { + domicile ?= { has_domicile_building_or_higher = storage_granary_03 } + } + multiply = { + value = 1 + add = estate_granary_gold_bonus_value + } + } + round = yes + min = 5 + } + if = { + limit = { + domicile ?= { has_domicile_building_or_higher = storage_granary_03 } + } + custom_tooltip = harvest_claim_it_yourself_estate_tt + } + increase_governance_effect = { VALUE = -2 } + add_merit_if_relevant_effect = { + MERIT = minor_merit_loss + } + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + } + } + } +} + +# Ramping Bandits: A group of bandits have established themselves in a county +rampant_bandits = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/marshal_job.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.1030 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + bandit_governor = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + add_merit_if_relevant_effect = { + MERIT = minor_merit_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_governance_workforce + years = 10 + } + } + } + } + bandit_pardon = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_piety = { + value = medium_piety_gain + multiply = governance_task_contract_tier_value + } + } + } + } + bandit_recruit = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_character_modifier = { + modifier = ep3_governance_mercenary_troops + years = 10 + } + } + } + } + bandit_payment = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = minor_gold_value + multiply = governance_task_contract_tier_value + } + add_merit_if_relevant_effect = { + MERIT = miniscule_merit_value + } + add_stewardship_lifestyle_xp = { + value = medium_lifestyle_experience + multiply = governance_task_contract_tier_value + } + } + } + } + bandit_execute = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_dread = { + value = medium_dread_gain + multiply = governance_task_contract_tier_value + } + add_merit_if_relevant_effect = { + MERIT = miniscule_merit_value + } + } + task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 10 + } + } + } + } + bandit_gold = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = medium_gold_value + multiply = governance_task_contract_tier_value + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + task_contract_taker ?= { + change_influence = minor_influence_loss + } + task_contract_location.county = { + change_county_control = -5 + } + } + } + } +} + +# Discontent Soldiers: Discontentment is spreading throughout your troops. +discontent_soldiers = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/soldier.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + any_neighboring_and_across_water_realm_same_rank_owner = { + liege = root.liege + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2000 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + soldiers_land = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + task_contract_location = { + add_province_modifier = { + modifier = ep3_settled_troops_province_modifier + years = 10 + } + } + } + } + soldiers_rival = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + } + var:other_gov ?= { + add_opinion = { + target = scope:task_contract.task_contract_taker + modifier = annoyed_opinion + opinion = -25 + } + } + } + } + soldiers_break = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_prestige = medium_prestige_gain + } + task_contract_location = { + add_province_modifier = { + modifier = ep3_longer_breaks_province_modifier + years = 10 + } + } + } + } + soldiers_punish = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_dread = medium_dread_gain + add_gold = medium_gold_value + } + } + } + soldiers_pay = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + remove_short_term_gold = medium_gold_value + add_character_modifier = { + modifier = ep3_better_paid_soldiers_modifier + years = 10 + } + } + } + } + } +} + +# Inept Mayor: The mayor of a barony has proved to be rather inept, not being able to handle the city's administration +inept_mayor = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/building.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + task_contract_employer = { + is_alive = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = inept_mayor + } + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2010 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + mayor_in_govt = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_prestige = major_prestige_gain + } + task_contract_location.county = { remove_county_modifier = ep3_mismanaged_administration_modifier } + } + } + mayor_in_fire = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + add_dread = minor_dread_gain + } + task_contract_employer = { depose = yes } # depose_effect unnecessary for AI mayor + task_contract_location.county = { remove_county_modifier = ep3_mismanaged_administration_modifier } + } + } + mayor_in_help = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + remove_short_term_gold = minor_gold_value + } + task_contract_location.county = { remove_county_modifier = ep3_mismanaged_administration_modifier } + } + } + mayor_in_punish = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = medium_gold_value + } + } + } + + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# Provincial Investment: An opportunity has presented itself for you to invest in the capital of your governorship. +prov_investment = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/domain.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2020 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + invest_infrastructure = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_contract_infrastructure_modifier + years = 10 + } + } + } + } + invest_monument = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + add_prestige = { + value = medium_prestige_gain + multiply = governance_task_contract_tier_value + } + liege ?= { + add_opinion = { + target = scope:task_contract.task_contract_taker + modifier = flattered_opinion + opinion = 40 + } + } + } + } + } + invest_traders = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = medium_gold_value + increase_governance_effect = { VALUE = 6 } + } + } + } + invest_military = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + } + task_contract_location = { + add_province_modifier = { + modifier = ep3_invested_military_modifier + years = 10 + } + } + } + } + invest_food = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_food_distribution_modifier + years = 10 + } + } + task_contract_taker ?= { + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + invest_church = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_piety = major_piety_gain + + faith ?= { + religious_head ?= { + add_opinion = { + target = scope:task_contract.task_contract_taker + modifier = pleased_opinion + opinion = 30 + } + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# Raiding Peasants: A self-organized band of peasants has been raiding across the border +raiding_peasants = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/raid.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + save_scope_as = task_contract_character + trigger_event = governor_contract_event.2030 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + peasant_enroll = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + } + } + } + peasant_punish = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 2 } + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + add_dread = minor_dread_gain + } + } + } + peasant_encourage = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_peasant_border_raids_modifier + years = 10 + } + } + } + } + peasant_work = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_peasant_workers_modifier + years = 10 + } + } + } + } + peasant_take = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = medium_gold_value + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# Wild Predators: Wild predators are eating all the animals of the local game preserve. +wild_predators = { + group = admin_governance_group + icon = "gfx/interface/icons/character_interactions/activity_hunt.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2040 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + predators_poisoners = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_learning_lifestyle_xp = major_lifestyle_xp + add_intrigue_lifestyle_xp = major_lifestyle_xp + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_abundant_game_modifier + years = 10 + } + remove_county_modifier = ep3_wild_predators_modifier + } + } + } + predators_hunt = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + remove_county_modifier = ep3_wild_predators_modifier + } + task_contract_taker ?= { + increase_governance_effect = { VALUE = 2 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + if = { + limit = { + has_trait = lifestyle_hunter + } + add_trait_xp = { + trait = lifestyle_hunter + track = hunter + value = 10 + } + } + else = { add_trait = lifestyle_hunter } + } + } + } + predators_hunters = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + remove_county_modifier = ep3_wild_predators_modifier + } + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + remove_short_term_gold = minor_gold_value + } + } + } + predators_locals = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + remove_county_modifier = ep3_wild_predators_modifier + } + task_contract_taker ?= { + add_prestige = minor_prestige_gain + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + predators_capture = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county ?= { + remove_county_modifier = ep3_wild_predators_modifier + } + task_contract_taker ?= { + add_prestige = medium_prestige_gain + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + add_character_modifier = { + modifier = ep3_ferocious_pets_modifier + years = 10 + } + } + } + } + predators_preys = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_abundant_game_modifier + years = 10 + } + } + task_contract_taker ?= { + remove_short_term_gold = minor_gold_value + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# Evil Presence: The locals are persecuted by a "devil" and terrified +evil_presence = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/witchcraft.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2050 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + presence_official = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_piety = medium_piety_gain + add_learning_lifestyle_xp = major_lifestyle_xp + increase_governance_effect = { VALUE = 8 } + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + presence_exorcize = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_piety = minor_piety_gain + add_learning_lifestyle_xp = medium_lifestyle_xp + increase_governance_effect = { VALUE = 4 } + } + } + } + presence_sorcerer = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_church_investigation_modifier + years = 10 + } + } + task_contract_taker ?= { + add_prestige = major_prestige_gain + } + } + } + presence_local = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_local_practices_modifier + years = 10 + } + } + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + add_piety = medium_piety_loss + } + } + } + presence_rationalize = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_learning_lifestyle_xp = medium_lifestyle_xp + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + add_character_modifier = { + modifier = ep3_rationalist_gov_modifier + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + add_piety = minor_piety_loss + } + } + } + } +} + +# Miraculous Healing: A fake possessed/invalid keeps being "miraculously healed" every time they receive a relic or a valuable item +miraculous_healing = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/religious.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2060 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + healing_example = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + add_prestige = medium_prestige_gain + add_piety = medium_piety_gain + } + } + } + healing_hire = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + add_dread = minor_dread_gain + } + } + } + healing_relic = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + add_piety = medium_piety_gain + } + } + } + healing_fine = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + add_gold = medium_gold_value + } + } + } + healing_imprison = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + } + } + } + healing_faith = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_piety = major_piety_gain + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# Buried Treasure: A peasant has found a hoard of buried gold +buried_treasure = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/steward_job.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2070 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + treasure_invest = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_treasure_invest_modifier + years = 10 + } + } + } + } + treasure_tax = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + add_prestige = minor_prestige_gain + } + } + } + treasure_commandeer = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + } + } + treasure_acknowledge = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + treasure_distribute = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_treasure_distributed_modifier + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# Public Land: You get a chance to confiscate some lands +public_land = { + group = admin_governance_group + icon = "gfx/interface/icons/character_interactions/icon_scheme_expand_power_base.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + task_contract_employer = { + is_alive = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2080 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + land_reinstate = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_lands_reinstated_modifier + years = 15 + } + } + } + } + land_confiscate = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_character_modifier = { + modifier = ep3_land_confiscate_modifier + years = 15 + } + } + } + } + land_bribe = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + } + } + land_favor = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + change_influence = { + value = miniscule_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + land_people = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + } + task_contract_location.county = { + change_county_control = 10 + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_prestige = { + value = minor_prestige_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# The Mad Prophet: A prophet has been terrorizing a province +mad_prophet = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/heresy.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2090 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + prophet_reassure = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_religiously_pacified_modifier + years = 10 + } + } + } + } + prophet_persecute = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_doom_repressed_modifier + years = 10 + } + } + } + } + prophet_arrest = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + } + } + } + prophet_debate = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + change_influence = { + value = miniscule_influence_gain + multiply = governance_task_contract_tier_value + } + add_character_modifier = { + modifier = ep3_religious_debate_modifier + years = 10 + } + } + } + } + prophet_ceremonies = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + remove_short_term_gold = minor_gold_value + add_piety = { + value = minor_piety_gain + multiply = governance_task_contract_tier_value + } + add_prestige = { + value = minor_prestige_gain + multiply = governance_task_contract_tier_value + } + } + } + } + prophet_clergy = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = miniscule_influence_gain + multiply = governance_task_contract_tier_value + } + add_piety = { + value = medium_piety_gain + multiply = governance_task_contract_tier_value + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_piety = { + value = minor_prestige_loss + multiply = governance_task_contract_tier_value + } + change_influence = { + value = miniscule_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# Titles for Sale: Someone has been unlegally selling religious titles/offices +titles_sale = { + group = admin_governance_group + icon = "gfx/interface/icons/character_interactions/purchase_land_interaction.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2100 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + titles_repay = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_repayed_church_titles_modifier + years = 10 + } + } + } + } + titles_commandeer = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = minor_gold_value + multiply = governance_task_contract_tier_value + } + add_piety = { + value = minor_piety_loss + multiply = governance_task_contract_tier_value + } + } + } + } + titles_back = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 8 } + } + } + } + titles_bribe = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + add_piety = { + value = minor_piety_loss + multiply = governance_task_contract_tier_value + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_piety = { + value = minor_piety_loss + multiply = governance_task_contract_tier_value + } + change_influence = { + value = miniscule_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# Hungry Times: A famine has forced some locals to eat "unclean" animals... Or dead humans... Or humans-that-weren't-so-dead-yet +hungry_times = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/plague.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2110 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + hungry_support = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_rebuild_effort_modifier + years = 15 + } + } + } + } + hungry_amnesty = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + hungry_punish = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + } + } + } + hungry_persecute = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = minor_gold_value + multiply = governance_task_contract_tier_value + } + change_influence = { + value = miniscule_influence_loss + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + change_county_control = 20 + } + } + } + hungry_control = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + remove_short_term_gold = { + value = minor_gold_value + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_tight_control_modifier + years = 15 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_prestige = { + value = minor_prestige_loss + multiply = governance_task_contract_tier_value + } + change_influence = { + value = miniscule_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +# Wartime Measures: Your liege is at war and you are asked to contribute to the military effort +wartime_measures = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/soldier.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = governor_contract_event.2120 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = admin_contract_success_tt_rewards + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = admin_contract_failure_tt + } + } + wartime_support = { #Gov special + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + remove_short_term_gold = { + value = medium_gold_value + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county.duchy = { + every_de_jure_county = { + limit = { + OR = { + holder = scope:task_contract.task_contract_taker + holder.liege = scope:task_contract.task_contract_taker + } + } + add_county_modifier = { + modifier = ep3_war_support_modifier + years = 10 + } + } + } + } + } + wartime_supplies = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_war_supplies_modifier + years = 10 + } + } + } + } + wartime_lodgings = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_war_lodgings_modifier + years = 10 + } + } + } + } + wartime_gold = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + remove_short_term_gold = { + value = minor_gold_value + multiply = governance_task_contract_tier_value + } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + wartime_lookouts = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 3 } + remove_short_term_gold = { + value = tiny_gold_value + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_war_lookout_modifier + years = 10 + } + } + } + } + wartime_compensations = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 3 } + liege = { + add_opinion = { + target = scope:task_contract.task_contract_taker + modifier = disappointed_opinion + opinion = -15 + } + } + + } + task_contract_location.county = { + add_county_modifier = { + modifier = ep3_war_compensations_modifier + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_prestige = { + value = minor_prestige_loss + multiply = governance_task_contract_tier_value + } + change_influence = { + value = miniscule_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} diff --git a/common/task_contracts/laamp_base_contracts.txt b/common/task_contracts/laamp_base_contracts.txt new file mode 100644 index 00000000..77aa30b1 --- /dev/null +++ b/common/task_contracts/laamp_base_contracts.txt @@ -0,0 +1,8315 @@ +################################################## +# INFO +# For laamp contracts that are broadly applicable: that is, they should be able to trigger virtually anywhere and with a minimum of triggers. +# The idea is that any given laamp led by a character skilled in any one thing should always be viable — maybe through crime, maybe by demeaning themselves, but they should always have some contracts around to work with. +################################################## + + + +################################################## +# GROUPS (for populate_task_contracts_for_area) +# +# laamp_contracts_criminal_group +# laamp_contracts_diplomacy_group +# laamp_contracts_hireling_group +# laamp_contracts_hunting_group +# laamp_contracts_intrigue_group +# laamp_contracts_learning_group +# laamp_contracts_martial_group +# laamp_contracts_stewardship_group +# laamp_contracts_justicar_group +# + +################################################## +# #Diplo Contracts +# laamp_base_0001 Regale court with stories +# laamp_base_0011 Improve ruler's reputation +# laamp_base_0021 Hobnob with local ruler +# laamp_base_0031 Paid Mediator +# laamp_base_0041 Confidence trickster +# +# #Martial Contracts +# laamp_base_1001 Hunt criminals +# laamp_base_1011 Act as hired muscle +# laamp_base_1021 Help train local MaA +# laamp_base_1031 Garrison service +# laamp_base_1041 Ambush travellers +# +# #Stewardship Contracts +# laamp_base_2001 Collect taxes for a third party +# laamp_base_2011 Perform a census +# laamp_base_2021 Help construct a building +# laamp_base_2031 Settle an administrative boundary dispute +# laamp_base_2041 Collect fake taxes +# +# #Intrigue Contracts +# laamp_base_3001 Provide intelligence from your trips +# laamp_base_3011 Murder a character's rival +# laamp_base_3021 Abduct a character's rival +# laamp_base_3031 Attack the property of a character's rival +# laamp_base_3041 Heist from a ruler's treasury +# +# #Learning Contracts +# laamp_base_4001 Transcribe texts for a learned ruler +# laamp_base_4011 Help settle theological arguments +# laamp_base_4021 Create a work of learning for a ruler +# laamp_base_4031 Solicit Charity +# laamp_base_4041 Sell bogus relics +# laamp_base_4100 Act as a tutor for ruler's child +# +# #Prowess Contracts +# laamp_base_5001 Hunt in the wilds +# laamp_base_5011 Guard merchant properties +# laamp_base_5021 Guard a local ruler at a minor event +# laamp_base_5031 Go rustling +# laamp_base_5041 Go poaching +# +# #Justicar Contracts +# laamp_base_6001 Protect the innocent +# laamp_base_6011 Rescue a Fair Non-Combatant Gender +# laamp_base_6021 Participate in a Chivalry Play +# laamp_base_6031 Do a Pass d'Armes +################################################## + + + + + + + + + + +################################################## +# DIPLO CONTRACTS + +# Regale court with stories +laamp_base_0001 = { + group = laamp_contracts_diplomacy_group + icon = "gfx/interface/icons/scheme_types/diplomacy.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_diplomacy_value + add = laamp_contracts_weight_up_diplomacy_slight_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that like to hear from strangers. + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = trusting } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = eccentric } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't have time for riff-raff. + if = { + limit = { has_trait = arrogant } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + # Specific flavour triggers. + laamp_task_contract_employer_not_antisocial_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_0001_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.0001 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_critical_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Improve ruler's reputation +laamp_base_0011 = { + group = laamp_contracts_diplomacy_group + icon = "gfx/interface/icons/scheme_types/diplomacy.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_diplomacy_value + add = laamp_contracts_weight_up_diplomacy_slight_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits most likely to suffer from reputational damage generally. + if = { + limit = { has_trait = shy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = callous } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = sadistic } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't acknowledge fault. + if = { + limit = { has_trait = arrogant } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + # Specific flavour triggers. + scope:employer = { + # Doesn't feel right coming from anyone too famous, even if they're currently hated. + prestige_level <= high_prestige_level + OR = { + # Anyone who could use a little more political capital. + prestige <= 500 + # Or who's got a bit of a... reputation. + strife_opinion >= 1 + tyranny >= 1 + # And any important unlikeable characters in their realm that indicate they might be a bit of a prick. + any_relation = { + type = rival + liege ?= prev + } + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_0011_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.0011 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Hobnob with local ruler +laamp_base_0021 = { + group = laamp_contracts_diplomacy_group + icon = "gfx/interface/icons/scheme_types/diplomacy.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_diplomacy_value + add = laamp_contracts_weight_up_diplomacy_slight_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Actively sociable traits. + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = trusting } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = humble } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't have time for riff-raff. + if = { + limit = { has_trait = arrogant } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + # Specific flavour triggers. + laamp_task_contract_employer_not_antisocial_trigger = yes + scope:employer = { + NOR = { + any_relation = { type = friend } + any_relation = { type = lover } + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_0021_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.0021 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_critical_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Paid Mediator +laamp_base_0031 = { + group = laamp_contracts_diplomacy_group + icon = "gfx/interface/icons/scheme_types/diplomacy.dds" + + travel = no + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_diplomacy_value + add = laamp_contracts_weight_up_diplomacy_slight_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that like to outsource. + if = { + limit = { has_trait = shy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = lazy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arbitrary } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that prefer a hand-on approach. + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = diligent } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = just } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = patient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = greedy } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + # Specific flavour triggers. + scope:employer = { + AND = { + highest_held_title_tier >= tier_county + sub_realm_size >= 3 + } + NOR = { + has_trait = arrogant + has_trait = arbitrary + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the travel. + task_contract_taker ?= { + trigger_event = laamp_base_contract_schemes.0034 + set_variable = { + name = laamp_base_0031_tally + value = 0 + } + } + } + on_completed = { + # Clean up our variables & such. + task_contract_taker = { + remove_variable ?= laamp_base_0031_tally + remove_character_flag = laamp_base_0031_contract_used_diplomacy + remove_character_flag = laamp_base_0031_contract_used_martial + remove_character_flag = laamp_base_0031_contract_used_stewardship + remove_character_flag = laamp_base_0031_contract_used_intrigue + remove_character_flag = laamp_base_0031_contract_used_learning + remove_character_flag = laamp_base_0031_contract_used_prowess + } + } + on_invalidated = { + # Clean up our variables & such. + task_contract_taker = { + remove_variable ?= laamp_base_0031_tally + remove_character_flag = laamp_base_0031_contract_used_diplomacy + remove_character_flag = laamp_base_0031_contract_used_martial + remove_character_flag = laamp_base_0031_contract_used_stewardship + remove_character_flag = laamp_base_0031_contract_used_intrigue + remove_character_flag = laamp_base_0031_contract_used_learning + remove_character_flag = laamp_base_0031_contract_used_prowess + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_critical_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Confidence trickster +laamp_base_0041 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/diplomacy.dds" + + travel = yes + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_diplomacy_value + add = laamp_contracts_weight_up_diplomacy_slight_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Credulous traits. + if = { + limit = { has_trait = trusting } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = honest } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = eccentric } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that are naturally suspicious. + if = { + limit = { has_trait = cynical } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = deceitful } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + ## Paranoid is already excluded from even vaguely triggering this. + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + # Specific flavour triggers. + scope:employer = { + NOT = { has_trait = paranoid } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_0041_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.0041 + } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 0 + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Criminal Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = trickster + XP_MAX = gallowsbait_xp_medium_gain + XP_MIN = gallowsbait_xp_medium_gain + } + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_failure_value + OPINION_TYPE = attempted_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = trickster + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + } + } + } + } +} + + + + + + + + + + +################################################## +# MARTIAL & PROWESS CONTRACTS + +# Hunt criminals +laamp_base_1001 = { + group = laamp_contracts_justicar_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_martial_value + add = laamp_contracts_weight_up_martial_slight_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that are happy to outsource or care largely for results. + if = { + limit = { has_trait = impatient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = lazy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = just } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = callous } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that prefer a personal touch. + if = { + limit = { has_trait = patient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = diligent } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = sadistic } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + # Specific flavour triggers. + ## Won't resort to this. + laamp_task_contract_employer_would_resort_to_violence_trigger = yes + ## Effects require a capital county. + scope:employer.capital_county ?= { + # Aaaand we need to have at least three duchies in our de jure kingdom. + kingdom = { + any_in_de_jure_hierarchy = { + continue = { tier >= tier_duchy } + tier = tier_duchy + count >= 3 + } + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + # Specific flavour triggers. + ## Effects require a capital county. + exists = root.task_contract_employer.capital_county + ## Make sure that if we've got our recidivist, then they've not died at any time other than when they're _specifically_ allowed to. + OR = { + NOT = { has_variable = recidivist } + var:recidivist ?= { + OR = { + is_alive = yes + root = { has_variable = duel_engaged } + } + is_imprisoned = no + } + } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the travel. + task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.1004 } + # Track our score/encounters. + increment_variable_effect = { + VAR = encounters_tally + VAL = 0 + } + # & numbers of chars checked for loc. + increment_variable_effect = { + VAR = wins_tally + VAL = 0 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_major_gain + XP_MIN = knight_errant_xp_major_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + failure_recruitment = { + positive = no + visible = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_critical_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = bandit + XP_MAX = gallowsbait_xp_medium_gain + XP_MIN = gallowsbait_xp_medium_gain + } + } + } + } + } +} + +# Act as hired muscle +laamp_base_1011 = { + group = laamp_contracts_hireling_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_martial_value + add = laamp_contracts_weight_up_martial_slight_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that want to be effective but subtle. + if = { + limit = { has_trait = deceitful } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = patient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arbitrary } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that feel this type of manipulation is beneath them + if = { + limit = { has_trait = impatient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = just } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + ## Plus just some where the narrative would feel weird. + if = { + limit = { has_trait = callous } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = sadistic } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + # Specific flavour triggers. + ## Won't resort to this. + laamp_task_contract_employer_would_resort_to_violence_trigger = yes + laamp_task_contract_employer_would_resort_to_deceit_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_1011_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.1011 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = var:gold_success_standard + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_medium_gain + XP_MIN = knight_errant_xp_medium_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_major_gain + XP_MIN = knight_errant_xp_major_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Ambush travellers +laamp_base_1041 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_martial_value + add = laamp_contracts_weight_up_martial_slight_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that don't mind telegraphing weakness. + if = { + limit = { has_trait = trusting } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = honest } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that wouldn't just admit something was wrong. + if = { + limit = { has_trait = deceitful } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arrogant } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + # Specific flavour triggers. + laamp_task_contract_employer_not_antisocial_trigger = yes + # Must be at least a count. + scope:employer.highest_held_title_tier >= tier_county + # Plus make sure we'd have a valid destination to even grab. + scope:employer.capital_county = { + # Counts travel two duchies over. + trigger_if = { + limit = { scope:employer.highest_held_title_tier = tier_county } + duchy = { + any_title_to_title_neighboring_duchy = { + any_title_to_title_neighboring_duchy = { + this != scope:employer.capital_county.duchy + } + } + } + } + # Dukes travel a kingdom over. + trigger_else_if = { + limit = { scope:employer.highest_held_title_tier = tier_duchy } + kingdom = { + any_title_to_title_neighboring_kingdom = { exists = this } + } + } + # Kings and emperors travel an empire over. + trigger_else = { + empire = { + any_title_to_title_neighboring_empire = { exists = this } + } + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the travel. + task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.1044 } + # Plus, set up some variables for us. + ## Encounters list. + increment_variable_effect = { + VAR = encounters_tally + VAL = 0 + } + increment_variable_effect = { + VAR = encounters_max + VAL = 0 + } + ## Our actual haul. + increment_variable_effect = { + VAR = haul_actual + VAL = 0 + } + ## Path length + length:event ratio — we'll use these to determine how quickly we should get the events. + increment_variable_effect = { + VAR = path_length + VAL = 0 + } + increment_variable_effect = { + VAR = event_ratio + VAL = 0 + } + increment_variable_effect = { + VAR = event_ratio_tracker + VAL = 0 + } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 0 + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Criminal Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + if = { + limit = { + NOT = { exists = scope:suppress_gold_warning } + } + custom_tooltip = laamp_base_1041.tt.gold_rewards_depend_on_travellers + } + else = { custom_tooltip = laamp_base_1041.tt.haul_actual } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = bandit + XP_MAX = gallowsbait_xp_medium_gain + XP_MIN = gallowsbait_xp_medium_gain + } + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_failure_value + OPINION_TYPE = attempted_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = bandit + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + } + } + } + } +} + +# Go rustling +laamp_base_5031 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_prowess_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { + add = laamp_contract_would_signpost_own_prosperity_value + multiply = task_contract_weight_by_tier_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + # Specific flavour triggers. + scope:employer.sub_realm_size >= 2 + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + # Specific flavour triggers. + root.task_contract_employer.sub_realm_size >= 2 + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the travel. + task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.5034 } + # Plus, set up some variables for us. + ## Progress tallies. + increment_variable_effect = { + VAR = encounter_tally + VAL = 0 + } + increment_variable_effect = { + VAR = encounter_max + VAL = 0 + } + increment_variable_effect = { + VAR = wins_tally + VAL = 0 + } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 0 + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_crime_value + } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_critical_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Criminal Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Critical Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = poacher + XP_MAX = gallowsbait_xp_major_gain + XP_MIN = gallowsbait_xp_major_gain + } + } + } + } + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Criminal Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = poacher + XP_MIN = gallowsbait_xp_medium_gain + XP_MAX = gallowsbait_xp_medium_gain + } + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_crime_failure_value + OPINION_TYPE = attempted_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = poacher + XP_MIN = gallowsbait_xp_minor_gain + XP_MAX = gallowsbait_xp_minor_gain + } + } + } + } + } +} + +# Mug people. +laamp_base_5051 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + travel = yes + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_prowess_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + scope:employer.highest_held_title_tier >= tier_county + NOT = { scope:employer = { government_has_flag = government_is_herder } } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + NOT = { scope:employer = { government_has_flag = government_is_herder } } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + NOT = { scope:employer = { government_has_flag = government_is_herder } } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + NOT = { scope:employer = { government_has_flag = government_is_herder } } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_5051_contract_scheme + contract = root + target_character = scope:task_contract.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.5051 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_medium_gain + XP_MIN = gallowsbait_xp_medium_gain + } + bandit_king_maa_spawn_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_crime_failure_value + OPINION_TYPE = attempted_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + bandit_king_maa_spawn_effect = yes + } + } + } + } +} + + + + + + + + + + + + +################################################## +# STEWARDSHIP CONTRACTS + +# Collect taxes for a third party +laamp_base_2001 = { + group = laamp_contracts_hireling_group + icon = "gfx/interface/icons/scheme_types/stewardship.dds" + + travel = no + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_stewardship_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that want their money and think you can get it. + if = { + limit = { has_trait = greedy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = trusting } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = callous } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = lazy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that either can wait or won't trust you. + if = { + limit = { has_trait = paranoid } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = diligent } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + # Specific flavour triggers. + laamp_task_contract_employer_would_chase_money_trigger = yes + # And we must have at least one mayor to act as the locus. + scope:employer = { + any_vassal = { laamp_base_2001_valid_mayor_trigger = yes } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + # Make sure our baron hasn't died. + var:person_a = { is_alive = yes } + # And that, in MP, our secondaries haven't died either. + OR = { + NOT = { has_variable = person_b } + var:person_b = { is_alive = yes } + } + OR = { + NOT = { has_variable = person_c } + var:person_b = { is_alive = yes } + } + OR = { + NOT = { has_variable = person_d } + var:person_b = { is_alive = yes } + } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Grab our best possible baron. + scope:employer = { + ordered_vassal = { + limit = { laamp_base_2001_valid_mayor_trigger = yes } + order_by = { + value = ai_greed + add = { + value = ai_honor + multiply = -0.5 + } + # Weight down the capital if we can, as it feels weird to not go a city over. + if = { + limit = { primary_title.county.holder = scope:employer } + add = -1000 + } + } + save_scope_as = person_a + } + } + # Track this as a variable so that we can invalidate if they die. + set_variable = { + name = person_a + value = scope:person_a + } + # Plus our score. + increment_variable_effect = { + VAR = clues_gathered + VAL = 0 + } + # & numbers of chars checked for loc. + increment_variable_effect = { + VAR = chars_checked + VAL = 0 + } + # Then we start the travel. + task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.2004 } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + set_variable = { + name = gold_success_qualified_reduced_tax + value = task_contract_taker.task_contract_success_gold_gain_third_value + } + set_variable = { + name = gold_success_qualified_insufficient_evidence + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + set_variable = { + name = gold_success_qualified_beaten_down + value = task_contract_taker.task_contract_success_gold_gain_third_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Critical Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_massive_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_qualified_reduced_tax = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_qualified_reduced_tax + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_reduced_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + success_qualified_insufficient_evidence = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_qualified_insufficient_evidence + PRESTIGE = -200 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_qualified_beaten_down = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_qualified_beaten_down + PRESTIGE = -200 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_reduced_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + failure_critical = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = -300 + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_critical_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_major_gain + XP_MIN = gallowsbait_xp_major_gain + } + } + } + } + failure_took_wrong_side = { + visible = no + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:yes } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_success_prestige_gain_critical_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Perform a census +laamp_base_2011 = { + group = laamp_contracts_stewardship_group + icon = "gfx/interface/icons/scheme_types/stewardship.dds" + + travel = no + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_stewardship_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that care especially for rules and documentation. + ### A.k.a: the good kind of designer. + if = { + limit = { has_trait = diligent } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = just } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = greedy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't much care for paperwork, preferring vibes. + ### A.k.a: the bad kind of designer. + if = { + limit = { has_trait = lazy } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arbitrary } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + scope:employer = { + domain_size >= 2 + } + # Specific flavour triggers. + scope:employer.laamp_base_2011_actual_surveyable_holdings_per_tier_value >= scope:employer.laamp_base_2011_desired_surveyable_holdings_per_tier_value + ## A census isn't necessarily about money but given the expense involved... yeah most of the time it is. + laamp_task_contract_employer_would_chase_money_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the travel. + task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.2014 } + # Track our score. + increment_variable_effect = { + VAR = destinations_processed + VAL = 0 + } + # Plus our methods. + increment_variable_effect = { + VAR = destinations_processed_legit_success + VAL = 0 + } + increment_variable_effect = { + VAR = destinations_processed_quartermaster_success + VAL = 0 + } + increment_variable_effect = { + VAR = destinations_processed_lied_success + VAL = 0 + } + increment_variable_effect = { + VAR = destinations_processed_guessed_success + VAL = 0 + } + increment_variable_effect = { + VAR = destinations_processed_legit_failure + VAL = 0 + } + increment_variable_effect = { + VAR = destinations_processed_quartermaster_failure + VAL = 0 + } + increment_variable_effect = { + VAR = destinations_processed_lied_failure + VAL = 0 + } + increment_variable_effect = { + VAR = destinations_processed_guessed_failure + VAL = 0 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Critical Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + failure_critical = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = -300 + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_critical_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_major_gain + XP_MIN = gallowsbait_xp_major_gain + } + } + } + } + } +} + +# Help construct a building +laamp_base_2021 = { + group = laamp_contracts_stewardship_group + icon = "gfx/interface/icons/scheme_types/stewardship.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_stewardship_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that want fresh buildings but aren't great at organising such. + if = { + limit = { has_trait = greedy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = fickle } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = lazy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that do well at construction. + if = { + limit = { has_trait = generous } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = stubborn } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = diligent } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + # Specific flavour triggers. + scope:employer = { + NOR = { + has_trait = architect + stewardship >= high_skill_rating + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_2021_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.2021 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Critical Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_critical_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Settle a local dispute +laamp_base_2031 = { + group = laamp_contracts_stewardship_group + icon = "gfx/interface/icons/scheme_types/stewardship.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_stewardship_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that are likely to run into these kinds of political troubles but not super able to deal with them. + if = { + limit = { has_trait = honest } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arbitrary } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = fickle } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that would avoid or swiftly resolve the issue. + if = { + limit = { has_trait = deceitful } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = patient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = just } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = stubborn } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + # Don't weight down barons like we usually would, because we _only_ want barons here. + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # This time around we're dealing with minor disputes, so we only want barons. + scope:employer.highest_held_title_tier = tier_barony + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we roll our first event.. + task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.2035 } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + set_variable = { + name = success_camp_purpose + value = task_contract_success_gold_gain_half_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + set_variable = { + name = success_sacked_settlement + value = task_contract_success_gold_gain_critical_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Critical Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_camp_purpose = { + should_print_on_complete = yes + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:success_camp_purpose + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_sacked_settlement = { + should_print_on_complete = yes + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:success_sacked_settlement + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_major_gain + XP_MIN = gallowsbait_xp_major_gain + } + bandit_king_maa_spawn_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Collect fake taxes +laamp_base_2041 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/stewardship.dds" + + travel = no + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_stewardship_value + add = laamp_contracts_weight_up_criminal_massive_value + # Employer weights. + scope:employer = { + add = laamp_contract_would_signpost_own_prosperity_value + multiply = task_contract_weight_by_tier_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + scope:employer.sub_realm_size >= laamp_base_2041_num_counties_to_rob_value + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the travel. + task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.2044 } + # Plus, set up some variables for us. + ## Progress tallies. + increment_variable_effect = { + VAR = wins_tally + VAL = 0 + } + increment_variable_effect = { + VAR = losses_tally + VAL = 0 + } + ## Victory tiers. + save_scope_value_as = { + name = win_t1_threshold + value = { + value = scope:employer.laamp_base_2041_num_counties_to_rob_sans_capital_value + divide = 3 + floor = yes + } + } + increment_variable_effect = { + VAR = win_t1_threshold + VAL = scope:win_t1_threshold + } + save_scope_value_as = { + name = win_t2_threshold + value = { + value = scope:employer.laamp_base_2041_num_counties_to_rob_sans_capital_value + divide = 3 + multiply = 2 + floor = yes + } + } + increment_variable_effect = { + VAR = win_t2_threshold + VAL = scope:win_t2_threshold + } + increment_variable_effect = { + VAR = win_t3_threshold + VAL = scope:employer.laamp_base_2041_num_counties_to_rob_sans_capital_value + } + ## Roll difficulties. + increment_variable_effect = { + VAR = stewardship_diff + VAL = 10 + } + increment_variable_effect = { + VAR = intrigue_diff + VAL = 10 + } + increment_variable_effect = { + VAR = bard_diff + VAL = 0 + } + increment_variable_effect = { + VAR = stress_charge + VAL = 20 + } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 0 + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_crime_value + } + set_variable = { + name = gold_success_qualified + value = task_contract_taker.task_contract_success_gold_gain_half_crime_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_critical_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = trickster + XP_MAX = gallowsbait_xp_medium_gain + XP_MIN = gallowsbait_xp_medium_gain + } + } + } + } + success_qualified = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_qualified + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = trickster + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = trickster + XP_MAX = gallowsbait_xp_major_gain + XP_MIN = gallowsbait_xp_major_gain + } + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_failure_value + OPINION_TYPE = attempted_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = trickster + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + } + } + } + failure_qualified = { + positive = no + should_print_on_complete = yes + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_backed_down_value + OPINION_TYPE = attempted_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = trickster + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + } + } + } + } +} + + + + + + + + + + + +################################################## +# INTRIGUE CONTRACTS + +# Provide intelligence from your trips +laamp_base_3001 = { + group = laamp_contracts_intrigue_group + icon = "gfx/interface/icons/scheme_types/intrigue.dds" + + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_intrigue_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that value foreign intelligence. + if = { + limit = { has_trait = deceitful } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arbitrary } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = patient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't care for espionage. + if = { + limit = { has_trait = honest } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = just } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + scope:employer = { + highest_held_title_tier >= tier_county + OR = { + any_neighboring_and_across_water_realm_same_rank_owner = { + count >= 3 + laamp_base_3001_valid_neighbours_trigger = { EMPLOYER = scope:employer } + } + AND = { + highest_held_title_tier >= tier_empire + any_neighboring_and_across_water_top_liege_realm_owner = { + count >= 3 + highest_held_title_tier >= tier_kingdom + laamp_base_3001_valid_neighbours_trigger = { EMPLOYER = scope:employer } + } + } + } + } + # Specific flavour triggers. + laamp_task_contract_employer_not_antisocial_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the travel. + task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.3004 } + # Plus, set up a tracking variable for us. + increment_variable_effect = { + VAR = wins_tally + VAL = 0 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + set_variable = { + name = gold_success_qualified + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_qualified = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_qualified + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Murder a character's rival +laamp_base_3011 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/intrigue.dds" + + travel = yes + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_intrigue_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that want someone killed and don't much care how. + if = { + limit = { has_trait = wrathful } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = callous } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = sadistic } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arbitrary } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that won't hire thugs to solve their problems just on principle. + if = { + limit = { has_trait = calm } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = just } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + laamp_task_contract_employer_would_resort_to_violence_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Now, nab us a suitable target. + task_contract_employer = { laamp_contract_grab_suitable_rival_for_disposal_effect = yes } + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_3011_contract_scheme + contract = root + target_character = root.var:target + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.3011 + } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 1 + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_medium_gain + XP_MIN = gallowsbait_xp_medium_gain + } + bandit_king_maa_spawn_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + bandit_king_maa_spawn_effect = yes + } + } + } + } +} + +# Abduct a character's rival +laamp_base_3021 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/intrigue.dds" + + travel = yes + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_intrigue_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that like a personal touch in the ol' donjon. + if = { + limit = { has_trait = sadistic } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = wrathful } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arbitrary } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that prefer efficiency. + if = { + limit = { has_trait = callous } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = diligent } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + laamp_task_contract_employer_would_resort_to_violence_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Now, nab us a suitable target. + task_contract_employer = { laamp_contract_grab_suitable_rival_for_disposal_effect = yes } + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_3021_contract_scheme + contract = root + target_character = root.var:target + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.3021 + } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 1 + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_medium_gain + XP_MIN = gallowsbait_xp_medium_gain + } + bandit_king_maa_spawn_effect = yes + } + + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + } + } + } + } +} + +# Attack the property of a character's rival +laamp_base_3031 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/intrigue.dds" + + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_intrigue_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that like a subtle, yet violent, touch. + if = { + limit = { has_trait = deceitful } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = patient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + ### Ok emphasising "violent" over "subtle" here. + if = { + limit = { has_trait = wrathful } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arbitrary } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that prefer bluntness or honesty. + if = { + limit = { has_trait = honest } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = calm } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = just } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + # Specific flavour triggers. + laamp_task_contract_employer_would_resort_to_violence_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Now, nab us a suitable target. + task_contract_employer = { laamp_contract_grab_suitable_rival_for_disposal_effect = yes } + # Save a scope that stops us getting double gallowsbait XP later on. + save_scope_value_as = { + name = suppress_gallowsbait + value = yes + } + # Then we start the chainlet. + task_contract_taker ?= { trigger_event = laamp_base_contract_schemes.3034 } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 1 + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update gallowsbait score. + task_contract_taker = { + if = { + limit = { + NOT = { exists = scope:suppress_gallowsbait } + } + # Wrapped like this because, even with the scope definitely present, it was somehow slipping the net & applying anyway. + show_as_tooltip = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = bandit + XP_MIN = gallowsbait_xp_medium_gain + XP_MAX = gallowsbait_xp_medium_gain + } + } + } + bandit_king_maa_spawn_effect = yes + } + + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + if = { + limit = { + NOT = { exists = scope:suppress_gallowsbait } + } + # Wrapped like this because, even with the scope definitely present, it was somehow slipping the net & applying anyway. + show_as_tooltip = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = bandit + XP_MIN = gallowsbait_xp_minor_gain + XP_MAX = gallowsbait_xp_minor_gain + } + } + } + } + } + } + failure_qualified = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_half_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Heist from a ruler's treasury +laamp_base_3041 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/intrigue.dds" + + travel = yes + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_intrigue_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { + add = laamp_contract_would_signpost_own_prosperity_value + multiply = task_contract_weight_by_tier_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_3041_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.3041 + } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 0 + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = thief + XP_MIN = gallowsbait_xp_medium_gain + XP_MAX = gallowsbait_xp_medium_gain + } + bandit_king_maa_spawn_effect = yes + } + custom_tooltip = laamp_base_3041.tt.chance_for_more + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_failure_value + OPINION_TYPE = attempted_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = thief + XP_MIN = gallowsbait_xp_minor_gain + XP_MAX = gallowsbait_xp_minor_gain + } + } + } + } + } +} + + + + + + + + + + + +################################################## +# LEARNING CONTRACTS + +# Transcribe texts for a learned ruler +laamp_base_4001 = { + group = laamp_contracts_learning_group + icon = "gfx/interface/icons/scheme_types/learning.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_learning_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that appreciate works of learning. + if = { + limit = { has_trait = scholar } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = theologian } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = eccentric } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = patient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = shy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't support these gorramned NERDS. + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = athletic } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_qualified + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_critical_value + } + } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For easy access + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Trigger the first education event + task_contract_taker ?= { trigger_event = laamp_base_learning_contract_events.4001 } + # Plus, set up some variables for us. + ## Progress tallies. + increment_variable_effect = { + VAR = score_tally + VAL = 0 + } + increment_variable_effect = { + VAR = text_passages_left + VAL = 3 + } + ### Victory tiers. + increment_variable_effect = { + VAR = win_t1_threshold + VAL = 3 #You smooch by on the standard answer + } + increment_variable_effect = { + VAR = win_t2_threshold + VAL = 7 #You use your language/traits twice and also have a successful embellishment + } + increment_variable_effect = { + VAR = win_t3_threshold + VAL = 9 #All three embellishments are successful :yeslikethis: + } + } + + # Rewards + task_contract_reward = { + success_qualified = { + should_print_on_complete = yes + effect = { + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_qualified + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_reduced_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = task_contract_success_piety_gain_half_value + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = task_contract_success_piety_gain_full_value + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +#Help settle theological arguments +laamp_base_4011 = { + group = laamp_contracts_learning_group + icon = "gfx/interface/icons/scheme_types/learning.dds" + + travel = no + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_learning_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that would happily delegate a debate. + if = { + limit = { has_trait = shy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = fickle } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = lazy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that would leap into a debate wholesale. + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = patient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = stubborn } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = diligent } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + scope:employer = { + NOR = { + government_has_flag = government_is_tribal + faith = { has_doctrine_parameter = unreformed } + has_trait = cynical + } + AND = { + highest_held_title_tier >= tier_duchy + any_sub_realm_barony = { + title_province = { has_holding = yes } + this != scope:employer.capital_barony + count >= 3 + } + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For easy access + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + #Set this up here to calculate win thresholds + scope:employer = { + add_character_flag = is_in_task_contract_event_chain + ordered_sub_realm_barony = { + limit = { + title_province = { has_holding = yes } + this != scope:employer.capital_barony + } + order_by = { + value = county_opinion + multiply = -1 + } + max = 5 + check_range_bounds = no + add_to_list = destination_baronies_list + } + scope:employer.capital_province = { save_scope_as = employer_location_destination } + ordered_in_list = { + list = destination_baronies_list + order_by = "squared_distance(prev.capital_province)" + max = 5 + check_range_bounds = no + if = { + limit = { + NOT = { exists = scope:destination_1 } + } + save_scope_as = destination_1 + } + else_if = { + limit = { + NOT = { + this = scope:destination_1 + exists = scope:destination_2 + } + } + save_scope_as = destination_2 + } + else_if = { + limit = { + NOT = { + this = scope:destination_1 + this = scope:destination_2 + exists = scope:destination_3 + } + } + save_scope_as = destination_3 + } + else_if = { + limit = { + NOT = { + this = scope:destination_1 + this = scope:destination_2 + this = scope:destination_3 + exists = scope:destination_4 + } + } + save_scope_as = destination_4 + } + else_if = { + limit = { + NOT = { + this = scope:destination_1 + this = scope:destination_2 + this = scope:destination_3 + this = scope:destination_4 + exists = scope:destination_5 + } + } + save_scope_as = destination_5 + } + } + } + # Plus, set up some variables for us. + ## Progress tallies. + increment_variable_effect = { + VAR = wins_tally + VAL = 0 + } + increment_variable_effect = { + VAR = encounter_tally + VAL = 0 + } + ### Victory tiers. + if = { + limit = { exists = scope:destination_5 } + increment_variable_effect = { + VAR = win_t1_threshold + VAL = 2 + } + increment_variable_effect = { + VAR = win_t2_threshold + VAL = 4 + } + increment_variable_effect = { + VAR = win_t3_threshold + VAL = 5 + } + } + else_if = { + limit = { exists = scope:destination_4 } + increment_variable_effect = { + VAR = win_t1_threshold + VAL = 1 + } + increment_variable_effect = { + VAR = win_t2_threshold + VAL = 2 + } + increment_variable_effect = { + VAR = win_t3_threshold + VAL = 4 + } + } + else = { + increment_variable_effect = { + VAR = win_t1_threshold + VAL = 1 + } + increment_variable_effect = { + VAR = win_t2_threshold + VAL = 2 + } + increment_variable_effect = { + VAR = win_t3_threshold + VAL = 3 + } + } + increment_variable_effect = { + VAR = opportunities_left_tally + VAL = var:win_t3_threshold + } + # Then we start the travel. + task_contract_taker ?= { trigger_event = laamp_base_learning_contract_events.4011 } + } + on_invalidated = { + task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_qualified + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_critical_value + } + } + } + + # Rewards + task_contract_reward = { + success_qualified = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_qualified + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = task_contract_success_piety_gain_half_value + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_reduced_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain } + } + } + success_standard = { + should_print_on_complete = yes + effect = { + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = task_contract_success_piety_gain_full_value + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_critical_value + PIETY = task_contract_success_piety_gain_critical_value + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = 0 + PIETY = task_contract_failure_piety_loss_full_value + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_employer = { remove_character_flag = is_in_task_contract_event_chain } + } + } + } +} + +# Create a work of learning for a ruler +laamp_base_4021 = { + group = laamp_contracts_learning_group + icon = "gfx/interface/icons/scheme_types/learning.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_learning_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that appreciate works of learning. + if = { + limit = { has_trait = scholar } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = theologian } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = eccentric } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = patient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = shy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't support these gorramned NERDS. + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = athletic } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + #You really shouldn't have terrible Learning + root.learning >= average_skill_level + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For easy access + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # How many chapters do you want to write? + task_contract_taker ?= { trigger_event = laamp_base_learning_contract_events.4021 } + #We set up the variables in the intro event + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_qualified + value = task_contract_taker.task_contract_success_gold_gain_half_value + } + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_qualified = { + should_print_on_complete = yes + effect = { + # Camp building extra Stewardship Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_stewardship_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + # Standard Reward. + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_qualified + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_reduced_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = task_contract_success_piety_gain_half_value + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = task_contract_success_piety_gain_half_value + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = task_contract_failure_piety_loss_full_value + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Solicit Charity +laamp_base_4031 = { + group = laamp_contracts_learning_group + icon = "gfx/interface/icons/scheme_types/learning.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_learning_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that take pity on passers by. + if = { + limit = { has_trait = generous } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = compassionate } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = improvident } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = profligate } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't give a damn about wanderers (or who it would look a bit weird for). + if = { + limit = { has_trait = greedy } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = callous } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = sadistic } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + # Specific flavour triggers. + laamp_task_contract_employer_not_antisocial_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_4031_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.4031 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = 0 + PIETY = task_contract_success_piety_gain_half_value + PROVISIONS = task_contract_success_provisions_gain_massive_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = task_contract_failure_piety_loss_full_value + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Sell bogus relics +laamp_base_4041 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/learning.dds" + + travel = yes + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_learning_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that make you gullible, or at least more vulnerable to scam artistry. + if = { + limit = { has_trait = trusting } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = fickle } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = eccentric } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that make you naturally suspicious. + if = { + limit = { has_trait = stubborn } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = deceitful } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + scope:employer = { + NOR = { + government_has_flag = government_is_tribal + faith = { has_doctrine_parameter = unreformed } + } + } + # Specific flavour triggers. + laamp_task_contract_employer_not_antisocial_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_4041_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.4041 + } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 0 + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_crime_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Learning/Criminal Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { + OR = { + has_domicile_parameter = camp_improved_learning_contract_rewards + has_domicile_parameter = camp_improved_criminal_contract_rewards + } + } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = trickster + XP_MIN = gallowsbait_xp_medium_gain + XP_MAX = gallowsbait_xp_medium_gain + } + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = task_contract_failure_piety_loss_full_value + PROVISIONS = 0 + OPINION = task_contract_opinion_crime_failure_value + OPINION_TYPE = attempted_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = trickster + XP_MIN = gallowsbait_xp_minor_gain + XP_MAX = gallowsbait_xp_minor_gain + } + } + } + } + } +} + +#Act as a tutor for ruler's child +laamp_base_4100 = { + group = laamp_contracts_learning_group + icon = "gfx/interface/icons/scheme_types/learning.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_learning_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that appreciate works of learning. + if = { + limit = { has_trait = scholar } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = theologian } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = eccentric } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = patient } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = shy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't support these gorramned NERDS. + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = impatient } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = athletic } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + any_courtier = { + age >= 6 + age < 15 #Give us a year to complete the contract + is_available = yes + location = scope:employer.location + } + } + } + + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + root.var:task_contract_target = { age < 15 } + #Since the kid is saved as the target; we automatically invalidate if kid becomes unavailable, right? + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + random_courtier = { + limit = { + age >= 6 + age < 15 #Give us a year to complete the contract + is_available = yes + location = prev.location #The employer's location + } + weight = { + base = 1 + #Prioritize relevant children + modifier = { + add = 10 + is_primary_heir_of = scope:task_contract.task_contract_employer + } + modifier = { + add = 5 + trigger_if = { + limit = { + scope:task_contract.task_contract_employer = { has_realm_law = female_only_law } + } + is_female = yes + } + trigger_else = { always = no } + } + modifier = { + add = 5 + trigger_if = { + limit = { + scope:task_contract.task_contract_employer = { has_realm_law = male_only_law } + } + is_male = yes + } + trigger_else = { always = no } + } + } + save_scope_as = task_contract_target + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + set_task_contract_target = scope:task_contract_target + set_variable = { + name = task_contract_target + value = scope:task_contract.task_contract_target + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_critical_value + } + } + } + + # On_actions + on_accepted = { + # For easy access + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + task_contract_target = { save_scope_as = child_to_educate } + # Trigger the first education event + task_contract_taker ?= { trigger_event = laamp_base_learning_contract_events.4100 } + # Plus, set up some variables for us. + ## Progress tallies. + increment_variable_effect = { + VAR = wins_tally + VAL = 0 + } + increment_variable_effect = { + VAR = educational_moments_left + VAL = 3 + } + ### Victory tiers. + increment_variable_effect = { + VAR = win_t1_threshold + VAL = 2 + } + increment_variable_effect = { + VAR = win_t2_threshold + VAL = 3 + } + ## Roll difficulties. + increment_variable_effect = { + VAR = learning_diff + VAL = 10 + } + increment_variable_effect = { + VAR = topic_diff + VAL = 10 + } + increment_variable_effect = { + VAR = support_person_diff + VAL = 5 + } + increment_variable_effect = { + VAR = stress_charge + VAL = 20 + } + } + + on_invalidated = { + task_contract_taker = { + remove_character_flag = is_in_task_contract_event_chain + } + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_base_4100 + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + # Rewards + task_contract_reward = { + #Need at least 2 successful teaching moments + success_standard = { + should_print_on_complete = yes + effect = { + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + # Camp building extra Learning Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_learning_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_critical_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + + + + + + + + + + + +################################################## +# JUSTICAR CONTRACTS + +# Protect the innocent +laamp_base_6001 = { + group = laamp_contracts_justicar_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_prowess_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that value prosperity in their subjects. + if = { + limit = { has_trait = greedy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = generous } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = humble } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = avaricious } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that won't do favours for some grubby merchant. + if = { + limit = { has_trait = arrogant } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = callous } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_6001_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.6001 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + task_contract_taker = { + # Update gallowsbait score. + lower_gallowsbait_xp_effect = { VALUE = -5 } + # Update Knight-Errant score. + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_minor_gain + XP_MIN = knight_errant_xp_minor_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + task_contract_taker = { + # Update gallowsbait score. + lower_gallowsbait_xp_effect = { VALUE = -10 } + # Update Knight-Errant score. + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_medium_gain + XP_MIN = knight_errant_xp_medium_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Rescue a Fair Non-Combatant Gender +laamp_base_6011 = { + group = laamp_contracts_justicar_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_prowess_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + if = { + limit = { has_trait = gallant } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + + # Weight down + if = { + limit = { has_trait = callous } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + scope:employer.capital_province = { is_wooded_trigger = yes } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_6011_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.6011 + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = task_contract_success_provisions_gain_minor_value + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + task_contract_taker = { + # Update gallowsbait score. + lower_gallowsbait_xp_effect = { VALUE = -5 } + # Update Knight-Errant score. + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_minor_gain + XP_MIN = knight_errant_xp_minor_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Participate in a Chivalry Play +laamp_base_6021 = { + group = laamp_contracts_justicar_group + icon = "gfx/interface/icons/scheme_types/diplomacy.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_diplomacy_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + if = { + limit = { has_trait = gallant } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = lifestyle_reveler } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + + # Weight down + if = { + limit = { has_trait = callous } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_6021_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.6021 + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + task_contract_taker = { + # Update Knight-Errant score. + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_minor_gain + XP_MIN = knight_errant_xp_minor_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Do a Pass d'Armes +laamp_base_6031 = { + group = laamp_contracts_justicar_group + icon = "gfx/interface/icons/scheme_types/martial.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_prowess_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + if = { + limit = { has_trait = gallant } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down + if = { + limit = { has_trait = callous } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + task_contract_employer = { save_scope_as = employer } + # Then we start the scheme. + task_contract_taker ?= { + start_scheme = { + type = laamp_base_6031_contract_scheme + contract = root + target_character = root.task_contract_employer + } + # Make a note of what the scheme even is; we'll need this for the event too. + scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.6031 + } + } + on_create = { + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + task_contract_taker = { + # Update gallowsbait score. + lower_gallowsbait_xp_effect = { VALUE = -10 } + # Update Knight-Errant score. + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_minor_gain + XP_MIN = knight_errant_xp_minor_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + + + + + + + + + + + +################################################## +# DEPRECATED CONTRACTS + +# Help train local MaA +laamp_base_1021 = { + group = laamp_contracts_martial_group + icon = "gfx/interface/icons/scheme_types/martial.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_martial_value + add = laamp_contracts_weight_up_martial_slight_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that believe in readiness for war. + if = { + limit = { has_trait = brave } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = wrathful } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = diligent } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that don't think they gain anything from this. + if = { + limit = { has_trait = arrogant } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + always = no + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + #start_scheme = { + # type = laamp_base_1021_contract_scheme + # contract = root + # target_character = root.task_contract_employer + #} + # Make a note of what the scheme even is; we'll need this for the event too. + #scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.1021 + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_full_value + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_minor_gain + XP_MIN = knight_errant_xp_minor_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_full_value + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_massive_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_medium_gain + XP_MIN = knight_errant_xp_medium_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Garrison service +laamp_base_1031 = { + group = laamp_contracts_hireling_group + icon = "gfx/interface/icons/scheme_types/martial.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_martial_value + add = laamp_contracts_weight_up_martial_slight_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that care about defence. + ### We don't check paranoid because they're already filtered out due to this being relative strangers. + if = { + limit = { has_trait = stubborn } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = greedy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that think their defences are definitely fiiiiiine. + if = { + limit = { has_trait = arrogant } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = trusting } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = fickle } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + always = no + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + # Specific flavour triggers. + laamp_task_contract_employer_not_antisocial_trigger = yes + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + #start_scheme = { + # type = laamp_base_1031_contract_scheme + # contract = root + # target_character = root.task_contract_employer + #} + # Make a note of what the scheme even is; we'll need this for the event too. + #scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.1031 + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_full_value + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_minor_gain + XP_MIN = knight_errant_xp_minor_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_full_value + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_massive_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_minor_gain + XP_MIN = knight_errant_xp_minor_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Hunt in the wilds +laamp_base_5001 = { + group = laamp_contracts_hunting_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_prowess_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that hate being outdoors. + if = { + limit = { has_trait = shy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = lazy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = fickle } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = craven } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that love being outside. + if = { + limit = { has_trait = gregarious } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = diligent } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = stubborn } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + always = no + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + # Specific flavour triggers. + scope:employer = { + NOR = { + has_trait = lifestyle_hunter + has_trait = athletic + has_trait = brave + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + #start_scheme = { + # type = laamp_base_5001_contract_scheme + # contract = root + # target_character = root.task_contract_employer + #} + # Make a note of what the scheme even is; we'll need this for the event too. + #scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.5001 + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_full_value + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Counts towards Knight of the Swan + task_contract_taker = { + task_contract_justicar_contract_tracker_effect = yes + } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_full_value + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_massive_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Counts towards Knight of the Swan + task_contract_taker = { + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Guard merchant properties +laamp_base_5011 = { + group = laamp_contracts_hireling_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_prowess_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that value prosperity in their subjects. + if = { + limit = { has_trait = greedy } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = generous } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = humble } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = avaricious } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that won't do favours for some grubby merchant. + if = { + limit = { has_trait = arrogant } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = callous } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + always = no + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + #start_scheme = { + # type = laamp_base_5011_contract_scheme + # contract = root + # target_character = root.task_contract_employer + #} + # Make a note of what the scheme even is; we'll need this for the event too. + #scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.5011 + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_full_value + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_medium_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_minor_gain + XP_MIN = knight_errant_xp_minor_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + success_critical = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Critical Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_full_value + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_medium_gain + XP_MIN = knight_errant_xp_medium_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Guard a local ruler at a minor event +laamp_base_5021 = { + group = laamp_contracts_hireling_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + travel = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_prowess_value + # Employer weights. + scope:employer = { + add = { + # Weight up. + ## Traits that suspect treason: either because they're paranoid or as a self-report. + if = { + limit = { has_trait = paranoid } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = deceitful } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = arbitrary } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = fickle } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = disloyal } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + # Weight down. + ## Traits that think loyalty is unshakeable. + if = { + limit = { has_trait = trusting } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = honest } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = just } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = stubborn } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + if = { + limit = { has_trait = loyal } + add = task_contract_weight_malus_employer_has_associated_traits_value + } + # Restrictions. + min = task_contract_weight_employer_associated_traits_min_value + max = task_contract_weight_employer_associated_traits_max_value + } + multiply = task_contract_weight_by_tier_value + # This weight is an override, so make sure it's placed at the bottom. + add = task_contract_weight_employer_contact_list_value + } + } + + # Validity Triggers + valid_to_create = { + always = no + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + # Specific flavour triggers. + OR = { + laamp_task_contract_employer_not_antisocial_trigger = yes + # Grant an exception to the paranoid antisocialness here: narratively, it's presented like their paranoia of their guards overwhelms their paranoia of you. + has_trait = paranoid + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + #start_scheme = { + # type = laamp_base_5021_contract_scheme + # contract = root + # target_character = root.task_contract_employer + #} + # Make a note of what the scheme even is; we'll need this for the event too. + #scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.5021 + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_full_value + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { task_successful_noncrim_contract_count_effect = yes } + # Update Knight-Errant score. + task_contract_taker = { + laamp_rewards_apply_knight_errant_xp_effect = { + XP_MAX = knight_errant_xp_medium_gain + XP_MIN = knight_errant_xp_medium_gain + } + task_contract_justicar_contract_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +# Go poaching +laamp_base_5041 = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/scheme_types/war.dds" + + travel = yes + is_criminal = yes + use_diplomatic_range = no + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_prowess_value + add = laamp_contracts_weight_up_criminal_value + # Employer weights. + scope:employer = { + add = laamp_contract_would_signpost_own_prosperity_value + multiply = task_contract_weight_by_tier_value + } + } + + # Validity Triggers + valid_to_create = { + always = no + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + rule_out_dramatic_laamp_employers_trigger = yes + NOT = { + scope:employer = { government_has_flag = government_is_tribal } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + scope:employer = { is_landed = yes } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + root.task_contract_taker = { + NOT = { + house = { + has_house_modifier = legacy_adventurer_house_modifier + } + } + } + task_contract_employer = { is_landed = yes } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + task_contract_employer = { is_landed = yes } + } + + # On_actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + # For the intro event. + save_scope_as = task_contract + # Then we start the scheme. + task_contract_taker ?= { + #start_scheme = { + # type = laamp_base_5041_contract_scheme + # contract = root + # target_character = root.task_contract_employer + #} + # Make a note of what the scheme even is; we'll need this for the event too. + #scope:task_contract.scheme = { save_scope_as = scheme } + trigger_event = laamp_base_contract_schemes.5041 + } + } + on_create = { + scope:contract = { + set_variable = { + name = animation + value = 0 + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + # Camp building extra Criminal Rewards: +50%. + if = { + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { + save_scope_value_as = { name = extra_reward value = flag:no } + } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = task_contract_success_gold_gain_crime_value + PRESTIGE = 0 + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_crime_success_value + OPINION_TYPE = succeeded_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = poacher + XP_MIN = gallowsbait_xp_medium_gain + XP_MAX = gallowsbait_xp_medium_gain + } + } + } + } + failure_standard = { + positive = no + should_print_on_complete = yes + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_crime_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_crime_failure_value + OPINION_TYPE = attempted_criminal_contract_against_me_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + # Update gallowsbait score. + task_contract_taker = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = poacher + XP_MIN = gallowsbait_xp_minor_gain + XP_MAX = gallowsbait_xp_minor_gain + } + } + } + } + } +} diff --git a/common/task_contracts/laamp_extra_contracts.txt b/common/task_contracts/laamp_extra_contracts.txt new file mode 100644 index 00000000..0244931a --- /dev/null +++ b/common/task_contracts/laamp_extra_contracts.txt @@ -0,0 +1,5574 @@ +################################################## +# INFO +# Extra contracts for laamps. Various types of contracts with interesting things to get and do, like wars, travel, artifacts and more. +# +################################################## + + + +################################################## +# GROUPS (for populate_task_contracts_for_area) +# +# laamp_contracts_war_group +# laamp_contracts_criminal_group +# laamp_contracts_transport_group +# laamp_contracts_diplomacy_group +# laamp_contracts_intrigue_group +# +# +# NOTICEBOARD GROUPS (for Visit Settlement - ep3_laamp_decision_event.1025) +# laamp_contracts_noticeboard_group +# + + + +################################################## +# +# laamp_raid_contract - Raid for Captives +# laamp_join_war_contract - Stand with Us +# laamp_help_claimant_contract - Press My Claims +# laamp_steal_artifact_contract - Reclaim Artifact +# laamp_construction_contract - Construction Work +# laamp_treasure_hunting_contract - Treasure Hunting +# laamp_cultural_minority_contract - Protect Heritage +# laamp_religious_minority_contract - Reward the Faithful +# laamp_prison_break_contract - Prison Break +# laamp_treasure_map_contract - Treasure Map +# laamp_legitimist_support_contract +# laamp_join_faction_contract - Support Faction +# laamp_help_faith_conversion_contract - Missionary Duties +# laamp_fight_faith_conversion_contract - Protect the Adherents +# laamp_help_train_commanders_contract - Knight's Coach +# laamp_help_find_secrets_contract - Private Eye +# laamp_help_fabricate_claim_contract - Forgotten Claims +# laamp_help_increase_control_contract - Fight Corruption +# +################################################## + +## Raid for Captives +# scope:employer = ruler wanting to capture prisoners +# task_contract_target = character to declare war on +# task_contract_destination = capital of task_contract_target +laamp_raid_contract = { + group = laamp_contracts_war_group + icon = "gfx/interface/icons/casus_bellis/request_mercenary.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + OR = { + any_relation = { + type = rival + is_ai = yes + is_adult = yes + is_landed = yes + capital_province.building_max_garrison < root.current_military_strength + is_within_diplo_range = { CHARACTER = scope:employer } + any_courtier_or_guest = { + count >= 3 + OR = { + AND = { + has_dynasty = yes + dynasty = prev.dynasty + } + is_consort_of = prev + } + } + } + any_neighboring_top_liege_realm_owner = { + is_ai = yes + is_adult = yes + is_landed = yes + capital_province.building_max_garrison < root.current_military_strength + house_has_feud_relation_with_trigger = { TARGET = scope:employer } + any_courtier_or_guest = { + count >= 3 + OR = { + AND = { + has_dynasty = yes + dynasty = prev.dynasty + } + is_consort_of = prev + } + } + } + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_somewhat_rare_value + add = laamp_contracts_weight_up_mercenary_value + add = laamp_contracts_weight_up_martial_slight_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_target } + } + if = { + limit = { + any_neighboring_top_liege_realm_owner = { + is_ai = yes + is_adult = yes + is_landed = yes + capital_province.building_max_garrison < root.current_military_strength + house_has_feud_relation_with_trigger = { TARGET = scope:task_contract_employer } + any_courtier_or_guest = { + count >= 3 + OR = { + AND = { + has_dynasty = yes + dynasty = prev.dynasty + } + is_consort_of = prev + } + } + } + } + random_neighboring_top_liege_realm_owner = { + limit = { + is_ai = yes + is_adult = yes + is_landed = yes + capital_province.building_max_garrison < root.current_military_strength + house_has_feud_relation_with_trigger = { TARGET = scope:task_contract_employer } + any_courtier_or_guest = { + count >= 3 + OR = { + AND = { + has_dynasty = yes + dynasty = prev.dynasty + } + is_consort_of = prev + } + } + } + save_scope_as = task_contract_target + capital_province = { + save_scope_as = task_contract_destination + } + } + } + else = { + random_relation = { + type = rival + limit = { + is_ai = yes + is_adult = yes + is_landed = yes + capital_province.building_max_garrison < root.current_military_strength + is_within_diplo_range = { CHARACTER = scope:task_contract_employer } + any_courtier_or_guest = { + count >= 3 + OR = { + AND = { + has_dynasty = yes + dynasty = prev.dynasty + } + is_consort_of = prev + } + } + } + save_scope_as = task_contract_target + capital_province = { + save_scope_as = task_contract_destination + } + } + } + } + else_if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_destination } + } + scope:task_contract_target = { + capital_province = { + save_scope_as = task_contract_destination + } + } + } + } + set_task_contract_target = scope:task_contract_target + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + } + } + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0003 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_raid_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + scope:task_contract.var:task_contract_employer = { + save_scope_as = task_contract_employer + } + #saving scopes for custom tooltip + save_scope_as = attacker + scope:task_contract.var:task_contract_target = { + save_scope_as = defender + } + custom_tooltip = ep3_laamp_raid_contract_cb_prisoners.tt_attacker + custom_tooltip = ep3_laamp_raid_contract_cb_prisoners.tt_gold + trigger_event = ep3_contract_event.0004 + show_as_tooltip = { + if = { + limit = { + faith != scope:defender.faith + } + add_piety = minor_piety_gain + } + } + # Huck 'em into our contact list. + add_contact = scope:task_contract_employer + # Give hook as well as contact + add_hook_if_possible_default_length_effect = { + TARGET = scope:task_contract_employer + TYPE = contact_list_weak_hook + } + war_contracts_completed_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + scope:task_contract.task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_outcome + value = flag:failure + } + save_scope_value_as = { + name = task_contract_tier + value = scope:task_contract.task_contract_tier + } + trigger_event = ep3_contract_event.0004 + } + show_as_tooltip = { + task_contract_taker = { + add_prestige = task_contract_failure_prestige_loss_full_value + reverse_add_opinion = { + opinion = -50 + modifier = failed_task_contract_opinion + target = scope:task_contract.task_contract_employer + } + } + } + } + } + } +} + +## Stand with Us +# scope:employer = ruler needing help in a civil/religious/de_hure war +# scope:task_contract_war = civil/religious/de_hure war to join on the side of employer +laamp_join_war_contract = { + group = laamp_contracts_war_group + icon = "gfx/interface/icons/trait_level_tracks/mercenary.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + # Specific flavour triggers. + scope:employer = { + any_character_war = { + ep3_adventurer_mercenary_war_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + save_temporary_scope_as = temp_war + } + } + #don't spawn contracts for the same wars + NOT = { + any_character_task_contract = { + task_contract_type = laamp_join_war_contract + var:task_contract_war ?= scope:temp_war + } + } + #or if you are already an ally in a war with someone in that war, to prevent being an ally and an enemy at the same time + scope:temp_war = { + any_war_participant = { + NOT = { + is_allied_in_war = root + } + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + custom_tooltip = { + text = laamp_join_war_contract.valid_war + any_character_task_contract = { + task_contract_type = laamp_join_war_contract + exists = var:task_contract_war + task_contract_employer = scope:employer + } + } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_keep = { + exists = root.var:task_contract_war + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_very_rare_value + add = laamp_contracts_weight_up_mercenary_value + add = laamp_contracts_weight_up_martial_slight_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + random_character_war = { + limit = { + is_war_leader = prev + OR = { + using_civil_war_cb_trigger = yes + using_non_ghw_holy_war_cb_trigger = yes + using_de_jure_cb_trigger = yes + using_conquest_cb_trigger = yes + } + any_war_participant = { + this != scope:task_contract.task_contract_taker + } + } + save_scope_as = task_contract_war + } + save_scope_as = task_contract_employer + } + set_variable = { + name = task_contract_war + value = scope:task_contract_war + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + scope:task_contract_war = { + if = { + limit = { + is_attacker = scope:task_contract_employer + } + primary_defender = { + save_scope_as = task_contract_target + } + } + else = { + primary_attacker = { + save_scope_as = task_contract_target + } + } + } + set_task_contract_target = scope:task_contract_target + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + } + } + + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0008 + } + set_variable = { + name = task_contract_grace_period + days = 90 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_join_war_contract + } + } + + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + var:task_contract_war = { + save_scope_as = war + } + task_contract_employer = { + save_scope_as = task_contract_employer + save_scope_as = attacker + } + task_contract_taker = { + save_scope_as = task_contract_taker + save_scope_as = defender + custom_tooltip = laamp_join_war_contract.contribution_based_reward_gold + if = { + limit = { + faith != scope:task_contract.var:task_contract_target.faith + } + custom_tooltip = laamp_join_war_contract.contribution_based_reward_piety + } + save_scope_value_as = { + name = task_contract_reward + value = flag:success_standard + } + save_scope_value_as = { + name = war_contribution_value + value = "scope:war.war_contribution(scope:task_contract_taker)" + } + if = { + limit = { + exists = scope:task_contract_employer.var:valuable_prisoners + } + save_scope_value_as = { + name = war_valuable_prisoners + value = scope:task_contract_employer.var:valuable_prisoners + } + } + save_scope_value_as = { + name = task_contract_tier + value = scope:task_contract.task_contract_tier + } + trigger_event = ep3_contract_event.0013 + # Huck 'em into our contact list. + add_contact = scope:task_contract_employer + # Give hook as well as contact + add_hook_if_possible_default_length_effect = { + TARGET = scope:task_contract_employer + TYPE = contact_list_weak_hook + } + war_contracts_completed_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + if = { + limit = { + NOT = { has_variable = task_contract_grace_period } + } + save_scope_as = task_contract + var:task_contract_war = { + save_scope_as = war + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + task_contract_taker = { + add_prestige = task_contract_failure_prestige_loss_full_value + save_scope_value_as = { + name = task_contract_reward + value = flag:failure_standard + } + save_scope_value_as = { + name = task_contract_tier + value = scope:task_contract.task_contract_tier + } + trigger_event = ep3_contract_event.0013 + } + } + } + } + } +} + +## Help Legitimate claim +# scope:employer = ruler with a valid claim +# task_contract_target = character to declare war on +# task_contract_destination = capital of task_contract_target +laamp_help_claimant_contract = { + group = laamp_contracts_war_group + icon = "gfx/interface/icons/casus_bellis/claim_cb.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + is_at_war = no + NAND = { + government_allows = administrative + liege = { government_allows = administrative } + } + liege = { has_realm_law_flag = vassal_all_wars_banned } + NOT = { + vassal_contract_has_flag = vassal_contract_war_override + } + any_claim = { + holder ?= { + NOT = { is_allied_to = scope:employer } + NOT = { any_liege_or_above = { this = scope:employer } } + scope:employer = { + has_cb_on = { + target = prev + cb = claim_cb + } + } + } + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_somewhat_rare_value + add = laamp_contracts_weight_up_mercenary_value + add = laamp_contracts_weight_up_martial_slight_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_target } + } + random_claim = { + limit = { + holder ?= { + NOT = { is_allied_to = root } + NOT = { any_liege_or_above = { this = root } } + scope:task_contract_employer = { + has_cb_on = { + target = prev + cb = claim_cb + } + } + } + } + save_scope_as = task_contract_title + holder = { + save_scope_as = task_contract_target + } + } + } + } + set_task_contract_target = scope:task_contract_target + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_variable = { + name = task_contract_title + value = scope:task_contract_title + } + } + } + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0060 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_help_claimant_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + var:task_contract_title = { + save_scope_as = task_contract_title + } + task_contract_employer = { + save_scope_as = task_contract_employer + save_scope_as = attacker + show_as_tooltip = { + get_title = scope:task_contract_title + } + } + task_contract_taker = { + save_scope_as = task_contract_taker + save_scope_as = defender + custom_tooltip = laamp_join_war_contract.contribution_based_reward_gold + if = { + limit = { + faith != scope:task_contract.var:task_contract_target.faith + } + custom_tooltip = laamp_join_war_contract.contribution_based_reward_piety + } + save_scope_value_as = { + name = task_contract_reward + value = flag:success_standard + } + save_scope_value_as = { + name = task_contract_tier + value = scope:task_contract.task_contract_tier + } + trigger_event = ep3_contract_event.0013 + # Huck 'em into our contact list. + add_contact = scope:task_contract_employer + # Give hook as well as contact + add_hook_if_possible_default_length_effect = { + TARGET = scope:task_contract_employer + TYPE = contact_list_weak_hook + } + war_contracts_completed_tracker_effect = yes + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + var:task_contract_title = { + save_scope_as = task_contract_title + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + task_contract_taker = { + add_prestige = task_contract_failure_prestige_loss_full_value + save_scope_value_as = { + name = task_contract_reward + value = flag:failure_standard + } + save_scope_value_as = { + name = task_contract_tier + value = scope:task_contract.task_contract_tier + } + trigger_event = ep3_contract_event.0013 + } + } + } + } +} + +## Reclaim Artifact +# scope:employer = ruler wanting to steal an artifact +# task_contract_target = character to steal an artifact from +# task_contract_object = an artifact to steal +laamp_steal_artifact_contract = { + group = laamp_contracts_criminal_group + icon = "gfx/interface/icons/character_interactions/icon_scheme_steal_back_artifact.dds" + travel = yes + use_diplomatic_range = no + is_criminal = yes + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + OR = { + #target any artifact you have a claim on + any_claimed_artifact = { + artifact_owner = { + is_within_diplo_range = { CHARACTER = root } + } + } + #or if you are greedy target at least a masterwork artifact of someone that is up to 1 tier above you + AND = { + ai_greed >= 50 + any_neighboring_top_liege_realm_owner = { + highest_held_title_tier <= { + value = scope:employer.highest_held_title_tier + add = 1 + } + any_character_artifact = { + artifact_high_rarity_trigger = yes + } + } + } + } + } + } + + valid_to_keep = { + exists = root.var:task_contract_object + root.var:task_contract_object = { + artifact_owner != root.task_contract_employer + } + task_contract_target = { + NOT = { + has_opinion_modifier = { + target = root.task_contract_taker + modifier = stole_artifact_from_me + } + } + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + exists = root.var:task_contract_object + root.var:task_contract_object = { + artifact_owner != root.task_contract_employer + } + task_contract_target = { + NOT = { + has_opinion_modifier = { + target = root.task_contract_taker + modifier = stole_artifact_from_me + } + } + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_quite_rare_value + add = laamp_contracts_weight_up_intrigue_value + if = { + limit = { + employs_court_position = master_thief_camp_officer + } + add = 50 + } + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + if = { + limit = { + any_claimed_artifact = { + artifact_owner = { + is_within_diplo_range = { CHARACTER = scope:task_contract.task_contract_taker } + } + save_temporary_scope_as = claimed_artifact + } + } + scope:claimed_artifact = { + save_scope_as = task_contract_object + artifact_owner = { + save_scope_as = task_contract_target + } + } + } + else = { + random_neighboring_top_liege_realm_owner = { + limit = { + highest_held_title_tier <= { + value = scope:task_contract.task_contract_employer.highest_held_title_tier + add = 1 + } + any_character_artifact = { + artifact_high_rarity_trigger = yes + save_temporary_scope_as = claimed_artifact + } + } + scope:claimed_artifact = { + save_scope_as = task_contract_object + } + save_scope_as = task_contract_target + } + } + } + set_task_contract_target = scope:task_contract_target + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_variable = { + name = task_contract_object + value = scope:task_contract_object + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0009 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_steal_artifact_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + var:task_contract_object = { + save_scope_as = task_contract_object + } + task_contract_taker = { + send_interface_toast = { + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + root = { + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + # Update gallowsbait score. + laamp_rewards_apply_criminal_xp_effect = { + TRACK = thief + XP_MIN = gallowsbait_xp_medium_gain + XP_MAX = gallowsbait_xp_medium_gain + } + } + hidden_effect = { + scope:task_contract_object = { + set_owner = scope:task_contract.task_contract_employer + } + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { + # Update gallowsbait score. + laamp_rewards_apply_criminal_xp_effect = { + TRACK = thief + XP_MIN = gallowsbait_xp_minor_gain + XP_MAX = gallowsbait_xp_minor_gain + } + } + } + } + } +} + +## Construction Work +# scope:employer = ruler wanting to build a holding +# task_contract_destination = province where the holding is being built +laamp_construction_contract = { + group = laamp_contracts_transport_group + icon = "gfx/interface/icons/vassal_stances/builder.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + NOT = { government_has_flag = government_is_tribal } + any_held_title = { + county_has_empty_province_trigger = yes + } + short_term_gold > main_building_tier_1_cost + OR = { + has_trait = architect + AND = { + has_royal_court = yes + employs_court_position = royal_architect_court_position + any_court_position_holder = { + type = royal_architect_court_position + is_available_ai_adult = yes + } + } + ai_has_builder_or_pious_builder_personality = yes + } + } + } + valid_to_keep = { + var:task_contract_destination ?= { + has_ongoing_construction = yes + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + #once you are there, you need to stay to complete the contract + trigger_if = { + limit = { + var:task_contract_destination.county = { + has_county_modifier = massive_construction_efforts_modifier + } + } + task_contract_taker.capital_county = var:task_contract_destination.county + } + NOT = { #start_city_construction_decision invalidation + var:task_contract_destination = { + has_variable = laamp_city_construction + } + } + } + + weight = { + # Standard weights. + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_transport_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + if = { + limit = { + NOT = { has_variable = task_contract_destination } + } + task_contract_employer = { + ordered_held_title = { + limit = { county_has_empty_province_trigger = yes } + order_by = development_level + random_county_province = { + limit = { province_has_no_holding_trigger = yes } + save_scope_as = task_contract_destination + random_list = { + 1 = { + begin_create_holding = { + type = castle_holding + refund_cost = { gold = 0 } + } + } + 1 = { + modifier = { + add = 10 + county = { county_has_no_city_trigger = yes } + } + begin_create_holding = { + type = church_holding + refund_cost = { gold = 0 } + } + } + 1 = { + modifier = { + add = 10 + county = { county_has_no_church_trigger = yes } + } + begin_create_holding = { + type = city_holding + refund_cost = { gold = 0 } + } + } + } + } + } + remove_short_term_gold = main_building_tier_1_cost + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + } + else = { + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_critical_value + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0001 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_construction_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + var:task_contract_destination.county = { + remove_county_modifier = massive_construction_efforts_modifier + } + task_contract_taker = { + remove_character_modifier = ep3_construction_contract_modifier + } + } + } + + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + scope:task_contract.var:task_contract_destination = { + switch = { + trigger = has_holding_type + castle_holding = { + scope:task_contract.task_contract_taker = { + add_prestige = task_contract_success_prestige_gain_critical_value + } + } + church_holding = { + scope:task_contract.task_contract_taker = { + add_piety = task_contract_success_piety_gain_critical_value + } + } + city_holding = { + scope:task_contract.task_contract_taker = { + add_gold = scope:task_contract.var:gold_success_standard + } + } + } + } + if = { + limit = { + is_ai = no + } + scope:task_contract.task_contract_employer = { + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = scope:task_contract.var:gold_success_standard + } + } + } + else = { + add_gold = scope:task_contract.var:gold_success_standard + } + reverse_add_opinion = { + modifier = succeeded_task_contract_opinion + target = scope:task_contract.task_contract_employer + opinion = 20 + } + # Huck 'em into our contact list. + add_contact = scope:task_contract.task_contract_employer + } + } + } + } + success_critical = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + scope:task_contract.var:task_contract_destination = { + switch = { + trigger = has_holding_type + castle_holding = { + scope:task_contract.task_contract_taker = { + add_prestige = task_contract_success_prestige_gain_full_value + } + } + church_holding = { + scope:task_contract.task_contract_taker = { + add_piety = task_contract_success_piety_gain_full_value + } + } + city_holding = { + scope:task_contract.task_contract_taker = { + add_gold = scope:task_contract.var:gold_success_critical + } + } + } + } + if = { + limit = { + is_ai = no + } + scope:task_contract.task_contract_employer = { + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = scope:task_contract.var:gold_success_critical + } + } + } + else = { + add_gold = scope:task_contract.var:gold_success_critical + } + reverse_add_opinion = { + modifier = critically_succeeded_task_contract_opinion + target = scope:task_contract.task_contract_employer + opinion = 50 + } + # Huck 'em into our contact list. + add_contact = scope:task_contract.task_contract_employer + # Give hook as well as contact + add_hook_if_possible_default_length_effect = { + TARGET = scope:task_contract.task_contract_employer + TYPE = contact_list_weak_hook + } + } + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + add_prestige = task_contract_failure_prestige_loss_full_value + reverse_add_opinion = { + opinion = -50 + modifier = failed_task_contract_opinion + target = scope:task_contract.task_contract_employer + } + } + var:task_contract_destination.county ?= { + remove_county_modifier = massive_construction_efforts_modifier + } + } + } + } +} + +## Treasure Hunting +# scope:employer = ruler wanting a treasure +# task_contract_destination = province where you go to find a treasure - set in the treasure_hunting_contract_decision decision +laamp_treasure_hunting_contract = { + group = laamp_contracts_transport_group + icon = "gfx/interface/icons/inspirations/adventure_inspiration.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + #There can only be one contract of this type at a time, so that the decision is easier to manage + any_character_task_contract = { + NOT = { has_task_contract_type = laamp_treasure_hunting_contract } + } + scope:employer = { + highest_held_title_tier > tier_duchy + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_somewhat_rare_value + add = laamp_contracts_weight_up_transport_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + save_scope_as = task_contract_taker + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + scope:task_contract_taker = { + trigger_event = ep3_contract_event.0005 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination ?= { + save_scope_as = task_contract_destination + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_treasure_hunting_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + } + } + + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + add_prestige = task_contract_success_prestige_gain_full_value + if = { + limit = { + is_ai = no + } + scope:task_contract.task_contract_employer = { + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = task_contract_success_gold_gain_full_value + } + } + } + else = { + add_short_term_gold = task_contract_success_gold_gain_full_value + } + reverse_add_opinion = { + modifier = succeeded_task_contract_opinion + target = scope:task_contract.task_contract_employer + opinion = 20 + } + # Huck 'em into our contact list. + add_contact = scope:task_contract.task_contract_employer + # Give hook as well as contact + add_hook_if_possible_default_length_effect = { + TARGET = scope:task_contract.task_contract_employer + TYPE = contact_list_weak_hook + } + } + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + add_prestige = task_contract_failure_prestige_loss_full_value + reverse_add_opinion = { + opinion = -50 + modifier = failed_task_contract_opinion + target = scope:task_contract.task_contract_employer + } + } + } + } + } +} + +## Protect Heritage +# scope:employer = a minority vassal of the same culture as root wanting to get title revocation rights vassal contract +# task_contract_target = liege of task_contract_employer +# task_contract_destination = capital of task_contract_employer +laamp_cultural_minority_contract = { + group = laamp_contracts_diplomacy_group + icon = "gfx/interface/icons/character_interactions/icon_culture.dds" + travel = yes + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + top_liege != this + has_vassal_stance = minority + liege ?= { + is_ai = yes + } + vassal_contract_obligation_level_can_be_increased = title_revocation_rights + culture = { + this != scope:employer.liege.culture + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + save_temporary_scope_as = task_contract + var:task_contract_target = { + any_vassal = { + scope:task_contract.var:task_contract_employer = this + } + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_diplomacy_value + add = laamp_contracts_weight_up_diplomacy_slight_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + liege = { + save_scope_as = task_contract_target + } + capital_province = { + save_scope_as = task_contract_destination + } + } + set_task_contract_target = scope:task_contract_target + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0020 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_cultural_minority_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else_if = { + limit = { + scope:task_contract_target = { + any_vassal = { + count = all + scope:task_contract_employer != this + } + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:not_vassal + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + type = event_toast_effect_good + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + root = { + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + if = { + limit = { + scope:task_contract.task_contract_taker.culture != scope:task_contract.task_contract_employer.culture + } + scope:task_contract.task_contract_taker.culture = { + change_cultural_acceptance = { + target = scope:task_contract.task_contract_employer.culture + value = low_positive_culture_acceptance + desc = cultural_acceptance_laamp_cultural_minority_contract + } + } + } + show_as_tooltip = { + scope:task_contract.task_contract_employer = { + vassal_contract_set_obligation_level = { + type = title_revocation_rights + level = 1 + } + } + } + } + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + type = event_toast_effect_bad + title = laamp_transport_contract.transport_failed + root = { + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } + } + } + } +} + +## Reward the Faithful +# scope:employer = a minority vassal of the same faith as root wanting to get religious rights vassal contract +# task_contract_target = liege of task_contract_employer +# task_contract_destination = capital of task_contract_employer +laamp_religious_minority_contract = { + group = laamp_contracts_diplomacy_group + icon = "gfx/interface/icons/character_interactions/religious.dds" + travel = yes + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + top_liege != this + has_vassal_stance = minority + liege ?= { + is_ai = yes + } + vassal_contract_obligation_level_can_be_increased = religious_rights + faith != liege.faith + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + save_temporary_scope_as = task_contract + var:task_contract_target = { + any_vassal = { + scope:task_contract.var:task_contract_employer = this + } + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_diplomacy_value + add = laamp_contracts_weight_up_diplomacy_slight_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + liege = { + save_scope_as = task_contract_target + } + capital_province = { + save_scope_as = task_contract_destination + } + } + set_task_contract_target = scope:task_contract_target + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0021 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_religious_minority_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else_if = { + limit = { + scope:task_contract_target = { + any_vassal = { + count = all + scope:task_contract_employer != this + } + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:not_vassal + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + type = event_toast_effect_good + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + save_scope_value_as = { name = extra_reward value = flag:no } + root = { + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = 0 + PIETY = task_contract_success_piety_gain_full_value + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + show_as_tooltip = { + scope:task_contract.task_contract_employer = { + vassal_contract_set_obligation_level = { + type = religious_rights + level = 1 + } + } + } + } + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + type = event_toast_effect_bad + title = laamp_transport_contract.transport_failed + save_scope_value_as = { name = extra_reward value = flag:no } + root = { + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = 0 + PIETY = task_contract_failure_piety_loss_full_value + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } + } + } + } +} + +## Prison Break +# scope:employer = a character that has a spouse, family member, soulmate or best friend imprisoned by another character +# task_contract_target = imprisoner +# task_contract_destination = capital of task_contract_target +# task_contract_object = the imprisoned character to be rescued +laamp_prison_break_contract = { + group = laamp_contracts_intrigue_group + icon = "gfx/interface/icons/casus_bellis/fp3_free_house_member.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + OR = { + any_spouse = { + is_imprisoned = yes + NOR = { + is_imprisoned_by = scope:employer + is_imprisoned_by = root + } + } + any_close_family_member = { + is_imprisoned = yes + NOR = { + is_imprisoned_by = scope:employer + is_imprisoned_by = root + } + } + any_relation = { + type = soulmate + is_imprisoned = yes + NOR = { + is_imprisoned_by = scope:employer + is_imprisoned_by = root + } + } + any_relation = { + type = best_friend + is_imprisoned = yes + NOR = { + is_imprisoned_by = scope:employer + is_imprisoned_by = root + } + } + } + } + } + valid_to_keep = { + exists = root.var:task_contract_object + root.var:task_contract_object = { + is_imprisoned = yes + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + var:task_contract_object ?= { + is_imprisoned = yes + is_alive = yes + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + weight = { + # Standard weights. + value = task_contract_weight_interesting_very_rare_value + add = laamp_contracts_weight_up_intrigue_value + scope:employer = { + if = { + limit = { has_trait = compassionate } + add = task_contract_weight_bonus_employer_has_associated_traits_value + } + multiply = task_contract_weight_by_tier_value + } + add = task_contract_weight_employer_contact_list_value + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + every_spouse = { + limit = { + is_imprisoned = yes + NOR = { + is_imprisoned_by = scope:task_contract.task_contract_employer + is_imprisoned_by = scope:task_contract.task_contract_taker + } + } + add_to_list = character_to_breakout + } + every_close_family_member = { + limit = { + is_imprisoned = yes + NOR = { + is_imprisoned_by = scope:task_contract.task_contract_employer + is_imprisoned_by = scope:task_contract.task_contract_taker + } + } + add_to_list = character_to_breakout + } + every_relation = { + type = soulmate + limit = { + is_imprisoned = yes + NOR = { + is_imprisoned_by = scope:task_contract.task_contract_employer + is_imprisoned_by = scope:task_contract.task_contract_taker + } + } + add_to_list = character_to_breakout + } + every_relation = { + type = best_friend + limit = { + is_imprisoned = yes + NOR = { + is_imprisoned_by = scope:task_contract.task_contract_employer + is_imprisoned_by = scope:task_contract.task_contract_taker + } + } + add_to_list = character_to_breakout + } + ordered_in_list = { + list = character_to_breakout + order_by = prison_break_value + save_scope_as = task_contract_object + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + set_variable = { + name = task_contract_object + value = scope:task_contract_object + } + scope:task_contract_object = { + imprisoner = { + save_scope_as = task_contract_target + capital_province = { + save_scope_as = task_contract_destination + } + } + add_character_flag = being_prisonbroken_by_laamp + } + set_task_contract_target = scope:task_contract_target + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0030 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + var:task_contract_object = { + save_scope_as = task_contract_object + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_prison_break_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else_if = { + limit = { + scope:task_contract_object = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:escortee_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else_if = { + limit = { + scope:task_contract_object = { + is_imprisoned = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:prisoner_free + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + type = event_toast_effect_good + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + scope:task_contract = { + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + scope:task_contract.var:task_contract_object = { + scope:task_contract.var:task_contract_target = { + save_scope_as = imprisoner + } + escape_from_prison_effect = yes + } + } + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + type = event_toast_effect_bad + title = laamp_transport_contract.transport_failed + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + scope:task_contract = { + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } + } + } + } +} + +## Treasure Map +# scope:employer = root +# task_contract_target = root +# contract_treasure_location = ep3_laamp_decision_event.1025 +# contract_picked_up_in_location = ep3_laamp_decision_event.1025 +laamp_treasure_map_contract = { + group = laamp_contracts_noticeboard_group #These are created in the Visit Local Settlement-decision + icon = "gfx/interface/icons/character_interactions/icon_contract_escort.dds" + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + #There can only be one contract of this type at a time + any_task_contract = { + NOT = { has_task_contract_type = laamp_treasure_map_contract } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + #We're not already enrolled in a treasure map contract + NOT = { + any_character_artifact = { has_variable = 1025_treasure_map } + } + } + valid_to_continue = { + #We haven't already located the treasure + trigger_if = { + limit = { + NOT = { has_variable = 0045_used_map } + } + root.task_contract_taker = { + any_character_artifact = { has_variable = 1025_treasure_map } + } + } + #The employer is still alive and free + root.task_contract_employer = { + is_alive = yes + is_imprisoned = no + NOT = { has_trait = incapable } + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_somewhat_rare_value + add = laamp_contracts_weight_up_transport_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { save_scope_as = task_contract_taker } + task_contract_employer = { save_scope_as = task_contract_employer } + + #Create quest item Treasure Map + scope:task_contract_taker = { + create_artifact = { + name = treasure_map + description = treasure_map_desc + modifier = artifact_monthly_minor_prestige_1_modifier + type = miscellaneous + visuals = pocket_map + max_durability = 10 + history = { + type = given + actor = scope:task_contract_employer + recipient = scope:task_contract_taker + location = scope:task_contract.var:contract_picked_up_in_location + } + save_scope_as = newly_created_map + } + #Set variables + scope:newly_created_map ?= { + set_variable = 1025_treasure_map + set_variable = { + name = picked_up_in_location + value = scope:task_contract.var:contract_picked_up_in_location + } + set_variable = { + name = artifact_treasure_location + value = scope:task_contract.var:contract_treasure_location + } + if = { + limit = { + exists = var:picked_up_in_location + exists = var:artifact_treasure_location + } + set_artifact_description = treasure_map_desc + } + } + #Chuck the employer in there as well + add_courtier = scope:task_contract_employer + scope:task_contract_employer = { + add_character_flag = { + flag = blocked_from_leaving + years = 11 #The map should break first, and is set to 10 years + } + } + trigger_event = ep3_contract_event.0043 + } + } + + #Employer died? Map decayed? + on_invalidated = { + #Employer unavailable + if = { + limit = { + task_contract_employer = { + OR = { + is_alive = no + has_trait = incapable + is_imprisoned = yes + } + } + } + task_contract_employer = { save_scope_as = task_contract_employer } + #Save the location of the employer + var:contract_picked_up_in_location = { save_scope_as = original_contract_location } + #Save contract + save_scope_as = task_contract + #Save tier, realistically always 1 + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + #Save the destination + var:contract_treasure_location ?= { save_scope_as = task_contract_destination } + #Destroy the historical artifact if the LAAMP is an AI + if = { + limit = { + has_variable = has_unique_historical_artifact + task_contract_taker = { is_ai = yes } + } + var:has_unique_historical_artifact = { save_scope_as = historical_artifact } + hidden_effect = { destroy_artifact = scope:historical_artifact } + } + #Send the appropriate event + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_treasure_map_contract + } + #Dead + if = { + limit = { + scope:task_contract_employer = { is_alive = no } + } + trigger_event = ep3_contract_event.0041 + } + #Incapable + if = { + limit = { + scope:task_contract_employer = { has_trait = incapable } + } + trigger_event = ep3_contract_event.0041 + } + #Imprisoned + if = { + limit = { + scope:task_contract_employer = { is_imprisoned = yes } + } + #Save the invalidation flag + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:unlanded_employer_is_imprisoned + } + trigger_event = ep3_contract_event.0012 + } + } + #No longer excavating + remove_variable ?= ep3_laamp_decision_1000_is_excavating + } + #Decay-destroyed map is handled via on_artifact_broken_through_decay, leading to ep3_contract_event.0040 + } + + task_contract_reward = { + #Something to display in the Contract Reward window. Not actually used. + success_qualified = { + effect = { + save_scope_as = task_contract + if = { # Camp building extra Criminal Rewards: +50%. + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { # Standard Reward. + save_scope_value_as = { name = extra_reward value = flag:no } + } + #Check for provision overflows + save_scope_value_as = { + name = provisions_to_add_value + value = { + value = task_contract_taker.domicile.max_provisions + max = old_adventurer_stashed_provisions_value + } + } + save_scope_value_as = { + name = total_provisions_after_reward_value + value = { + value = task_contract_taker.domicile.provisions + add = scope:provisions_to_add_value + } + } + #If there is an overflow + if = { + limit = { scope:total_provisions_after_reward_value > task_contract_taker.domicile.max_provisions } + save_scope_value_as = { + name = provisions_to_add_value + value = { + value = task_contract_taker.domicile.max_provisions + subtract = task_contract_taker.domicile.provisions + } + } + save_scope_value_as = { + name = provisions_overflow_value + value = { + value = scope:total_provisions_after_reward_value + subtract = task_contract_taker.domicile.max_provisions + } + } + save_scope_value_as = { + name = provisions_transformed_to_gold_value + value = { + value = scope:total_provisions_after_reward_value + subtract = task_contract_taker.domicile.max_provisions + multiply = 0.05 + } + } + } + task_contract_taker = { + scope:task_contract.task_contract_employer = { + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = { + value = { + value = old_adventurer_stashed_gold_value + #Extra rewards + if = { + limit = { scope:extra_reward = flag:yes } + multiply = task_contract_extra_reward_multiplier_value + } + } + } + } + } + stress_impact = { + base = major_stress_impact_loss + honest = minor_stress_impact_loss + } + #1000 seems like a fine, round number for some old adventurer to have stashed somewhere + domicile ?= { + change_provisions = { + #We're capped + if = { + limit = { provisions >= max_provisions } + value = 0 #No provisions, you're full + } + #We're not capped and our max cap is less than 1000 + else_if = { + limit = { max_provisions < old_adventurer_stashed_provisions_value } + value = { + value = max_provisions + subtract = provisions + } + } + #We're not capped and our max cap is equal to -or more- than 1000 + else = { + value = { + value = max_provisions + subtract = provisions + max = old_adventurer_stashed_provisions_value + } + } + } + } + #Inform the player about the overflow + if = { + limit = { exists = scope:provisions_transformed_to_gold_value } + custom_tooltip = { + text = overflowing_provisions_to_gold.tt + add_gold = scope:provisions_transformed_to_gold_value + } + } + } + } + } + #Handled in ep3_contract_event.0050 + success_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + if = { # Camp building extra Criminal Rewards: +50%. + limit = { + task_contract_taker.domicile ?= { has_domicile_parameter = camp_improved_criminal_contract_rewards } + } + save_scope_value_as = { name = extra_reward value = flag:yes } + } + else = { # Standard Reward. + save_scope_value_as = { name = extra_reward value = flag:no } + } + #Check for provision overflows + if = { + limit = { task_contract_taker.domicile.max_provisions < old_adventurer_stashed_provisions_value } + save_scope_value_as = { + name = provisions_to_add_value + value = task_contract_taker.domicile.max_provisions + } + } + else = { + save_scope_value_as = { + name = provisions_to_add_value + value = old_adventurer_stashed_provisions_value + } + } + save_scope_value_as = { + name = total_provisions_after_reward_value + value = { + value = task_contract_taker.domicile.provisions + add = scope:provisions_to_add_value + } + } + #If there is an overflow + if = { + limit = { scope:total_provisions_after_reward_value > task_contract_taker.domicile.max_provisions } + save_scope_value_as = { + name = provisions_to_add_value + value = { + value = task_contract_taker.domicile.max_provisions + subtract = task_contract_taker.domicile.provisions + } + } + save_scope_value_as = { + name = provisions_overflow_value + value = { + value = scope:total_provisions_after_reward_value + subtract = task_contract_taker.domicile.max_provisions + } + } + save_scope_value_as = { + name = provisions_transformed_to_gold_value + value = { + value = scope:total_provisions_after_reward_value + subtract = task_contract_taker.domicile.max_provisions + multiply = 0.05 + } + } + } + #The actual toast + task_contract_taker = { + send_interface_toast = { + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + #Historical Artifact 'transferred owner' + if = { + limit = { + scope:task_contract = { has_variable = has_unique_historical_artifact } + } + scope:task_contract = { + var:has_unique_historical_artifact = { save_scope_as = historical_artifact } + } + show_as_tooltip = { + scope:historical_artifact = { set_owner = scope:task_contract.task_contract_employer } + } + } + #Random Jewellry 'transferred owner' + if = { + limit = { + scope:task_contract = { has_variable = has_jewelry_artifact } + } + scope:task_contract = { + var:has_jewelry_artifact = { save_scope_as = jewelry_artifact } + } + show_as_tooltip = { + scope:jewelry_artifact = { set_owner = scope:task_contract.task_contract_employer } + } + } + #Gold reward + if = { + limit = { is_ai = no } + scope:task_contract.task_contract_employer = { + if = { + limit = { exists = scope:historical_artifact } + scope:task_contract.task_contract_employer = { + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = { + value = { + value = old_adventurer_stashed_gold_value + multiply = 4 + #Extra rewards + if = { + limit = { scope:extra_reward = flag:yes } + multiply = task_contract_extra_reward_multiplier_value + } + } + } + } + } + } + else_if = { + limit = { exists = scope:jewelry_artifact } + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = { + value = { + value = old_adventurer_stashed_gold_value + multiply = { + value = scope:task_contract.var:has_jewelry_artifact.artifact_rarity + subtract = 1 + } + #Extra rewards + if = { + limit = { scope:extra_reward = flag:yes } + multiply = task_contract_extra_reward_multiplier_value + } + } + } + } + } + else_if = { + limit = { + scope:task_contract = { has_variable = treasure_gold_great } + } + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = { + value = { + value = old_adventurer_stashed_gold_value + multiply = 1.5 + #Extra rewards + if = { + limit = { scope:extra_reward = flag:yes } + multiply = task_contract_extra_reward_multiplier_value + } + } + } + } + } + else_if = { + limit = { + scope:task_contract = { + OR = { + has_variable = treasure_gold_mediocre + has_variable = treasure_gold_poor + } + } + } + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = { + value = { + value = old_adventurer_stashed_gold_value + multiply = 1.25 + #Extra rewards + if = { + limit = { scope:extra_reward = flag:yes } + multiply = task_contract_extra_reward_multiplier_value + } + } + } + } + } + else_if = { + limit = { + scope:task_contract = { has_variable = treasure_pillaged } + } + pay_short_term_gold = { + target = scope:task_contract.task_contract_taker + gold = { + value = { + value = old_adventurer_stashed_gold_value + #Extra rewards + if = { + limit = { scope:extra_reward = flag:yes } + multiply = task_contract_extra_reward_multiplier_value + } + } + } + } + } + } + } + #For AI + else = { + add_short_term_gold = { + value = { + value = old_adventurer_stashed_gold_value + #Extra rewards + if = { + limit = { scope:extra_reward = flag:yes } + multiply = task_contract_extra_reward_multiplier_value + } + } + } + } + #Prestige reward + if = { + limit = { exists = scope:historical_artifact } + add_prestige = { + value = { + value = major_prestige_gain + #Extra rewards + if = { + limit = { scope:extra_reward = flag:yes } + multiply = task_contract_extra_reward_multiplier_value + } + } + } + } + #Stress loss -- less stress loss if you gained more gold and vice versa (for doing a good thing) + if = { + limit = { + NOT = { exists = scope:historical_artifact } + } + if = { + limit = { + OR = { + exists = scope:jewelry_artifact + scope:task_contract = { has_variable = treasure_gold_great } + } + } + stress_impact = { + base = minor_stress_impact_loss + honest = minor_stress_impact_loss + } + } + else_if = { + limit = { + scope:task_contract = { + OR = { + has_variable = treasure_gold_mediocre + has_variable = treasure_gold_poor + } + } + } + stress_impact = { + base = medium_stress_impact_loss + honest = minor_stress_impact_loss + } + } + else_if = { + limit = { + scope:task_contract = { has_variable = treasure_pillaged } + } + stress_impact = { + base = major_stress_impact_loss + honest = minor_stress_impact_loss + } + } + } + #Lose some Gallowsbait xp + if = { + limit = { + #... you can't steal a view + NOT = { + scope:task_contract = { has_variable = has_scenic_riches } + } + } + #Lose some Gallowsbait xp + if = { + limit = { + has_trait = gallowsbait + has_trait_xp = { + trait = gallowsbait + track = thief + value > 0 + } + } + laamp_rewards_apply_criminal_xp_effect = { + TRACK = thief + XP_MIN = negative_small_lifestyle_random_xp_low + XP_MAX = negative_small_lifestyle_random_xp_low + } + } + } + #Inform the player about the overflow + if = { + limit = { exists = scope:provisions_transformed_to_gold_value } + custom_tooltip = { + text = overflowing_provisions_to_gold.tt + add_gold = scope:provisions_transformed_to_gold_value + } + } + #Throw the historical artifact back in the pool + if = { + limit = { exists = scope:historical_artifact } + hidden_effect = { destroy_artifact = scope:historical_artifact } + } + } + #1000 seems like a fine, round number for some old adventurer to have stashed somewhere + domicile ?= { + change_provisions = { + #We're capped + if = { + limit = { provisions = max_provisions } + value = 0 #No provisions, you're full + } + #We're not capped and our max cap is less than 1000 + else_if = { + limit = { max_provisions < old_adventurer_stashed_provisions_value } + value = { + value = max_provisions + subtract = provisions + } + } + #We're not capped and our max cap is equal to -or more- than 1000 + else = { + value = { + value = max_provisions + subtract = provisions + max = old_adventurer_stashed_provisions_value + } + } + } + } + #Sweep, sweep. + hidden_effect = { + if = { + limit = { + any_character_artifact = { has_variable = 1025_treasure_map } + } + random_character_artifact = { + limit = { has_variable = 1025_treasure_map } + destroy_artifact = this + } + } + } + #No longer excavating + remove_variable ?= ep3_laamp_decision_1000_is_excavating + } + } + } + #Handled in ep3_contract_event.0045 + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + scope:task_contract = { + if = { + limit = { has_variable = has_unique_historical_artifact } + task_contract_taker = { #Pretty inconsequential, since you couldn't really determine ahead of time + send_interface_toast = { + title = laamp_transport_contract.transport_failed + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + #And this adventurer doesn't want to see you again + progress_towards_rival_effect = { + REASON = rival_mia_contract + CHARACTER = scope:task_contract.task_contract_employer + OPINION = 0 + } + reverse_add_opinion = { + modifier = stole_artifact_from_me + target = scope:task_contract.task_contract_employer + opinion = -50 + } + add_prestige = medium_prestige_loss + } + } + } + else = { + task_contract_taker = { #Pretty inconsequential, since you couldn't really determine ahead of time + send_interface_toast = { + title = laamp_transport_contract.transport_failed + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + #And this adventurer doesn't want to see you again + hidden_effect = { #For narrative reasons. For mechanical reasons, this character won't get picked in Visit Settlement again + progress_towards_rival_effect = { + REASON = rival_mia_contract + CHARACTER = scope:task_contract.task_contract_employer + OPINION = 0 + } + } + reverse_add_opinion = { + modifier = disappointed_opinion + target = scope:task_contract.task_contract_employer + opinion = -30 + } + add_prestige = minor_prestige_loss + } + } + } + task_contract_taker = { + #Sweep, sweep. (Let the player know the map will be destroyed when failing) + if = { + limit = { + any_character_artifact = { has_variable = 1025_treasure_map } + } + random_character_artifact = { + limit = { has_variable = 1025_treasure_map } + destroy_artifact = this + } + } + #No longer excavating + remove_variable ?= ep3_laamp_decision_1000_is_excavating + } + } + } + } + } +} + + +laamp_legitimist_support_contract = { + group = laamp_contracts_legitimist_group + icon = "gfx/interface/icons/scheme_types/diplomacy.dds" + + travel = yes + use_diplomatic_range = yes + + weight = { + value = task_contract_weight_interesting_very_rare_value + add = task_contract_weight_employer_contact_list_value + } + + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + has_realm_law = camp_purpose_legitimists + scope:employer = { + opinion = { + target = root + value > 60 + } + } + scope:employer.primary_title.tier >= tier_kingdom + } + + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + on_create = { + scope:contract = { + task_contract_employer = { + add_character_flag = legitimist_supporter + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = petitioned_ruler + } + task_contract_taker = { + trigger_event = ep3_laamps.8101 + } + } + + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + task_contract_employer = { + save_scope_as = recipient + } + task_contract_taker = { + custom_tooltip = laamp_legitimist_support_contract_success + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + task_contract_taker = { + custom_tooltip = laamp_legitimist_support_contract_failure + } + } + } + } +} + +## Support Faction +# scope:employer = ruler needing help in a faction +# scope:task_contract_faction = faction to join +laamp_join_faction_contract = { + group = laamp_contracts_war_group + icon = "gfx/interface/icons/character_interactions/faction.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + # Specific flavour triggers. + scope:employer = { + is_a_faction_member = yes + joined_faction = { + save_temporary_scope_as = temp_faction + } + } + is_a_faction_member = no + #don't spawn contracts for the same factions or faction targets + NOT = { + any_character_task_contract = { + task_contract_type = laamp_join_faction_contract + OR = { + var:task_contract_faction ?= scope:temp_faction + task_contract_employer = scope:temp_faction.faction_target + } + } + } + is_adult = yes + is_imprisoned = no + NOR = { + is_allied_to = scope:temp_faction.faction_target + scope:temp_faction.faction_target = { has_strong_hook = root } + has_trait = incapable + has_character_flag = joining_faction_block + has_relation_friend = scope:temp_faction.faction_target + has_relation_lover = scope:temp_faction.faction_target + has_secret_relation_lover = scope:temp_faction.faction_target + scope:temp_faction.faction_target = { is_contact_of = root } + } + } + valid_to_keep = { + exists = root.var:task_contract_faction + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + custom_tooltip = { + text = NOT_FACTION_JOIN_CREATE_CONDITION_NOT_FACTION_MEMBER + is_a_faction_member = no + } + #passes_faction_hard_block from 00_rules.txt + scope:employer ?= { + joined_faction ?= { + faction_target ?= { + save_temporary_scope_as = target + } + } + } + custom_description = { + text = "FACTION_CANT_JOIN_CREATE_ADULT" + is_adult = yes + } + custom_description = { + text = "FACTION_CANT_JOIN_CREATE_ALLIED" + trigger_if = { + limit = { exists = scope:target } + NOT = { is_allied_to = scope:target } + } + } + custom_description = { + text = "FACTION_CANT_JOIN_CREATE_HOOK" + trigger_if = { + limit = { exists = scope:target } + scope:target = { + NOT = { has_strong_hook = root } + } + } + } + custom_description = { + text = "FACTION_CANT_JOIN_CREATE_IMPRISONED" + trigger_if = { + limit = { + joined_faction ?= { + faction_is_at_war = yes + } + } + } + trigger_else = { + is_imprisoned = no + } + } + custom_description = { + text = "FACTION_CANT_JOIN_CREATE_INCAPABLE" + NOT = { has_trait = incapable } + } + custom_description = { + text = "character_blocked_from_joining" + NOT = { has_character_flag = joining_faction_block } + } + custom_description = { + text = "faction_relation_blocks_joining_friend" + trigger_if = { + limit = { exists = scope:target } + NOT = { + root = { has_relation_friend = scope:target } + } + } + } + custom_description = { + text = "faction_relation_blocks_joining_lover" + trigger_if = { + limit = { exists = scope:target } + NOR = { + root = { has_relation_lover = scope:target } + root = { has_secret_relation_lover = scope:target } + } + } + } + } + valid_to_continue = { + exists = root.var:task_contract_faction + var:task_contract_faction = { + any_faction_member = { + this = root.task_contract_taker + } + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_mercenary_value + add = laamp_contracts_weight_up_martial_slight_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + joined_faction = { + save_scope_as = task_contract_faction + } + save_scope_as = task_contract_employer + } + set_variable = { + name = task_contract_faction + value = scope:task_contract_faction + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + scope:task_contract_faction = { + faction_target = { + save_scope_as = task_contract_target + } + } + set_task_contract_target = scope:task_contract_target + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + } + } + + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0070 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_join_faction_contract + } + } + + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else_if = { + limit = { + NOT = { exists = scope:task_contract_faction } + NOT = { exists = var:suppress_invalidation_event } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:faction_disbanded + } + trigger_event = ep3_contract_event.0012 + } + } + } + task_contract_taker = { + remove_variable = task_contract_faction + } + } + + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + var:task_contract_faction = { + save_scope_as = faction + } + task_contract_employer = { + save_scope_as = task_contract_employer + save_scope_as = attacker + } + task_contract_taker = { + save_scope_as = task_contract_taker + save_scope_as = defender + custom_tooltip = laamp_join_war_contract.contribution_based_reward_gold + if = { + limit = { + faith != scope:task_contract.var:task_contract_target.faith + } + custom_tooltip = laamp_join_war_contract.contribution_based_reward_piety + } + save_scope_value_as = { + name = task_contract_reward + value = flag:success_standard + } + save_scope_value_as = { + name = task_contract_tier + value = scope:task_contract.task_contract_tier + } + war_contracts_completed_tracker_effect = yes + send_interface_toast = { + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + # Huck 'em into our contact list. + add_contact = scope:task_contract.task_contract_employer + # Give hook as well as contact + add_hook_if_possible_default_length_effect = { + TARGET = scope:task_contract.task_contract_employer + TYPE = contact_list_weak_hook + } + if = { + limit = { + exists = scope:task_contract.var:task_contract_title + } + scope:attacker = { + save_scope_as = actor + } + save_scope_as = recipient + scope:task_contract.var:task_contract_title = { + add_to_list = offered_titles + } + negotiate_settlement_interaction_effect = yes + } + } + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + var:task_contract_faction = { + save_scope_as = faction + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_reward + value = flag:failure_standard + } + save_scope_value_as = { + name = task_contract_tier + value = scope:task_contract.task_contract_tier + } + send_interface_toast = { + title = laamp_transport_contract.transport_failed + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + add_prestige = task_contract_failure_prestige_loss_full_value + } + } + } + } + } +} + +## Missionary Duties +# scope:employer = ruler converting the county +# scope:task_contract_target = court chaplain doing the convert council task +# scope:task_contract_destination = county that has the council task active +# scope:task_contract_councillor = always the councillor performing the task +laamp_help_faith_conversion_contract = { + group = laamp_contracts_learning_group + icon = "/gfx/interface/icons/council_task_types/task_conversion.dds" + travel = yes + use_diplomatic_range = yes + + valid_to_create = { + any_task_contract = { + task_contract_type = laamp_help_faith_conversion_contract + NOT = { task_contract_location = scope:employer.location } + } + council_task_contract_valid_employer_trigger = { + COUNCILLOR_TYPE = councillor_court_chaplain + COUNCIL_TASK_TYPE = task_conversion + } + } + + valid_to_accept = { + council_task_contract_valid_employer_trigger = { + COUNCILLOR_TYPE = councillor_court_chaplain + COUNCIL_TASK_TYPE = task_conversion + } + } + + valid_to_keep = { + exists = root.var:task_contract_councillor_liege + exists = root.var:task_contract_councillor + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_continue = { + exists = root.var:task_contract_councillor_liege + exists = root.var:task_contract_councillor + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_learning_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { save_scope_as = task_contract_employer } + if = { + limit = { + scope:task_contract_employer.cp:councillor_court_chaplain ?= { is_performing_council_task = task_conversion } + } + set_task_contract_target = scope:task_contract_employer.cp:councillor_court_chaplain + scope:task_contract_employer.cp:councillor_court_chaplain = { save_scope_as = task_contract_councillor } + } + else = { + set_task_contract_target = scope:task_contract_employer.liege + scope:task_contract_employer = { save_scope_as = task_contract_councillor } + } + set_variable = { + name = task_contract_destination + value = root.task_contract_target.councillor_task_target + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_target + value = root.task_contract_target + } + set_variable = { + name = task_contract_councillor + value = scope:task_contract_councillor + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0085 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_help_faith_conversion_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = task_contract_success_piety_gain_full_value + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + gain_patron_and_hook_from_council_task_contract_effect = yes + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +## Protect the Adherents +# scope:employer = pool character resisting county conversion +# scope:task_contract_target = court chaplain doing the convert council task +# scope:task_contract_destination = county that has the council task active +# scope:task_contract_object = task_contract_target's liege +laamp_fight_faith_conversion_contract = { + group = laamp_contracts_learning_group + icon = "/gfx/interface/icons/council_task_types/task_conversion.dds" + travel = no + use_diplomatic_range = yes + + valid_to_create = { + NOT = { + any_task_contract = { + task_contract_type = laamp_fight_faith_conversion_contract + task_contract_location = scope:employer.location + } + } + scope:employer = { + top_liege != this + any_liege_or_above = { + cp:councillor_court_chaplain ?= { + is_performing_council_task = task_conversion + councillor_task_target = scope:employer.location + } + faith != root.faith + faith != scope:employer.faith + } + } + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_keep = { + exists = root.var:task_contract_councillor_liege + exists = root.var:task_contract_councillor + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_learning_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_destination } + } + random_liege_or_above = { + limit = { + cp:councillor_court_chaplain ?= { + is_performing_council_task = task_conversion + councillor_task_target = scope:task_contract_employer.location + save_temporary_scope_as = temp_councillor + } + faith != scope:task_contract.task_contract_taker.faith + faith != scope:task_contract_employer.faith + } + save_scope_as = task_contract_councillor_liege + scope:temp_councillor = { + save_scope_as = task_contract_councillor + } + } + scope:task_contract = { + #save how the contract was generated for easier debugging + set_variable = { + name = spawned_by + value = flag:populate_effect + } + } + } + else = { + scope:task_contract = { + task_contract_target = { + save_scope_as = task_contract_councillor + liege = { + save_scope_as = task_contract_councillor_liege + } + } + #save how the contract was generated for easier debugging + set_variable = { + name = spawned_by + value = flag:on_action + } + } + } + } + # Error suppression + if = { + limit = { exists = var:spawned_by + OR = { + var:spawned_by = flag:populate_effect + var:spawned_by = flag:on_action + } + } + } + set_variable = { + name = task_contract_councillor_liege + value = scope:task_contract_councillor_liege + } + set_variable = { + name = task_contract_councillor + value = scope:task_contract_councillor + } + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_target } + } + set_task_contract_target = scope:task_contract.var:task_contract_councillor + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_target + value = scope:task_contract.task_contract_target + } + if = { + limit = { + exists = scope:task_contract.task_contract_destination + } + set_variable = { + name = task_contract_destination + value = scope:task_contract.task_contract_destination + } + } + else = { + set_variable = { + name = task_contract_destination + value = scope:task_contract.var:task_contract_councillor.councillor_task_target + } + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0082 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_fight_faith_conversion_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = task_contract_success_piety_gain_full_value + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = 0 + PIETY = -25 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +## Knight's Coach +# scope:employer = ruler or marshal needing help in train commanders council task +# scope:task_contract_target = marshal or ruler, depending on who's the employer +# var:knights_to_train = list of all knights you have to train +laamp_help_train_commanders_contract = { + group = laamp_contracts_martial_group + icon = "/gfx/interface/icons/council_task_types/task_train_commanders.dds" + travel = yes + use_diplomatic_range = yes + + valid_to_create = { + council_task_contract_valid_employer_trigger = { + COUNCILLOR_TYPE = councillor_marshal + COUNCIL_TASK_TYPE = task_train_commanders + } + trigger_if = { + limit = { + scope:employer.cp:councillor_marshal ?= { + is_performing_council_task = task_train_commanders + } + } + scope:employer = { + any_knight = { } + } + } + trigger_else = { + scope:employer.liege = { + any_knight = { } + } + } + } + + valid_to_accept = { + council_task_contract_valid_employer_trigger = { + COUNCILLOR_TYPE = councillor_marshal + COUNCIL_TASK_TYPE = task_train_commanders + } + } + valid_to_keep = { + exists = root.var:task_contract_councillor_liege + exists = root.var:task_contract_councillor + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_continue = { + time_since_contract_taken <= 720 + has_variable_list = knights_to_train + any_in_list = { + variable = knights_to_train + is_alive = yes + is_knight = yes + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_martial_slight_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + + assign_council_task_scopes_in_contract_effect = { + COUNCILLOR_TYPE = councillor_marshal + COUNCIL_TASK_TYPE = task_train_commanders + } + #save all knights to train + scope:task_contract_councillor_liege = { + ordered_knight = { + order_by = { + value = prowess + multiply = -1 + } + max = 3 + add_to_list = knights_list + scope:task_contract = { + add_to_variable_list = { + name = knights_to_train + target = prev + } + } + } + } + #keep track of success and failure + set_variable = { + name = knights_trained + value = 0 + } + set_variable = { + name = knights_failed + value = 0 + } + set_variable = { + name = knights_limit + value = { + value = list_size:knights_list + subtract = 1 + } + } + #get a list of traits you can teach + task_contract_taker = { + every_character_trait = { + limit = { + has_trait_category = commander + } + scope:task_contract = { + add_to_variable_list = { + name = takers_commander_traits + target = prev + } + } + } + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + # Make sure critical values are a bit higher. + save_scope_value_as = { name = gold_safety_margin value = flag:yes } + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_critical_value + } + } + } + + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0090 + } + } + + on_invalidated = { + save_scope_as = task_contract + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_help_train_commanders_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else = { + scope:task_contract = { + if = { + limit = { + NAND = { + var:knights_trained = 0 + var:knights_failed = 0 + } + } + if = { + limit = { + var:knights_trained >= scope:task_contract.var:knights_failed + } + complete_task_contract = success_standard + } + else = { + complete_task_contract = failure_standard + } + } + } + } + } + } + + task_contract_reward = { + success_critical = { + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" + send_interface_toast = { + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + scope:task_contract = { + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + gain_patron_and_hook_from_council_task_contract_effect = yes + } + } + } + } + } + success_standard = { + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" + send_interface_toast = { + title = laamp_transport_contract.success + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + scope:task_contract = { + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + } + } + } + failure_standard = { + positive = no + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" + send_interface_toast = { + title = laamp_transport_contract.transport_failed + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + scope:task_contract = { + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } + } + } + } +} + +## Private Eye +# scope:employer = spymaster or ruler finding secrets +# scope:task_contract_target = holder of the claimed title +# scope:task_contract_destination = county that has the council task active +# scope:task_contract_object = employer's liege or court chaplain, depending on who's the employer +laamp_help_find_secrets_contract = { + group = laamp_contracts_intrigue_group + icon = "/gfx/interface/icons/council_task_types/task_find_secrets.dds" + travel = yes + use_diplomatic_range = yes + + valid_to_create = { + council_task_contract_valid_employer_trigger = { + COUNCILLOR_TYPE = councillor_spymaster + COUNCIL_TASK_TYPE = task_find_secrets + } + } + + valid_to_keep = { + exists = root.var:task_contract_councillor_liege + exists = root.var:task_contract_councillor + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_accept = { + council_task_contract_valid_employer_trigger = { + COUNCILLOR_TYPE = councillor_spymaster + COUNCIL_TASK_TYPE = task_find_secrets + } + } + + valid_to_continue = { + time_since_contract_taken <= 720 + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_intrigue_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_destination + value = scope:task_contract.task_contract_location + } + set_variable = { + name = secrets_found + value = 0 + } + assign_council_task_scopes_in_contract_effect = { + COUNCILLOR_TYPE = councillor_spymaster + COUNCIL_TASK_TYPE = task_find_secrets + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0100 + } + } + + on_invalidated = { + save_scope_as = task_contract + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_help_find_secrets_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else = { + scope:task_contract = { + if = { + limit = { + var:knights_trained >= scope:task_contract.var:knights_failed + } + complete_task_contract = success_standard + } + else = { + complete_task_contract = failure_standard + } + } + } + } + } + + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + gain_patron_and_hook_from_council_task_contract_effect = yes + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = -25 + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +## Forgotten Claims +# scope:employer = court chaplain or ruler fabricating a claim +# scope:task_contract_target = holder of the claimed title +# scope:task_contract_destination = county that has the council task active +# scope:task_contract_councillor_liege = always liege of the councillor performing the task +# scope:task_contract_councillor = always the councillor performing the task +laamp_help_fabricate_claim_contract = { + group = laamp_contracts_intrigue_group + icon = "/gfx/interface/icons/council_task_types/task_fabricate_claim.dds" + travel = yes + use_diplomatic_range = yes + + valid_to_create = { + council_task_contract_valid_employer_trigger = { + COUNCILLOR_TYPE = councillor_court_chaplain + COUNCIL_TASK_TYPE = task_fabricate_claim + } + } + + valid_to_keep = { + exists = root.var:task_contract_councillor_liege + exists = root.var:task_contract_councillor + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + valid_to_accept = { + council_task_contract_valid_employer_trigger = { + COUNCILLOR_TYPE = councillor_court_chaplain + COUNCIL_TASK_TYPE = task_fabricate_claim + } + } + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_intrigue_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + assign_council_task_scopes_in_contract_effect = { + COUNCILLOR_TYPE = councillor_court_chaplain + COUNCIL_TASK_TYPE = task_fabricate_claim + } + if = { + limit = { + exists = scope:task_contract.task_contract_destination + } + set_variable = { + name = task_contract_destination + value = scope:task_contract.task_contract_destination + } + } + else = { + set_variable = { + name = task_contract_destination + value = scope:task_contract_councillor.councillor_task_target + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + set_variable = { + name = task_contract_target + value = scope:task_contract.var:task_contract_destination.province_owner + } + set_task_contract_target = scope:task_contract.var:task_contract_target + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_critical + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + # On_Actions + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0080 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_help_fabricate_claim_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_critical = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + if = { + limit = { + exists = var:attached_scheme + } + var:attached_scheme = { + scheme_target_title = { + save_scope_as = claimed_title + } + } + } + else = { + scope:task_contract.var:task_contract_destination.county = { + save_scope_as = claimed_title + } + } + var:task_contract_councillor_liege = { + add_pressed_claim = scope:claimed_title + } + task_contract_taker = { + show_as_tooltip = { + add_pressed_claim = scope:claimed_title + } + } + gain_patron_and_hook_from_council_task_contract_effect = yes + } + } + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + if = { + limit = { + exists = var:attached_scheme + } + var:attached_scheme = { + scheme_target_title = { + save_scope_as = claimed_title + } + } + } + else = { + scope:task_contract.var:task_contract_destination.county = { + save_scope_as = claimed_title + } + } + var:task_contract_councillor_liege = { + add_pressed_claim = scope:claimed_title + } + task_contract_taker = { + hidden_effect = { + remove_claim = scope:claimed_title + } + } + gain_patron_and_hook_from_council_task_contract_effect = yes + } + } + failure_standard = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} + +## Fight Corruption +# scope:employer = marshal or ruler increasing control +# scope:task_contract_target = holder of the claimed title +# scope:task_contract_destination = county that has the council task active +# scope:task_contract_councillor_liege = always liege of the councillor performing the task +# scope:task_contract_councillor = always the councillor performing the task +laamp_help_increase_control_contract = { + group = laamp_contracts_intrigue_group + icon = "/gfx/interface/icons/council_task_types/task_increase_control.dds" + travel = no + use_diplomatic_range = yes + + valid_to_create = { + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + OR = { + scope:employer = { + NOT = { var:issued_help_increase_control_contract_recently ?= root } + top_liege = this + any_councillor = { + OR = { + has_council_position = councillor_marshal + AND = { + is_kurultai_trigger = yes + highest_skill = martial + } + } + } + any_sub_realm_county = { + OR = { + has_county_corruption_trigger = yes + county_control <= low_county_control + } + } + } + scope:employer = { + NOT = { var:issued_help_increase_control_contract_recently ?= root } + OR = { + has_council_position = councillor_marshal + AND = { + is_kurultai_trigger = yes + highest_skill = martial + } + } + is_councillor_of = top_liege + top_liege = { + NOT = { + has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:employer } + } + any_sub_realm_county = { + OR = { + has_county_corruption_trigger = yes + county_control <= low_county_control + } + } + } + } + } + } + + valid_to_keep = { + var:task_contract_councillor_liege ?= { + any_sub_realm_county = { + OR = { + has_county_corruption_trigger = yes + county_control <= low_county_control + } + } + } + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_accept = { + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_martial_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + set_variable = { + name = issued_help_increase_control_contract_recently + value = scope:task_contract.task_contract_taker + years = 10 + } + save_scope_as = task_contract_employer + if = { + limit = { + top_liege = this + } + scope:task_contract_employer = { + save_scope_as = task_contract_councillor_liege + random_councillor = { + limit = { + OR = { + has_council_position = councillor_marshal + AND = { + is_kurultai_trigger = yes + highest_skill = martial + } + } + } + save_scope_as = task_contract_councillor + } + } + } + else = { + scope:task_contract_employer = { + save_scope_as = task_contract_councillor + top_liege = { + save_scope_as = task_contract_councillor_liege + } + } + } + } + set_variable = { + name = task_contract_councillor_liege + value = scope:task_contract_councillor_liege + } + set_variable = { + name = task_contract_councillor + value = scope:task_contract_councillor + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + set_variable = { + name = support + value = 0 + } + set_variable = { + name = control + value = 0 + } + set_variable = { + name = num_of_corrupt_counties + value = 0 + } + #save the liege as the target + set_task_contract_target = scope:task_contract_councillor_liege + #save all counties with low control or corruption modifier in liege's realm + scope:task_contract_councillor_liege = { + ordered_sub_realm_county = { + order_by = { + value = county_opinion + multiply = -1 + } + max = 6 + check_range_bounds = no + limit = { + OR = { + has_county_corruption_trigger = yes + county_control <= low_county_control + } + } + scope:task_contract = { + add_to_variable_list = { + name = corrupt_counties + target = prev + } + } + } + } + # We do this a bit later on because otherwise it was having some slight issues if only one county was valid. + set_variable = { + name = num_of_corrupt_counties + value = { + every_in_list = { + variable = corrupt_counties + add = 1 + } + } + } + random_in_list = { + variable = corrupt_counties + title_province = { + save_scope_as = destination + } + } + set_variable = { + name = task_contract_destination + value = scope:destination + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_critical + value = { + value = task_contract_taker.task_contract_success_gold_gain_full_value + multiply = scope:task_contract.var:num_of_corrupt_counties + } + } + set_variable = { + name = gold_success_standard + value = { + value = task_contract_taker.task_contract_success_gold_gain_full_value + multiply = scope:task_contract.var:num_of_corrupt_counties + multiply = 0.5 + } + } + } + } + + # On_Actions + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0092 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_target = { + save_scope_as = task_contract_target + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_help_increase_control_contract + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + else_if = { + limit = { + scope:task_contract_target = { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_critical = { + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + set_variable = { + name = gold_success_critical + value = { + value = task_contract_taker.task_contract_success_gold_gain_full_value + multiply = var:control + } + } + set_variable = { + name = gold_success_standard + value = { + value = task_contract_taker.task_contract_success_gold_gain_full_value + multiply = var:control + multiply = 0.5 + } + } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + gain_patron_and_hook_from_council_task_contract_effect = yes + hidden_effect = { + scope:task_contract.task_contract_taker= { return_home = yes } + } + } + } + success_standard = { + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + set_variable = { + name = gold_success_critical + value = { + value = task_contract_taker.task_contract_success_gold_gain_full_value + multiply = var:control + } + } + set_variable = { + name = gold_success_standard + value = { + value = task_contract_taker.task_contract_success_gold_gain_full_value + multiply = var:control + multiply = 0.5 + } + } + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + gain_patron_and_hook_from_council_task_contract_effect = yes + hidden_effect = { + scope:task_contract.task_contract_taker = { + return_home = yes + } + } + } + } + failure_standard = { + positive = no + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + hidden_effect = { + scope:task_contract.task_contract_taker = { + return_home = yes + } + } + } + } + } +} diff --git a/common/task_contracts/laamp_nm_contracts.txt b/common/task_contracts/laamp_nm_contracts.txt new file mode 100644 index 00000000..fb6308e8 --- /dev/null +++ b/common/task_contracts/laamp_nm_contracts.txt @@ -0,0 +1,969 @@ +################################################## +# INFO +# Extra contracts for laamps. +################################################## + +laamp_boost_legitimacy_contract = { + group = laamp_contracts_diplomacy_group + icon = "gfx/interface/icons/scheme_types/diplomacy.dds" + travel = yes + use_diplomatic_range = yes + + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + scope:employer = { + legitimacy_level <= 2 + top_liege = this + is_landed = yes + is_ai = yes + NOR = { + location = root.location + government_has_flag = government_is_theocracy + } + highest_held_title_tier > tier_county + location = { + squared_distance = { + target = root.location + value <= squared_distance_large + } + } + } + } + + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_somewhat_rare_value + add = laamp_contracts_weight_up_diplomacy_value + add = laamp_contracts_weight_up_diplomacy_slight_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + capital_province = { + save_scope_as = task_contract_destination + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_taker.task_contract_success_gold_gain_full_value + } + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + trigger_event = { + id = ep3_contract_event.0510 + delayed = yes + } + } + } + + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + save_scope_as = task_contract + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + task_contract_taker = { + send_interface_toast = { + title = laamp_transport_contract.success #Re-using + left_icon = scope:task_contract.task_contract_taker + right_icon = scope:task_contract.task_contract_employer + scope:task_contract = { + # Standard Rewards. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_employer = { + add_legitimacy = minor_legitimacy_gain + } + } + } + } + } + } + failure_standard = { + positive = no + effect = { + save_scope_as = task_contract + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_employer = { + add_legitimacy = miniscule_legitimacy_loss + } + } + } + failure_critical = { + positive = no + effect = { + save_scope_as = task_contract + # Standard Penalties. + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_double_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_critical_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_employer = { + add_legitimacy = medium_legitimacy_loss + add_prestige = task_contract_failure_prestige_loss_double_value + add_stress = medium_stress_gain + } + } + } + } +} + +laamp_rid_councillor_contract = { + group = laamp_contracts_martial_group + icon = "gfx/interface/icons/scheme_types/martial.dds" + travel = yes + use_diplomatic_range = yes + is_criminal = yes + + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + scope:employer = { + top_liege = this + is_landed = yes + is_ai = yes + NOT = { + government_has_flag = government_is_theocracy + } + highest_held_title_tier > tier_county #Requires a council + location = { #Not too far away + squared_distance = { + target = root.location + value <= squared_distance_large + } + } + any_councillor = { #Has a councillor who they hate + count > 1 + is_ai = yes + reverse_opinion = { + target = scope:employer + value <= high_negative_opinion + } + } + } + } + + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_somewhat_rare_value + add = laamp_contracts_weight_up_martial_value + add = laamp_contracts_weight_up_martial_slight_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + capital_province = { + save_scope_as = task_contract_destination + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_critical + value = task_contract_success_gold_gain_full_value + } + set_variable = { + name = gold_success_standard + value = task_contract_success_gold_gain_half_value + } + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + trigger_event = { + id = ep3_contract_event.0550 + delayed = no + } + } + } + + task_contract_reward = { + success_critical = { + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_critical + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + success_standard = { + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { + # Update gallowsbait score. + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MIN = gallowsbait_xp_medium_gain + XP_MAX = gallowsbait_xp_medium_gain + } + } + } + } + failure_standard = { + positive = no + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + task_contract_taker = { + add_prestige = task_contract_failure_prestige_loss_full_value + add_piety = minor_piety_loss + reverse_add_opinion = { + opinion = -35 + modifier = failed_task_contract_opinion + target = scope:task_contract.task_contract_employer + } + # Update gallowsbait score. + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MIN = gallowsbait_xp_medium_gain + XP_MAX = gallowsbait_xp_medium_gain + } + } + } + } + failure_critical = { + positive = no + effect = { + save_scope_as = task_contract + task_contract_taker = { + add_prestige = task_contract_failure_prestige_loss_double_value + add_piety = medium_piety_loss + add_stress = minor_stress_gain + reverse_add_opinion = { + opinion = -65 + modifier = failed_task_contract_opinion + target = scope:task_contract.task_contract_employer + } + # Update gallowsbait score. + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MIN = gallowsbait_xp_major_gain + XP_MAX = gallowsbait_xp_major_gain + } + } + } + } + } +} + +laamp_gain_wanderer_contract = { + group = laamp_contracts_martial_group + icon = "gfx/interface/icons/scheme_types/martial.dds" + travel = yes + use_diplomatic_range = yes + + valid_to_create = { + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + prestige_level >= 2 + scope:employer = { + is_landed = no + is_ai = yes + in_diplomatic_range = root + prestige_level < root.prestige_level + location = { #Not too far away + squared_distance = { + target = root.location + value <= squared_distance_large + } + } + primary_title = { + is_mercenary_company = no + } + NOR = { + government_has_flag = government_is_theocracy + government_allows = administrative + } + } + } + + valid_to_accept = { + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + is_available = yes + prestige_level >= 2 + scope:employer = { + is_landed = no + is_ai = yes + in_diplomatic_range = root + prestige_level < root.prestige_level + location = { #Not too far away + squared_distance = { + target = root.location + value <= squared_distance_large + } + } + primary_title = { + is_mercenary_company = no + } + NOR = { + government_has_flag = government_is_theocracy + government_allows = administrative + } + } + } + + weight = { + # Keep it rare and use it to fill in gaps between other contracts + value = task_contract_weight_interesting_very_rare_value + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + capital_province = { + save_scope_as = task_contract_destination + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_success_gold_gain_half_value + } + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + capital_province = { + save_scope_as = task_contract_destination + } + } + task_contract_taker = { + trigger_event = { + id = ep3_contract_event.0570 + delayed = no + } + } + } + + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + task_contract_taker = { + add_intrigue_lifestyle_xp = medium_lifestyle_xp + add_courtier = scope:task_contract.task_contract_employer + } + } + } + failure_standard = { + positive = no + effect = { + save_scope_as = task_contract + task_contract_taker = { + add_stress = medium_stress_gain + add_character_modifier = { + modifier = ep3_clumsy_rescuer_modifier + years = 5 + } + reverse_add_opinion = { + opinion = -50 + modifier = failed_task_contract_opinion + target = scope:task_contract.task_contract_employer + } + } + } + } + } +} + +laamp_find_secret_contract = { + group = laamp_contracts_intrigue_group + icon = "gfx/interface/icons/scheme_types/intrigue.dds" + travel = yes + use_diplomatic_range = yes + + valid_to_create = { + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + scope:employer = { + is_ai = yes + location = { #Not too far away + squared_distance = { + target = root.location + value <= squared_distance_large + } + } + NOT = { + government_has_flag = government_is_theocracy + } + OR = { + any_courtier_or_guest = { + any_secret = { + count > 0 + NOT = { is_known_by = scope:employer } + } + } + any_vassal = { + any_secret = { + count > 0 + NOT = { is_known_by = scope:employer } + } + } + } + } + } + + valid_to_accept = { + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { + is_ai = yes + location = { #Not too far away + squared_distance = { + target = root.location + value <= squared_distance_large + } + } + NOT = { + government_has_flag = government_is_theocracy + } + } + } + + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + scope:employer = { + OR = { + any_courtier_or_guest = { + any_secret = { + count > 0 + NOT = { is_known_by = scope:employer } + } + } + any_vassal = { + any_secret = { + count > 0 + NOT = { is_known_by = scope:employer } + } + } + } + } + } + + weight = { + value = task_contract_weight_default_value + add = laamp_contracts_weight_up_intrigue_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + if = { + limit = { + any_vassal = { + any_secret = { + count > 0 + NOT = { is_known_by = scope:task_contract_employer } + } + } + } + random_vassal = { + limit = { + any_secret = { + count > 0 + NOT = { is_known_by = scope:task_contract_employer } + } + } + save_scope_as = secret_haver + } + } + else = { + random_courtier_or_guest = { + save_scope_as = secret_haver + } + } + scope:secret_haver.location = { + save_scope_as = task_contract_destination + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + } + scope:contract = { + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_success_gold_gain_half_value + } + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + if = { + limit = { + any_vassal = { + any_secret = { + count > 0 + NOT = { is_known_by = scope:task_contract_employer } + } + } + } + random_vassal = { + limit = { + any_secret = { + count > 0 + NOT = { is_known_by = scope:task_contract_employer } + } + } + save_scope_as = secret_haver + } + } + else = { + random_courtier_or_guest = { + save_scope_as = secret_haver + } + } + scope:secret_haver.location = { + save_scope_as = task_contract_destination + } + } + task_contract_taker = { + trigger_event = { + id = ep3_contract_event.0580 + delayed = no + } + } + } + + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + failure_standard = { + positive = no + effect = { + save_scope_as = task_contract + task_contract_taker = { + add_stress = minor_stress_gain + add_prestige = task_contract_failure_prestige_loss_full_value + reverse_add_opinion = { + opinion = -50 + modifier = failed_task_contract_opinion + target = scope:task_contract.task_contract_employer + } + } + } + } + } +} + +laamp_eliminate_heir_contract = { + group = laamp_contracts_intrigue_group + icon = "gfx/interface/icons/scheme_types/intrigue.dds" + travel = yes + use_diplomatic_range = yes + is_criminal = yes + + valid_to_create = { + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + valid_laamp_sensible_start_trigger = yes + scope:employer = { + is_ai = yes + in_diplomatic_range = root + is_landed = yes + location = { #Not too far away + squared_distance = { + target = root.location + value <= squared_distance_large + } + } + NOR = { + government_has_flag = government_is_theocracy + government_allows = administrative + } + AND = { #They have a primary heir they dislike, and another one they like + primary_heir ?= { + reverse_opinion = { + target = scope:employer + value <= high_negative_opinion + } + age > 16 #No murderin' babies + } + any_heir = { + count > 1 + } + } + } + } + + valid_to_accept = { + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + + valid_to_continue = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + valid_to_keep = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = root.task_contract_employer + LAAMP = root.task_contract_taker + } + } + + weight = { #Let's not have this happen too often + value = task_contract_weight_interesting_very_rare_value + add = task_contract_weight_employer_contact_list_value + } + + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + random_heir = { + limit = { + is_primary_heir_of = scope:task_contract_employer + reverse_opinion = { + target = scope:task_contract_employer + value <= high_negative_opinion + } + age > 16 #No murderin' babies + } + save_scope_as = heir + } + scope:heir.location = { + save_scope_as = task_contract_destination + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract_employer + } + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + save_scope_as = task_contract + set_variable = { + name = gold_success_standard + value = task_contract_success_gold_gain_full_value + } + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = task_contract_employer + random_heir = { + limit = { + is_primary_heir_of = scope:task_contract_employer + reverse_opinion = { + target = scope:task_contract_employer + value <= high_negative_opinion + } + age > 16 #No murderin' babies + } + save_scope_as = heir + } + random_heir = { + limit = { + NOT = { + is_primary_heir_of = scope:task_contract_employer + } + reverse_opinion = { + target = scope:task_contract_employer + value >= low_positive_opinion + } + } + save_scope_as = favoured_heir + } + scope:heir.location = { + save_scope_as = task_contract_destination + } + } + task_contract_taker = { + trigger_event = { + id = ep3_contract_event.0590 + delayed = no + } + } + } + + task_contract_reward = { + success_standard = { + should_print_on_complete = yes + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = task_contract_success_provisions_gain_major_value + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + failure_standard = { + positive = no + effect = { + save_scope_value_as = { name = extra_reward value = flag:no } + save_scope_as = task_contract + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = 0 + PRESTIGE = task_contract_failure_prestige_loss_full_value + PIETY = 0 + PROVISIONS = task_contract_failure_provisions_gain_minor_value + OPINION = task_contract_opinion_standard_failure_value + OPINION_TYPE = failed_task_contract_opinion + CONTACT = no + CONTACT_HOOK = no + EXTRA_REWARD = scope:extra_reward + } + } + } + } +} diff --git a/common/task_contracts/laamp_transport_contracts.txt b/common/task_contracts/laamp_transport_contracts.txt new file mode 100644 index 00000000..b2dcf096 --- /dev/null +++ b/common/task_contracts/laamp_transport_contracts.txt @@ -0,0 +1,2025 @@ +################################################## +# INFO +# Transport contracts for laamps. Any contract that require usage of the travel system to complete, i.e. fetch quests, escort quests, etc. +# +################################################## + + + +################################################## +# GROUPS (for populate_task_contracts_for_area) +# +# laamp_contracts_transport_group +# +# +# + + +################################################## +# +# laamp_transport_vip - Escort Emissary - Escort a charachter's Courtier to another character +# laamp_transport_artifact - Artifact Delivery - Transfer an artifact from one character to another +# laamp_transport_gold - A Golden Gift - Transfer gold from one character to another +# laamp_transport_ward - Ward Transfer - Escorting a Ward to a Guardian +# laamp_transport_explorer - Eager Explorer - Baron wants to visit a Point of Interest +# laamp_transport_animal - A Living Gift - Escorting a pet story cycle from one character to another character +# +################################################## + +# VIP escort +# scope:employer = ruler wanting to send a courtier to a foreign court +# var:task_contract_object = the courtier to be escorted +# task_contract_target = random neighbor of scope:employer +# task_contract_destination = capital of task_contract_target +laamp_transport_vip = { + group = laamp_contracts_transport_group + icon = "gfx/interface/icons/character_interactions/icon_contract_escort.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + laamp_task_contract_employer_not_antisocial_trigger = yes + scope:employer = { + any_courtier = { + is_ai = yes + is_available_allow_travelling = yes + is_adult = yes + is_lowborn = no + } + any_neighboring_top_liege_realm_owner = { + is_ai = yes + is_adult = yes + capital_province != root.domicile.domicile_location + } + } + } + valid_to_keep = { + exists = root.var:task_contract_object + var:task_contract_object = { + is_courtier_of = root.task_contract_employer + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + var:task_contract_object ?= { + is_alive = yes + } + var:task_contract_target ?= { + is_alive = yes + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_quite_rare_value + add = laamp_contracts_weight_up_transport_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + if = { + limit = { + NOT = { exists = scope:task_contract.var:task_contract_object } + } + random_courtier = { + limit = { + is_ai = yes + is_available_allow_travelling = yes + is_adult = yes + is_lowborn = no + } + save_scope_as = task_contract_object + } + } + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_target } + } + random_neighboring_top_liege_realm_owner = { + limit = { + is_ai = yes + is_adult = yes + capital_province != scope:task_contract.task_contract_taker.domicile.domicile_location + } + save_scope_as = task_contract_target + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_destination } + } + capital_province = { + save_scope_as = task_contract_destination + } + } + } + } + else_if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_destination } + } + scope:task_contract.task_contract_target = { + capital_province = { + save_scope_as = task_contract_destination + } + } + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + if = { + limit = { + exists = scope:task_contract.task_contract_target + } + set_variable = { + name = task_contract_target + value = scope:task_contract.task_contract_target + } + } + else = { + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_task_contract_target = scope:task_contract_target + } + if = { + limit = { + exists = scope:task_contract.task_contract_destination + } + set_variable = { + name = task_contract_destination + value = scope:task_contract.task_contract_destination + } + } + else = { + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + } + set_variable = { + name = task_contract_object + value = scope:task_contract_object + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_critical + value = task_contract_success_gold_gain_travel_value + } + set_variable = { + name = gold_success_standard + value = task_contract_success_gold_gain_half_travel_value + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0001 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_object = { + save_scope_as = task_contract_object + } + + if = { + limit = { + var:task_contract_object ?= { + is_alive = yes + } + } + var:task_contract_object = { + return_to_court = yes + } + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_transport_vip + } + } + if = { + limit = { + var:task_contract_object ?= { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:escortee_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else_if = { + limit = { + 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 = { + var:task_contract_target = { + is_alive = no + } + } + var:task_contract_target ?= { + save_scope_as = dead_target + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + 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 = { + #reward name + success_critical = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + 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 = 0 + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + 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 } + 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 + } + } + } + } +} + +# Artifact delivery +# scope:employer = ruler wanting to send an artifact to a foreign court +# var:escorted_artifact = the artifact to be escorted +# task_contract_target = random neighbor of scope:employer +# task_contract_destination = capital of task_contract_target +laamp_transport_artifact = { + group = laamp_contracts_transport_group + icon = "gfx/interface/icons/character_interactions/icon_contract_escort.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + any_character_artifact = { + NOR = { + has_variable = historical_unique_artifact + has_variable = banner_house + has_variable = banner_dynasty + } + } + any_neighboring_top_liege_realm_owner = { + is_ai = yes + is_adult = yes + capital_province != root.domicile.domicile_location + } + } + } + valid_to_keep = { + exists = root.var:escorted_artifact + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { + any_character_artifact = { + NOR = { + has_variable = historical_unique_artifact + has_variable = banner_house + has_variable = banner_dynasty + } + } + } + } + valid_to_continue = { + var:escorted_artifact ?= { + artifact_owner = { + OR = { + root.task_contract_taker = this + root.task_contract_target = this + } + } + } + var:task_contract_target ?= { + is_alive = yes + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_quite_rare_value + add = laamp_contracts_weight_up_transport_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + if = { + limit = { + NOT = { exists = scope:task_contract.var:escorted_artifact } + } + random_character_artifact = { + limit = { + NOR = { + has_variable = historical_unique_artifact + has_variable = banner_house + has_variable = banner_dynasty + } + } + save_scope_as = escorted_artifact + } + } + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_target } + } + random_neighboring_top_liege_realm_owner = { + limit = { + is_ai = yes + is_adult = yes + capital_province != scope:task_contract.task_contract_taker.domicile.domicile_location + } + save_scope_as = task_contract_target + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_destination } + } + capital_province = { + save_scope_as = task_contract_destination + } + } + } + } + else_if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_destination } + } + scope:task_contract.task_contract_target = { + capital_province = { + save_scope_as = task_contract_destination + } + } + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + if = { + limit = { + exists = scope:task_contract.task_contract_target + } + set_variable = { + name = task_contract_target + value = scope:task_contract.task_contract_target + } + } + else = { + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_task_contract_target = scope:task_contract_target + } + if = { + limit = { + exists = scope:task_contract.task_contract_destination + } + set_variable = { + name = task_contract_destination + value = scope:task_contract.task_contract_destination + } + } + else = { + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + } + set_variable = { + name = escorted_artifact + value = scope:escorted_artifact + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_critical + value = task_contract_success_gold_gain_travel_value + } + set_variable = { + name = gold_success_standard + value = task_contract_success_gold_gain_travel_value + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0001 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + + if = { + limit = { + var:task_contract_object ?= { + is_alive = yes + } + } + var:task_contract_object = { + return_to_court = yes + } + } + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_transport_artifact + } + } + if = { + limit = { + var:task_contract_object ?= { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:escortee_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else_if = { + limit = { + 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 = { + var:task_contract_target = { + is_alive = no + } + } + var:task_contract_target ?= { + save_scope_as = dead_target + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + if = { + limit = { + var:escorted_artifact ?= { + owner = root.task_contract_taker + } + } + var:escorted_artifact = { + set_owner = root.task_contract_employer + } + } + } + } + + # Rewards + task_contract_reward = { + success_critical = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + 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 = 0 + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + transport_destroyed = { + positive = no + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + type = event_toast_effect_bad + title = laamp_transport_contract.transport_failed + left_icon = root.task_contract_taker + right_icon = root.task_contract_employer + add_prestige = task_contract_failure_prestige_loss_full_value + reverse_add_opinion = { + modifier = failed_task_contract_opinion + target = root.task_contract_employer + opinion = -50 + } + } + } + } + } + transport_stolen = { + positive = no + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker = { + send_interface_toast = { + type = event_toast_effect_bad + title = laamp_transport_contract.transport_failed + left_icon = root.task_contract_taker + right_icon = root.task_contract_employer + add_prestige = task_contract_failure_prestige_loss_full_value + reverse_add_opinion = { + modifier = failed_task_contract_opinion + target = root.task_contract_employer + opinion = -50 + } + } + } + } + } + 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 } + 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 + } + } + } + } +} + +# Large sum of gold +# scope:employer = ruler wanting to send a gift to a foreign court +# var:escorted_artifact = the artifact to be escorted +# task_contract_target = random neighbor of scope:employer +# task_contract_destination = capital of task_contract_target +laamp_transport_gold = { + group = laamp_contracts_transport_group + icon = "gfx/interface/icons/character_interactions/icon_contract_escort.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + scope:employer = { + gold >= { + value = task_contract_escort_gold_value + multiply = 1.5 + } + any_neighboring_top_liege_realm_owner = { + is_ai = yes + is_adult = yes + gold <= 0 + likes_character_trigger = { CHARACTER = scope:employer } + capital_province != root.domicile.domicile_location + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + var:task_contract_target ?= { + is_alive = yes + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_somewhat_rare_value + add = laamp_contracts_weight_up_transport_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_target } + } + random_neighboring_top_liege_realm_owner = { + limit = { + is_ai = yes + is_adult = yes + gold <= 0 + likes_character_trigger = { CHARACTER = scope:task_contract.task_contract_employer } + capital_province != scope:task_contract.task_contract_taker.domicile.domicile_location + } + save_scope_as = task_contract_target + capital_province = { + save_scope_as = task_contract_destination + } + } + } + else_if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_destination } + } + scope:task_contract.task_contract_target = { + capital_province = { + save_scope_as = task_contract_destination + } + } + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + if = { + limit = { + exists = scope:task_contract.task_contract_target + } + set_variable = { + name = task_contract_target + value = scope:task_contract.task_contract_target + } + } + else = { + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_task_contract_target = scope:task_contract_target + } + if = { + limit = { + exists = scope:task_contract.task_contract_destination + } + set_variable = { + name = task_contract_destination + value = scope:task_contract.task_contract_destination + } + } + else = { + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + } + set_variable = { + name = escorted_gold + value = scope:task_contract.task_contract_employer.task_contract_escort_gold_value + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_success_gold_gain_travel_value + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0001 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_transport_gold + } + } + 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 = { + var:task_contract_target = { + is_alive = no + } + } + var:task_contract_target ?= { + save_scope_as = dead_target + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + 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 } + 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 + } + } + } + } +} + +# Child education +# scope:employer = ruler wanting to send a child to educate at a foreign court +# var:task_contract_object = the ward to be escorted +# task_contract_target = worthy educator neighboring scope:employer +# task_contract_destination = capital of task_contract_target +laamp_transport_ward = { + group = laamp_contracts_transport_group + icon = "gfx/interface/icons/character_interactions/icon_contract_escort.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + any_child = { + is_ai = yes + is_available_child_allow_travel = yes + OR = { + num_of_relation_guardian = 0 + any_relation = { + type = guardian + is_landed = no + } + } + age = { 4 12 } + } + OR = { + any_neighboring_top_liege_realm_owner = { + is_ai = yes + num_of_relation_ward < 2 + is_adult = yes + OR = { + has_education_rank_4_trigger = yes + has_education_rank_5_trigger = yes + num_virtuous_traits > 0 + } + has_any_good_relationship_with_character_trigger = { CHARACTER = scope:employer } + capital_province != root.domicile.domicile_location + } + any_vassal = { + is_ai = yes + num_of_relation_ward < 2 + is_adult = yes + OR = { + has_education_rank_4_trigger = yes + has_education_rank_5_trigger = yes + num_virtuous_traits > 0 + } + has_any_good_relationship_with_character_trigger = { CHARACTER = scope:employer } + capital_province != root.domicile.domicile_location + } + } + } + } + valid_to_keep = { + exists = root.var:task_contract_object + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + var:task_contract_object ?= { + is_alive = yes + } + var:task_contract_target ?= { + is_alive = yes + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_somewhat_rare_value + add = laamp_contracts_weight_up_transport_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + if = { + limit = { + NOT = { exists = scope:task_contract.var:task_contract_object } + } + random_child = { + limit = { + is_available_child_allow_travel = yes + OR = { + num_of_relation_guardian = 0 + any_relation = { + type = guardian + is_landed = no + } + } + age = { 4 12 } + } + save_scope_as = task_contract_object + } + } + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_target } + } + random_neighboring_top_liege_realm_owner = { + limit = { + is_ai = yes + is_adult = yes + num_of_relation_ward < 2 + OR = { + has_education_rank_4_trigger = yes + has_education_rank_5_trigger = yes + num_virtuous_traits > num_sinful_traits + } + has_any_good_relationship_with_character_trigger = { CHARACTER = scope:task_contract.task_contract_employer } + capital_province != scope:task_contract.task_contract_taker.domicile.domicile_location + } + save_scope_as = task_contract_target + } + } + else = { + random_vassal = { + limit = { + is_ai = yes + num_of_relation_ward < 2 + is_adult = yes + OR = { + has_education_rank_4_trigger = yes + has_education_rank_5_trigger = yes + num_virtuous_traits > num_sinful_traits + } + has_any_good_relationship_with_character_trigger = { CHARACTER = scope:task_contract.task_contract_employer } + capital_province != scope:task_contract.task_contract_taker.domicile.domicile_location + } + save_scope_as = task_contract_target + } + } + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_destination } + } + scope:task_contract_target = { + capital_province = { + save_scope_as = task_contract_destination + } + } + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + if = { + limit = { + exists = scope:task_contract.task_contract_target + } + set_variable = { + name = task_contract_target + value = scope:task_contract.task_contract_target + } + } + else = { + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_task_contract_target = scope:task_contract_target + } + if = { + limit = { + exists = scope:task_contract.task_contract_destination + } + set_variable = { + name = task_contract_destination + value = scope:task_contract.task_contract_destination + } + } + else = { + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + } + set_variable = { + name = task_contract_object + value = scope:task_contract_object + } + #set the ward/guardian variables same as in education interactions + var:task_contract_object = { + set_variable = { + name = character_requested_as_educator + value = scope:task_contract.task_contract_target + years = 10 + } + set_variable = { + name = character_making_education_request + value = scope:task_contract.task_contract_employer + years = 10 + } + set_variable = { + name = ward_travelling_to_guardian + value = scope:task_contract.task_contract_target + } + } + var:task_contract_target = { + set_variable = { + name = guardian_waiting_for_ward + 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_success_gold_gain_travel_value + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0001 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + var:task_contract_object = { + save_scope_as = task_contract_object + } + + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_transport_ward + } + } + if = { + limit = { + var:task_contract_object ?= { + is_alive = no + } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:escortee_dead + } + trigger_event = ep3_contract_event.0012 + } + } + else_if = { + limit = { + 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 = { + var:task_contract_target = { + is_alive = no + } + } + var:task_contract_target ?= { + save_scope_as = dead_target + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + #remove the ward/guardian variables + if = { + limit = { + var:task_contract_object ?= { + is_alive = yes + } + } + var:task_contract_object = { + remove_variable = character_requested_as_educator + remove_variable = character_making_education_request + remove_variable = ward_travelling_to_guardian + return_to_court = yes + } + } + if = { + limit = { + task_contract_target ?= { + is_alive = yes + } + } + task_contract_target = { + remove_variable = guardian_waiting_for_ward + } + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + 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 } + 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 + } + } + } + } +} + +# Explorer of Points of Interests +# scope:employer = pool character wanting to visit a point of interest +# var:travel_reason = the reason poi is worth a visit +# task_contract_destination = capital of task_contract_target +laamp_transport_explorer = { + group = laamp_contracts_transport_group + icon = "gfx/interface/icons/character_interactions/icon_contract_escort.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + is_ai = yes + is_available_allow_travelling = yes + is_adult = yes + highest_held_title_tier <= tier_barony + OR = { + ai_boldness >= 50 + ai_energy >= 50 + has_trait = lifestyle_traveler + } + any_neighboring_top_liege_realm_owner = { + is_within_diplo_range = { CHARACTER = root } + any_realm_province = { + this != root.domicile.domicile_location + has_any_travel_poi_trigger = yes + } + } + } + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + } + valid_to_continue = { + var:task_contract_object ?= { + is_alive = yes + } + var:task_contract_target ?= { + is_alive = yes + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_almost_rare_value + add = laamp_contracts_weight_up_transport_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + random_neighboring_top_liege_realm_owner = { + limit = { + is_within_diplo_range = { CHARACTER = scope:task_contract.task_contract_taker } + any_realm_province = { + this != scope:task_contract.task_contract_taker.domicile.domicile_location + has_any_travel_poi_trigger = yes + save_temporary_scope_as = poi_province + } + } + } + } + scope:poi_province = { + save_scope_as = task_contract_destination + if = { + limit = { exists = province_owner } + province_owner = { + save_scope_as = task_contract_target + } + } + else = { + county.holder = { + save_scope_as = task_contract_target + } + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + set_variable = { + name = task_contract_object + value = scope:task_contract.task_contract_employer + } + if = { + limit = { + exists = scope:task_contract.task_contract_target + } + set_variable = { + name = task_contract_target + value = scope:task_contract.task_contract_target + } + } + else = { + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_task_contract_target = scope:task_contract_target + } + if = { + limit = { + exists = scope:task_contract.task_contract_destination + } + set_variable = { + name = task_contract_destination + value = scope:task_contract.task_contract_destination + } + } + else = { + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + } + var:task_contract_destination = { + switch = { + trigger = has_travel_point_of_interest + poi_capitals = { + save_scope_value_as = { + name = travel_reason + value = flag:capitals + } + } + poi_special_buildings_martial = { + save_scope_value_as = { + name = travel_reason + value = flag:special_buildings_martial + } + } + poi_special_buildings_learning = { + save_scope_value_as = { + name = travel_reason + value = flag:special_buildings_learning + } + } + poi_special_buildings_religious = { + save_scope_value_as = { + name = travel_reason + value = flag:special_buildings_religious + } + } + poi_special_buildings_diplomatic = { + save_scope_value_as = { + name = travel_reason + value = flag:special_buildings_diplomatic + } + } + poi_grand_city = { + save_scope_value_as = { + name = travel_reason + value = flag:grand_city + } + } + poi_special_buildings_wonder = { + save_scope_value_as = { + name = travel_reason + value = flag:special_buildings_wonder + } + } + poi_special_buildings_economic = { + save_scope_value_as = { + name = travel_reason + value = flag:special_buildings_economic + } + } + poi_mausoleum_at_halicarnassus = { + save_scope_value_as = { + name = travel_reason + value = flag:mausoleum_at_halicarnassus + } + } + poi_lighthouse_of_alexandria = { + save_scope_value_as = { + name = travel_reason + value = flag:lighthouse_of_alexandria + } + } + poi_natural_feature = { + save_scope_value_as = { + name = travel_reason + value = flag:natural_feature + } + } + } + } + set_variable = { + name = travel_reason + value = scope:travel_reason + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_critical + value = task_contract_success_gold_gain_travel_value + } + set_variable = { + name = gold_success_standard + value = task_contract_success_gold_gain_half_travel_value + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0001 + } + } + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_transport_explorer + } + } + if = { + limit = { + task_contract_employer = { + is_alive = no + } + } + task_contract_employer.primary_title.holder ?= { + save_scope_as = employer_heir + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:employer_dead + } + trigger_event = ep3_contract_event.0012 + + } + } + task_contract_employer = { + if = { + limit = { + is_landed = no + } + move_to_pool = yes + } + } + } + } + + # Rewards + task_contract_reward = { + success_critical = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + 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 = 0 + OPINION = task_contract_opinion_excelled_reward_value + OPINION_TYPE = critically_succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_half_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + 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 } + 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 + } + } + } + } +} + +# Pet Story Cycle: dog or cat +# scope:employer = ruler with a pet wanting to give it away to a foreign court +# var:escorted_story = the story cycle with the pet +# task_contract_target = random ruler that doesn't have a pet story cycle +# task_contract_destination = capital of task_contract_target +laamp_transport_animal = { + group = laamp_contracts_transport_group + icon = "gfx/interface/icons/character_interactions/icon_contract_escort.dds" + travel = no + use_diplomatic_range = no + + # Validity Triggers + valid_to_create = { + # Standard triggers. + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + employer_has_treasury_to_offer_job_trigger = yes + valid_laamp_sensible_start_trigger = yes + # Specific flavour triggers. + scope:employer = { + has_named_cat_or_dog_trigger = yes + any_owned_story = { + NOT = { exists = var:gifted_pet_story } + } + any_neighboring_top_liege_realm_owner = { + is_ai = yes + is_adult = yes + has_cat_or_dog_trigger = no + capital_province != root.domicile.domicile_location + } + } + } + valid_to_keep = { + exists = root.var:escorted_story + } + valid_to_accept = { + # Standard triggers. + valid_laamp_basic_accept_only_trigger = yes + valid_laamp_basic_trigger = { + EMPLOYER = scope:employer + LAAMP = root + } + scope:employer = { + has_named_cat_or_dog_trigger = yes + } + } + valid_to_continue = { + exists = var:escorted_story + var:task_contract_target ?= { + is_alive = yes + } + } + + weight = { + # Standard weights. + value = task_contract_weight_interesting_somewhat_rare_value + add = laamp_contracts_weight_up_transport_value + add = task_contract_weight_employer_contact_list_value + scope:employer = { multiply = task_contract_weight_by_tier_value } + } + + # On_Actions + on_create = { + scope:contract = { + save_scope_as = task_contract + task_contract_employer = { + random_owned_story = { + limit = { + NOT = { exists = var:gifted_pet_story } + OR = { + story_type = story_cycle_pet_dog + story_type = story_cycle_pet_cat + } + } + save_scope_as = escorted_story + } + if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_target } + } + random_neighboring_top_liege_realm_owner = { + limit = { + is_ai = yes + is_adult = yes + has_cat_or_dog_trigger = no + capital_province != scope:task_contract.task_contract_taker.domicile.domicile_location + } + save_scope_as = task_contract_target + capital_province = { + save_scope_as = task_contract_destination + } + } + } + else_if = { + limit = { + NOT = { exists = scope:task_contract.task_contract_destination } + } + scope:task_contract.task_contract_target = { + capital_province = { + save_scope_as = task_contract_destination + } + } + } + } + set_variable = { + name = task_contract_employer + value = scope:task_contract.task_contract_employer + } + if = { + limit = { + exists = scope:task_contract.task_contract_target + } + set_variable = { + name = task_contract_target + value = scope:task_contract.task_contract_target + } + } + else = { + set_variable = { + name = task_contract_target + value = scope:task_contract_target + } + set_task_contract_target = scope:task_contract_target + } + if = { + limit = { + exists = scope:task_contract.task_contract_destination + } + set_variable = { + name = task_contract_destination + value = scope:task_contract.task_contract_destination + } + } + else = { + set_variable = { + name = task_contract_destination + value = scope:task_contract_destination + } + } + set_variable = { + name = escorted_story + value = scope:escorted_story + } + if = { + limit = { + exists = scope:escorted_story.var:story_cycle_dog_name + } + set_variable = { + name = story_cycle_dog_name + value = scope:escorted_story.var:story_cycle_dog_name + } + } + else = { + set_variable = { + name = story_cycle_cat_name + value = scope:escorted_story.var:story_cycle_cat_name + } + } + # Make our gold rewards static. + grab_gold_fuzz_number_effect = yes + set_variable = { + name = gold_success_standard + value = task_contract_success_gold_gain_travel_value + } + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker = { + trigger_event = ep3_contract_event.0001 + } + } + + on_invalidated = { + if = { + limit = { + root.task_contract_taker = { + any_character_active_contract = { + this = root + } + } + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + save_scope_value_as = { + name = task_contract_tier + value = root.task_contract_tier + } + var:task_contract_destination = { + save_scope_as = task_contract_destination + } + + task_contract_taker = { + set_variable = { + name = invalidated_task_contract_type + value = flag:laamp_transport_animal + } + } + if = { + limit = { + NOT = { exists = var:escorted_story } + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:pet_dead + } + #for the localization to show the pet's name in the follow up event + if = { + limit = { + exists = root.var:story_cycle_dog_name + } + set_variable = { + name = story_cycle_dog_name + value = root.var:story_cycle_dog_name + days = 1 + } + } + else = { + set_variable = { + name = story_cycle_cat_name + value = root.var:story_cycle_cat_name + days = 1 + } + } + trigger_event = ep3_contract_event.0012 + } + } + else_if = { + limit = { + var:task_contract_target = { + is_alive = no + } + } + var:task_contract_target ?= { + save_scope_as = dead_target + } + task_contract_employer = { + save_scope_as = task_contract_employer + } + task_contract_taker = { + save_scope_value_as = { + name = task_contract_invalidation_reason + value = flag:target_dead + } + trigger_event = ep3_contract_event.0012 + } + } + } + } + + # Rewards + task_contract_reward = { + success_standard = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_value_as = { name = extra_reward value = flag:no } + laamp_rewards_disburse_ordinary_currency_effect = { + GOLD = scope:task_contract.var:gold_success_standard + PRESTIGE = task_contract_success_prestige_gain_full_value + PIETY = 0 + PROVISIONS = 0 + OPINION = task_contract_opinion_standard_reward_value + OPINION_TYPE = succeeded_task_contract_opinion + CONTACT = yes + CONTACT_HOOK = yes + EXTRA_REWARD = scope:extra_reward + } + } + } + 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 } + 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 + } + } + } + } +} diff --git a/common/task_contracts/nomads_migration_contracts.txt b/common/task_contracts/nomads_migration_contracts.txt new file mode 100644 index 00000000..59184bed --- /dev/null +++ b/common/task_contracts/nomads_migration_contracts.txt @@ -0,0 +1,468 @@ +############################# +# NOMADIC MIGRATION CONTRACTS +############################# +nomadic_migration_contract_1 = { # Disagreeable Herders + group = nomadic_settling_group + icon = "gfx/interface/icons/government_types/government_type_herder.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { settlement_issue_valid_to_create_default_trigger = yes } + + valid_to_keep = { settlement_issue_valid_to_keep_default_trigger = yes } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 1 + ARRIVAL_ID = 0005 + RESET_ID = 0003 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_1 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + + herd = { effect = { settlement_issue_herd_reward_effect = yes } } + + fertility = { effect = { settlement_issue_fertility_reward_effect = yes } } + } +} + +nomadic_migration_contract_2 = { # The Wild Herd + group = nomadic_settling_group + icon = "gfx/interface/icons/icon_herd.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { settlement_issue_valid_to_create_default_trigger = yes } + + valid_to_keep = { settlement_issue_valid_to_keep_default_trigger = yes } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 2 + ARRIVAL_ID = 0015 + RESET_ID = 0013 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_2 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + + herd = { effect = { settlement_issue_herd_reward_effect = yes } } + + gold = { effect = { settlement_issue_gold_reward_effect = yes } } + + opinion = { effect = { settlement_issue_opinion_reward_effect = { MODIFIER = mpo_si_slaughtered_for_a_feast } } } + } +} + +nomadic_migration_contract_3 = { # Contentious Grazelands + group = nomadic_settling_group + icon = "gfx/interface/icons/icon_county_fertility.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { + any_knight = { + count >= 2 + is_landed = no + } + any_held_county = { + county_control < 90 + NOT = { has_county_modifier = ongoing_settlement_contract } + } + } + + valid_to_keep = { settlement_issue_valid_to_keep_default_trigger = yes } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 3 + ARRIVAL_ID = 0025 + RESET_ID = 0023 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_3 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + + herd = { effect = { settlement_issue_herd_reward_effect = yes } } + + opinion = { + effect = { + settlement_issue_character_opinion_reward_effect = { + CHARACTER = root.task_contract_employer + } + } + } + } +} + +nomadic_migration_contract_4 = { # A Lack of Tools + group = nomadic_settling_group + icon = "gfx/interface/icons/court_position_types/royal_architect_court_position.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { settlement_issue_valid_to_create_default_trigger = yes } + + valid_to_keep = { settlement_issue_valid_to_keep_default_trigger = yes } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 4 + ARRIVAL_ID = 0035 + RESET_ID = 0033 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_4 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + } +} + +nomadic_migration_contract_5 = { # Fragmentation of the Tribe + group = nomadic_settling_group + icon = "gfx/interface/icons/casus_bellis/ducal_conquest_cb.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { settlement_issue_valid_to_create_default_trigger = yes } + + valid_to_keep = { settlement_issue_valid_to_keep_default_trigger = yes } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 5 + ARRIVAL_ID = 0045 + RESET_ID = 0043 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_5 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + } +} + +nomadic_migration_contract_6 = { # Poisonous Lands + group = nomadic_settling_group + icon = "gfx/interface/icons/court_position_types/court_physician_court_position.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { settlement_issue_valid_to_create_default_trigger = yes } + + valid_to_keep = { settlement_issue_valid_to_keep_default_trigger = yes } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 6 + ARRIVAL_ID = 0055 + RESET_ID = 0053 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_6 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + } +} + +nomadic_migration_contract_7 = { # Troublesome Neighbors + group = nomadic_settling_group + icon = "gfx/interface/icons/casus_bellis/ducal_conquest_cb.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { settlement_issue_valid_to_create_default_trigger = yes } + + valid_to_keep = { + custom_tooltip = { + text = migration_contract_county_ownership_text + OR = { + task_contract_location.province_owner = task_contract_taker + task_contract_location.province_owner.liege = task_contract_taker + task_contract_location.province_owner.top_liege = task_contract_taker + } + } + custom_tooltip = { + text = migration_contract_county_alt_text + task_contract_location.county = { + county_control < 90 + any_neighboring_county = { + NOT = { owner.top_liege ?= root.top_liege } + } + } + } + } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 7 + ARRIVAL_ID = 0065 + RESET_ID = 0063 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_7 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + + herd = { effect = { settlement_issue_herd_reward_effect = yes } } + } +} + +nomadic_migration_contract_8 = { # The Leftovers + group = nomadic_settling_group + icon = "gfx/interface/icons/icon_herd.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { settlement_issue_valid_to_create_default_trigger = yes } + + valid_to_keep = { settlement_issue_valid_to_keep_default_trigger = yes } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 8 + ARRIVAL_ID = 0075 + RESET_ID = 0073 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_8 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + + herd = { effect = { settlement_issue_herd_reward_effect = yes } } + + gold = { effect = { settlement_issue_gold_reward_effect = yes } } + + fertility = { effect = { settlement_issue_fertility_reward_effect = yes } } + } +} + +nomadic_migration_contract_9 = { # Drawing Lines + group = nomadic_settling_group + icon = "gfx/interface/icons/icon_county_fertility.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { settlement_issue_valid_to_create_default_trigger = yes } + + valid_to_keep = { + custom_tooltip = { + text = migration_contract_county_ownership_text + OR = { + task_contract_location.province_owner = task_contract_taker + task_contract_location.province_owner.liege = task_contract_taker + task_contract_location.province_owner.top_liege = task_contract_taker + } + } + custom_tooltip = { + text = migration_contract_county_alt_text + task_contract_location.county = { + county_control < 90 + any_neighboring_county = { + holder = root.task_contract_taker + } + } + } + } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 9 + ARRIVAL_ID = 0085 + RESET_ID = 0083 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_9 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + + fertility = { effect = { settlement_issue_fertility_reward_effect = yes } } + } +} + +nomadic_migration_contract_10 = { # The Old Tribe + group = nomadic_settling_group + icon = "gfx/interface/icons/icon_culture.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { settlement_issue_valid_to_create_default_trigger = yes } + + valid_to_keep = { + custom_tooltip = { + text = migration_contract_county_ownership_text + OR = { + task_contract_location.province_owner = task_contract_taker + task_contract_location.province_owner.liege = task_contract_taker + task_contract_location.province_owner.top_liege = task_contract_taker + } + } + custom_tooltip = { + text = migration_contract_county_alt_text + task_contract_location.county = { + county_control < 90 + has_variable = migration_previous_culture + NOT = { var:migration_previous_culture = root.task_contract_taker.culture } + } + } + } + + valid_to_continue = { settlement_issue_valid_to_continue_default_trigger = yes } + + valid_to_accept = { is_available = yes } + + on_create = { settlement_issue_on_create_effect = yes } + + on_accepted = { + settlement_issue_on_accepted_default_effect = { + NUMBER = 10 + ARRIVAL_ID = 0095 + RESET_ID = 0093 + } + } + + on_completed = { + task_contract_taker = { remove_variable = nomadic_migration_contract_10 } + } + + on_invalidated = { + settlement_issue_on_invalidated_default_effect = yes + } + + task_contract_reward = { + control = { effect = { settlement_issue_control_reward_effect = yes } } + + herd = { effect = { settlement_issue_herd_reward_effect = yes } } + + success = { effect = { settlement_issue_culture_reward_effect = yes } } + } +} diff --git a/common/task_contracts/tgp_admin_contracts.txt b/common/task_contracts/tgp_admin_contracts.txt new file mode 100644 index 00000000..0af1f0d6 --- /dev/null +++ b/common/task_contracts/tgp_admin_contracts.txt @@ -0,0 +1,3458 @@ +jail_inspection = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/control.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0010 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + renovate_jail = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 5 + } + } + } + } + improve_their_conditions = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + remove_short_term_gold = minor_gold_value + increase_governance_effect = { VALUE = 5 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 5 + } + } + } + } + pardon_some_of_them = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = -5 + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_pardoned_prisoners_modifier + years = 10 + } + } + } + } + beat_the_complainers = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_martial_lifestyle_xp = minor_lifestyle_xp + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + convict_labor = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_convict_labor_modifier + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +potent_physick = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0011 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + emergency_appropriation = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + licensing_issue = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0002.b.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_gold = minor_gold_value + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + } + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + } + } + begone_quack = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_prestige = minor_prestige_gain + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_expelled_popular_peddler_modifier + years = 10 + } + } + } + } + hire_the_quack = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + remove_short_term_gold = minor_gold_value + increase_governance_effect = { VALUE = 5 } + } + } + } + down_the_hatch = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + remove_short_term_gold = tiny_gold_value + add_character_modifier = { + modifier = tgp_potent_physick + years = 5 + } + } + } + } + failure_licensing_issue = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0002.b.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +irregular_accounting = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0012 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + confiscation_and_incarceration = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + add_gold = minor_gold_value + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_enforced_justice_on_official_modifier + years = 10 + } + } + } + } + recruit_embezzler = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + } + } + } + cover_up = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_intrigue_lifestyle_xp = minor_lifestyle_xp + change_influence = minor_influence_gain + } + scope:task_contract.task_contract_location.county = { + change_county_control = -5 + } + } + } + into_your_pocket = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = medium_gold_value + add_stewardship_lifestyle_xp = minor_lifestyle_xp + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + } + } + continue_the_charade = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0003.e.toast_success + left_icon = scope:task_contract.task_contract_taker + add_gold = major_gold_value + add_intrigue_lifestyle_xp = minor_lifestyle_xp + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + } + failure_continue_the_charade = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0003.e.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +salt_smugglers = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/control.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0013 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + execute_smuggler = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + cut_a_deal = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + add_intrigue_lifestyle_xp = minor_lifestyle_xp + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + interrogate_smuggler = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0004.c.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + change_influence = medium_influence_gain + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + a_cut_of_the_take = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0004.d.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_gold = medium_gold_value + add_intrigue_lifestyle_xp = minor_lifestyle_xp + } + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + } + } + recruit_smuggler = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + } + } + } + failure_interrogate_smuggler = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0004.c.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_a_cut_of_the_take = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0004.d.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +hoarding_grain = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0014 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + release_the_grain = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + shame_them = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0005.b.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_prestige = minor_prestige_gain + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + } + } + } + } + intimidate_them = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0005.c.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + add_prestige = minor_prestige_gain + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + } + purchase_grain_yourself = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + remove_short_term_gold = minor_gold_value + add_prestige = minor_prestige_gain + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + bribe_with_offices = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + add_intrigue_lifestyle_xp = minor_lifestyle_xp + } + } + } + failure_intimidate_them = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0005.c.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_shame_them = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0005.b.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +doddering_magistrate = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/diplomacy.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0015 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + appoint_substitute = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + force_him_out = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + promote_somewhere_harmless = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_prestige = minor_prestige_gain + } + } + } + let_him_continue = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_doddering_magistrate_modifier + years = 10 + } + } + } + } + demote_him = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + add_character_modifier = { + modifier = tgp_disrespected_elderly_modifier + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +burdensome_taxes = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0007 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + revise_tax_assessment = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0007.a.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 10 } + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 5 + } + } + } + } + waive_their_taxes = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 5 + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_reduced_taxes_modifier + years = 10 + } + } + } + } + pay_it_yourself = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + remove_short_term_gold = medium_gold_value + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + } + } + delayed_taxes = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_delayed_taxes_modifier + years = 10 + } + } + } + } + imprison_debtors = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_imprisoned_poor_modifier + years = 10 + } + } + } + } + failure_revise_tax_assessment = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0007.a.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +unsafe_highways = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/soldier.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0008 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + merchant_funded_government_escort = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 5 + } + } + } + } + send_out_the_patrols = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_prestige = minor_prestige_gain + add_martial_lifestyle_xp = minor_lifestyle_xp + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 5 + } + } + } + } + talk_them_into_bodyguards = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0008.c.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_prestige = minor_prestige_gain + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + } + } + } + } + threaten_with_sanctions = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0008.d.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + } + } + } + } + entice_with_promises = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0008.e.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + remove_short_term_gold = minor_gold_value + } + } + } + } + failure_entice_with_promises = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0008.e.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_threaten_with_sanctions = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0008.d.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_talk_them_into_bodyguards = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0008.c.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +dam_in_disrepair = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0009 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + conscientious_mobilization = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + } + } + forced_labor = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 15 + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_compelled_labor_modifier + years = 10 + } + } + } + } + compel_the_wealthy = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0009.c.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_stewardship_lifestyle_xp = medium_lifestyle_xp + } + } + } + } + personal_contribution = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + remove_short_term_gold = medium_gold_value + change_influence = { + value = medium_influence_gain + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_appreciative_populace_modifier + years = 10 + } + } + } + } + requisition_state_resources = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0009.e.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_intrigue_lifestyle_xp = medium_lifestyle_xp + } + } + } + } + failure_compel_the_wealthy = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0009.c.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_requisition_state_resources = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0009.e.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +lines_in_the_soil = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0020 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + land_resurvey = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + change_merit = { + value = miniscule_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + consult_archives = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0021.b.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_learning_lifestyle_xp = minor_lifestyle_xp + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_consult_archives = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0021.b.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + split_the_land = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + } + } + } + purchase_claims = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0021.d.toast_success + left_icon = scope:task_contract.task_contract_taker + remove_short_term_gold = minor_gold_value + add_stewardship_lifestyle_xp = minor_lifestyle_xp + add_character_modifier = { + modifier = tgp_purchased_land + years = 10 + } + } + } + } + } + failure_purchase_claims = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0021.d.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + remove_short_term_gold = minor_gold_value + } + } + } + } + declare_state_property = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_state_annexed_land + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +fraud_in_broad_daylight = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0022 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + goods_inspection = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + reward_for_information = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + remove_short_term_gold = minor_gold_value + add_intrigue_lifestyle_xp = minor_lifestyle_xp + } + } + } + undercover_clerks = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0023.c.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 10 } + add_intrigue_lifestyle_xp = minor_lifestyle_xp + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + failure_undercover_clerks = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0023.c.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + merchant_association = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + remove_short_term_gold = minor_gold_value + add_stewardship_lifestyle_xp = minor_lifestyle_xp + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_empowered_merchants_association + years = 10 + } + } + } + } + surprise_raid = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0023.e.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 10 } + add_gold = { medium_gold_value major_gold_value } + add_martial_lifestyle_xp = minor_lifestyle_xp + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + } + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + } + } + failure_surprise_raid = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0023.e.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +crumbling_bridge = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0024 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + army_assistance = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_army_reconstruction + years = 10 + } + } + } + } + temporary_substitute = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + remove_short_term_gold = minor_gold_value + change_influence = medium_influence_gain + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_hastily_rebuilt_bridge + years = 10 + } + } + } + } + ferry_crossing = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_ferry_crossing + years = 10 + } + } + } + } + slower_replacement = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_learning_lifestyle_xp = minor_lifestyle_xp + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_well_planned_bridge + years = 10 + } + } + } + } + settle_caravans = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0025.e.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 10 } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_settled_caravans + years = 10 + } + } + } + } + failure_settle_caravans = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0025.e.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +confusion_of_tongues = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0026 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + temporary_housing = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + } + } + search_for_translator = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + } + } + } + confiscate_their_goods = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { medium_gold_value major_gold_value } + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + if = { + limit = { + faith = { + trait_is_sin = greedy + } + } + add_piety = minor_piety_loss + } + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + scope:task_contract.var:foreign_merchant_culture = { + change_cultural_acceptance = { + target = scope:task_contract.task_contract_taker.culture + value = minor_cultural_acceptance_loss + desc = cultural_acceptance_loss_event + } + } + } + } + communicate_through_gestures = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0027.d.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 10 } + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + } + } + scope:task_contract.var:foreign_merchant_culture = { + change_cultural_acceptance = { + target = scope:task_contract.task_contract_taker.culture + value = minor_cultural_acceptance_loss + desc = cultural_acceptance_loss_event + } + } + } + } + failure_communicate_through_gestures = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0027.d.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + put_them_under_guard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + scope:task_contract.var:foreign_merchant_culture = { + change_cultural_acceptance = { + target = scope:task_contract.task_contract_taker.culture + value = minor_cultural_acceptance_loss + desc = cultural_acceptance_loss_event + } + } + } + } + i_know_this_one = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_dread = major_dread_gain + add_martial_lifestyle_xp = minor_lifestyle_xp + if = { + limit = { + NOT = { + has_character_modifier = feast_display_of_ruthlessness_modifier + } + } + add_character_modifier = { + modifier = feast_display_of_ruthlessness_modifier + years = 10 + } + } + } + scope:task_contract.var:foreign_merchant_culture = { + change_cultural_acceptance = { + target = scope:task_contract.task_contract_taker.culture + value = minor_cultural_acceptance_loss + desc = cultural_acceptance_loss_event + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +seditious_storytelling = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0028 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + censor_storyteller = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_suppressed_popular_storyteller + years = 10 + } + } + } + } + arrest_storyteller = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_suppressed_popular_storyteller + years = 10 + } + } + } + } + encourage_rival_storytellers = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + remove_short_term_gold = minor_gold_value + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_state_sponsored_storytellers + years = 10 + } + } + } + } + intimidate_audience = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + persuade_storyteller = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0029.e.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 10 } + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_converted_storyteller + years = 10 + } + } + } + } + failure_persuade_storyteller = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0029.e.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +quaking_in_panic = { # TODO_CD_TGP: hook into Natural Disasters if and where appropriate when implemented (foreshocks, aftershocks?) + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + any_councillor = { # For the context of the event localization to work properly + count >= 2 + } + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0030 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + convene_public_meeting = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0031.a.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 10 } + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_reassured_populace + years = 10 + } + } + } + } + failure_convene_public_meeting = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0031.a.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + deploy_guards = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location.county = { + change_county_control = 5 + } + } + } + appeal_to_local_leadership = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + } + } + architectural_inspection = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0031.d.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 10 } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_reassured_populace + years = 10 + } + } + } + } + failure_architectural_inspection = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0031.d.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + population_transfer = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_consolidated_population + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +monopoly_in_the_marketplace = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0032 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + strict_regulations = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_stewardship_lifestyle_xp = minor_lifestyle_xp + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_market_regulation + years = 10 + } + } + } + } + association_stalls_only = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_empowered_merchants_association + years = 10 + } + } + } + } + levy_special_tax = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { minor_gold_value medium_gold_value } + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + if = { + limit = { + faith = { + trait_is_sin = greedy + } + } + add_piety = minor_piety_loss + } + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + } + } + back_competitors = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0033.d.toast_success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 5 } + add_intrigue_lifestyle_xp = minor_lifestyle_xp + remove_short_term_gold = minor_gold_value + } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_empowered_merchants_association + years = 10 + } + } + } + } + failure_back_competitors = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0033.d.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + remove_short_term_gold = minor_gold_value + } + } + } + } + seize_merchant_goods = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { medium_gold_value major_gold_value } + add_dread = { + value = minor_dread_gain + multiply = governance_task_contract_tier_value + } + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + if = { + limit = { + faith = { + trait_is_sin = greedy + } + } + add_piety = minor_piety_loss + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +contested_inheritance = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/stewardship.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.0034 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + declare_communal_property = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + } + } + } + award_according_to_seniority = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 5 } + add_prestige = medium_prestige_gain + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + award_to_highest_bidder = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_good + title = tgp_governor_contract_event.0035.c.toast_success + left_icon = scope:task_contract.task_contract_taker + add_gold = { medium_gold_value major_gold_value } + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + } + if = { + limit = { + faith = { + trait_is_sin = greedy + } + } + add_piety = minor_piety_loss + } + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + } + } + failure_award_to_highest_bidder = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0035.c.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + adhere_to_testament = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_learning_lifestyle_xp = minor_lifestyle_xp + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + } + } + } + persuade_private_settlement = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + add_prestige = minor_prestige_gain + } + } + } + failure_persuade_private_settlement = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = tgp_governor_contract_event.0035.e.toast_failure + left_icon = scope:task_contract.task_contract_taker + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + diff --git a/common/task_contracts/tgp_admin_contracts_tova.txt b/common/task_contracts/tgp_admin_contracts_tova.txt new file mode 100644 index 00000000..13c4b305 --- /dev/null +++ b/common/task_contracts/tgp_admin_contracts_tova.txt @@ -0,0 +1,651 @@ +# Unsanctioned deity: Village worships excessively +unsanctioned_deity = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/heresy.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + trigger_event = governor_contract_events_tova.0050 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + sanction_deity = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_merit = { + value = minor_merit_gain + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + add_county_modifier = { + modifier = tgp_sanctioned_deity_modifier + years = 10 + } + } + } + } + burn_shrine = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + change_merit = { + value = miniscule_merit_gain + multiply = governance_task_contract_tier_value + } + } + } + } + claim_offerings = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = { + value = scope:task_contract.task_contract_location.monthly_income + multiply = 40 + } + change_merit = { + value = miniscule_merit_loss + multiply = governance_task_contract_tier_value + } + if = { + limit = { + secret_siphoned_treasury_is_valid_trigger = { + OWNER = scope:task_contract.task_contract_taker + TARGET = top_liege + } + } + add_secret = { + type = secret_siphoned_treasury + target = top_liege + } + } + } + } + } + debunk_deity = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + change_merit = { + value = miniscule_merit_gain + multiply = governance_task_contract_tier_value + } + add_character_modifier = { + modifier = tgp_debunked_deity_modifier + years = 10 + } + } + } + } + deity_monks = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = miniscule_influence_gain + multiply = governance_task_contract_tier_value + } + add_piety = { + value = medium_piety_gain + multiply = governance_task_contract_tier_value + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + task_contract_taker ?= { + change_influence = minor_influence_loss + if = { + limit = { + has_trait = governor + has_trait_xp = { + trait = governor + value > 0 + } + } + add_trait_xp = { + trait = governor + value = -5 + } + } + } + } + } + } +} + +#Escaped Justice +escaped_justice = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/marshal_job.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + task_contract_target = { + is_travelling = no + is_imprisoned = no + is_commanding_army = no + } + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + trigger_event = governor_contract_events_tova.0055 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + escapee_persuade = { #Diplomacy + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + change_merit = { + value = minor_merit_gain + multiply = governance_task_contract_tier_value + } + } + } + } + escapee_slain = { #Martial duel + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_dread = { + value = medium_dread_gain + multiply = governance_task_contract_tier_value + } + } + task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 10 + } + } + } + } + escapee_join_monastery = { #Increase Piety + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_piety = { + value = medium_piety_gain + multiply = governance_task_contract_tier_value + } + } + } + } + escapee_shunned = { #Influence Gain + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + task_contract_taker ?= { + change_influence = minor_influence_loss + } + task_contract_location.county = { + change_county_control = -5 + } + } + } + } +} + +#Forced Conscription +forced_conscription = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/marshal_job.dds" + travel = no + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + task_contract_employer = { + is_alive = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_employer = { + save_scope_as = recruitment_employer + } + task_contract_taker ?= { + trigger_event = governor_contract_events_tova.0060 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + conscripts_bribed = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location = { + add_province_modifier = { + modifier = tgp_fattened_vanguard_modifier + years = 10 + } + } + task_contract_taker ?= { + remove_short_term_gold = { + value = minor_gold_value + multiply = governance_task_contract_tier_value + } + } + } + } + conscripts_forced = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location = { + add_province_modifier = { + modifier = tgp_fattened_vanguard_modifier + years = 10 + } + } + task_contract_location.county = { + change_county_control = medium_county_control_loss + } + task_contract_taker ?= { + change_influence = { + value = minor_influence_gain + multiply = governance_task_contract_tier_value + } + } + } + } + conscripts_convinced = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location = { + add_province_modifier = { + modifier = tgp_fattened_vanguard_modifier + years = 10 + } + } + task_contract_taker ?= { + change_merit = { + value = minor_merit_gain + multiply = governance_task_contract_tier_value + } + } + } + } + conscripts_trade = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_location.county = { + add_county_modifier = { + modifier = tgp_diligent_workers_modifier + years = 10 + } + } + task_contract_taker ?= { + change_merit = { + value = minor_merit_loss + multiply = governance_task_contract_tier_value + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + task_contract_taker ?= { + change_influence = minor_influence_loss + } + task_contract_location.county = { + change_county_control = -5 + } + } + } + } +} + +#Teach Monks Martial Arts +combat_train_monks = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/marshal_job.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + trigger_event = governor_contract_events_tova.0065 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = {governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + hire_monks_as_maa = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + } + } + } + hire_monk_as_knight = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = minor_influence_loss + } + } + } + train_monks = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = miniscule_influence_gain + multiply = governance_task_contract_tier_value + } + increase_governance_effect = { VALUE = 4 } + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_trained_monks_modifier + years = 10 + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 10 + } + } + } + } + station_troops = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + } + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_stationed_troops_modifier + years = 10 + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 10 + } + } + } + } + let_marshal_handle = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + scope:task_contract.task_contract_location = { + add_province_modifier = { + modifier = tgp_adequately_trained_monks_modifier + years = 10 + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + task_contract_taker ?= { + change_influence = minor_influence_loss + } + task_contract_location.county = { + change_county_control = -5 + } + } + } + } +} diff --git a/common/task_contracts/tgp_admin_military_contracts.txt b/common/task_contracts/tgp_admin_military_contracts.txt new file mode 100644 index 00000000..3a6f631d --- /dev/null +++ b/common/task_contracts/tgp_admin_military_contracts.txt @@ -0,0 +1,180 @@ +missing_equipment = { + group = admin_governance_group + icon = "gfx/interface/icons/message_feed/marshal_job.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_governor_contract_event.2000 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_success_tt_rewards + } + } + success_failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_failure_tt + } + } + secure_future_deliveries = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + change_merit = { + value = medium_merit_value + multiply = governance_task_contract_tier_value + } + + every_held_title = { + limit = { tier = tier_county } + custom = custom.every_held_county_capital + title_province = { + add_province_modifier = { + modifier = tgp_well_equipped_soldiers_modifier + years = 15 + } + } + } + } + scope:task_contract.task_contract_location.county = { + if = { + limit = { county_control < 100 } + change_county_control = 5 + } + } + } + } + demand_extra_shipment = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 6 } + every_held_title = { + limit = { tier = tier_county } + custom = custom.every_held_county_capital + title_province = { + add_province_modifier = { + modifier = tgp_well_equipped_soldiers_modifier + years = 10 + } + } + } + } + } + } + demand_gold = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 2 } + add_gold = medium_gold_value + } + } + } + demand_best_equipment = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + + capital_province ?= { + add_province_modifier = { + modifier = tgp_greatly_equipped_soldiers_modifier + years = 15 + } + } + } + } + } + offered_replacements = { # Default outcome if you visit the workshop. Same as "buy_replacements" but without the cost. + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 4 } + + } + } + } + buy_replacements = { # Safe opt-out if you don't want to travel + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + remove_short_term_gold = medium_gold_value + increase_governance_effect = { VALUE = 4 } + } + } + } + + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = minor_influence_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} diff --git a/common/task_contracts/tgp_mandala_contracts.txt b/common/task_contracts/tgp_mandala_contracts.txt new file mode 100644 index 00000000..6d1a8a67 --- /dev/null +++ b/common/task_contracts/tgp_mandala_contracts.txt @@ -0,0 +1,3748 @@ +############################# +# MANDALA REALM CONTRACTS +############################# +mandala_realm_contract_0001 = { # Visit a province in your realm + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + #Generate the loc for title + desc + random_list = { + 1 = { + set_variable = { + name = loc_desc + value = flag:mandala_provincial_ritual_desc_01 + } + } + 1 = { + set_variable = { + name = loc_desc + value = flag:mandala_provincial_ritual_desc_02 + } + } + } + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1000 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0002 = { # Barren Cattle + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1100 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0003 = { # The First Seed + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1200 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0004 = { # Sacred Heifer + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1300 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0005 = { # Divine Witness + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1400 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0006 = { # Midwives' Dream + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1500 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0007 = { # Weeping Statue + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1600 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0008 = { # Sprouting Flowers + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1700 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0009 = { # River Ritual + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1800 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0010 = { # Cursed Fields + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.1900 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0011 = { # Withered Grove + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2000 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0012 = { # Pig Slaughter Oath + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2100 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0013 = { # Ritual Wrath + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2200 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0014 = { # Collective Punishment + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2300 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0015 = { # Diseased Spirits + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2400 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0016 = { # Dull Spears + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2500 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0017 = { # Defiant Village + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2600 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0018 = { # Blood Tax + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2700 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0019 = { # Bamboo Rebels + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2800 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0020 = { # Road Sacrifice + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.2900 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0021 = { # War God Festival + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3000 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0022 = { # Quarreling Monks + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3100 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0023 = { # Purify Battlefield + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3200 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0024 = { # Bless the Weavers + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3300 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0025 = { # Breaking of Spears + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3400 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0026 = { # Guru's Peace + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3500 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0027 = { # Reconciliation Edict + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3600 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0028 = { # Eightfold Path + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3700 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0029 = { # Grove Guardians + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3800 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0030 = { # Vow of Stillness + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.3900 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0031 = { # Stone-laying + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4000 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0032 = { # Laughing Ascetic + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4100 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0033 = { # Spirit Decoy + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4200 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0034 = { # Game of Wit + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4300 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0035 = { # Divine Thief + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4400 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0036 = { # Trickster's Trial + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4500 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0037 = { # Festival of Reversal + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4600 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0038 = { # Goat Oracle + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4700 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0039 = { # Beasts in the Jungle + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4800 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0040 = { # River Naga + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.4900 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} + +mandala_realm_contract_0041 = { # Promised Land + group = mandala_realm_group + icon = "gfx/interface/icons/government_types/mandala_government.dds" + use_diplomatic_range = no + travel = no + + valid_to_create = { mandala_task_contract_valid_to_create_trigger = yes } + + valid_to_accept = { + num_taken_task_contracts < 1 + government_has_flag = government_is_mandala + is_available = yes + } + + valid_to_continue = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_continue_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + valid_to_keep = { + save_temporary_scope_as = task_contract + task_contract_taker = { + mandala_task_contract_valid_to_keep_trigger = yes + trigger_if = { + limit = { + any_character_active_contract = { this = scope:task_contract } + } + current_travel_plan ?= { + OR = { + any_future_path_location = { this = scope:task_contract.task_contract_location } + any_visited_location = { this = scope:task_contract.task_contract_location } + } + } + } + } + } + + on_create = { + scope:contract = { + mandala_set_ritual_variables_effect = yes + choose_address_mandala_effect = yes + } + } + + on_accepted = { + save_scope_as = task_contract + task_contract_taker = { + play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" + mandala_travel_to_contract_location_effect = { + DESTINATION = scope:task_contract.task_contract_location + ARRIVAL_EVENT = tgp_east_asia_mandala_task_contract_events.5000 + } + } + } + + on_completed = { + mandala_contract_clean_up_location_effect = yes + } + + on_invalidated = { + mandala_contract_clean_up_location_effect = yes + } + + task_contract_reward = { + common_mandala = { + effect = { + custom_tooltip = mandala_generic_reward_tt + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { mandala_contract_failure_standard_reward_effect = yes } + } + } + } +} diff --git a/common/task_contracts/tgp_natural_disaster_contracts.txt b/common/task_contracts/tgp_natural_disaster_contracts.txt new file mode 100644 index 00000000..93cf2c59 --- /dev/null +++ b/common/task_contracts/tgp_natural_disaster_contracts.txt @@ -0,0 +1,685 @@ +#TODO_CD_TGP_AJ; merit needs to be added for all relevant options (positive and negative) for use in China +tgp_food_shortage = { #Food Shortage + group = admin_governance_group + icon = "gfx/interface/icons/situation_types/natural_disaster_generic.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_natural_disaster_contract_event.0001 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_natural_disaster_tt_rewards + } + } + failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_natural_disaster_failure_tt + } + } + distribution_of_food = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_diplomacy_lifestyle_xp = medium_lifestyle_xp + add_character_modifier = { + modifier = tgp_distribution_of_food_character_modifier + years = 10 + } + change_influence = minor_influence_loss + every_vassal = { + limit = { + is_adult = yes + } + add_stress = minor_stress_impact_gain + remove_short_term_gold = minor_gold_value + } + } + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_distribution_of_food_modifier + years = 10 + } + } + } + } + pay_from_own_pocket = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_learning_lifestyle_xp = minor_lifestyle_xp + add_piety = minor_piety_gain + add_character_modifier = { + modifier = tgp_pay_from_own_pocket_character_modifier + years = 10 + } + remove_short_term_gold = medium_gold_value + } + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_pay_from_own_pocket_modifier + years = 10 + } + } + } + } + haggle_with_merchants = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + title = tgp_natural_disaster_contract_event.0002.c.tt.success + left_icon = scope:task_contract.task_contract_taker + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_haggle_with_merchants_modifier + years = 10 + } + } + add_stewardship_lifestyle_xp = medium_lifestyle_xp + remove_short_term_gold = minor_gold_value + } + } + } + } + haggle_with_merchants_failure = { + visible = no + effect = { + task_contract_taker ?= { + send_interface_toast = { + title = tgp_natural_disaster_contract_event.0002.c.tt.failure + left_icon = scope:task_contract.task_contract_taker + add_prestige = minor_prestige_loss + } + } + } + } + demand_food_from_nobles = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = minor_influence_loss + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + } + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_demand_food_from_nobles_modifier + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_loss + multiply = governance_task_contract_tier_value + } + add_piety = { + value = minor_piety_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +tgp_ravaged_buildings = { #Destroyed by Nature + group = admin_governance_group + icon = "gfx/interface/icons/situation_types/natural_disaster_generic.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_natural_disaster_contract_event.0005 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_natural_disaster_tt_rewards + } + } + failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_natural_disaster_failure_tt + } + } + rebuild_settlement = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + add_stewardship_lifestyle_xp = medium_lifestyle_xp + add_character_modifier = { + modifier = tgp_rebuild_settlement_character_modifier + years = 10 + } + } + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_rebuild_settlement_modifier + years = 10 + } + } + } + } + temporary_shelters = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_diplomacy_lifestyle_xp = minor_lifestyle_xp + add_piety = minor_piety_gain + } + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_temporary_shelters_modifier + years = 10 + } + } + } + } + remove_debris = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + title = tgp_natural_disaster_contract_event.0006.c.tt.success + left_icon = scope:task_contract.task_contract_taker + add_piety = minor_piety_gain + add_stewardship_lifestyle_xp = minor_lifestyle_xp + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_remove_debris_modifier + years = 10 + } + } + } + } + } + } + remove_debris_failure = { + visible = no + effect = { + task_contract_taker ?= { + send_interface_toast = { + title = tgp_natural_disaster_contract_event.0006.c.tt.failure + left_icon = root + change_influence = minor_influence_loss + } + } + } + } + labor_exchange = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_character_modifier = { + modifier = tgp_labor_exchange_character_modifier + years = 10 + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_loss + multiply = governance_task_contract_tier_value + } + add_piety = { + value = minor_piety_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +tgp_medieval_medicine = { #Treating the Unfortunate + group = admin_governance_group + icon = "gfx/interface/icons/situation_types/natural_disaster_generic.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_natural_disaster_contract_event.0010 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_natural_disaster_tt_rewards + } + } + failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_natural_disaster_failure_tt + } + } + assisting_physician = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + increase_governance_effect = { VALUE = 10 } + if = { + limit = { + employs_court_position = court_physician_court_position + } + random = { + chance = 50 + court_position:court_physician_court_position = { + add_learning_skill = 1 + } + add_learning_lifestyle_xp = medium_lifestyle_xp + } + } + } + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_assisting_physician_modifier + years = 10 + } + } + } + } + medical_assistance = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + title = tgp_natural_disaster_contract_event.0011.b.tt.success + left_icon = scope:task_contract.task_contract_taker + add_character_modifier = { + modifier = tgp_medical_assistance_character_modifier + years = 10 + } + add_learning_lifestyle_xp = minor_lifestyle_xp + add_piety = minor_piety_gain + } + } + } + } + medical_assistance_failure = { + visible = no + effect = { + task_contract_taker ?= { + send_interface_toast = { + title = tgp_natural_disaster_contract_event.0011.b.tt.failure + left_icon = scope:task_contract.task_contract_taker + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_medical_assistance_modifier + years = 10 + } + } + } + } + } + } + prayers_to_the_people = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_learning_lifestyle_xp = minor_lifestyle_xp + add_piety = minor_piety_gain + add_character_modifier = { + modifier = tgp_prayers_to_the_people_character_modifier + years = 10 + } + } + } + } + better_pay_up = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = medium_gold_value + add_piety = medium_piety_loss + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_loss + multiply = governance_task_contract_tier_value + } + add_piety = { + value = minor_piety_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} + +tgp_disaster_displacement = { #Provisional Relocation + group = admin_governance_group + icon = "gfx/interface/icons/situation_types/natural_disaster_generic.dds" + + valid_to_create = { + valid_governor_contract_trigger = yes + } + + valid_to_keep = { + task_contract_taker = { valid_governor_contract_trigger = yes } + valid_governor_contract_basic_trigger = yes + } + + valid_to_accept = { + valid_governor_contract_trigger = yes + custom_tooltip = { + text = has_active_governance_issue + num_taken_task_contracts < 1 + } + is_available = yes + } + + valid_to_continue = { + task_contract_taker = { + valid_governor_contract_trigger = yes + } + } + + on_accepted = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_accept_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + root.task_contract_location.barony = { + save_scope_as = task_contract_location + } + trigger_event = tgp_natural_disaster_contract_event.0015 + } + } + + on_completed = { + } + + on_invalidated = { + if = { + limit = { governor_contract_invalidated_message_trigger = yes } + governor_contract_invalidated_message_effect = yes + } + } + + task_contract_reward = { + success = { + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + custom_tooltip = tgp_admin_contract_natural_disaster_tt_rewards + } + } + failure = { + positive = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + custom_tooltip = tgp_admin_contract_natural_disaster_failure_tt + } + } + deployed_troops = { # Good governance option + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + title = tgp_natural_disaster_contract_event.0016.a.tt.success + left_icon = scope:task_contract.task_contract_taker + increase_governance_effect = { VALUE = 10 } + add_martial_lifestyle_xp = medium_lifestyle_xp + add_character_modifier = { + modifier = tgp_deployed_troops_character_modifier + years = 10 + } + } + } + } + } + deployed_troops_failure = { + visible = no + effect = { + save_scope_as = task_contract + task_contract_taker ?= { + send_interface_toast = { + title = tgp_natural_disaster_contract_event.0016.a.tt.failure + left_icon = scope:task_contract.task_contract_taker + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_deployed_troops_modifier + years = 10 + } + } + } + } + } + } + setting_an_example = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_dread = medium_dread_gain + add_character_modifier = { + modifier = tgp_setting_an_example_character_modifier + years = 10 + } + } + } + } + confiscate_for_personal_inspection = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + add_gold = medium_gold_value + add_piety = medium_piety_loss + } + } + } + paying_off_the_looters = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_success_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + remove_short_term_gold = medium_gold_value + scope:task_contract.task_contract_location.county = { + add_county_modifier = { + modifier = tgp_paying_off_the_looters_modifier + years = 10 + } + } + } + } + } + failure_standard = { + visible = no + effect = { + task_contract_taker = { play_sound_effect = "event:/DLC/EP3/SFX/UI/Contracts/ep3_ui_contracts_failure_on_contract" } + save_scope_as = task_contract + task_contract_taker ?= { + change_influence = { + value = medium_influence_loss + multiply = governance_task_contract_tier_value + } + add_piety = { + value = minor_piety_loss + multiply = governance_task_contract_tier_value + } + } + } + } + } +} diff --git a/gui/hud.gui b/gui/hud.gui index 7a69c74e..56db3805 100644 --- a/gui/hud.gui +++ b/gui/hud.gui @@ -470,7 +470,7 @@ widget = { vbox = { widget_hud_main_tab = { name = "tab_decisions" #tutorial uses this - visible = "[Not(GetPlayer.GetGovernment.IsType( 'landless_adventurer_government' ))]" + visible = "[Not(Or(GetPlayer.GetGovernment.IsType( 'landless_adventurer_government' ) GetPlayer.GetGovernment.IsType( 'landless_minority_government' )))]" blockoverride "maintab_button" { @@ -485,7 +485,7 @@ widget = { widget_hud_main_tab = { name = "tab_contracts" - visible = "[GetPlayer.GetGovernment.IsType( 'landless_adventurer_government' )]" + visible = "[Or(GetPlayer.GetGovernment.IsType( 'landless_adventurer_government' ) GetPlayer.GetGovernment.IsType( 'landless_minority_government' ))]" blockoverride "maintab_button" { @@ -6368,7 +6368,7 @@ types HUD widget = { name = "provisions" - visible = "[IsLandlessAdventurer( GetPlayer )]" + visible = "[Or(IsLandlessAdventurer( GetPlayer ) GetPlayer.GetGovernment.IsType( 'landless_minority_government' ) )]" size = { 112 70 } widget = { diff --git a/localization/english/replace/buildings_l_english.yml b/localization/english/replace/buildings_l_english.yml index 40402469..6a82de82 100644 --- a/localization/english/replace/buildings_l_english.yml +++ b/localization/english/replace/buildings_l_english.yml @@ -2757,7 +2757,7 @@ game_concept_minority_government: "Minority Community Leader" game_concept_minority_government_desc: "A $Minority Community Leader$ is an [unlanded|E] [character|E] who leads a [minority_community_i|E]$Minority Community$." game_concept_minority_community: "Minority Community" - game_concept_minority_community_desc: "A Minority Community is a small culturally distinct portion of the population typically with a local community leader" + game_concept_minority_community_desc: "Minority Communities are ethnic, religious or linguistic groups who form a distinctive shared identity, often forming enclaves in urban or rural areas in the region they inhabit, which differ significantly from the surrounding majority population. These communities are not tied to land, able to move to elsewhere once a generation." minority_community_main_01_domicile_building: "Minority Community" minority_community_main_01_domicile_building_desc: "A Minority Community is a small culturally distinct portion of the population typically with a local community leader" minority_community_main_02_domicile_building: "Minority Community" @@ -2776,7 +2776,7 @@ duke_landless_minority_community_female_minority_community: "Mistress" spouse_landless_minority_community_male: "Master" spouse_landless_minority_community_holder_female: "Mistress" - d_laamp_test_jewish:0 "$congregationist$ Community" + d_laamp_test_jewish:0 "$congregationist$ Community of $dynn_britannia_kohn$" d_laamp_test_jewish_adj:0 "Jewish" d_laamp_test_jewish_article:0 "The " minority_community_domicile_title: "[CHARACTER.GetFirstNamePossessiveNoTooltip] $game_concept_minority_community$" @@ -2789,4 +2789,4 @@ MINORITY_COMMUNITY_BUILDINGS: "[manor_buildings|E]" minority_community_move_desc: "#T Move $minority_community_type$#!\nMove your [game_concept_minority_community|E] to another [barony|E] within the [realm|E].\n@alert_icon! #alert_trial You will be unable to move it again for [EmptyScope.ScriptValue('estate_move_cooldown_value')|V0] days#!\n\n#S Cost:\n#![GetCostString( DOMICILE_TYPE.GetMoveCost( Character.Self ) )]\n\n#P Click to move your $minority_community_type$#!" MINORITY_COMMUNITY_CONCEPT: "[game_concept_minority_community|E]" - domicile_minority_community: "the [CHARACTER.GetFaith.GetNameNoTooltip] $minority_community_type$" + domicile_minority_community: "the [CHARACTER.GetFaith.GetNameNoTooltip] $Community$ of [CHARACTER.GetHouse.GetNameNoTooltip]"