N3OW/events/dlc/ep3/ep3_laamp_decision_events.txt
2026-01-06 14:25:21 +01:00

22296 lines
596 KiB
Text

namespace = ep3_laamp_decision_event
################################
## Visit Local Settlement Decision
## ep3_laamp_decision_event.1000-1060
################################
# ep3_laamp_decision_event.1000 - Enter the Title of ProvinceName. What do you want to do?
# ep3_laamp_decision_event.1001 - Page 2
# ep3_laamp_decision_event.1010 - Stock up on supplies
# ep3_laamp_decision_event.1020 - Sell an artifact to local peddlers
# ep3_laamp_decision_event.1025 - Head to the Town Crier to spawn Contract(s)
#
# ep3_laamp_decision_event.1030 - Visit the local tavern
# ep3_laamp_decision_event.1031 - Storyteller
# ep3_laamp_decision_event.1033 - Recruitment
# ep3_laamp_decision_event.1035 - Spouse Material
# ep3_laamp_decision_event.1037 - Master Thief
#
# ep3_laamp_decision_event.1040 - Church Holding: Visit the local church grounds
# ep3_laamp_decision_event.1041 - Healer
# ep3_laamp_decision_event.1043 - Church
# ep3_laamp_decision_event.1045 - Garden
# ep3_laamp_decision_event.1047 - Recruit Physician
#
# ep3_laamp_decision_event.1050 - Castle Holding: Visit the local castle grounds
# ep3_laamp_decision_event.1051 - Training Grounds
# ep3_laamp_decision_event.1053 - Recruit at Garrison
# ep3_laamp_decision_event.1055 - Reinforce Men-at-Arms
# ep3_laamp_decision_event.1057 - Recruit Bodyguard
#
# ep3_laamp_decision_event.1060 - City Holding: Visit the local fine craftsmen
# ep3_laamp_decision_event.1061 - Weaponsmith
# ep3_laamp_decision_event.1063 - Armorsmith
# ep3_laamp_decision_event.1065 - Jeweler
# ep3_laamp_decision_event.1067 - Recruit Quartermaster
#
#The actual adding of the settlement
scripted_effect 1000_add_settlement_effect = {
#A holding is a tad bit more memorable
if = {
limit = {
location = { has_holding = yes }
}
add_to_variable_list = {
name = laamp_visited_settlements_list
target = root.location
years = 15
}
}
#Otherwise just some rural settlement
else = {
add_to_variable_list = {
name = laamp_visited_settlements_list
target = root.location
years = 10
}
}
}
#For loc flavor
scripted_effect 1000_remember_settlement_effect = {
#Do we already remember this place?
if = {
limit = {
has_variable = laamp_visited_settlements_list
any_in_list = {
variable = laamp_visited_settlements_list
this = scope:visiting_location
}
}
#Replace old entry with a new one
remove_list_variable = {
name = laamp_visited_settlements_list
target = scope:visiting_location
}
1000_add_settlement_effect = yes
}
#Otherwise just add it to the list
else = {
1000_add_settlement_effect = yes
}
}
#We return to the main event to peruse other options or leave
scripted_effect 1000_return_to_main_effect = {
custom_tooltip = ep3_laamp_decision_event.return.tt
trigger_event = ep3_laamp_decision_event.1000
}
#What was our last location?
scripted_effect 1000_update_last_location_effect = {
if = {
limit = { has_variable = return_from_location }
remove_variable = return_from_location
set_variable = {
name = return_from_location
value = $LOCATION_FLAG$
}
}
else = {
set_variable = {
name = return_from_location
value = $LOCATION_FLAG$
}
}
}
#Clean up variables when we leave the decision
scripted_effect 1000_clean_up_effect = {
#Supplies
remove_variable ?= supply_gold_cost
remove_variable ?= 1010_guards_summoned
#Artifacts
scope:1020_first_artifact_to_sell ?= { 1020_remove_sell_variables_effect = yes } #If we didn't sell any artifacts
scope:1020_second_artifact_to_sell ?= { 1020_remove_sell_variables_effect = yes }
scope:1020_third_artifact_to_sell ?= { 1020_remove_sell_variables_effect = yes }
remove_variable ?= 1021_artifact_sell_screen
#Town Crier
remove_variable ?= 1025_first_contract_desc
remove_variable ?= 1025_second_contract_desc
remove_variable ?= 1025_third_contract_desc
#Healer
scope:1041_health_artifact ?= { remove_variable ?= 1065_accessory_value }
remove_variable ?= 1041_healer_aptitude
remove_variable ?= 1041_partner_healer_aptitude
#Church
remove_variable ?= 1043_collect_gold_difficulty
#Weaponsmith
scope:1061_first_weapon ?= { remove_variable ?= 1061_weapon_value } #If we didn't buy any of the items
scope:1061_second_weapon ?= { remove_variable ?= 1061_weapon_value }
scope:1061_third_weapon ?= { remove_variable ?= 1061_weapon_value }
#Armorer
scope:1063_first_armor ?= { remove_variable ?= 1063_armor_value } #If we didn't buy any of the items
scope:1063_second_armor ?= { remove_variable ?= 1063_armor_value }
scope:1063_third_armor ?= { remove_variable ?= 1063_armor_value }
#Jeweler
scope:1065_first_accessory ?= { remove_variable ?= 1065_accessory_value } #If we didn't buy any of the items
scope:1065_second_accessory ?= { remove_variable ?= 1065_accessory_value }
scope:1065_third_accessory ?= { remove_variable ?= 1065_accessory_value }
#Main
clear_variable_list = list_of_options
remove_variable ?= list_of_options
remove_variable ?= return_from_location
#Un-engage us from the decision
remove_variable ?= ep3_laamp_decision_1000_is_visiting
}
#Find someone whos company you tolerate
scripted_trigger 1000_appropriate_visiting_partner_basic_trigger = {
location = root.location
is_available = yes
age >= 10
OR = {
opinion = {
target = root
value >= 25
}
has_any_good_relationship_with_character_trigger = { CHARACTER = root }
}
NOR = {
has_relation_potential_rival = root
has_relation_victim = root
has_relation_bully = root
#... don't bring your second-in-command while away, duh
has_court_position = second_camp_officer
has_variable = 1010_payment_child
}
}
#Are we not in a city?
scripted_trigger 1000_is_a_nomadic_holding_trigger = {
scope:visiting_location = {
is_nomadic_location_trigger = yes
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
#No options left - I tried to do this the easy way, but checking the existence of variable_lists wouldn't let me
scripted_trigger 1000_time_to_go_home_trigger = {
has_variable = return_from_location
#Did we have, and are we done with the Tribal / No Settlement option?
exists = scope:laamp_decision_finished_tavern_option
#Did we have, and are we done with the Church Holding option?
trigger_if = {
limit = {
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
}
exists = scope:laamp_decision_finished_church_option
}
#Did we have, and are we done with the Castle Holding option?
trigger_if = {
limit = {
scope:visiting_location = { has_holding_type = castle_holding }
}
exists = scope:laamp_decision_finished_castle_option
}
#Did we have, and are we done with the City Holding option?
trigger_if = {
limit = {
scope:visiting_location = { has_holding_type = city_holding }
}
exists = scope:laamp_decision_finished_craftsmen_option
}
#Did we have, and are we done with the Sell Artifact option?
trigger_if = {
limit = {
OR = {
is_target_in_variable_list = {
name = list_of_options
target = flag:has_artifact_option
}
exists = scope:1020_first_artifact_to_sell
}
}
exists = scope:laamp_decision_sold_artifact
}
#Did we have, and are we done with the Buy Supplies option?
trigger_if = {
limit = {
domicile ?= { provisions = max_provisions }
}
always = yes
}
trigger_else = { exists = scope:laamp_decision_bought_supplies }
#Did we have, and are we done with the Contract option?
OR = {
has_variable = 1025_has_contracted_recently
exists = scope:laamp_decision_has_contracted
}
}
#Don't sell levelling banners
scripted_trigger 1000_is_unsellable_artifact_trigger = {
OR = {
has_variable = banner_house
has_variable = banner_dynasty
has_variable = 1025_treasure_map
}
}
#Prioritize sick or ill people if we're heading to a Church Holding
scripted_trigger 1000_has_illness_or_wound_to_treat_trigger = {
OR = {
has_treatable_disease_trigger = yes
has_trait = wounded_1
has_wounds_trigger = yes
}
}
#It's either this or a massive, nested trigger_if in the Main Square event :eyes:
scripted_trigger 1000_done_with_second_trigger = {
exists = scope:been_to_second
OR = {
#Only had Supply & Contract
AND = {
OR = {
exists = scope:laamp_decision_bought_supplies
domicile ?= { provisions = max_provisions }
}
NOT = {
is_target_in_variable_list = {
name = list_of_options
target = flag:has_artifact_option
}
}
OR = {
exists = scope:laamp_decision_has_contracted
has_variable = 1025_has_contracted_recently
}
}
#Done all of them
AND = {
OR = {
exists = scope:laamp_decision_bought_supplies
domicile ?= { provisions = max_provisions }
}
is_target_in_variable_list = {
name = list_of_options
target = flag:has_artifact_option
}
exists = scope:laamp_decision_sold_artifact
exists = scope:laamp_decision_has_contracted
}
}
}
#Set up some reusable trait triggers
scripted_trigger 1010_has_friendly_traits = {
OR = {
has_trait = gregarious
has_trait = trusting
has_trait = compassionate
has_trait = forgiving
has_trait = generous
has_trait = fickle
has_trait = calm
}
}
scripted_trigger 1010_has_uninterested_traits = {
OR = {
has_trait = callous
has_trait = cynical
has_trait = arrogant
has_trait = fickle
has_trait = arbitrary
has_trait = patient
has_trait = sadistic
}
}
scripted_trigger 1010_has_commerce_traits = {
OR = {
has_trait = greedy
has_trait = deceitful
has_trait = ambitious
has_trait = diligent
has_trait = impatient
}
}
scripted_trigger 1010_has_standoffish_traits = {
OR = {
has_trait = shy
has_trait = craven
has_trait = humble
has_trait = paranoid
}
}
scripted_trigger 1010_has_irrational_traits = {
OR = {
has_trait = eccentric
has_trait = lunatic
has_trait = possessed
}
}
scripted_trigger 1011_has_no_applicable_traits = {
1010_has_friendly_traits = no
1010_has_uninterested_traits = no
1010_has_commerce_traits = no
1010_has_standoffish_traits = no
1010_has_irrational_traits = no
}
######################################################################
# MAIN
# ep3_laamp_decision_event.1000
######################################################################
# > Visit Tavern
# > Holding Option (Visit Church / Visit Castle Grounds / Visit Craftsmen District)
# > Page 2
# > Leave Settlement
#Enter the Title of BaronyName (Constantinople etc). What do you want to do?
ep3_laamp_decision_event.1000 = {
type = character_event
title = ep3_laamp_decision_event.1000.t
window = visit_settlement_window
desc = {
#INTRO: Action / Unique Location / Holding Variations
first_valid = {
##RETURN: We've returned to this scene, now what
#RETURN: We have no options left - time to go home
triggered_desc = {
trigger = { 1000_time_to_go_home_trigger = yes }
desc = ep3_laamp_decision_event.1000.desc_intro_returned_home
}
#RETURN: Return from where?
first_valid = {
#RETURN: Unique locations
#Constantinople
triggered_desc = {
trigger = {
has_variable = return_from_location
exists = scope:is_constantinople
}
desc = ep3_laamp_decision_event.1000.desc_intro_returned_constantinople_01
}
random_valid = {
#RETURN: We've returned from Page 2
triggered_desc = {
trigger = { var:return_from_location ?= flag:second }
desc = ep3_laamp_decision_event.1000.desc_intro_returned_from_second
}
#RETURN: We've returned from the Tavern
triggered_desc = {
trigger = { var:return_from_location ?= flag:tavern }
desc = ep3_laamp_decision_event.1000.desc_intro_returned_from_tavern
}
#RETURN: We've returned from the Church
triggered_desc = {
trigger = { var:return_from_location ?= flag:church_grounds }
desc = ep3_laamp_decision_event.1000.desc_intro_returned_from_church
}
#RETURN: We've returned from the Castle grounds
triggered_desc = {
trigger = { var:return_from_location ?= flag:castle_grounds }
desc = ep3_laamp_decision_event.1000.desc_intro_returned_from_castle
}
#RETURN: We've returned from the Craftsmen
triggered_desc = {
trigger = { var:return_from_location ?= flag:craftsmen }
desc = ep3_laamp_decision_event.1000.desc_intro_returned_from_craftsmen
}
#RETURN: Generics to mix in
#Generics
triggered_desc = {
trigger = {
has_variable = return_from_location
exists = scope:neighboring_county
}
desc = ep3_laamp_decision_event.1000.desc_intro_returned_generic_01
}
triggered_desc = {
trigger = { has_variable = return_from_location }
desc = ep3_laamp_decision_event.1000.desc_intro_returned_generic_02
}
triggered_desc = {
trigger = { has_variable = return_from_location }
desc = ep3_laamp_decision_event.1000.desc_intro_returned_generic_03
}
triggered_desc = {
trigger = {
has_variable = return_from_location
scope:visiting_location = { has_holding = yes }
}
desc = ep3_laamp_decision_event.1000.desc_intro_returned_generic_04
}
}
}
##FIRST TIME: Opening scene, paint a picture
#FIRST TIME: Unique locations: Constantinople
triggered_desc = {
trigger = { exists = scope:is_constantinople }
desc = ep3_laamp_decision_event.1000.desc_intro_constantinople
}
#FIRST TIME: Holding: Intro depending on type of holding (tribal/church/castle/city)
random_valid = {
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
desc = ep3_laamp_decision_event.1000.desc_intro_tribal_holding_01
}
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
desc = ep3_laamp_decision_event.1000.desc_intro_tribal_holding_02
}
}
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
}
desc = ep3_laamp_decision_event.1000.desc_intro_church_holding
}
triggered_desc = {
trigger = {
scope:visiting_location = { has_holding_type = castle_holding }
}
desc = ep3_laamp_decision_event.1000.desc_intro_castle_holding
}
triggered_desc = {
trigger = {
scope:visiting_location = { has_holding_type = city_holding }
}
desc = ep3_laamp_decision_event.1000.desc_intro_city_holding
}
}
#OUTRO: Returned to main square
first_valid = {
##RETURN HOME
#RETURN HOME: No partner, time to go home
triggered_desc = {
trigger = {
1000_time_to_go_home_trigger = yes
NOT = { exists = scope:visiting_partner }
}
desc = ep3_laamp_decision_event.1000.desc_outro_home
}
#RETURN HOME: Partner feels it's time to go home
triggered_desc = {
trigger = {
1000_time_to_go_home_trigger = yes
exists = scope:visiting_partner
}
desc = ep3_laamp_decision_event.1000.desc_outro_partner_home
}
##RETURN
#RETURN: We've returned to this scene, what do you see
##Weather fx
first_valid = {
#RETURN: Region - Scandinavia - Summer
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location } #Block all RETURN outros for unique locations, they are handled in unique RETURN intro
middle_of_year_season_trigger = yes #Light out
NOR = {
has_variable = 1000_is_currently_raining
has_variable = 1000_is_currently_snowing
}
scope:visiting_location = { geographical_region = world_europe_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_scandinavia_summer_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
has_variable = 1000_is_currently_raining
scope:visiting_location = { geographical_region = world_europe_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_scandinavia_summer_returned_02
}
#RETURN: Region - Scandinavia - Winter
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_europe_north }
has_variable = 1000_is_currently_snowing
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_scandinavia_winter_returned_01
}
random_valid = {
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
end_of_year_season_trigger = yes #Dark out
scope:visiting_location = { geographical_region = world_europe_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_scandinavia_winter_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
end_of_year_season_trigger = yes #Dark out
scope:visiting_location = { geographical_region = world_europe_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_scandinavia_winter_returned_03
}
}
#RETURN: Region - Britannia
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
NOR = {
has_variable = 1000_is_currently_raining
has_variable = 1000_is_currently_foggy
}
scope:visiting_location = { geographical_region = world_europe_west_britannia }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_britannia_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
has_variable = 1000_is_currently_raining
scope:visiting_location = { geographical_region = world_europe_west_britannia }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_britannia_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
has_variable = 1000_is_currently_foggy
scope:visiting_location = { geographical_region = world_europe_west_britannia }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_britannia_returned_03
}
##No Weather fx
random_valid = {
#RETURN: Region - Europe
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
middle_of_year_season_trigger = yes
scope:visiting_location = {
geographical_region = world_europe
NOT = { geographical_region = world_europe_north }
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_europe_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = {
geographical_region = world_europe
NOT = { geographical_region = world_europe_north }
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_europe_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = {
geographical_region = world_europe
NOT = { geographical_region = world_europe_north }
faith = { religion_tag = christianity_religion }
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_europe_returned_03
}
#RETURN: Region - Iberia
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_europe_west_iberia }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_iberia_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_europe_west_iberia }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_iberia_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_europe_west_iberia }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_iberia_returned_03
}
#RETURN: Region - Middle East
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_middle_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_middle_east_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_middle_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_middle_east_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_middle_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_middle_east_returned_03
}
#RETURN: Region - India
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_03
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_04
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_05
}
#RETURN: Region - Steppe
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_steppe }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_steppe_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_steppe }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_steppe_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_steppe }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_steppe_returned_03
}
#RETURN: Region - North Africa
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
middle_of_year_season_trigger = yes
scope:visiting_location = { geographical_region = world_africa_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_north_africa_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_north_africa_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_north_africa_returned_03
}
#RETURN: Region - West Africa
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_west }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_west_africa_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_west }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_west_africa_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_west }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_west_africa_returned_03
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_west }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_west_africa_returned_04
}
#RETURN: Region - East Africa
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_east_africa_returned_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_east_africa_returned_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_east_africa_returned_03
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_africa_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_east_africa_returned_04
}
#RETURN: Region - Generic
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
current_season_summer = yes
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_03
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_04
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_05
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
middle_of_year_season_trigger = yes
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_06
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
middle_of_year_season_trigger = yes
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_07
}
#RETURN: Partner looks around
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_partner ?= {
NOR = {
has_trait = cynical
has_trait = paranoid
has_trait = callous
}
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_01
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_partner ?= { is_adult = no }
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_02
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_partner ?= { is_adult = no }
NOR = {
has_trait = irritable
has_trait = wrathful
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_03
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_partner ?= {
NOR = {
has_trait = cynical
has_trait = lifestyle_reveler
any_secret = {
type = secret_non_believer
}
}
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_04
}
triggered_desc = {
trigger = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_partner ?= {
OR = {
has_relation_friend = root
has_relation_lover = root
is_close_family_of = root
}
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_05
}
}
}
##FIRST TIME
#FIRST TIME: Revisiting Constantinople
triggered_desc = {
trigger = {
NOT = { has_variable = return_from_location }
exists = scope:is_constantinople
any_in_list = {
variable = laamp_visited_settlements_list
this = scope:visiting_location
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_revisit_constantinople
}
#FIRST TIME: It's Constantinople
triggered_desc = {
trigger = {
NOT = { has_variable = return_from_location }
exists = scope:is_constantinople
}
desc = ep3_laamp_decision_event.1000.desc_outro_constantinople
}
#FIRST TIME: Our visiting partner flavor
random_valid = {
triggered_desc = {
trigger = {
NOT = { has_variable = return_from_location }
NOT = { exists = scope:is_unique_location }
exists = scope:visiting_partner
}
desc = ep3_laamp_decision_event.1000.desc_outro_partner_01
}
}
#FIRST TIME: We've been to this settlement before
triggered_desc = {
trigger = {
NOT = { has_variable = return_from_location }
NOT = { exists = scope:is_unique_location }
any_in_list = {
variable = laamp_visited_settlements_list
this = scope:visiting_location
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_revisit
}
#FIRST TIME: New place
triggered_desc = {
trigger = {
NOT = { has_variable = return_from_location }
NOT = { exists = scope:is_unique_location }
}
desc = ep3_laamp_decision_event.1000.desc_outro_new
}
}
}
theme = landless_adventurer
#Backgrounds & fx
#Church Holding
override_sound = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
}
reference = "event:/SFX/Events/Themes/sfx_event_theme_type_faith"
}
#Castle Holding
override_sound = {
trigger = {
scope:visiting_location = { has_holding_type = castle_holding }
}
reference = "event:/SFX/Events/Themes/sfx_event_theme_type_martial"
}
#City Holding
override_sound = {
trigger = {
scope:visiting_location = { has_holding_type = city_holding }
}
reference = "event:/SFX/Events/Themes/sfx_event_theme_type_stewardship"
}
#Swedish summer
override_effect_2d = {
trigger = { has_variable = 1000_is_currently_raining }
reference = rain
}
widget = {
is_shown = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_europe_north }
has_variable = 1000_is_currently_snowing
}
gui = "event_window_widget_vfx_snow"
container = "foreground_shader_vfx_container"
}
#HOME: Tribe
override_background = {
trigger = {
1000_time_to_go_home_trigger = yes
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
reference = bp1_bonfire
}
#HOME
override_background = {
trigger = { 1000_time_to_go_home_trigger = yes}
reference = alley_night
}
#Snowing in tribal Scandinavia
override_background = {
trigger = { is_snowy_rural_scandinavia_location_trigger = yes }
reference = ep2_hunt_snowy_forest
}
#Tribal Holding
override_background = {
trigger = {
scope:visiting_location = { has_holding_type = tribal_holding }
}
reference = village
}
override_background = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
reference = mpo_camp_steppe
}
#Constantinople
override_background = {
trigger = { exists = scope:is_constantinople }
reference = ep3_constantinople
}
#Church Holding
override_background = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
}
reference = holy_site_generic
}
#Castle Holding
override_background = {
trigger = {
scope:visiting_location = { has_holding_type = castle_holding }
}
reference = courtyard_location
}
#City Holding
override_background = {
trigger = {
scope:visiting_location = { has_holding_type = city_holding }
}
reference = ep3_city_gate
}
#Fallback
override_background = { reference = market }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#Time to go home
triggered_animation = {
trigger = { 1000_time_to_go_home_trigger = yes }
animation = boredom
}
#Friendly
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_friendly_traits = yes }
}
animation = personality_forgiving
}
#Business-minded
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_commerce_traits = yes }
}
animation = personality_greedy
}
#Uninterested
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_uninterested_traits = yes }
}
animation = personality_cynical
}
#Irrational
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_irrational_traits = yes }
}
animation = personality_irrational
}
#A bit awkward
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_standoffish_traits = yes }
}
animation = personality_coward
}
animation = personality_compassionate
}
center_portrait = {
character = root
triggered_animation = {
trigger = { 1010_has_irrational_traits = yes }
animation = personality_irrational
}
triggered_animation = {
trigger = { 1010_has_standoffish_traits = yes }
animation = personality_coward
}
triggered_animation = {
trigger = { 1010_has_uninterested_traits = yes }
animation = personality_callous
}
animation = personality_content
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#For loc purposes
if = {
limit = {
NOT = { exists = scope:visiting_location }
}
location = { save_scope_as = visiting_location }
}
if = {
limit = {
NOT = { exists = scope:neighboring_county }
}
location = {
random_neighboring_province = {
limit = { is_location_valid_for_travel_event_on_land = yes }
save_scope_as = neighboring_county
}
}
}
random_dummy_gender_effect = yes
#To rain or not to rain
if = {
limit = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
middle_of_year_season_trigger = yes
location_has_winter_trigger = no
scope:visiting_location = {
OR = {
geographical_region = world_europe_north
geographical_region = world_europe_west_britannia
}
}
}
random_list = {
50 = {
#No rain
}
50 = {
set_variable = 1000_is_currently_raining
}
}
}
#To snow or not to snow
if = {
limit = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
end_of_year_season_trigger = yes
location_has_winter_trigger = yes
scope:visiting_location = { geographical_region = world_europe_north }
}
random_list = {
50 = {
#No rain
}
50 = {
set_variable = 1000_is_currently_snowing
}
}
}
#To fog or not to fog
if = {
limit = {
has_variable = return_from_location
NOT = { exists = scope:is_unique_location }
scope:visiting_location = { geographical_region = world_europe_west_britannia }
}
random_list = {
50 = {
#No rain
}
50 = {
set_variable = 1000_is_currently_foggy
}
}
}
#This. Is. _Constantinople_
if = {
limit = { scope:visiting_location.barony = title:b_constantinople }
save_scope_as = is_constantinople
save_scope_as = is_unique_location #In case we add more unique locations
}
#Assemble the list of options the first time this window pops
if = {
limit = {
NOT = { exists = scope:first_pass }
}
#Buy supply option - not really any gate since it might change during your visit
#Sell artifact option
if = {
#We actually have an artifact to sell
limit = {
any_character_artifact = {
count >= 1
1000_is_unsellable_artifact_trigger = no
}
}
add_to_variable_list = {
name = list_of_options
target = flag:has_artifact_option
}
}
#Town Crier option - not really any gate, as long as we don't cap amount of contracts I guess?
#Visit the local tavern, added for all holding types
add_to_variable_list = {
name = list_of_options
target = flag:has_tavern_option
}
#Church Holding: Visit the local church grounds
if = {
limit = {
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
}
add_to_variable_list = {
name = list_of_options
target = flag:has_church_option
}
}
#Castle Holding: Visit the local castle grounds
if = {
limit = {
scope:visiting_location = { has_holding_type = castle_holding }
}
add_to_variable_list = {
name = list_of_options
target = flag:has_castle_option
}
}
#City Holding: Visit the local fine craftsmen
if = {
limit = {
scope:visiting_location = { has_holding_type = city_holding }
}
add_to_variable_list = {
name = list_of_options
target = flag:has_craftsman_option
}
}
#Also find someone to bring with you from your crew to display in the bottom-left corner - Spouse/Friend/Marshal/Bodyguard
if = {
limit = {
NOT = { exists = scope:visiting_partner }
}
if = {
limit = {
any_courtier = { 1000_appropriate_visiting_partner_basic_trigger = yes }
}
random_courtier = {
limit = { 1000_appropriate_visiting_partner_basic_trigger = yes }
weight = {
base = 1
#If we desparately want to bring sick relatives to the doctor
modifier = {
add = 1000
is_close_family_of = root
1000_has_illness_or_wound_to_treat_trigger = yes
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
}
modifier = {
add = 500
is_spouse_of = root
1000_has_illness_or_wound_to_treat_trigger = yes
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
}
modifier = {
add = 100
has_relation_lover = root
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
}
modifier = {
add = 20
is_spouse_of = root
}
modifier = {
add = 15
is_primary_heir_of = root
}
modifier = {
add = 10
OR = {
has_court_position = bodyguard_court_position
has_court_position = quartermaster_camp_officer
has_court_position = master_of_spoils_camp_officer
}
}
modifier = {
add = 5
is_close_family_of = root
}
modifier = {
add = 2
has_trait = ambitious
}
modifier = {
add = -5
has_trait = lazy
}
}
save_scope_as = visiting_partner
}
}
}
save_scope_as = first_pass
}
}
#Church Holding Option: Visit the local church grounds
option = {
name = {
text = {
first_valid = {
#Return to look at the church
triggered_desc = {
trigger = { exists = scope:been_to_church_grounds }
desc = ep3_laamp_decision_event.1000.b_second
}
#First time looking at the church
desc = ep3_laamp_decision_event.1000.b
}
}
}
trigger = {
#Do we actually have the church option available
custom_tooltip = {
text = tapped_out.tt
is_target_in_variable_list = {
name = list_of_options
target = flag:has_church_option
}
NOT = { exists = scope:laamp_decision_finished_church_option }
}
}
show_as_unavailable = {
#Hide the options when we're _all_ done
trigger_if = {
limit = {
exists = scope:laamp_decision_finished_church_option
1000_time_to_go_home_trigger = no
}
always = yes
}
trigger_else = { always = no }
}
reason = church_holding
#Actual transition event
custom_tooltip = ep3_laamp_decision_event.1000.b.tt
trigger_event = ep3_laamp_decision_event.1040
ai_chance = { base = 100 }
}
#Castle Holding Option: Visit the local castle grounds
option = {
name = {
text = {
first_valid = {
#Return to look at the castle
triggered_desc = {
trigger = { exists = scope:been_to_castle_grounds }
desc = ep3_laamp_decision_event.1000.c_second
}
#First time looking at the castle
desc = ep3_laamp_decision_event.1000.c
}
}
}
trigger = {
#Do we actually have the castle option available
custom_tooltip = {
text = tapped_out.tt
is_target_in_variable_list = {
name = list_of_options
target = flag:has_castle_option
}
NOT = { exists = scope:laamp_decision_finished_castle_option }
}
}
show_as_unavailable = {
#Hide the options when we're _all_ done
trigger_if = {
limit = {
exists = scope:laamp_decision_finished_castle_option
1000_time_to_go_home_trigger = no
}
always = yes
}
trigger_else = { always = no }
}
reason = castle_holding
#Actual transition event
custom_tooltip = ep3_laamp_decision_event.1000.c.tt
trigger_event = ep3_laamp_decision_event.1050
ai_chance = { base = 100 }
}
#City Holding Option: Visit the local fine craftsmen
option = {
name = {
text = {
first_valid = {
#Return to look at the craftsmen
triggered_desc = {
trigger = { exists = scope:been_to_craftsmen }
desc = ep3_laamp_decision_event.1000.d_second
}
#First time looking at craftsmen
desc = ep3_laamp_decision_event.1000.d
}
}
}
#Do we have few enough options to display this option on the main page
trigger = {
#Do we actually have the craftsmenned option available
custom_tooltip = {
text = tapped_out.tt
is_target_in_variable_list = {
name = list_of_options
target = flag:has_craftsman_option
}
NOT = { exists = scope:laamp_decision_finished_craftsmen_option }
}
}
show_as_unavailable = {
#Hide the options when we're _all_ done
trigger_if = {
limit = {
exists = scope:laamp_decision_finished_craftsmen_option
1000_time_to_go_home_trigger = no
}
always = yes
}
trigger_else = { always = no }
}
reason = city_holding
#We got kick-off!
1000_update_last_location_effect = { LOCATION_FLAG = flag:main_square }
#Actual transition event
custom_tooltip = ep3_laamp_decision_event.1000.d.tt
trigger_event = ep3_laamp_decision_event.1060
ai_chance = { base = 100 }
}
#Tribal Holding Option: Visit the local tavern
option = {
name = {
text = {
first_valid = {
#Return to the tavern
triggered_desc = {
trigger = { exists = scope:been_to_tavern }
desc = ep3_laamp_decision_event.1000.a_second
}
#They're nomads
triggered_desc = {
trigger = { 1000_is_a_nomadic_holding_trigger = yes }
desc = ep3_laamp_decision_event.1000.a_nomads
}
#First time visiting the tavern
desc = ep3_laamp_decision_event.1000.a_tavern
}
}
}
trigger = {
#Do we actually have the tavern option available
custom_tooltip = {
text = tapped_out.tt
is_target_in_variable_list = {
name = list_of_options
target = flag:has_tavern_option
}
NOT = { exists = scope:laamp_decision_finished_tavern_option }
}
}
show_as_unavailable = {
#Hide the options when we're _all_ done
trigger_if = {
limit = {
exists = scope:laamp_decision_finished_tavern_option
1000_time_to_go_home_trigger = no
}
always = yes
}
trigger_else = { always = no }
}
reason = visit_tavern
#Actual transition event
if = {
limit = { 1000_is_a_nomadic_holding_trigger = yes }
custom_tooltip = ep3_laamp_decision_event.1000.a_nomads.tt
}
else = { custom_tooltip = ep3_laamp_decision_event.1000.a.tt }
trigger_event = ep3_laamp_decision_event.1030
ai_chance = { base = 100 }
}
#Page 2: Consider additional options
option = {
name = ep3_laamp_decision_event.1000.h
trigger = {
#If we were initially maxed out on provisions but lost provisions while visiting other parts...
trigger_if = {
limit = {
NOT = { exists = scope:been_to_second }
}
always = yes
}
trigger_else_if = {
limit = { exists = scope:been_to_second }
custom_tooltip = {
text = tapped_out.tt
1000_done_with_second_trigger = no
}
}
#Otherwise we're just done here
trigger_else = {
custom_tooltip = {
text = tapped_out.tt
NOT = { exists = scope:laamp_decision_second_finished }
}
}
#Nothing here for the AI
is_ai = no
}
show_as_unavailable = {
#Hide the options when we're _all_ done
trigger_if = {
limit = {
OR = {
AND = {
exists = scope:laamp_decision_second_finished
1000_time_to_go_home_trigger = no
}
AND = {
exists = scope:been_to_second
1000_time_to_go_home_trigger = no
}
}
}
always = yes
}
trigger_else = { always = no }
}
#We got kick-off!
1000_update_last_location_effect = { LOCATION_FLAG = flag:main_square }
#Actual transition event
custom_tooltip = ep3_laamp_decision_event.1000.h.tt
trigger_event = ep3_laamp_decision_event.1001
}
#Let's go back to the camp
option = {
name = {
text = {
first_valid = {
#No options left, partner flavor
triggered_desc = {
trigger = {
1000_time_to_go_home_trigger = yes
exists = scope:visiting_partner
}
desc = ep3_laamp_decision_event.1000.i_home_partner
}
#No options left
triggered_desc = {
trigger = { 1000_time_to_go_home_trigger = yes }
desc = ep3_laamp_decision_event.1000.i_home
}
#Let's get outta here
desc = ep3_laamp_decision_event.1000.i
}
}
}
custom_tooltip = ep3_laamp_decision_event.1000.i.tt
#For loc reasons
1000_remember_settlement_effect = yes
1000_clean_up_effect = yes
ai_chance = { base = 50 }
}
after = {
remove_variable ?= 1000_is_currently_raining
remove_variable ?= 1000_is_currently_snowing
remove_variable ?= 1000_is_currently_foggy
#For all options that are NOT Page 2
if = {
limit = {
has_variable = return_from_location
NOT = { var:return_from_location = flag:main_square }
}
#We got kick-off!
1000_update_last_location_effect = { LOCATION_FLAG = flag:main_square }
}
}
}
######################################################################
# PAGE 2
# ep3_laamp_decision_event.1001
######################################################################
# > Buy Supplies
# > Sell Artifact
# > Town Crier
# > Back to Main Square
#Return to Page 2
scripted_effect 1001_return_to_second_effect = {
custom_tooltip = ep3_laamp_decision_event.return.tt
trigger_event = ep3_laamp_decision_event.1001
}
scripted_effect 1001_been_to_second_effect = {
if = {
limit = {
NOT = { exists = scope:been_to_second }
}
save_scope_as = been_to_second
}
}
#Page 2 - Consider additional options
ep3_laamp_decision_event.1001 = {
type = character_event
title = ep3_laamp_decision_event.1000.t
window = visit_settlement_window
desc = {
#INTRO
first_valid = {
##RETURN: We've returned to this scene, now what
#RETURN: We have no options left - time to go home
triggered_desc = {
trigger = { 1000_done_with_second_trigger = yes }
desc = ep3_laamp_decision_event.1001.desc_intro_return_finished
}
#RETURN: You just returned from assaulting the supply merchant
triggered_desc = {
trigger = {
var:return_from_location ?= flag:supply_merchant
has_variable = 1010_guards_summoned
}
desc = ep3_laamp_decision_event.1001.desc_intro_returned_from_assaulting_supplies
}
#RETURN: Return from where?
random_valid = {
#RETURN: We've returned from Supply Merchant
triggered_desc = {
trigger = { var:return_from_location ?= flag:supply_merchant }
desc = ep3_laamp_decision_event.1001.desc_intro_returned_from_supplies
}
#RETURN: We've returned from Artifact Peddler
triggered_desc = {
trigger = { var:return_from_location ?= flag:artifact_peddler }
desc = ep3_laamp_decision_event.1001.desc_intro_returned_from_artifacts
}
#RETURN: We've returned from Town Crier
triggered_desc = {
trigger = { var:return_from_location ?= flag:contract }
desc = ep3_laamp_decision_event.1001.desc_intro_returned_from_contract
}
#RETURN: Generics to mix in
random_valid = {
#Generics
triggered_desc = {
trigger = { exists = scope:been_to_second }
desc = ep3_laamp_decision_event.1001.desc_intro_returned_generic_01
}
triggered_desc = {
trigger = { exists = scope:been_to_second }
desc = ep3_laamp_decision_event.1001.desc_intro_returned_generic_02
}
}
}
#FIRST TIME
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
NOT = { exists = scope:been_to_second }
}
desc = ep3_laamp_decision_event.1001.desc_intro_nomads
}
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_second }
}
desc = ep3_laamp_decision_event.1001.desc_intro
}
}
#OUTRO
first_valid = {
##RETURN HOME
#RETURN HOME: No partner, time to go home
triggered_desc = {
trigger = {
1000_done_with_second_trigger = yes
NOT = { exists = scope:visiting_partner }
}
desc = ep3_laamp_decision_event.1001.desc_outro_return_finished
}
#RETURN HOME: Partner feels it's time to go home
triggered_desc = {
trigger = {
1000_done_with_second_trigger = yes
exists = scope:visiting_partner
}
desc = ep3_laamp_decision_event.1001.desc_outro_return_partner_finished
}
#RETURN: Virtually re-using the ones from Main Square
random_valid = {
#RETURN: Region - Europe
triggered_desc = {
trigger = {
exists = scope:been_to_second
middle_of_year_season_trigger = yes
scope:visiting_location = {
geographical_region = world_europe
NOT = { geographical_region = world_europe_north }
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_europe_returned_01
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = {
geographical_region = world_europe
NOT = { geographical_region = world_europe_north }
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_europe_returned_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = {
geographical_region = world_europe
NOT = { geographical_region = world_europe_north }
faith = { religion_tag = christianity_religion }
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_europe_returned_03
}
#RETURN: Region - Iberia
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_europe_west_iberia }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_iberia_returned_01
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_europe_west_iberia }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_iberia_returned_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_europe_west_iberia }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_iberia_returned_03
}
#RETURN: Region - Middle East
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_middle_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_middle_east_returned_01
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_middle_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_middle_east_returned_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_middle_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_middle_east_returned_03
}
#RETURN: Region - India
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_01
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_03
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_04
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_india }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_india_returned_05
}
#RETURN: Region - Steppe
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_steppe }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_steppe_returned_01
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_steppe }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_steppe_returned_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_steppe }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_steppe_returned_03
}
#RETURN: Region - North Africa
triggered_desc = {
trigger = {
exists = scope:been_to_second
middle_of_year_season_trigger = yes
scope:visiting_location = { geographical_region = world_africa_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_north_africa_returned_01
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_north_africa_returned_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_north }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_north_africa_returned_03
}
#RETURN: Region - West Africa
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_west }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_west_africa_returned_01
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_west }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_west_africa_returned_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_west }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_west_africa_returned_03
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_west }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_west_africa_returned_04
}
#RETURN: Region - East Africa
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_east_africa_returned_01
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_east_africa_returned_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_east_africa_returned_03
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_location = { geographical_region = world_africa_east }
}
desc = ep3_laamp_decision_event.1000.desc_outro_regional_east_africa_returned_04
}
#RETURN: Region - Generic
triggered_desc = {
trigger = { exists = scope:been_to_second }
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_01
}
triggered_desc = {
trigger = { exists = scope:been_to_second }
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
middle_of_year_season_trigger = yes
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_03
}
triggered_desc = {
trigger = { exists = scope:been_to_second }
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_04
}
triggered_desc = {
trigger = { exists = scope:been_to_second }
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_05
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
middle_of_year_season_trigger = yes
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_06
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
middle_of_year_season_trigger = yes
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_generic_07
}
#RETURN: Partner looks around
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_partner ?= {
NOR = {
has_trait = cynical
has_trait = paranoid
has_trait = callous
}
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_01
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_partner ?= { is_adult = no }
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_02
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_partner ?= { is_adult = no }
NOR = {
has_trait = irritable
has_trait = wrathful
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_03
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_partner ?= {
NOR = {
has_trait = cynical
has_trait = lifestyle_reveler
any_secret = {
type = secret_non_believer
}
}
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_04
}
triggered_desc = {
trigger = {
exists = scope:been_to_second
scope:visiting_partner ?= {
OR = {
has_relation_friend = root
has_relation_lover = root
is_close_family_of = root
}
}
}
desc = ep3_laamp_decision_event.1000.desc_outro_returned_partner_generic_05
}
}
}
}
theme = landless_adventurer
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_generic" }
#Indenting backgrounds for easier folding
#HOME: Tribe
override_background = {
trigger = {
1000_time_to_go_home_trigger = yes
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
reference = bp1_bonfire
}
#HOME
override_background = {
trigger = { 1000_time_to_go_home_trigger = yes}
reference = alley_night
}
#Snowing in tribal Scandinavia
override_background = {
trigger = { is_snowy_rural_scandinavia_location_trigger = yes }
reference = ep2_hunt_snowy_forest
}
#Tribe Holding
override_background = {
trigger = {
scope:visiting_location = { has_holding_type = tribal_holding }
}
reference = village
}
override_background = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
reference = mpo_camp_steppe
}
#Constantinople
override_background = {
trigger = { exists = scope:is_constantinople }
reference = ep3_constantinople
}
#Church Holding
override_background = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
}
reference = holy_site_generic
}
#Castle Holding
override_background = {
trigger = {
scope:visiting_location = { has_holding_type = castle_holding }
}
reference = courtyard_location
}
#City Holding
override_background = {
trigger = {
scope:visiting_location = { has_holding_type = city_holding }
}
reference = ep3_city_gate
}
#Fallback
override_background = { reference = market }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#Time to go home
triggered_animation = {
trigger = { 1000_time_to_go_home_trigger = yes }
animation = boredom
}
#Friendly
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_friendly_traits = yes }
}
animation = personality_content
}
#Business-minded
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_commerce_traits = yes }
}
animation = thinking
}
#Uninterested
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_uninterested_traits = yes }
}
animation = personality_callous
}
#Irrational
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_irrational_traits = yes }
}
animation = eccentric
}
#A bit awkward
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_standoffish_traits = yes }
}
animation = shame
}
animation = personality_bold
}
center_portrait = {
character = root
triggered_animation = {
trigger = { 1010_has_irrational_traits = yes }
animation = personality_irrational
}
triggered_animation = {
trigger = { 1010_has_standoffish_traits = yes }
animation = personality_coward
}
triggered_animation = {
trigger = { 1010_has_uninterested_traits = yes }
animation = personality_cynical
}
animation = personality_rational
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#It just works. (To get the appropriate loc when you snub the artifact vendor at the last minute, then refresh when we exit & re-enter)
remove_variable ?= 1021_artifact_sell_screen
}
#Option: Stock up on supplies
option = {
name = {
text = {
first_valid = {
#Return to look at supplies
triggered_desc = {
trigger = { exists = scope:did_not_buy_supplies }
desc = ep3_laamp_decision_event.1001.a_second
}
#First time looking at supplies
desc = ep3_laamp_decision_event.1001.a
}
}
}
trigger = {
#You recently botched threatening this merchant
trigger_if = {
limit = { has_variable = 1010_guards_summoned }
custom_tooltip = {
text = guards_were_summoned.tt
NOT = { has_variable = 1010_guards_summoned }
}
}
#Already got a hand-out from this merchant
trigger_else_if = {
limit = { scope:laamp_decision_bought_supplies ?= flag:handout }
custom_tooltip = {
text = already_received_supplies.tt
NOT = { scope:laamp_decision_bought_supplies ?= flag:handout }
}
}
#Already bought provisions this visit
trigger_else_if = {
limit = { exists = scope:laamp_decision_bought_supplies }
custom_tooltip = {
text = already_bought_supplies.tt
NOT = { exists = scope:laamp_decision_bought_supplies }
}
}
#Already at max provisions
trigger_else = {
custom_tooltip = {
text = full_on_supplies.tt
NOT = {
domicile ?= { provisions = max_provisions }
}
}
}
}
#Since this is semi-dynamic, show it always
show_as_unavailable = { always = yes }
reason = buy_provisions
#For loc
1001_been_to_second_effect = yes
#Actual transition event
custom_tooltip = ep3_laamp_decision_event.1001.a.tt
trigger_event = ep3_laamp_decision_event.1010
}
#Option: Sell an artifact to local peddlers
option = {
name = {
text = {
first_valid = {
#Return to sell artifacts
triggered_desc = {
trigger = { exists = scope:did_not_sell_artifact }
desc = ep3_laamp_decision_event.1001.b_second
}
#First time selling artifacts
desc = ep3_laamp_decision_event.1001.b
}
}
}
trigger = {
#Do we actually have the artifact option available
trigger_if = {
limit = {
is_target_in_variable_list = {
name = list_of_options
target = flag:has_artifact_option
}
}
always = yes
}
trigger_else_if = {
limit = { exists = scope:laamp_decision_sold_artifact }
custom_tooltip = {
text = already_sold_artifact.tt
#We haven't already sold an artifact
NOT = { exists = scope:laamp_decision_sold_artifact }
}
}
trigger_else = { always = no }
}
show_as_unavailable = {
#Only show it if it was available from the start
trigger_if = {
limit = { exists = scope:laamp_decision_sold_artifact }
always = yes
}
trigger_else = { always = no }
}
reason = sell_artifacts
#For loc
1001_been_to_second_effect = yes
#Actual transition event
custom_tooltip = ep3_laamp_decision_event.1001.b.tt
#Back to smirk-town with you
if = {
limit = { exists = scope:attempted_artifact_haggle }
trigger_event = ep3_laamp_decision_event.1021
}
#Otherwise regular peddler
else = { trigger_event = ep3_laamp_decision_event.1020 }
}
#Option: Head to the Town Crier for contracts
option = {
name = {
text = {
first_valid = {
#Return to look at contracts
triggered_desc = {
trigger = { exists = scope:been_to_contract }
desc = ep3_laamp_decision_event.1001.c_second
}
#First time looking at contracts
desc = ep3_laamp_decision_event.1001.c
}
}
}
trigger = {
#You are still on cooldown (you can go in to the board once to realize the board is empty, then the option greys out)
trigger_if = {
limit = { scope:laamp_decision_has_contracted ?= flag:no }
custom_tooltip = {
text = no_contracts.tt
always = no
}
}
#You have spawned contracts during this visit
trigger_else_if = {
limit = {
OR = {
has_variable = 1025_has_contracted_recently
scope:laamp_decision_has_contracted ?= flag:yes
}
}
custom_tooltip = {
text = already_spawned_contracts.tt
always = no
}
}
#Otherwise, have a look (except for the AI, who take contracts through a different system)
trigger_else = { is_ai = no }
}
#Notice board can be empty, so no real cooldown?
show_as_unavailable = { always = yes }
reason = spawn_contracts
#For loc
1001_been_to_second_effect = yes
#Actual transition event
custom_tooltip = ep3_laamp_decision_event.1001.c.tt
trigger_event = ep3_laamp_decision_event.1025
}
#Go back to Main Square
option = {
name = ep3_laamp_decision_event.1001.d
#Time to close off the option?
if = {
limit = { 1000_done_with_second_trigger = yes }
save_scope_as = laamp_decision_second_finished
}
else_if = {
limit = {
NOT = { exists = scope:been_to_second }
}
save_scope_as = been_to_second
}
#We got kick-off!
1000_update_last_location_effect = { LOCATION_FLAG = flag:second }
#Go back to the main event
1000_return_to_main_effect = yes
}
}
######################################################################
# BUY SUPPLIES
# ep3_laamp_decision_event.1010
######################################################################
#Remember merchant for loc
scripted_effect 1010_remember_vendor_character_effect = {
#Do we already remember them?
if = {
limit = {
has_variable = laamp_remembered_$GUILD$s_list #Notice the 's' right after GUILD (= 'merchants' instead of 'merchant')
any_in_list = {
variable = laamp_remembered_$GUILD$s_list
this = $CHARACTER$
}
}
#Replace old entry with a new one
remove_list_variable = {
name = laamp_remembered_$GUILD$s_list
target = $CHARACTER$
}
add_to_variable_list = {
name = laamp_remembered_$GUILD$s_list
target = $CHARACTER$
years = 10
}
}
#Otherwise just add 'em to the list
else = {
add_to_variable_list = {
name = laamp_remembered_$GUILD$s_list
target = $CHARACTER$
years = 10
}
}
}
#Set the correct variable to adjust loc for the Buy Supply option
scripted_effect 1010_bought_supplies_effect = {
save_scope_value_as = {
name = laamp_decision_bought_supplies
value = flag:none
}
#Go back to the main event
hidden_effect = { 1001_return_to_second_effect = yes }
}
#No prisoners. No rivals. No service.
scripted_trigger 1010_basic_merchant_checks_trigger = {
NOT = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
}
is_available_adult = yes
#No double-dipping
trigger_if = {
limit = { exists = scope:laamp_supply_merchant }
this != scope:laamp_supply_merchant
}
trigger_if = {
limit = { exists = scope:laamp_artifact_peddler }
this != scope:laamp_artifact_peddler
}
trigger_if = {
limit = { exists = scope:laamp_town_crier }
this != scope:laamp_town_crier
}
#Tavern
trigger_if = {
limit = { exists = scope:laamp_storyteller }
this != scope:laamp_storyteller
}
trigger_if = {
limit = { exists = scope:laamp_first_recruit }
this != scope:laamp_first_recruit
}
trigger_if = {
limit = { exists = scope:laamp_second_recruit }
this != scope:laamp_second_recruit
}
trigger_if = {
limit = { exists = scope:laamp_third_recruit }
this != scope:laamp_third_recruit
}
trigger_if = {
limit = { exists = scope:laamp_generic_jane }
this != scope:laamp_generic_jane
}
trigger_if = {
limit = { exists = scope:laamp_spouse_material }
this != scope:laamp_spouse_material
}
trigger_if = {
limit = { exists = scope:laamp_hooded_figure }
this != scope:laamp_hooded_figure
}
#Church
trigger_if = {
limit = { exists = scope:laamp_healer_character }
this != scope:laamp_healer_character
}
trigger_if = {
limit = { exists = scope:laamp_clergy_character }
this != scope:laamp_clergy_character
}
trigger_if = {
limit = { exists = scope:laamp_physician_recruit }
this != scope:laamp_physician_recruit
}
#Castle
trigger_if = {
limit = { exists = scope:laamp_plain_guard }
this != scope:laamp_plain_guard
}
trigger_if = {
limit = { exists = scope:laamp_talented_guard }
this != scope:laamp_talented_guard
}
trigger_if = {
limit = { exists = scope:laamp_disgruntled_moa }
this != scope:laamp_disgruntled_moa
}
trigger_if = {
limit = { exists = scope:laamp_maa_reinforcer }
this != scope:laamp_maa_reinforcer
}
trigger_if = {
limit = { exists = scope:laamp_bodyguard_recruit }
this != scope:laamp_bodyguard_recruit
}
#City
trigger_if = {
limit = { exists = scope:laamp_weaponsmith_craftsman }
this != scope:laamp_weaponsmith_craftsman
}
trigger_if = {
limit = { exists = scope:laamp_armorer_craftsman}
this != scope:laamp_armorer_craftsman
}
trigger_if = {
limit = { exists = scope:laamp_jeweler_craftsman }
this != scope:laamp_jeweler_craftsman
}
trigger_if = {
limit = { exists = scope:laamp_quartermaster_recruit }
this != scope:laamp_quartermaster_recruit
}
}
#Scripty-scripted repeat triggers to check if we already saved this character
scripted_trigger 1010_is_a_saved_merchant_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_merchants_list
target = scope:saved_character_check
}
}
}
scripted_trigger 1010_is_a_saved_peddler_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_peddlers_list
target = scope:saved_character_check
}
}
}
scripted_trigger 1010_is_a_saved_crier_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_criers_list
target = scope:saved_character_check
}
}
}
#Tavern
scripted_trigger 1010_is_a_saved_storyteller_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_storytellers_list
target = scope:saved_character_check
}
}
}
scripted_trigger 1010_is_a_saved_thief_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_thiefs_list #Don't judge me, 'thiefs' is most consequential
target = scope:saved_character_check
}
}
}
#Church
scripted_trigger 1010_is_a_saved_healer_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_healers_list
target = scope:saved_character_check
}
}
}
scripted_trigger 1010_is_a_saved_clergy_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_clergys_list
target = scope:saved_character_check
}
}
}
scripted_trigger 1010_is_a_saved_physician_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_physicians_list
target = scope:saved_character_check
}
}
}
#Castle
scripted_trigger 1010_is_a_saved_bodyguard_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_bodyguards_list
target = scope:saved_character_check
}
}
}
#Craftsmen
scripted_trigger 1010_is_a_saved_weaponsmith_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_weaponsmiths_list
target = scope:saved_character_check
}
}
}
scripted_trigger 1010_is_a_saved_armorer_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_armorers_list
target = scope:saved_character_check
}
}
}
scripted_trigger 1010_is_a_saved_jeweler_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_jewelers_list
target = scope:saved_character_check
}
}
}
scripted_trigger 1010_is_a_saved_quartermaster_trigger = {
root = {
is_target_in_variable_list = {
name = laamp_remembered_quartermasters_list
target = scope:saved_character_check
}
}
}
#Can we actually?
scripted_trigger 1010_would_trade_child_for_supplies_trigger = {
OR = {
AND = {
#Normal people wouldn't trade away a child for a 'top-up'
OR = {
has_trait = greedy
has_trait = callous
}
scope:1010_supply_less_than ?= flag:1010_less_than_100_supply
}
AND = {
exists = scope:1010_supply_less_than
OR = {
scope:1010_supply_less_than = flag:1010_less_than_20_supply
scope:1010_supply_less_than = flag:1010_less_than_40_supply
scope:1010_supply_less_than = flag:1010_less_than_60_supply
scope:1010_supply_less_than = flag:1010_less_than_80_supply
}
}
}
exists = scope:payment_child
}
#Don't trade away your heir
scripted_trigger 1010_payment_child_trigger = {
age >= 2
age <= 15
is_courtier_of = root
NOT = { is_primary_heir_of = root }
save_temporary_scope_as = child_check
root.primary_title = {
place_in_line_of_succession = {
target = scope:child_check
value >= 3
}
}
is_available = yes
location = scope:visiting_location
#Let's just avoid some technical headaches if we brought a kid along
trigger_if = {
limit = { exists = scope:visiting_partner }
this != scope:visiting_partner
}
}
scripted_trigger 1010_is_thieving_character_trigger = {
#intrigue >= extremely_high_skill_rating
NOR = {
has_trait = honest
has_trait = just
}
is_adult = yes
}
#Mark that child
scripted_effect 1010_mark_chosen_child_effect = {
scope:payment_child = {
if = {
limit = { has_variable = 1010_payment_child }
remove_variable ?= 1010_payment_child
set_variable = {
name = 1010_payment_child
days = visit_settlement_cooldown_days
}
}
else = {
set_variable = {
name = 1010_payment_child
days = visit_settlement_cooldown_days
}
}
}
}
#Supply duel for your highest skill stat
scripted_effect 1010_highest_skill_duel_effect = {
if = {
limit = { highest_skill = diplomacy }
1010_duel_effect = { SKILL = diplomacy }
}
else_if = {
limit = { highest_skill = stewardship }
1010_duel_effect = { SKILL = stewardship }
}
else_if = {
limit = { highest_skill = intrigue }
1010_duel_effect = { SKILL = intrigue }
}
else_if = {
limit = { highest_skill = learning }
1010_duel_effect = { SKILL = learning }
}
else_if = {
limit = { highest_skill = martial }
1010_duel_effect = { SKILL = martial }
}
else_if = {
limit = { highest_skill_including_prowess = prowess }
1010_duel_effect = { SKILL = prowess }
}
}
#Actual supply duel effect
scripted_effect 1010_duel_effect = {
duel = {
skill = $SKILL$
target = scope:laamp_supply_merchant
#Success: Half supply for free
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep3_laamp_decision_event.1010.a_$SKILL$.success
send_interface_toast = {
title = ep3_laamp_decision_event.1010.a_$SKILL$.success
left_icon = root
right_icon = scope:laamp_supply_merchant
#Get 1/4 of your way to 100% (So if max is 100 and you have 20 provisions, you should gain 40 provisions)
domicile ?= { change_provisions = quarter_to_max_provisions_value }
#Set up the cooldown for the convince-ction
set_variable = {
name = 1010_has_convinced_recently
value = flag:success
days = visit_settlement_minimum_cooldown_days #Sync this with fail & critical_fail
}
#Determine why we can't return to this option
save_scope_value_as = {
name = laamp_decision_bought_supplies
value = flag:handout
}
#Go back to the main event
hidden_effect = { 1001_return_to_second_effect = yes }
}
}
#Failure: Increased price for supplies
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -20
}
desc = ep3_laamp_decision_event.1010.a_$SKILL$.failure
send_interface_toast = {
title = ep3_laamp_decision_event.1010.a_$SKILL$.failure
left_icon = root
right_icon = scope:laamp_supply_merchant
custom_tooltip = ep3_laamp_decision_event.1010.a.failure.tt
#Set up the cooldown for the convince-ction
set_variable = {
name = 1010_has_convinced_recently
value = flag:fail
days = visit_settlement_minimum_cooldown_days #Sync this with success, critical_fail & the tooltip, currently displayed in 'months' (plural)
}
#Price increased - try again
1001_return_to_second_effect = yes
}
}
#Critical Failure: The local guards are summoned
5 = {
trigger = {
root = {
OR = {
highest_skill = martial
highest_skill_including_prowess = prowess
}
}
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
min = 5
desc = ep3_laamp_decision_event.1010.a_$SKILL$.critical_failure
send_interface_toast = {
title = ep3_laamp_decision_event.1010.a_$SKILL$.critical_failure
left_icon = root
right_icon = scope:laamp_supply_merchant
custom_tooltip = ep3_laamp_decision_event.1010.a.failure.tt
#Set up the cooldown for the convince-ction
set_variable = {
name = 1010_has_convinced_recently
value = flag:fail
days = visit_settlement_minimum_cooldown_days #Sync this with success & critical_fail
}
#Quite the tussle
increase_wounds_effect = { REASON = fight }
#This merchant doesn't want to see you again
progress_towards_rival_effect = {
REASON = rival_tried_to_intimidate_merchant
CHARACTER = scope:laamp_supply_merchant
OPINION = default_rival_opinion
}
#And you will not be going back to supply merchant, but feel free to look at the greyed out option
set_variable = 1010_guards_summoned
#Determine why we can't return to this option
save_scope_value_as = {
name = laamp_decision_bought_supplies
value = flag:none
}
#Go back to the main event
1001_return_to_second_effect = yes
}
}
}
}
#Stock 'Em Up
ep3_laamp_decision_event.1010 = {
type = character_event
title = ep3_laamp_decision_event.1010.t
window = visit_settlement_window
desc = {
#Intro
first_valid = {
#This is a CITY HOLDING, aschually. More refined buyers.
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_buy_supplies }
scope:visiting_location = { has_holding_type = city_holding }
}
desc = ep3_laamp_decision_event.1010.desc_posh_stalls
}
#We've returned to this scene
triggered_desc = {
trigger = { exists = scope:did_not_buy_supplies }
desc = ep3_laamp_decision_event.1010.desc_returned
}
#First time in this scene
desc = ep3_laamp_decision_event.1010.desc
}
#Returning customer
#FIRST TIME: The merchant remembers you
random_valid = {
#Friendly
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_buy_supplies }
exists = scope:laamp_recurring_supply_merchant
trigger_if = {
limit = { exists = scope:laamp_friendly_supply_merchant }
always = yes
}
trigger_else = { always = no }
}
desc = ep3_laamp_decision_event.1010.desc_reused_merchant_reaction_01
}
#Slightly standoff-ish
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_buy_supplies }
exists = scope:laamp_recurring_supply_merchant
trigger_if = {
limit = { exists = scope:laamp_antagonistic_supply_merchant }
always = yes
}
trigger_else = { always = no }
}
desc = ep3_laamp_decision_event.1010.desc_reused_merchant_reaction_02
}
}
#FIRST TIME: The merchant remembers you: First INTRO part of DIALOGUE
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_buy_supplies }
exists = scope:laamp_recurring_supply_merchant
}
desc = ep3_laamp_decision_event.1010.desc_reused_merchant_intro
}
#FIRST TIME: The merchant remembers you: Random MID part of DIALOGUE
random_valid = {
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_buy_supplies }
exists = scope:laamp_recurring_supply_merchant
}
desc = ep3_laamp_decision_event.1010.desc_reused_merchant_01
}
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_buy_supplies }
exists = scope:laamp_recurring_supply_merchant
}
desc = ep3_laamp_decision_event.1010.desc_reused_merchant_02
}
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_buy_supplies }
exists = scope:laamp_recurring_supply_merchant
}
desc = ep3_laamp_decision_event.1010.desc_reused_merchant_03
}
}
#FIRST TIME: The merchant remembers you: Random OUTRO part of DIALOGUE
random_valid = {
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_buy_supplies }
exists = scope:laamp_recurring_supply_merchant
}
desc = ep3_laamp_decision_event.1010.desc_reused_merchant_outro_01
}
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_buy_supplies }
exists = scope:laamp_recurring_supply_merchant
}
desc = ep3_laamp_decision_event.1010.desc_reused_merchant_outro_02
}
}
#First time meeting merchant
#FIRST TIME: Merchant REACTION
first_valid = {
#Friendly
triggered_desc = {
trigger = {
NOR = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
scope:laamp_supply_merchant = { 1010_has_friendly_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_gregarious_new
}
#Uninterested
triggered_desc = {
trigger = {
NOR = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
scope:laamp_supply_merchant = { 1010_has_uninterested_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_callous_new
}
#Business-minded
triggered_desc = {
trigger = {
NOR = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
scope:laamp_supply_merchant = { 1010_has_commerce_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_greedy_new
}
#A bit awkward
triggered_desc = {
trigger = {
NOR = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
scope:laamp_supply_merchant = { 1010_has_standoffish_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_shy_new
}
#Irrational
triggered_desc = {
trigger = {
NOR = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
scope:laamp_supply_merchant = { 1010_has_irrational_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_eccentric_new
}
#Generic
random_valid = {
triggered_desc = {
trigger = {
NOR = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
scope:laamp_supply_merchant = { 1011_has_no_applicable_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_generic_new_01
}
triggered_desc = {
trigger = {
NOR = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
scope:laamp_supply_merchant = { 1011_has_no_applicable_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_generic_new_01
}
}
}
#FIRST TIME in this scene: Random DIALOGUE
random_valid = {
triggered_desc = {
trigger = {
NOT = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
}
desc = ep3_laamp_decision_event.1010.desc_outro_new_01
}
triggered_desc = {
trigger = {
NOT = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
}
desc = ep3_laamp_decision_event.1010.desc_outro_new_02
}
triggered_desc = {
trigger = {
NOT = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
}
desc = ep3_laamp_decision_event.1010.desc_outro_new_03
}
#"Cruel world innit?"
triggered_desc = {
trigger = {
NOT = {
exists = scope:did_not_buy_supplies
exists = scope:laamp_recurring_supply_merchant
}
scope:laamp_supply_merchant = {
OR = {
has_trait = compassionate
AND = {
age >= 30
age >= root.age_plus_25
}
}
}
}
desc = ep3_laamp_decision_event.1010.desc_outro_special_new_04
}
}
#Return to scene
#RETURN: Merchant REACTION
first_valid = {
#Friendly
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_friendly_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_gregarious_return
}
#Uninterested
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_uninterested_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_callous_return
}
#Business-minded
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_commerce_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_greedy_return
}
#A bit awkward
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_standoffish_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_shy_return
}
#Irrational
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_irrational_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_trait_eccentric_return
}
#Generic
random_valid = {
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1011_has_no_applicable_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_generic_returned_01
}
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1011_has_no_applicable_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_generic_returned_02
}
}
}
#RETURN: Random DIALOGUE
random_valid = {
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_irrational_traits = no } #For some quirkyness
}
desc = ep3_laamp_decision_event.1010.desc_outro_returned_01
}
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_irrational_traits = no } #For some quirkyness
}
desc = ep3_laamp_decision_event.1010.desc_outro_returned_02
}
triggered_desc = {
trigger = {
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_irrational_traits = no } #For some quirkyness
}
desc = ep3_laamp_decision_event.1010.desc_outro_returned_03
}
triggered_desc = {
trigger = {
#Irrational is seeing you for the first time (again)
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_irrational_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_outro_new_01
}
triggered_desc = {
trigger = {
#Irrational is seeing you for the first time (again)
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_irrational_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_outro_new_02
}
triggered_desc = {
trigger = {
#Irrational is seeing you for the first time (again)
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_irrational_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_outro_new_03
}
triggered_desc = {
trigger = {
#Irrational is seeing you for the first time (again)
exists = scope:did_not_buy_supplies
scope:laamp_supply_merchant = { 1010_has_irrational_traits = yes }
}
desc = ep3_laamp_decision_event.1010.desc_outro_special_new_04
}
}
first_valid = {
#RETURN: Sneaky Partner
triggered_desc = {
trigger = {
exists = scope:1010_potentiaL_thievery
exists = scope:did_not_buy_supplies
}
desc = ep3_laamp_decision_event.1010.desc_outro_sneaky_partner_returned
}
#FIRST TIME: Sneaky Partner
triggered_desc = {
trigger = { exists = scope:1010_potentiaL_thievery }
desc = ep3_laamp_decision_event.1010.desc_outro_sneaky_partner
}
}
}
theme = stewardship
override_background = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
reference = army_camp
}
override_background = { reference = market }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#Potential thief
triggered_animation = {
trigger = { exists = scope:1010_potentiaL_thievery }
animation = personality_dishonorable
}
#Friendly
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_friendly_traits = yes }
}
animation = personality_forgiving
}
#Business-minded
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_commerce_traits = yes }
}
animation = personality_greedy
}
#Uninterested
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_uninterested_traits = yes }
}
animation = personality_cynical
}
#Irrational
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_irrational_traits = yes }
}
animation = personality_irrational
}
#A bit awkward
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_standoffish_traits = yes }
}
animation = personality_coward
}
animation = personality_content
}
center_portrait = {
character = root
camera = camera_event_scheme_center_look_semi_right
animation = steward
}
right_portrait = {
character = scope:laamp_supply_merchant
#Friendly
triggered_animation = {
trigger = {
scope:laamp_supply_merchant = { 1010_has_friendly_traits = yes }
}
animation = personality_compassionate
}
#Uninterested
triggered_animation = {
trigger = {
scope:laamp_supply_merchant = { 1010_has_uninterested_traits = yes }
}
animation = personality_callous
}
#Business-minded
triggered_animation = {
trigger = {
scope:laamp_supply_merchant = { 1010_has_commerce_traits = yes }
}
animation = admiration
}
#A bit awkward
triggered_animation = {
trigger = {
scope:laamp_supply_merchant = { 1010_has_standoffish_traits = yes }
}
animation = personality_coward
}
#Irrational
triggered_animation = {
trigger = {
scope:laamp_supply_merchant = { 1010_has_irrational_traits = yes }
}
animation = personality_irrational
}
animation = steward
}
lower_left_portrait = {
trigger = { exists = scope:payment_child }
character = scope:payment_child
}
lower_center_portrait = {
trigger = {
exists = scope:other_parent
trigger_if = {
limit = { exists = scope:visiting_partner }
scope:other_parent != scope:visiting_partner
}
}
character = scope:other_parent
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Find our merchant
if = {
#Do we already have a merchant?
limit = {
NOT = { exists = scope:laamp_supply_merchant }
}
#Has this person been our supply merchant in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_merchant_trigger = yes
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_supply_merchant
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_supply_merchant
scope:laamp_supply_merchant = {
if = {
limit = {
OR = {
has_trait = greedy
has_trait = craven
has_trait = wrathful
has_trait = deceitful
1010_has_uninterested_traits = yes
}
}
save_scope_as = laamp_antagonistic_supply_merchant
}
else_if = {
limit = {
NOT = { exists = scope:laamp_antagonistic_supply_merchant }
OR = {
has_trait = gregarious
has_trait = compassionate
has_trait = honest
has_trait = eccentric
has_trait = forgiving
has_trait = trusting
}
}
save_scope_as = laamp_friendly_supply_merchant
}
}
}
#Otherwise find a merchant in the pool
if = {
limit = {
NOT = { exists = scope:laamp_supply_merchant }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
}
save_scope_as = laamp_supply_merchant
}
}
#Otherwise create a merchant
if = {
limit = {
NOT = { exists = scope:laamp_supply_merchant }
}
#Create merchant to stuff in pool
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_supply_merchant
}
}
#Remember the merchant
1010_remember_vendor_character_effect = { GUILD = merchant CHARACTER = scope:laamp_supply_merchant }
}
#Determine how much supply we are buying, reflect this in cost and options available (don't trade away children for 5% supply...)
if = {
limit = {
OR = {
#If we haven't bought provisions already
NOT = { exists = scope:1010_supply_value }
#Or if we went here, then used provisions elsewhere in the holding and came back
AND = {
exists = scope:1010_supply_value
NOR = {
scope:1010_supply_value = domicile.max_provisions
scope:1010_supply_value = domicile.provisions
}
}
}
}
if = {
#Less than 20% supply
limit = {
domicile ?= { provisions <= twenty_percent_provisions_value }
}
save_scope_value_as = {
name = 1010_supply_less_than
value = flag:1010_less_than_20_supply
}
}
else_if = {
#Less than 40% supply
limit = {
domicile ?= { provisions <= forty_percent_provisions_value }
}
save_scope_value_as = {
name = 1010_supply_less_than
value = flag:1010_less_than_40_supply
}
}
else_if = {
#Less than 60% supply
limit = {
domicile ?= { provisions <= sixty_percent_provisions_value }
}
save_scope_value_as = {
name = 1010_supply_less_than
value = flag:1010_less_than_60_supply
}
}
else_if = {
#Less than 80% supply
limit = {
domicile ?= { provisions <= eighty_percent_provisions_value }
}
save_scope_value_as = {
name = 1010_supply_less_than
value = flag:1010_less_than_80_supply
}
}
else_if = {
#Less than 100% supply
limit = {
domicile ?= { provisions < max_provisions }
}
save_scope_value_as = {
name = 1010_supply_less_than
value = flag:1010_less_than_100_supply
}
}
set_variable = {
name = supply_gold_cost
value = {
value = domicile.max_provisions
subtract = domicile.provisions
#Now we have the missing provisions value
multiply = 0.05
round = yes
}
}
save_scope_value_as = {
name = 1010_supply_value
value = domicile.provisions
}
}
#Find a suitable child. Don't trade away your heir.
if = {
limit = {
NOT = { exists = scope:payment_child }
1010_would_trade_child_for_supplies_trigger = yes
}
#Did we already pick a child and are actually decision-scumming?
if = {
limit = {
any_child = {
1010_payment_child_trigger = yes
has_variable = 1010_payment_child
}
}
random_child = {
limit = {
1010_payment_child_trigger = yes
has_variable = 1010_payment_child
}
save_scope_as = payment_child
#Refresh the mark
1010_mark_chosen_child_effect = yes
}
}
#Otherwise pick a child
if = {
limit = {
NOT = { exists = scope:payment_child }
any_child = { 1010_payment_child_trigger = yes }
}
every_child = {
limit = { 1010_payment_child_trigger = yes }
add_to_list = list_of_unimportant_children
}
random_in_list = {
list = list_of_unimportant_children
weight = {
base = 0
#Look for children who can't inherit first
modifier = {
is_female = yes
root = {
OR = {
faith = { has_doctrine_parameter = male_dominated_law }
has_realm_law = male_only_law
}
}
add = 50
}
modifier = {
is_male = yes
root = {
OR = {
faith = { has_doctrine_parameter = female_dominated_law }
has_realm_law = female_only_law
}
}
add = 50
}
#Then the ones you like less
modifier = {
opinion = {
target = root
value <= 50
}
add = 25
}
modifier = {
opinion = {
target = root
value <= 30
}
add = 25
}
modifier = {
opinion = {
target = root
value <= 10
}
add = 25
}
modifier = {
opinion = {
target = root
value < 0
}
add = 25
}
modifier = {
has_relation_friend = root
factor = 0
}
}
save_scope_as = payment_child
#No decision-scumming
1010_mark_chosen_child_effect = yes
}
}
#Find the other parent of the child - should be adequately upset that you traded away their kid. You monster.
if = {
limit = { exists = scope:payment_child }
if = {
limit = { is_female = yes }
if = {
limit = {
scope:payment_child.father = { is_alive = yes }
}
scope:payment_child.father = { save_scope_as = other_parent }
}
}
else_if = {
limit = {
scope:payment_child.mother = { is_alive = yes }
}
scope:payment_child.mother = { save_scope_as = other_parent }
}
}
}
#Is our partner actually a bit thieving?
if = {
#This looks a bit weird, localization-wise.
limit = {
#We're not a master thief
NOT = { highest_skill = intrigue }
#But our friend is a competent thief
scope:visiting_partner ?= { 1010_is_thieving_character_trigger = yes }
NOT = { exists = scope:1010_potentiaL_thievery }
}
if = {
limit = {
NOT = { has_variable = 1010_calculated_thievery_punishment }
}
set_variable = {
name = 1010_calculated_thievery_punishment
value = {
integer_range = {
min = medium_trait_xp
max = major_trait_xp
}
}
days = visit_settlement_small_cooldown_days
}
}
save_scope_as = 1010_potentiaL_thievery
}
#Price tweaks!
if = {
limit = { exists = var:supply_gold_cost }
#You botched a convince duel, price increased
if = {
limit = {
var:1010_has_convinced_recently ?= flag:fail
NOT = { exists = scope:1010_adjusted_provision_cost }
}
change_variable = {
name = supply_gold_cost
multiply = 1.3
}
save_scope_value_as = {
name = 1010_adjusted_provision_cost
value = flag:yes
}
}
#Random selection of price reductions
if = {
limit = {
NOT = { exists = scope:1010_applied_price_reductions }
}
#Perk discount
if = {
limit = {
root = { has_perk = war_profiteer_perk }
}
change_variable = {
name = supply_gold_cost
multiply = 0.75
}
}
#Cheaper supplies in City Holding
if = {
limit = {
root.location = { has_holding_type = city_holding }
}
change_variable = {
name = supply_gold_cost
multiply = 0.7
}
}
#Cheaper supplies from Camp Party
if = {
limit = {
has_character_flag = cheaper_provisions_visit_holding_flag
}
change_variable = {
name = supply_gold_cost
multiply = 0.6
}
}
save_scope_value_as = {
name = 1010_applied_price_reductions
value = flag:yes
}
}
}
}
#Trade gold
option = {
name = ep3_laamp_decision_event.1010.b
trigger = { short_term_gold >= var:supply_gold_cost }
show_as_unavailable = { always = yes }
#Pay gold
remove_short_term_gold = var:supply_gold_cost
#Get supplies
domicile ?= {
change_provisions = {
value = {
value = max_provisions
subtract = provisions
}
}
}
#Set correct variables and reroute us to main square
1010_bought_supplies_effect = yes
}
#Convince them to give you some supply for free
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { highest_skill = diplomacy }
desc = ep3_laamp_decision_event.1010.a_diplomacy
}
triggered_desc = {
trigger = { highest_skill = stewardship }
desc = ep3_laamp_decision_event.1010.a_stewardship
}
triggered_desc = {
trigger = { highest_skill = intrigue }
desc = ep3_laamp_decision_event.1010.a_intrigue
}
triggered_desc = {
trigger = { highest_skill = learning }
desc = ep3_laamp_decision_event.1010.a_learning
}
triggered_desc = {
trigger = {
OR = {
highest_skill = martial
highest_skill_including_prowess = prowess
}
}
desc = ep3_laamp_decision_event.1010.a_martial
}
}
}
}
trigger = {
#Are we on cooldown?
custom_tooltip = {
text = ep3_laamp_decision_event.1010.a.cooldown.tt
NOT = { has_variable = 1010_has_convinced_recently }
}
}
#Keep you informed of the cooldown
show_as_unavailable = { always = yes }
#Duel effect
1010_highest_skill_duel_effect = yes
}
#Triggered Option: Trade child
option = {
name = {
trigger = { has_trait = callous }
text = ep3_laamp_decision_event.1010.c_callous
}
name = ep3_laamp_decision_event.1010.c
flavor = {
first_valid = {
triggered_desc = {
trigger = { has_trait = callous }
desc = ep3_laamp_decision_event.1010.c.flavor_callous
}
desc = ep3_laamp_decision_event.1010.c.flavor
}
}
trigger = {
exists = scope:payment_child
#For sanity reasons
is_ai = no
}
highlight_portrait = scope:payment_child
#Pay child
scope:payment_child = {
add_opinion = {
modifier = traded_me_away_opinion
target = root
opinion = -50
}
progress_towards_rival_effect = {
REASON = rival_traded_away_child
CHARACTER = root
OPINION = default_rival_opinion
}
move_to_pool = yes
}
if = {
limit = { exists = scope:other_parent }
scope:other_parent = {
add_opinion = {
modifier = traded_away_child_opinion
target = root
opinion = -50
}
}
}
#Get supplies
domicile ?= { change_provisions = max_provisions }
#Give appropriate amounts of stress
stress_impact = {
compassionate = major_stress_impact_gain
}
#Set correct variables and reroute us to main square
1010_bought_supplies_effect = yes
}
#Triggered Option: Intrigue-y visiting partner steals some supply for you
option = {
name = ep3_laamp_decision_event.1010.d
trigger = {
exists = scope:1010_potentiaL_thievery
#Are we on cooldown?
custom_tooltip = {
text = ep3_laamp_decision_event.1010.d.cooldown.tt
NOT = { has_variable = 1010_has_stolen_recently }
}
}
flavor = ep3_laamp_decision_event.1010.d.flavor
show_as_unavailable = { exists = scope:1010_potentiaL_thievery }
scope:visiting_partner = {
duel = {
skill = intrigue
target = scope:laamp_supply_merchant
#Success: Supplies!
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep3_laamp_decision_event.1010.d.success
root = {
send_interface_toast = {
title = ep3_laamp_decision_event.1010.d.success
left_icon = scope:visiting_partner
right_icon = scope:laamp_supply_merchant
#Successful theft!
domicile ?= { change_provisions = half_to_max_provisions_value }
#Set up the cooldown for the convince-action
set_variable = {
name = 1010_has_stolen_recently
value = flag:success
days = visit_settlement_minimum_cooldown_days #Sync this with fail
}
#Determine why we can't return to this option
save_scope_value_as = {
name = laamp_decision_bought_supplies
value = flag:none
}
#Go back to the main event
hidden_effect = { 1001_return_to_second_effect = yes }
}
}
}
#Failure: The local guards are summoned
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
min = 5
desc = ep3_laamp_decision_event.1010.d.failure
root = {
send_interface_toast = {
title = ep3_laamp_decision_event.1010.d.failure
left_icon = scope:visiting_partner
right_icon = scope:laamp_supply_merchant
#Quite the tussle
scope:visiting_partner = {
increase_wounds_effect = { REASON = fight }
}
custom_tooltip = ep3_laamp_decision_event.1010.a.failure.tt
#Set up the cooldown for the convince-action
set_variable = {
name = 1010_has_stolen_recently
value = flag:fail
days = visit_settlement_minimum_cooldown_days #Sync this with success
}
#This merchant doesn't want to see you again
progress_towards_rival_effect = {
REASON = rival_tried_to_steal_supplies
CHARACTER = scope:laamp_supply_merchant
OPINION = default_rival_opinion
}
#And you will not be going back to supply merchant, but feel free to look at the greyed out option
set_variable = 1010_guards_summoned
#Determine why we can't return to this option
save_scope_value_as = {
name = laamp_decision_bought_supplies
value = flag:none
}
#Go back to the main event
1001_return_to_second_effect = yes
}
}
}
}
}
}
#I want to do something else
option = {
name = ep3_laamp_decision_event.1010.e
#For desc flavor
save_scope_as = did_not_buy_supplies
#Go back to the main event
1001_return_to_second_effect = yes
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:supply_merchant }
}
}
######################################################################
# SELL ARTIFACT
# ep3_laamp_decision_event.1020
######################################################################
scripted_effect 1020_suppress_artifact_notifications_effect = {
#Don't need no notification about this
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 2
}
}
scripted_effect 1020_remove_sell_variables_effect = {
remove_variable ?= 1020_artifact_sell_value
remove_variable ?= 1020_artifact_sell_high_value
remove_variable ?= 1020_artifact_sell_low_value
}
#Set the correct variable to block off the Artifact option and remove the desc flavor variable
scripted_effect 1020_sold_artifact_effect = {
scope:1020_first_artifact_to_sell ?= { 1020_remove_sell_variables_effect = yes }
scope:1020_second_artifact_to_sell ?= { 1020_remove_sell_variables_effect = yes }
scope:1020_third_artifact_to_sell ?= { 1020_remove_sell_variables_effect = yes }
remove_list_variable = {
name = list_of_options
target = flag:has_artifact_option
}
remove_variable ?= 1021_artifact_sell_screen
save_scope_as = laamp_decision_sold_artifact
#Go back to the main event
hidden_effect = { 1001_return_to_second_effect = yes }
}
#Reused effect to set the variable
scripted_effect 1020_set_artifact_value_variables_effect = {
#Regular price
set_variable = {
name = 1020_artifact_sell_value
value = {
value = $GOLD_VALUE$
#Better buyers in City Holding
if = {
limit = {
scope:visiting_location = { has_holding_type = city_holding }
}
multiply = { 1.15 1.25 }
}
multiply = { 0.90 1.1 }
}
}
#Haggle success / Outraged partner price
set_variable = {
name = 1020_artifact_sell_high_value
value = {
value = var:1020_artifact_sell_value
#Better buyers in City Holding
if = {
limit = {
scope:visiting_location = { has_holding_type = city_holding }
}
multiply = { 1.15 1.25 }
}
#Haggle success / Outraged partner price
multiply = { 1.15 1.25 }
}
}
#Haggle failed price
set_variable = {
name = 1020_artifact_sell_low_value
value = {
value = var:1020_artifact_sell_value
#Better buyers in City Holding
if = {
limit = {
scope:visiting_location = { has_holding_type = city_holding }
}
multiply = { 1.15 1.25 }
}
#Haggle failed price
multiply = { 0.55 0.8 }
}
}
}
#Calculate how much the artifact is worth
scripted_effect 1020_calculate_artifact_value_effect = {
#Very expensive
if = {
limit = { rarity = illustrious }
1020_set_artifact_value_variables_effect = { GOLD_VALUE = root.massive_gold_value }
}
#Expensive
else_if = {
limit = { rarity = famed }
1020_set_artifact_value_variables_effect = { GOLD_VALUE = root.major_gold_value }
}
#OK price
else_if = {
limit = { rarity = masterwork }
1020_set_artifact_value_variables_effect = { GOLD_VALUE = root.medium_gold_value }
}
#Cheap
else_if = {
limit = { rarity = common }
1020_set_artifact_value_variables_effect = { GOLD_VALUE = root.minor_gold_value }
}
}
#Sell an artifact to local peddlers
ep3_laamp_decision_event.1020 = {
type = character_event
title = ep3_laamp_decision_event.1020.t
window = visit_settlement_window
desc = {
#Intro
first_valid = {
#FIRST TIME: We've seen this peddler before
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
exists = scope:laamp_recurring_artifact_peddler
}
desc = ep3_laamp_decision_event.1020.desc_intro_reused_peddler
}
#FIRST TIME: This is a CITY HOLDING, aschually. More refined buyers.
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
scope:visiting_location = { has_holding_type = city_holding }
}
desc = ep3_laamp_decision_event.1020.desc_intro_posh_stalls
}
#RETURN SELL SCREEN: Guess we're thinking very hard
random_valid = {
triggered_desc = {
trigger = { has_variable = 1021_artifact_sell_screen }
desc = ep3_laamp_decision_event.1020.desc_intro_intermediate_returned_01
}
triggered_desc = {
trigger = { has_variable = 1021_artifact_sell_screen }
desc = ep3_laamp_decision_event.1020.desc_intro_intermediate_returned_02
}
}
#RETURN: We've returned to this scene, now what
random_valid = {
triggered_desc = {
trigger = { exists = scope:did_not_sell_artifact }
desc = ep3_laamp_decision_event.1020.desc_intro_returned_01
}
triggered_desc = {
trigger = { exists = scope:did_not_sell_artifact }
desc = ep3_laamp_decision_event.1020.desc_intro_returned_02
}
}
#FIRST TIME: Intro
random_valid = {
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
}
desc = ep3_laamp_decision_event.1020.desc_intro_new_01
}
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
}
desc = ep3_laamp_decision_event.1020.desc_intro_new_02
}
}
}
#FIRST TIME: Artifact Flavor
first_valid = {
#FIRST TIME: One artifact
random_valid = {
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
exists = scope:1020_first_artifact_to_sell
NOT = { exists = scope:1020_second_artifact_to_sell }
NOT = { exists = scope:1020_third_artifact_to_sell }
}
desc = ep3_laamp_decision_event.1020.desc_one_artifact_new_01
}
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
exists = scope:1020_first_artifact_to_sell
NOT = { exists = scope:1020_second_artifact_to_sell }
NOT = { exists = scope:1020_third_artifact_to_sell }
}
desc = ep3_laamp_decision_event.1020.desc_one_artifact_new_02
}
}
#FIRST TIME: Two artifacts
random_valid = {
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
exists = scope:1020_first_artifact_to_sell
exists = scope:1020_second_artifact_to_sell
NOT = { exists = scope:1020_third_artifact_to_sell }
}
desc = ep3_laamp_decision_event.1020.desc_two_artifacts_new_01
}
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
exists = scope:1020_first_artifact_to_sell
exists = scope:1020_second_artifact_to_sell
NOT = { exists = scope:1020_third_artifact_to_sell }
}
desc = ep3_laamp_decision_event.1020.desc_two_artifacts_new_02
}
}
#FIRST TIME: Three artifacts
random_valid = {
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
exists = scope:1020_first_artifact_to_sell
exists = scope:1020_second_artifact_to_sell
exists = scope:1020_third_artifact_to_sell
}
desc = ep3_laamp_decision_event.1020.desc_three_artifacts_new_01
}
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
exists = scope:1020_first_artifact_to_sell
exists = scope:1020_second_artifact_to_sell
exists = scope:1020_third_artifact_to_sell
}
desc = ep3_laamp_decision_event.1020.desc_three_artifacts_new_02
}
}
}
#Visiting Partner flavor
first_valid = {
#RETURN: We've returned with our outraged clever partner
triggered_desc = {
trigger = {
exists = scope:did_not_sell_artifact
exists = scope:1020_outraged_partner
}
desc = ep3_laamp_decision_event.1020.desc_outraged_partner_returned
}
#FIRST TIME: Outraged clever partner
triggered_desc = {
trigger = { exists = scope:1020_outraged_partner }
desc = ep3_laamp_decision_event.1020.desc_outraged_partner_new
}
}
}
theme = stewardship
override_background = { reference = ep2_village_festival }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#Outraged
triggered_animation = {
trigger = { exists = scope:1020_outraged_partner }
animation = rage
}
#Friendly
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_friendly_traits = yes }
}
animation = personality_forgiving
}
#Business-minded
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_commerce_traits = yes }
}
animation = personality_greedy
}
#Uninterested
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_uninterested_traits = yes }
}
animation = personality_cynical
}
#Irrational
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_irrational_traits = yes }
}
animation = personality_irrational
}
#A bit awkward
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_standoffish_traits = yes }
}
animation = personality_coward
}
animation = personality_compassionate
}
center_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:laamp_artifact_peddler
#Friendly
triggered_animation = {
trigger = {
scope:laamp_artifact_peddler = { 1010_has_friendly_traits = yes }
}
animation = personality_compassionate
}
#Uninterested
triggered_animation = {
trigger = {
scope:laamp_artifact_peddler = { 1010_has_uninterested_traits = yes }
}
animation = personality_callous
}
#Business-minded
triggered_animation = {
trigger = {
scope:laamp_artifact_peddler = { 1010_has_commerce_traits = yes }
}
animation = admiration
}
#A bit awkward
triggered_animation = {
trigger = {
scope:laamp_artifact_peddler = { 1010_has_standoffish_traits = yes }
}
animation = personality_coward
}
#Irrational
triggered_animation = {
trigger = {
scope:laamp_artifact_peddler = { 1010_has_irrational_traits = yes }
}
animation = personality_irrational
}
animation = personality_forgiving
}
artifact = {
trigger = { exists = scope:1020_first_artifact_to_sell }
target = scope:1020_first_artifact_to_sell
position = lower_left_portrait
}
artifact = {
trigger = { exists = scope:1020_second_artifact_to_sell }
target = scope:1020_second_artifact_to_sell
position = lower_center_portrait
}
artifact = {
trigger = { exists = scope:1020_third_artifact_to_sell }
target = scope:1020_third_artifact_to_sell
position = lower_right_portrait
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Do we have someone more clever in our company?
if = {
limit = {
NOT = { exists = scope:1020_outraged_partner }
scope:visiting_partner ?= {
stewardship > root.stewardship
stewardship >= average_skill_rating
}
}
#Save outraged clever partner
save_scope_as = 1020_outraged_partner
}
#Find our peddler
if = {
#Do we already have a peddler?
limit = {
NOT = { exists = scope:laamp_artifact_peddler }
}
#Has this person been our artifact peddler in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_peddler_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_artifact_peddler
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_artifact_peddler
}
#Otherwise find a peddler in the pool
if = {
limit = {
NOT = { exists = scope:laamp_artifact_peddler }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
}
save_scope_as = laamp_artifact_peddler
}
}
#Otherwise create a peddler
if = {
limit = {
NOT = { exists = scope:laamp_artifact_peddler }
}
#Create peddler to stuff in pool
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_artifact_peddler
}
}
#Remember the peddler
1010_remember_vendor_character_effect = { GUILD = peddler CHARACTER = scope:laamp_artifact_peddler }
}
#What artifacts are we selling?
if = {
limit = {
NOT = { exists = scope:1020_first_artifact_to_sell }
}
every_character_artifact = {
limit = { 1000_is_unsellable_artifact_trigger = no }
add_to_list = list_of_potential_artifacts_to_sell
}
#Pick a random artifact in the list so we have a starting point
random_in_list = {
list = list_of_potential_artifacts_to_sell
limit = { has_variable = 1020_interesting_artifact_to_sell }
alternative_limit = {
#Empty, just pick an artifact from the list already
}
#Remember the artifact for next visit
set_variable = {
name = 1020_interesting_artifact_to_sell
days = visit_settlement_cooldown_days
}
save_scope_as = 1020_first_artifact_to_sell
}
#Pick something the peddler saw on your character
if = {
limit = {
any_in_list = {
list = list_of_potential_artifacts_to_sell
this != scope:1020_first_artifact_to_sell
}
}
random_in_list = {
list = list_of_potential_artifacts_to_sell
limit = {
has_variable = 1020_interesting_artifact_to_sell
this != scope:1020_first_artifact_to_sell
is_equipped = yes
}
alternative_limit = {
this != scope:1020_first_artifact_to_sell
is_equipped = no
}
alternative_limit = {
this != scope:1020_first_artifact_to_sell
}
#Remember the artifact for next visit
set_variable = {
name = 1020_interesting_artifact_to_sell
days = visit_settlement_cooldown_days
}
save_scope_as = 1020_second_artifact_to_sell
}
}
#Pick something that isn't whatever old court artifact from when you used to be someone
if = {
limit = {
any_in_list = {
list = list_of_potential_artifacts_to_sell
NOT = {
this = scope:1020_first_artifact_to_sell
this = scope:1020_second_artifact_to_sell
}
}
}
random_in_list = {
list = list_of_potential_artifacts_to_sell
limit = {
has_variable = 1020_interesting_artifact_to_sell
NOT = {
this = scope:1020_first_artifact_to_sell
this = scope:1020_second_artifact_to_sell
}
ep1_artifact_is_court_artifact_trigger = no
is_unique = no
}
alternative_limit = {
NOT = {
this = scope:1020_first_artifact_to_sell
this = scope:1020_second_artifact_to_sell
}
ep1_artifact_is_court_artifact_trigger = no
}
alternative_limit = {
NOT = {
this = scope:1020_first_artifact_to_sell
this = scope:1020_second_artifact_to_sell
}
is_unique = no
}
alternative_limit = {
NOT = {
this = scope:1020_first_artifact_to_sell
this = scope:1020_second_artifact_to_sell
}
}
#Remember the artifact for next visit
set_variable = {
name = 1020_interesting_artifact_to_sell
days = visit_settlement_cooldown_days
}
save_scope_as = 1020_third_artifact_to_sell
}
}
}
#Set the prices
if = {
#Always exists
limit = {
scope:1020_first_artifact_to_sell = {
NOT = { has_variable = 1020_artifact_sell_value }
}
}
scope:1020_first_artifact_to_sell = {
1020_calculate_artifact_value_effect = yes
#Don't need no notifications about this
1020_suppress_artifact_notifications_effect = yes
}
#2nd Artifact
if = {
limit = { exists = scope:1020_second_artifact_to_sell }
scope:1020_second_artifact_to_sell = {
1020_calculate_artifact_value_effect = yes
#Don't need no notifications about this
1020_suppress_artifact_notifications_effect = yes
}
}
#3rd Artifact
if = {
limit = { exists = scope:1020_third_artifact_to_sell }
scope:1020_third_artifact_to_sell = {
1020_calculate_artifact_value_effect = yes
#Don't need no notifications about this
1020_suppress_artifact_notifications_effect = yes
}
}
#Let's not do this twice
}
}
#Go to sell screen
option = {
name = ep3_laamp_decision_event.1020.a
#Inform player
custom_tooltip = ep3_laamp_decision_event.1020.a.tt
#Show the current estimated prices so that you can compare
custom_tooltip = ep3_laamp_decision_event.1020.a.first_artifact.tt
#2nd Artifact
if = {
limit = { exists = scope:1020_second_artifact_to_sell }
custom_tooltip = ep3_laamp_decision_event.1020.a.second_artifact.tt
}
#3rd Artifact
if = {
limit = { exists = scope:1020_third_artifact_to_sell }
custom_tooltip = ep3_laamp_decision_event.1020.a.third_artifact.tt
}
if = { # Eagle
limit = {
can_laamp_sell_eagle_trigger = yes
}
custom_tooltip = ep3_laamp_decision_event.1020.eagle.tt
custom_tooltip = ep3_laamp_decision_event.1020.eagle.price_tt
}
remove_variable ?= 1021_artifact_sell_screen
#Go to sell screen
trigger_event = ep3_laamp_decision_event.1021
}
#Attempt a haggle
option = {
name = ep3_laamp_decision_event.1020.b
trigger = {
#You're on cooldown
custom_tooltip = {
text = ep3_laamp_decision_event.1020.b.cooldown.tt
NOT = { has_variable = 1020_has_haggled_recently }
}
}
duel = {
skill = stewardship
target = scope:laamp_artifact_peddler
#Success: Artifact merchant looks contemplatively at you, increased price
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep3_laamp_decision_event.1020.b.success
send_interface_toast = {
title = ep3_laamp_decision_event.1020.b.success
left_icon = root
right_icon = scope:laamp_artifact_peddler
#For loc and effects
save_scope_value_as = {
name = attempted_artifact_haggle
value = flag:success
}
#Show the estimated success prices so that you can compare
custom_tooltip = ep3_laamp_decision_event.1020.b.success.first_artifact.tt
#2nd Artifact
if = {
limit = { exists = scope:1020_second_artifact_to_sell }
custom_tooltip = ep3_laamp_decision_event.1020.b.success.second_artifact.tt
}
#3rd Artifact
if = {
limit = { exists = scope:1020_third_artifact_to_sell }
custom_tooltip = ep3_laamp_decision_event.1020.b.success.third_artifact.tt
}
if = {
limit = { has_lifestyle = stewardship_lifestyle }
add_stewardship_lifestyle_xp = medium_lifestyle_xp
}
stress_impact = {
greedy = minor_stress_impact_loss
ambitious = minor_stress_impact_loss
}
#Go to sell screen with modified costs
trigger_event = ep3_laamp_decision_event.1021
}
}
#Failure: Artifact merchant smirks at you, decreased price
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -20
}
desc = ep3_laamp_decision_event.1020.b.failure
send_interface_toast = {
title = ep3_laamp_decision_event.1020.b.failure
left_icon = root
right_icon = scope:laamp_artifact_peddler
#For loc and effects
save_scope_value_as = {
name = attempted_artifact_haggle
value = flag:failure
}
#Show the estimated failure prices so that you can compare
custom_tooltip = ep3_laamp_decision_event.1020.b.failure.first_artifact.tt
#2nd Artifact
if = {
limit = { exists = scope:1020_second_artifact_to_sell }
custom_tooltip = ep3_laamp_decision_event.1020.b.failure.second_artifact.tt
}
#3rd Artifact
if = {
limit = { exists = scope:1020_third_artifact_to_sell }
custom_tooltip = ep3_laamp_decision_event.1020.b.failure.third_artifact.tt
}
stress_impact = {
base = minor_stress_impact_gain
greedy = minor_stress_impact_gain
}
#Go to sell screen with modified costs
trigger_event = ep3_laamp_decision_event.1021
}
}
}
set_variable = {
name = 1020_has_haggled_recently
days = visit_settlement_minimum_cooldown_days
}
}
#Triggered Option: Outraged clever partner gets you a higher price for a random artifact
option = {
name = ep3_laamp_decision_event.1020.c
#If we have an outraged clever partner
trigger = { exists = scope:1020_outraged_partner }
#... whom randomly sells one of the artifacts at a higher price
random_list = {
#This should always exist
50 = {
desc = ep3_laamp_decision_event.1020.c.first_artifact
add_gold = scope:1020_first_artifact_to_sell.var:1020_artifact_sell_high_value
scope:1020_first_artifact_to_sell = { set_owner = scope:laamp_artifact_peddler }
}
#Artifact #2
50 = {
trigger = { exists = scope:1020_second_artifact_to_sell }
desc = ep3_laamp_decision_event.1020.c.second_artifact
add_gold = scope:1020_second_artifact_to_sell.var:1020_artifact_sell_high_value
scope:1020_second_artifact_to_sell = { set_owner = scope:laamp_artifact_peddler }
}
#Artifact #3
50 = {
trigger = { exists = scope:1020_third_artifact_to_sell }
desc = ep3_laamp_decision_event.1020.c.third_artifact
add_gold = scope:1020_third_artifact_to_sell.var:1020_artifact_sell_high_value
scope:1020_third_artifact_to_sell = { set_owner = scope:laamp_artifact_peddler }
}
}
#Set correct variables and reroute us to main square
1020_sold_artifact_effect = yes
stress_impact = {
ambitious = minor_stress_impact_gain
lazy = minor_stress_impact_loss
}
#Inform the player
custom_tooltip = ep3_laamp_decision_event.return.tt
}
#I want to do something else
option = {
name = ep3_laamp_decision_event.1020.d
#For desc flavor
save_scope_as = did_not_sell_artifact
#Go back to the main event
1001_return_to_second_effect = yes
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:artifact_peddler }
}
}
#Sell (or destroy) artifact (if unique artifact)
scripted_effect ep3_laamp_decision_1021_sell_artifact_effect = {
save_temporary_scope_as = artifact_to_sell #More descriptive than 'prev'
#Get appropriate amount of gold
root = {
if = {
limit = {
exists = scope:attempted_artifact_haggle
scope:attempted_artifact_haggle = flag:success
}
add_gold = scope:artifact_to_sell.var:1020_artifact_sell_high_value
}
else_if = {
limit = {
exists = scope:attempted_artifact_haggle
scope:attempted_artifact_haggle = flag:failure
}
add_gold = scope:artifact_to_sell.var:1020_artifact_sell_low_value
}
else = { add_gold = scope:artifact_to_sell.var:1020_artifact_sell_value }
}
#Set the artifact owner
if = {
limit = {
scope:artifact_to_sell = { is_unique = yes }
}
#Destroy unique artifacts so they don't get stuck with the Pool People
hidden_effect = { destroy_artifact = scope:artifact_to_sell }
}
else = { set_owner = scope:laamp_artifact_peddler }
}
#Actual sell screen
ep3_laamp_decision_event.1021 = {
type = character_event
window = visit_settlement_window
title = {
first_valid = {
#Haggle Success
triggered_desc = {
trigger = { scope:attempted_artifact_haggle ?= flag:success }
desc = ep3_laamp_decision_event.1021.t_success
}
#Haggle Failure
triggered_desc = {
trigger = { scope:attempted_artifact_haggle ?= flag:failure }
desc = ep3_laamp_decision_event.1021.t_failure
}
desc = ep3_laamp_decision_event.1021.t
}
}
desc = {
first_valid = {
#FIRST TIME: Haggle Success
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_haggled_artifact }
scope:attempted_artifact_haggle ?= flag:success
}
desc = ep3_laamp_decision_event.1021.desc_success
}
#FIRST TIME: Haggle Failure
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_haggled_artifact }
scope:attempted_artifact_haggle ?= flag:failure
}
desc = ep3_laamp_decision_event.1021.desc_failure
}
#FIRST TIME: Generic first-strings
random_valid = {
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
}
desc = ep3_laamp_decision_event.1021.desc_moment_of_purchase_01
}
triggered_desc = {
trigger = {
NOT = { exists = scope:did_not_sell_artifact }
}
desc = ep3_laamp_decision_event.1021.desc_moment_of_purchase_02
}
}
#RETURN: Same as the generic first-strings
random_valid = {
triggered_desc = {
trigger = {
NOT = { has_variable = 1021_artifact_sell_screen }
}
desc = ep3_laamp_decision_event.1021.desc_moment_of_purchase_01
}
triggered_desc = {
trigger = {
NOT = { has_variable = 1021_artifact_sell_screen }
}
desc = ep3_laamp_decision_event.1021.desc_moment_of_purchase_02
}
}
#RETURN: Same as the return-strings in ep3_laamp_decision_event.1020
random_valid = {
triggered_desc = {
trigger = {
OR = {
exists = scope:did_not_sell_haggled_artifact
exists = scope:did_not_sell_artifact
}
}
desc = ep3_laamp_decision_event.1020.desc_intro_returned_01
}
triggered_desc = {
trigger = {
OR = {
exists = scope:did_not_sell_haggled_artifact
exists = scope:did_not_sell_artifact
}
}
desc = ep3_laamp_decision_event.1020.desc_intro_returned_02
}
}
}
}
theme = stewardship
override_background = { reference = ep2_village_festival }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#Outraged
triggered_animation = {
trigger = { exists = scope:1020_outraged_partner }
animation = rage
}
#Friendly
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_friendly_traits = yes }
}
animation = personality_forgiving
}
#Business-minded
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_commerce_traits = yes }
}
animation = personality_greedy
}
#Uninterested
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_uninterested_traits = yes }
}
animation = personality_cynical
}
#Irrational
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_irrational_traits = yes }
}
animation = personality_irrational
}
#A bit awkward
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_standoffish_traits = yes }
}
animation = personality_coward
}
animation = personality_compassionate
}
center_portrait = {
character = root
triggered_animation = {
trigger = {
exists = scope:attempted_artifact_haggle
scope:attempted_artifact_haggle = flag:failure
}
animation = shame
}
triggered_animation = {
trigger = {
can_laamp_sell_eagle_trigger = yes
}
animation = hunting_falcon
}
animation = thinking
}
right_portrait = {
character = scope:laamp_artifact_peddler
triggered_animation = {
trigger = { exists = scope:attempted_artifact_haggle }
animation = disapproval
}
animation = steward
}
artifact = {
trigger = { exists = scope:1020_first_artifact_to_sell }
target = scope:1020_first_artifact_to_sell
position = lower_left_portrait
}
artifact = {
trigger = { exists = scope:1020_second_artifact_to_sell }
target = scope:1020_second_artifact_to_sell
position = lower_center_portrait
}
artifact = {
trigger = { exists = scope:1020_third_artifact_to_sell }
target = scope:1020_third_artifact_to_sell
position = lower_right_portrait
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
}
#Sell artifact #1
option = {
name = ep3_laamp_decision_event.1021.a
#Sell the artifact, price depending on if you haggled or not etc
scope:1020_first_artifact_to_sell = { ep3_laamp_decision_1021_sell_artifact_effect = yes }
#Set correct variables and reroute us to main square
1020_sold_artifact_effect = yes
}
#Sell artifact #2
option = {
name = ep3_laamp_decision_event.1021.b
trigger = { exists = scope:1020_second_artifact_to_sell }
#Sell the artifact, price depending on if you haggled or not etc
scope:1020_second_artifact_to_sell = { ep3_laamp_decision_1021_sell_artifact_effect = yes }
#Set correct variables and reroute us to main square
1020_sold_artifact_effect = yes
}
#Sell artifact #3
option = {
name = ep3_laamp_decision_event.1021.c
trigger = { exists = scope:1020_third_artifact_to_sell }
#Sell the artifact, price depending on if you haggled or not etc
scope:1020_third_artifact_to_sell = { ep3_laamp_decision_1021_sell_artifact_effect = yes }
#Set correct variables and reroute us to main square
1020_sold_artifact_effect = yes
}
option = {
name = ep3_laamp_decision_event.1021.eagle
trigger = {
can_laamp_sell_eagle_trigger = yes
}
#Sell eagle :(
add_character_flag = is_selling_eagle_flag
show_as_tooltip = {
sell_eagle_effect = {
PRICE = hunting_eagle_sell_value
RECIPIENT = scope:laamp_artifact_peddler
SELLER = root
}
}
#Stress
stress_impact = {
base = minor_stress_impact_gain
greedy = minor_stress_impact_loss
callous = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
loyal = minor_stress_impact_gain
}
#Set correct variables and reroute us to main square
1020_sold_artifact_effect = yes
ai_chance = {
base = 15 # No one is really doing this unless they're giga broke
modifier = {
factor = 1.7
short_term_gold <= 5
}
modifier = {
add = 1.2
has_character_modifier = weak_eagle_modifier
}
modifier = {
add = 1.5
has_character_modifier = very_weak_eagle_modifier
}
modifier = {
add = 1.5
eagle_is_old_trigger = yes
}
modifier = {
add = 0.75
OR = {
has_character_modifier = strong_eagle_modifier
has_eagle_personality_trait_trigger = yes
}
}
ai_value_modifier = {
ai_greed = 0.5
ai_compassion = -0.5
}
}
}
#I've changed my mind
option = {
name = {
text = {
first_valid = {
#Go back to main
triggered_desc = {
trigger = { exists = scope:attempted_artifact_haggle }
desc = ep3_laamp_decision_event.1020.d
}
#Go back to the previous screen
desc = ep3_laamp_decision_event.1021.d
}
}
}
#For desc flavor
if = {
#We came through here the first time
limit = {
NOT = { exists = scope:did_not_sell_artifact }
}
save_scope_as = did_not_sell_artifact
}
#We came through here via haggling
if = {
limit = { exists = scope:attempted_artifact_haggle }
if = {
limit = {
NOT = { exists = scope:did_not_sell_haggled_artifact }
}
save_scope_as = did_not_sell_haggled_artifact
}
#Go back to main
custom_tooltip = ep3_laamp_decision_event.return.tt
trigger_event = ep3_laamp_decision_event.1000
}
else = {
#Go back to the previous screen
trigger_event = ep3_laamp_decision_event.1020
}
}
after = {
#For loc
if = {
limit = {
NOT = { has_variable = 1021_artifact_sell_screen }
}
set_variable = 1021_artifact_sell_screen
}
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:artifact_peddler }
hidden_effect = {
# Put eagle selling option on cooldown
if = {
limit = {
has_available_eagle_trigger = yes
}
add_character_flag = {
flag = cant_sell_eagle
months = 6
}
}
# Actually sell the eagle if applicable
if = {
limit = {
has_character_flag = is_selling_eagle_flag
}
sell_eagle_effect = {
PRICE = hunting_eagle_sell_value
RECIPIENT = scope:laamp_artifact_peddler
SELLER = root
}
remove_character_flag = is_selling_eagle_flag
}
}
}
}
######################################################################
# TOWN CRIER
# ep3_laamp_decision_event.1025
######################################################################
#For hubs. All events that use this need to account for loc in relation to the value being 0, 1, or 2 (e.g. scope:church_grounds_loc_tracker ?= 0 )
scripted_effect 1025_set_and_check_hub_loc_tracker_scope_effect = {
if = {
limit = {
NOT = { exists = scope:$HUB$_loc_tracker } #e.g. scope:church_grounds_loc_tracker
}
save_scope_value_as = {
name = $HUB$_loc_tracker
value = 0
}
}
else_if = {
limit = { scope:$HUB$_loc_tracker ?= 2 }
save_scope_value_as = {
name = $HUB$_loc_tracker
value = 0
}
}
else_if = {
limit = { scope:$HUB$_loc_tracker ?= 0 }
save_scope_value_as = {
name = $HUB$_loc_tracker
value = 1
}
}
else = {
save_scope_value_as = {
name = $HUB$_loc_tracker
value = 2
}
}
}
#Technically these could be rolled into the HUB variant if we add a 3rd random loc for all current SCENEs
#For scenes. All events that use this need to account for loc in relation to the value being 0 or 1 (e.g. scope:weaponsmith_loc_tracker ?= 0 )
scripted_effect 1025_set_and_check_scene_loc_tracker_scope_effect = {
if = {
limit = {
NOT = { exists = scope:$SCENE$_loc_tracker } #e.g. scope:weaponsmith_loc_tracker
}
save_scope_value_as = {
name = $SCENE$_loc_tracker
value = 0
}
}
else_if = {
limit = { scope:$SCENE$_loc_tracker ?= 1 }
save_scope_value_as = {
name = $SCENE$_loc_tracker
value = 0
}
}
else = {
save_scope_value_as = {
name = $SCENE$_loc_tracker
value = 1
}
}
}
#Set the correct variable to block off the Contract option and remove the desc flavor variable
scripted_effect 1025_finished_contract_effect = {
#Set up the cooldown for the contract action
set_variable = {
name = 1025_has_contracted_recently
days = visit_settlement_minimum_cooldown_days
}
#We're done here
save_scope_value_as = {
name = laamp_decision_has_contracted
value = flag:yes
}
#Go back to the main event
hidden_effect = { 1001_return_to_second_effect = yes }
}
#Used in enough places
scripted_effect 1025_save_random_county_province_effect = {
random_county_in_region = {
region = $REGION$
random_county_province = { save_scope_as = contract_province }
}
}
#Not too far away... Should probably be revisited sometime in the future. Use distance instead?
scripted_effect 1025_set_contract_location_effect = {
random_list = {
#North Europe
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_europe_north }
}
1025_save_random_county_province_effect = { REGION = world_europe_north }
}
#West Europe
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_europe_west }
}
1025_save_random_county_province_effect = { REGION = world_europe_west }
}
#East Europe
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_europe_east }
}
1025_save_random_county_province_effect = { REGION = world_europe_east }
}
#South Europe
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_europe_south }
}
1025_save_random_county_province_effect = { REGION = world_europe_south }
}
#Middle East
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_middle_east }
}
1025_save_random_county_province_effect = { REGION = world_middle_east }
}
#India
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_india }
}
1025_save_random_county_province_effect = { REGION = world_india }
}
#North Africa
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_africa_north }
}
1025_save_random_county_province_effect = { REGION = world_africa_north }
}
#West Africa
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_africa_west }
}
1025_save_random_county_province_effect = { REGION = world_africa_west }
}
#East Africa
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_africa_east }
}
1025_save_random_county_province_effect = { REGION = world_africa_east }
}
#West Steppe
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_steppe_west }
}
1025_save_random_county_province_effect = { REGION = world_steppe_west }
}
#East Steppe
10 = {
trigger = {
scope:visiting_location = { geographical_region = world_steppe_east }
}
1025_save_random_county_province_effect = { REGION = world_steppe_east }
}
}
}
#Set contract type
scripted_effect 1025_randomize_and_remember_contract_type_effect = {
#Find an employer to check the trigger against
scope:visiting_location.county = {
holder ?= {
if = {
limit = { 1025_is_appropriate_landed_contract_employer_trigger = yes }
add_to_temporary_list = potential_contract_employers
}
every_vassal_or_below ?= {
limit = { 1025_is_appropriate_landed_contract_employer_trigger = yes }
add_to_temporary_list = potential_contract_employers
}
top_liege ?= {
if = {
limit = { 1025_is_appropriate_landed_contract_employer_trigger = yes }
add_to_temporary_list = potential_contract_employers
}
every_vassal_or_below ?= {
limit = { 1025_is_appropriate_landed_contract_employer_trigger = yes }
add_to_temporary_list = potential_contract_employers
}
}
}
every_neighboring_county ?= {
holder ?= {
if = {
limit = { 1025_is_appropriate_landed_contract_employer_trigger = yes }
}
add_to_temporary_list = potential_contract_employers
every_vassal_or_below ?= {
limit = { 1025_is_appropriate_landed_contract_employer_trigger = yes }
add_to_temporary_list = potential_contract_employers
}
top_liege ?= {
if = {
limit = { 1025_is_appropriate_landed_contract_employer_trigger = yes }
add_to_temporary_list = potential_contract_employers
}
every_vassal_or_below ?= {
limit = { 1025_is_appropriate_landed_contract_employer_trigger = yes }
add_to_temporary_list = potential_contract_employers
}
}
}
}
}
#Pick actual contract groups
random_list = {
#Nothing at all!
10 = {
modifier = {
1000_is_a_nomadic_holding_trigger = yes
factor = 2
}
modifier = {
num_offered_task_contracts > 5
add = 20
}
modifier = {
num_offered_task_contracts > 10
add = 20
}
#No contracts
}
#Treasure Map
5 = {
#Do we already have a treasure map contract?
trigger = {
NOR = {
#Is this contract type already saved from our last visit?
trigger_if = {
limit = { 1025_location_has_a_saved_contract_type_trigger = yes }
1025_saved_location_contract_type_matches_this_type_trigger = { CONTRACT_TYPE_FLAG = flag:treasure_map_contract }
}
trigger_else = { always = no }
#Do we already have an active Treasure Map contract?
any_character_artifact = { has_variable = 1025_treasure_map }
any_character_task_contract = { task_contract_type = laamp_treasure_map_contract }
#Are we on cooldown?
has_variable = 1025_had_treasure_map_contract_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:treasure_map_contract }
}
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:treasure_map_contract
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:treasure_map_contract
}
}
#Legendary Contract
5 = {
#Did we spawn a legendary contract recently?
trigger = {
prestige_level >= tier_kingdom
1025_can_create_legendary_contract_trigger = yes
NOR = {
#Are we on cooldown?
has_variable = 1025_had_legendary_contract_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:legendary_contract }
}
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:legendary_contract
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:legendary_contract
}
#Yes, I will whack you with a double cooldown on legendaries. It's shorter if you don't pick the option though
set_variable = {
name = 1025_had_legendary_contract_recently
days = visit_settlement_minimum_cooldown_days
}
}
#Transport Contracts
20 = {
#Did we spawn transport contracts recently?
trigger = {
NOR = {
#Is this contract type already saved from our last visit?
trigger_if = {
limit = { 1025_location_has_a_saved_contract_type_trigger = yes }
1025_saved_location_contract_type_matches_this_type_trigger = { CONTRACT_TYPE_FLAG = flag:transport_contracts }
}
trigger_else = { always = no }
#Are we on cooldown?
has_variable = 1025_had_transport_contracts_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:transport_contracts }
}
#Can we actually spawn any transport contracts?
any_in_List = {
list = potential_contract_employers
save_temporary_scope_as = considered_employer
can_create_transport_contract_trigger = { LAAMP = root EMPLOYER = scope:considered_employer }
}
}
#More transports for the baggage train
modifier = {
domicile ?= { has_domicile_building = baggage_train_01 }
factor = 2
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:transport_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:transport_contracts
}
}
#Criminal Contracts
20 = {
#Did we spawn criminal contracts recently?
trigger = {
NOR = {
#Is this contract type already saved from our last visit?
trigger_if = {
limit = { 1025_location_has_a_saved_contract_type_trigger = yes }
1025_saved_location_contract_type_matches_this_type_trigger = { CONTRACT_TYPE_FLAG = flag:criminal_contracts }
}
trigger_else = { always = no }
#Are we on cooldown?
has_variable = 1025_had_criminal_contracts_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:criminal_contracts }
}
#Can we actually spawn any criminal contracts?
any_in_list = {
list = potential_contract_employers
save_temporary_scope_as = considered_employer
can_create_criminal_contract_trigger = { LAAMP = root EMPLOYER = scope:considered_employer }
}
}
#More criminals... if corrupt location
modifier = {
scope:visiting_location.county = { has_county_corruption_trigger = yes }
add = 10
}
modifier = {
scope:visiting_location.county = { county_control <= 50 }
add = 10
}
#Are you actually looking for criminal contracts?
modifier = {
has_trait = honest
factor = 0.5
}
modifier = {
has_trait = deceitful
factor = 2
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:criminal_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:criminal_contracts
}
}
#Justicar Contracts
20 = {
#Did we spawn justicar contracts recently?
trigger = {
NOR = {
#Is this contract type already saved from our last visit?
trigger_if = {
limit = { 1025_location_has_a_saved_contract_type_trigger = yes }
1025_saved_location_contract_type_matches_this_type_trigger = { CONTRACT_TYPE_FLAG = flag:justicar_contracts }
}
trigger_else = { always = no }
#Are we on cooldown?
has_variable = 1025_had_justicar_contracts_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:justicar_contracts }
}
#Can we actually spawn any justicar contracts?
any_in_list = {
list = potential_contract_employers
save_temporary_scope_as = considered_employer
can_create_justicar_contract_trigger = { LAAMP = root EMPLOYER = scope:considered_employer }
}
}
#More criminals... if corrupt location
modifier = {
scope:visiting_location.county = { has_county_corruption_trigger = yes }
add = 10
}
modifier = {
scope:visiting_location.county = { county_control <= 50 }
add = 10
}
#You're pretty law-abiding?
modifier = {
OR = {
has_trait = honest
has_trait = just
has_trait = gallant
has_focus = martial_chivalry_focus
}
factor = 2
}
modifier = {
has_trait = deceitful
factor = 0.5
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:justicar_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:justicar_contracts
}
}
#Hireling Contracts
20 = {
#Did we spawn hireling contracts recently?
trigger = {
NOR = {
#Is this contract type already saved from our last visit?
trigger_if = {
limit = { 1025_location_has_a_saved_contract_type_trigger = yes }
1025_saved_location_contract_type_matches_this_type_trigger = { CONTRACT_TYPE_FLAG = flag:hireling_contracts }
}
trigger_else = { always = no }
#Are we on cooldown?
has_variable = 1025_had_hireling_contracts_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:hireling_contracts }
}
#Can we actually spawn any hireling contracts?
any_in_list = {
list = potential_contract_employers
save_temporary_scope_as = considered_employer
can_create_hireling_contract_trigger = { LAAMP = root EMPLOYER = scope:considered_employer }
}
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:hireling_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:hireling_contracts
}
}
#Diplomacy Contracts
20 = {
#Did we spawn diplomacy contracts recently?
trigger = {
NOR = {
#Is this contract type already saved from our last visit?
trigger_if = {
limit = { 1025_location_has_a_saved_contract_type_trigger = yes }
1025_saved_location_contract_type_matches_this_type_trigger = { CONTRACT_TYPE_FLAG = flag:diplomacy_contracts }
}
trigger_else = { always = no }
#Are we on cooldown?
has_variable = 1025_had_diplomacy_contracts_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:diplomacy_contracts }
}
#Can we actually spawn any diplomacy contracts?
any_in_list = {
list = potential_contract_employers
save_temporary_scope_as = considered_employer
can_create_diplomacy_contract_trigger = { LAAMP = root EMPLOYER = scope:considered_employer }
}
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:diplomacy_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:diplomacy_contracts
}
}
#Stewardship Contracts
20 = {
#Did we spawn stewardship contracts recently?
trigger = {
NOR = {
#Is this contract type already saved from our last visit?
trigger_if = {
limit = { 1025_location_has_a_saved_contract_type_trigger = yes }
1025_saved_location_contract_type_matches_this_type_trigger = { CONTRACT_TYPE_FLAG = flag:stewardship_contracts }
}
trigger_else = { always = no }
#Are we on cooldown?
has_variable = 1025_had_stewardship_contracts_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:stewardship_contracts }
}
#Can we actually spawn any stewardship contracts?
any_in_list = {
list = potential_contract_employers
save_temporary_scope_as = considered_employer
can_create_stewardship_contract_trigger = { LAAMP = root EMPLOYER = scope:considered_employer }
}
}
#More organization in highly developed areas
modifier = {
scope:visiting_location.county = { development_level > bad_development_level }
add = 10
}
modifier = {
scope:visiting_location.county = { development_level > medium_development_level }
add = 10
}
#You're shrewd?
modifier = {
OR = {
has_trait = governor
has_trait = diligent
has_trait = administrator
}
factor = 2
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:stewardship_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:stewardship_contracts
}
}
#Learning Contracts
20 = {
#Did we spawn learning contracts recently?
trigger = {
NOR = {
#Is this contract type already saved from our last visit?
trigger_if = {
limit = { 1025_location_has_a_saved_contract_type_trigger = yes }
1025_saved_location_contract_type_matches_this_type_trigger = { CONTRACT_TYPE_FLAG = flag:learning_contracts }
}
trigger_else = { always = no }
#Are we on cooldown?
has_variable = 1025_had_learning_contracts_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:learning_contracts }
}
#Can we actually spawn any learning contracts?
any_in_list = {
list = potential_contract_employers
save_temporary_scope_as = considered_employer
can_create_learning_contract_trigger = { LAAMP = root EMPLOYER = scope:considered_employer }
}
}
modifier = {
scope:visiting_location.county = { development_level > medium_development_level }
add = 10
}
modifier = {
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
add = 10
}
#You're... academic?
modifier = {
has_trait = scholar
factor = 2
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:learning_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:learning_contracts
}
}
#Intrigue Contracts
20 = {
#Did we spawn intrigue contracts recently?
trigger = {
NOR = {
#Is this contract type already saved from our last visit?
trigger_if = {
limit = { 1025_location_has_a_saved_contract_type_trigger = yes }
1025_saved_location_contract_type_matches_this_type_trigger = { CONTRACT_TYPE_FLAG = flag:intrigue_contracts }
}
trigger_else = { always = no }
#Are we on cooldown?
has_variable = 1025_had_intrigue_contracts_recently
#Has this contract type already been assigned to another contract scope this visit?
1025_contract_type_is_assigned_trigger = { CONTRACT_TYPE_FLAG = flag:intrigue_contracts }
}
#Can we actually spawn any intrigue contracts?
any_in_list = {
list = potential_contract_employers
save_temporary_scope_as = considered_employer
can_create_intrigue_contract_trigger = { LAAMP = root EMPLOYER = scope:considered_employer }
}
}
modifier = {
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
add = 10
}
#You're... schemer?
modifier = {
has_trait = schemer
factor = 2
}
#Set the type
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:intrigue_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:intrigue_contracts
}
}
#Add more contract types below VV
}
scope:visiting_location = {
#Clean up any old variables
if = {
limit = { has_variable = 1025_saved_$NUM$_contract_type }
remove_variable = 1025_saved_$NUM$_contract_type
}
#We will not be saving legendary contracts as those are more volatile (does employer still exist? etc)
if = {
limit = { scope:1025_$NUM$_contract ?= flag:legendary_contract }
#Nothing
}
else_if = {
limit = { exists = scope:1025_$NUM$_contract }
#Remember this to avoid decision-scumming
set_variable = {
name = 1025_saved_$NUM$_contract_type #i.e. 1025_saved_first_contract_type
value = scope:1025_$NUM$_contract #i.e. flag:treasure_map_contract
days = visit_settlement_minimum_cooldown_days
}
}
else = {
save_scope_value_as = {
name = 1025_$NUM$_no_contract
value = flag:no_contract
}
#Remember this to avoid decision-scumming
set_variable = {
name = 1025_saved_$NUM$_contract_type
value = scope:1025_$NUM$_no_contract
days = visit_settlement_minimum_cooldown_days
}
}
}
}
#Do we need an employer?
scripted_effect 1025_generate_employer_effect = {
#Treasure Map
if = {
limit = { scope:1025_$NUM$_contract = flag:treasure_map_contract }
#Find an employer for the treasure map contract
random_pool_character = {
province = scope:visiting_location
limit = {
1025_is_old_and_unable_trigger = yes
1025_appropriate_contract_employer_trigger = yes
}
save_scope_as = 1025_$NUM$_contract_employer
}
#Or create someone
if = {
limit = {
NOT = { exists = scope:1025_$NUM$_contract_employer }
}
create_character = {
template = generic_peasant_character
age = { 50 70 }
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = 1025_$NUM$_contract_employer
}
scope:1025_$NUM$_contract_employer = {
random_list = {
10 = { add_trait = blind }
10 = { add_trait = one_legged }
10 = { add_trait = one_eyed }
10 = { add_trait = infirm }
10 = { add_trait = wounded_2 }
}
}
}
}
}
#This is where the lagg-ic happens... Probably needs revisiting later on.
scripted_effect 1025_find_ruler_and_spawn_legendary_contract_effect = {
#Saves us a scope:employing_ruler
random_county_in_region = {
region = $REGION$
limit = { 1025_region_has_suitable_employer_trigger = yes }
save_scope_as = contract_county
#Find the ruler
scope:contract_county.holder = { save_scope_as = employing_ruler }
}
#Legendary... contracts?
random_list = {
#Raid
10 = {
trigger = {
can_create_task_contract = {
type_name = laamp_raid_contract
employer = scope:employing_ruler
}
}
create_task_contract = {
task_contract_type = laamp_raid_contract
location = scope:employing_ruler.capital_province
task_contract_employer = scope:employing_ruler
task_contract_tier = task_contract_t3_value #Legendary!
save_scope_as = 1025_legendary_contract
}
}
10 = {
trigger = {
can_create_task_contract = {
type_name = laamp_steal_artifact_contract
employer = scope:employing_ruler
}
}
create_task_contract = {
task_contract_type = laamp_steal_artifact_contract
location = scope:employing_ruler.capital_province
task_contract_employer = scope:employing_ruler
task_contract_tier = task_contract_t3_value #Legendary!
save_scope_as = 1025_legendary_contract
}
}
10 = {
trigger = {
can_create_task_contract = {
type_name = laamp_treasure_hunting_contract
employer = scope:employing_ruler
}
}
create_task_contract = {
task_contract_type = laamp_treasure_hunting_contract
location = scope:employing_ruler.capital_province
task_contract_employer = scope:employing_ruler
task_contract_tier = task_contract_t3_value #Legendary!
save_scope_as = 1025_legendary_contract
}
}
10 = {
trigger = {
can_create_task_contract = {
type_name = laamp_transport_vip
employer = scope:employing_ruler
}
}
create_task_contract = {
task_contract_type = laamp_transport_vip
location = scope:employing_ruler.capital_province
task_contract_employer = scope:employing_ruler
task_contract_tier = task_contract_t3_value #Legendary!
save_scope_as = 1025_legendary_contract
}
}
10 = {
trigger = {
can_create_task_contract = {
type_name = laamp_transport_artifact
employer = scope:employing_ruler
}
}
create_task_contract = {
task_contract_type = laamp_transport_artifact
location = scope:employing_ruler.capital_province
task_contract_employer = scope:employing_ruler
task_contract_tier = task_contract_t3_value #Legendary!
save_scope_as = 1025_legendary_contract
}
}
10 = {
trigger = {
can_create_task_contract = {
type_name = laamp_transport_gold
employer = scope:employing_ruler
}
}
create_task_contract = {
task_contract_type = laamp_transport_gold
location = scope:employing_ruler.capital_province
task_contract_employer = scope:employing_ruler
task_contract_tier = task_contract_t3_value #Legendary!
save_scope_as = 1025_legendary_contract
}
}
10 = {
trigger = {
can_create_task_contract = {
type_name = laamp_transport_animal
employer = scope:employing_ruler
}
}
create_task_contract = {
task_contract_type = laamp_transport_animal
location = scope:employing_ruler.capital_province
task_contract_employer = scope:employing_ruler
task_contract_tier = task_contract_t3_value #Legendary!
save_scope_as = 1025_legendary_contract
}
}
}
scope:1025_legendary_contract = {
set_variable = {
name = retain_despite_distance
value = yes
}
}
}
#Spawn the actual contracts
scripted_effect 1025_option_picked_spawn_contract_effect = {
#Treasure Map
switch = {
trigger = scope:1025_$NUM$_contract
flag:treasure_map_contract = {
hidden_effect = {
#Create treasure map contract
create_task_contract = {
task_contract_type = laamp_treasure_map_contract
location = scope:visiting_location
task_contract_employer = scope:1025_$NUM$_contract_employer
task_contract_tier = scope:1025_$NUM$_contract_employer.task_contract_tier_value
save_scope_as = 1025_treasure_map_contract
}
scope:1025_treasure_map_contract ?= {
#Pick treasure location
1025_set_contract_location_effect = yes
#Save location on contract
if = {
limit = { exists = scope:contract_province }
set_variable = {
name = contract_treasure_location
value = scope:contract_province
}
}
#Fallback
else = {
random_county_in_region = {
region = world_asia_minor #Something something Bosnia
random_county_province = { save_scope_as = treasure_province }
}
set_variable = {
name = contract_treasure_location
value = scope:treasure_province
}
}
#Save the pick-up location
set_variable = {
name = contract_picked_up_in_location
value = scope:visiting_location
}
}
}
#What do you mean _in your face_ :c
scope:1025_treasure_map_contract = {
open_view_data = {
view = task_contract
player = root
}
}
}
#Legendary Contract
flag:legendary_contract = {
hidden_effect = { #Comment out this hidden_effect = { ... } to better survey what contracts become available while debugging
#North Europe
if = {
limit = {
scope:visiting_location = { geographical_region = world_europe_north }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_europe_north }
}
#West Europe
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_europe_west }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_europe_west }
}
#East Europe
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_europe_east }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_europe_east }
}
#South Europe
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_europe_south }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_europe_south }
}
#Middle East
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_middle_east }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_middle_east }
}
#India
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_india }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_india }
}
#North Africa
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_africa_north }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_africa_north }
}
#West Africa
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_africa_west }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_africa_west }
}
#East Africa
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_africa_east }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_africa_east }
}
#West Steppe
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_steppe_west }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_steppe_west }
}
#East Steppe
else_if = {
limit = {
scope:visiting_location = { geographical_region = world_steppe_east }
}
1025_find_ruler_and_spawn_legendary_contract_effect = { REGION = world_steppe_east }
}
#YOLO
else = {
random_ruler = {
limit = {
save_temporary_scope_as = ruler_check
valid_laamp_basic_trigger = {
EMPLOYER = scope:ruler_check
LAAMP = root
}
}
save_scope_as = employing_ruler
}
}
}
#What do you mean _in your face_ :c
scope:1025_legendary_contract ?= {
open_view_data = {
view = task_contract
player = root
}
}
}
#Transport Contracts
flag:transport_contracts = {
hidden_effect = {
populate_task_contracts_for_area = {
location = scope:visiting_location
amount = num_contracts_spawned_value
group = { laamp_contracts_transport_group }
}
}
}
#Criminal Contracts
flag:criminal_contracts = {
hidden_effect = {
populate_task_contracts_for_area = {
location = scope:visiting_location
amount = num_contracts_spawned_value
group = { laamp_contracts_criminal_group }
}
}
}
#Justicar Contracts
flag:justicar_contracts = {
hidden_effect = {
populate_task_contracts_for_area = {
location = scope:visiting_location
amount = num_contracts_spawned_value
group = { laamp_contracts_justicar_group }
}
}
}
#Hireling Contracts
flag:hireling_contracts = {
hidden_effect = {
populate_task_contracts_for_area = {
location = scope:visiting_location
amount = num_contracts_spawned_value
group = { laamp_contracts_hireling_group laamp_contracts_martial_group } #Stashing martial here, for now
}
}
}
#Diplomacy Contracts
flag:diplomacy_contracts = {
hidden_effect = {
populate_task_contracts_for_area = {
location = scope:visiting_location
amount = num_contracts_spawned_value
group = { laamp_contracts_diplomacy_group }
}
}
}
#Stewardship Contracts
flag:stewardship_contracts = {
hidden_effect = {
populate_task_contracts_for_area = {
location = scope:visiting_location
amount = num_contracts_spawned_value
group = { laamp_contracts_stewardship_group }
}
}
}
#Learning Contracts
flag:learning_contracts = {
hidden_effect = {
populate_task_contracts_for_area = {
location = scope:visiting_location
amount = num_contracts_spawned_value
group = { laamp_contracts_learning_group }
}
}
}
#Intrigue Contracts
flag:intrigue_contracts = {
hidden_effect = {
populate_task_contracts_for_area = {
location = scope:visiting_location
amount = num_contracts_spawned_value
group = { laamp_contracts_intrigue_group }
}
}
}
#Add more contract types below VV
}
}
#Set up the tooltip, cooldown and prestige cost
scripted_effect 1025_option_tooltip_and_cooldown_contract_type_effect = {
#Contract stuff
switch = {
trigger = scope:1025_$NUM$_contract
#Treasure Map
flag:treasure_map_contract = {
custom_tooltip = ep3_laamp_decision_event.1025.treasure_map_contract_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_treasure_map_contract_recently
days = visit_settlement_large_cooldown_days
}
#Prestige cost
add_prestige = minor_prestige_loss
}
#Legendary Contract
flag:legendary_contract = {
custom_tooltip = ep3_laamp_decision_event.1025.legendary_contract_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_legendary_contract_recently
days = visit_settlement_large_cooldown_days
}
#Prestige cost
add_prestige = medium_prestige_loss
}
#Transport Contracts
flag:transport_contracts = {
custom_tooltip = ep3_laamp_decision_event.1025.transport_contracts_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_transport_contracts_recently
days = visit_settlement_cooldown_days
}
#Prestige cost
add_prestige = minor_prestige_loss
}
#Criminal Contracts
flag:criminal_contracts = {
custom_tooltip = ep3_laamp_decision_event.1025.criminal_contracts_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_criminal_contracts_recently
days = visit_settlement_cooldown_days
}
#No prestige cost
}
#Justicar Contracts
flag:justicar_contracts = {
custom_tooltip = ep3_laamp_decision_event.1025.justicar_contracts_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_justicar_contracts_recently
days = visit_settlement_cooldown_days
}
#Prestige cost
add_prestige = minor_prestige_loss
}
#Hireling Contracts
flag:hireling_contracts = {
custom_tooltip = ep3_laamp_decision_event.1025.hireling_contracts_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_hireling_contracts_recently
days = visit_settlement_cooldown_days
}
#Prestige cost
add_prestige = minor_prestige_loss
}
#Diplomacy Contracts
flag:diplomacy_contracts = {
custom_tooltip = ep3_laamp_decision_event.1025.diplomacy_contracts_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_diplomacy_contracts_recently
days = visit_settlement_cooldown_days
}
#Prestige cost
add_prestige = minor_prestige_loss
}
#Stewardship Contracts
flag:stewardship_contracts = {
custom_tooltip = ep3_laamp_decision_event.1025.stewardship_contracts_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_stewardship_contracts_recently
days = visit_settlement_cooldown_days
}
#Prestige cost
add_prestige = minor_prestige_loss
}
#Learning Contracts
flag:learning_contracts = {
custom_tooltip = ep3_laamp_decision_event.1025.learning_contracts_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_learning_contracts_recently
days = visit_settlement_cooldown_days
}
#Prestige cost
add_prestige = minor_prestige_loss
}
#Intrigue Contracts
flag:intrigue_contracts = {
custom_tooltip = ep3_laamp_decision_event.1025.intrigue_contracts_tt
#Set up the cooldown for the contract type
set_variable = {
name = 1025_had_intrigue_contracts_recently
days = visit_settlement_cooldown_days
}
#Prestige cost
add_prestige = minor_prestige_loss
}
#Add more contract types below VV
}
}
#Remember, remember (... but not legendary contracts)
scripted_effect 1025_translate_variable_into_flag_effect = {
scope:visiting_location = {
#The Nothingness
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:no_contract }
#Nothing
}
#Treasure Map
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:treasure_map_contract }
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:treasure_map_contract
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
root = {
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:treasure_map_contract
}
}
}
#Transport Contracts
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:transport_contracts }
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:transport_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
root = {
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:transport_contracts
}
}
}
#Criminal Contracts
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:criminal_contracts }
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:criminal_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
root = {
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:criminal_contracts
}
}
}
#Justicar Contracts
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:justicar_contracts }
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:justicar_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
root = {
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:justicar_contracts
}
}
}
#Hireling Contracts
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:hireling_contracts }
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:hireling_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
root = {
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:hireling_contracts
}
}
}
#Diplomacy Contracts
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:diplomacy_contracts }
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:diplomacy_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
root = {
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:diplomacy_contracts
}
}
}
#Stewardship Contracts
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:stewardship_contracts }
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:stewardship_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
root = {
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:stewardship_contracts
}
}
}
#Learning Contracts
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:learning_contracts }
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:learning_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
root = {
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:learning_contracts
}
}
}
#Intrigue Contracts
if = {
limit = { var:1025_saved_$NUM$_contract_type ?= flag:intrigue_contracts }
save_scope_value_as = {
name = 1025_$NUM$_contract
value = flag:intrigue_contracts
}
#Save as a temporary variable that is removed after exiting the decision to avoid desc-bloat
root = {
set_variable = {
name = 1025_$NUM$_contract_desc
value = flag:intrigue_contracts
}
}
}
#Add more contract types below VV
}
}
#This location has a saved contract variable
scripted_trigger 1025_location_has_a_saved_contract_type_trigger = {
scope:visiting_location = {
OR = {
has_variable = 1025_saved_first_contract_type
has_variable = 1025_saved_second_contract_type
has_variable = 1025_saved_third_contract_type
}
}
}
#The saved contract variable is of CONTRACT_TYPE_FLAG-type
scripted_trigger 1025_saved_location_contract_type_matches_this_type_trigger = {
scope:visiting_location = {
OR = {
var:1025_saved_first_contract_type ?= $CONTRACT_TYPE_FLAG$
var:1025_saved_second_contract_type ?= $CONTRACT_TYPE_FLAG$
var:1025_saved_third_contract_type ?= $CONTRACT_TYPE_FLAG$
}
}
}
#Used more than 3 times eh
scripted_trigger 1025_region_has_suitable_employer_trigger = {
holder = {
highest_held_title_tier > tier_duchy
NOT = { is_in_list = checked_holders }
save_temporary_scope_as = holder_check
valid_laamp_basic_trigger = {
EMPLOYER = scope:holder_check
LAAMP = root
}
#Copying the special contracts from the character interaction, for now. MUST match the random_list in 1025_find_ruler_and_spawn_legendary_contract_effect
root = {
OR = {
can_create_task_contract = {
type_name = laamp_raid_contract
employer = scope:holder_check
}
can_create_task_contract = {
type_name = laamp_steal_artifact_contract
employer = scope:holder_check
}
can_create_task_contract = {
type_name = laamp_treasure_hunting_contract
employer = scope:holder_check
}
can_create_task_contract = {
type_name = laamp_transport_vip
employer = scope:holder_check
}
can_create_task_contract = {
type_name = laamp_transport_artifact
employer = scope:holder_check
}
can_create_task_contract = {
type_name = laamp_transport_gold
employer = scope:holder_check
}
can_create_task_contract = {
type_name = laamp_transport_animal
employer = scope:holder_check
}
}
}
add_to_temporary_list = checked_holders
}
}
#... well, can we?
scripted_trigger 1025_can_create_legendary_contract_trigger = {
OR = {
#North Europe
AND = {
scope:visiting_location = { geographical_region = world_europe_north }
any_county_in_region = {
region = world_europe_north
1025_region_has_suitable_employer_trigger = yes
}
}
#West Europe
AND = {
scope:visiting_location = { geographical_region = world_europe_west }
any_county_in_region = {
region = world_europe_west
1025_region_has_suitable_employer_trigger = yes
}
}
#East Europe
AND = {
scope:visiting_location = { geographical_region = world_europe_east }
any_county_in_region = {
region = world_europe_east
1025_region_has_suitable_employer_trigger = yes
}
}
#South Europe
AND = {
scope:visiting_location = { geographical_region = world_europe_south }
any_county_in_region = {
region = world_europe_south
1025_region_has_suitable_employer_trigger = yes
}
}
#Middle East
AND = {
scope:visiting_location = { geographical_region = world_middle_east }
any_county_in_region = {
region = world_middle_east
1025_region_has_suitable_employer_trigger = yes
}
}
#India
AND = {
scope:visiting_location = { geographical_region = world_india }
any_county_in_region = {
region = world_india
1025_region_has_suitable_employer_trigger = yes
}
}
#North Africa
AND = {
scope:visiting_location = { geographical_region = world_africa_north }
any_county_in_region = {
region = world_africa_north
1025_region_has_suitable_employer_trigger = yes
}
}
#West Africa
AND = {
scope:visiting_location = { geographical_region = world_africa_west }
any_county_in_region = {
region = world_africa_west
1025_region_has_suitable_employer_trigger = yes
}
}
#East Africa
AND = {
scope:visiting_location = { geographical_region = world_africa_east }
any_county_in_region = {
region = world_africa_east
1025_region_has_suitable_employer_trigger = yes
}
}
#West Steppe
AND = {
scope:visiting_location = { geographical_region = world_steppe_west }
any_county_in_region = {
region = world_steppe_west
1025_region_has_suitable_employer_trigger = yes
}
}
#East Steppe
AND = {
scope:visiting_location = { geographical_region = world_steppe_east }
any_county_in_region = {
region = world_steppe_east
1025_region_has_suitable_employer_trigger = yes
}
}
}
}
#Don't duplicate contract types between contract scopes
scripted_trigger 1025_contract_type_is_assigned_trigger = {
OR = {
scope:1025_first_contract ?= $CONTRACT_TYPE_FLAG$
scope:1025_second_contract ?= $CONTRACT_TYPE_FLAG$
scope:1025_third_contract ?= $CONTRACT_TYPE_FLAG$
}
}
#Since the treasure map contract doesn't have a time limit, make 'em old and unfit
scripted_trigger 1025_is_old_and_unable_trigger = {
age > 50
is_imprisoned = no
OR = {
has_trait = blind
has_trait = one_legged
has_trait = one_eyed
has_trait = infirm
has_trait = wounded_1
}
}
#Standard checks
scripted_trigger 1025_appropriate_contract_employer_trigger = {
# Players shouldn't get tangled up in contracts, ever.
is_ai = yes
# Plus some standard stuff.
is_alive = yes
is_adult = yes
is_incapable = no
# Don't offer to work with those who've wronged us.
NOR = {
government_has_flag = government_is_landless_adventurer
# No one we're at war with.
is_at_war_with = root
# Rivals are cheap to grab.
has_relation_rival = root
# Expulsion
custom_tooltip = {
text = adventurer_expelled_trigger_tt
OR = {
has_opinion_modifier = {
target = root
modifier = eviction_ignored_opinion
}
any_liege_or_above = {
has_opinion_modifier = {
target = root
modifier = eviction_ignored_opinion
}
}
}
}
}
}
#Landed checks
scripted_trigger 1025_is_appropriate_landed_contract_employer_trigger = {
1025_appropriate_contract_employer_trigger = yes
this.capital_province ?= {
squared_distance = {
target = root.domicile.domicile_location
value < define:NTaskContract|ADVENTURER_DISTANCE_RESTRICTION
}
}
}
#In too deep, man
scripted_trigger 1025_is_gated_due_to_thievery_trigger = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = thief
value >= 60
}
}
#Should we be gated from contracts?
scripted_trigger 1025_is_renowned_thief_trigger = {
trigger_if = {
limit = { scope:1025_$NUM$_contract = flag:treasure_map_contract }
custom_tooltip = {
text = gallowsbait_thief_blocked_from_contract.tt
1025_is_gated_due_to_thievery_trigger = no
}
}
trigger_else = { always = yes }
}
#Nothing at all!
scripted_trigger 1025_no_contracts_trigger = {
OR = {
#All contract types are on cooldown, I guess
NOR = {
exists = scope:1025_first_contract
exists = scope:1025_second_contract
exists = scope:1025_third_contract
}
has_variable = 1025_has_contracted_recently
}
}
#Head to the Town Crier to spawn Contract(s)
ep3_laamp_decision_event.1025 = {
type = character_event
title = ep3_laamp_decision_event.1025.t
window = visit_settlement_window
desc = {
#What're they doing?
first_valid = {
#We've returned to this scene, now what
#Use this when we have all contract types on cooldown. Should be a bored crier.
##COOLDOWN
triggered_desc = {
trigger = { 1025_no_contracts_trigger = yes }
desc = ep3_laamp_decision_event.1025.desc_nothing
}
#RETURN: Tribal - Legendary contract
random_valid = {
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
exists = scope:been_to_contract
scope:contract_loc_tracker ?= 0
OR = {
scope:1025_first_contract ?= flag:legendary_contract
scope:1025_second_contract ?= flag:legendary_contract
scope:1025_third_contract ?= flag:legendary_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_tribal_legendary_returned_01
}
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
scope:contract_loc_tracker ?= 1
OR = {
scope:1025_first_contract ?= flag:legendary_contract
scope:1025_second_contract ?= flag:legendary_contract
scope:1025_third_contract ?= flag:legendary_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_tribal_legendary_returned_02
}
}
#RETURN: Legendary contract
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_contract
scope:contract_loc_tracker ?= 0
OR = {
scope:1025_first_contract ?= flag:legendary_contract
scope:1025_second_contract ?= flag:legendary_contract
scope:1025_third_contract ?= flag:legendary_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_legendary_returned_01
}
triggered_desc = {
trigger = {
scope:contract_loc_tracker ?= 1
OR = {
scope:1025_first_contract ?= flag:legendary_contract
scope:1025_second_contract ?= flag:legendary_contract
scope:1025_third_contract ?= flag:legendary_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_legendary_returned_02
}
}
#RETURN: Tribal - No legendary contract
random_valid = {
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
exists = scope:been_to_contract
scope:contract_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1025.desc_tribal_returned_01
}
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
scope:contract_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1025.desc_tribal_returned_02
}
}
#RETURN: No legendary contract
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_contract
scope:contract_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1025.desc_returned_01
}
triggered_desc = {
trigger = { scope:contract_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1025.desc_returned_02
}
}
#FIRST TIME: Tribal - Legendary contract - Reused Elder
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
exists = scope:laamp_recurring_town_crier
NOR = {
exists = scope:been_to_contract
has_variable = 1025_has_contracted_recently
}
OR = {
scope:1025_first_contract ?= flag:legendary_contract
scope:1025_second_contract ?= flag:legendary_contract
scope:1025_third_contract ?= flag:legendary_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_tribal_legendary_reused_crier
}
#FIRST TIME: Legendary contract - Reused Town Crier
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_town_crier
NOR = {
exists = scope:been_to_contract
has_variable = 1025_has_contracted_recently
}
OR = {
scope:1025_first_contract ?= flag:legendary_contract
scope:1025_second_contract ?= flag:legendary_contract
scope:1025_third_contract ?= flag:legendary_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_legendary_reused_crier
}
#FIRST TIME: Tribal - Legendary contract
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
NOR = {
exists = scope:been_to_contract
has_variable = 1025_has_contracted_recently
}
OR = {
scope:1025_first_contract ?= flag:legendary_contract
scope:1025_second_contract ?= flag:legendary_contract
scope:1025_third_contract ?= flag:legendary_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_tribal_legendary
}
#FIRST TIME: Legendary contract
triggered_desc = {
trigger = {
NOR = {
exists = scope:been_to_contract
has_variable = 1025_has_contracted_recently
}
OR = {
scope:1025_first_contract ?= flag:legendary_contract
scope:1025_second_contract ?= flag:legendary_contract
scope:1025_third_contract ?= flag:legendary_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_legendary
}
#FIRST TIME: Tribal - No legendary contract - Reused Town Crier
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
exists = scope:laamp_recurring_town_crier
NOR = {
exists = scope:been_to_contract
has_variable = 1025_has_contracted_recently
}
}
desc = ep3_laamp_decision_event.1025.desc_tribal_reused_crier
}
#FIRST TIME: No legendary contract - Reused Town Crier
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_town_crier
NOR = {
exists = scope:been_to_contract
has_variable = 1025_has_contracted_recently
}
}
desc = ep3_laamp_decision_event.1025.desc_reused_crier
}
#FIRST TIME: Tribal - No legendary contract
triggered_desc = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
NOR = {
exists = scope:been_to_contract
has_variable = 1025_has_contracted_recently
}
}
desc = ep3_laamp_decision_event.1025.desc_tribal
}
#FIRST TIME: No legendary contract
triggered_desc = {
trigger = {
NOR = {
exists = scope:been_to_contract
has_variable = 1025_has_contracted_recently
}
}
desc = ep3_laamp_decision_event.1025.desc
}
}
#Concatenated and outsourced to custom_loc - trust me, this is less cursed than the alternative
#A exists
triggered_desc = {
trigger = {
exists = scope:1025_first_contract
NOR = {
exists = scope:1025_second_contract
exists = scope:1025_third_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_concatenated_A
}
#AB exists
triggered_desc = {
trigger = {
exists = scope:1025_first_contract
exists = scope:1025_second_contract
NOT = { exists = scope:1025_third_contract }
}
desc = ep3_laamp_decision_event.1025.desc_concatenated_AB
}
#ABC exists
triggered_desc = {
trigger = {
exists = scope:1025_first_contract
exists = scope:1025_second_contract
exists = scope:1025_third_contract
}
desc = ep3_laamp_decision_event.1025.desc_concatenated_ABC
}
#B exists
triggered_desc = {
trigger = {
exists = scope:1025_second_contract
NOR = {
exists = scope:1025_first_contract
exists = scope:1025_third_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_concatenated_B
}
#BC exists
triggered_desc = {
trigger = {
NOT = { exists = scope:1025_first_contract }
exists = scope:1025_second_contract
exists = scope:1025_third_contract
}
desc = ep3_laamp_decision_event.1025.desc_concatenated_BC
}
#C exists
triggered_desc = {
trigger = {
exists = scope:1025_third_contract
NOR = {
exists = scope:1025_first_contract
exists = scope:1025_second_contract
}
}
desc = ep3_laamp_decision_event.1025.desc_concatenated_C
}
#AC exists
triggered_desc = {
trigger = {
exists = scope:1025_first_contract
exists = scope:1025_third_contract
NOT = { exists = scope:1025_second_contract }
}
desc = ep3_laamp_decision_event.1025.desc_concatenated_AC
}
}
theme = landless_adventurer
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_activity" }
override_background = {
trigger = { 1000_is_a_nomadic_holding_trigger = yes }
reference = mpo_camp_steppe
}
override_background = { reference = garden_location }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
animation = survey
}
center_portrait = {
character = root
triggered_animation = {
trigger = { 1025_no_contracts_trigger = yes }
animation = worry
}
animation = interested
}
right_portrait = {
character = scope:laamp_town_crier
triggered_animation = {
trigger = { 1025_no_contracts_trigger = yes }
animation = boredom
}
animation = debating
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = contract }
#Run all of this once
if = {
limit = {
NOT = { exists = scope:been_to_contract }
}
#Spawn a Town Crier
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_crier_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
#_Elder_
trigger_if = {
limit = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
age >= 50
}
}
save_scope_as = laamp_town_crier
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_town_crier
}
#Otherwise find a Town Crier in the pool
if = {
limit = {
NOT = { exists = scope:laamp_town_crier }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
is_available_healthy_adult = yes
NOT = { has_trait = shy }
#_Elder_
trigger_if = {
limit = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
age >= 50
}
}
save_scope_as = laamp_town_crier
}
}
#Otherwise create a Town Crier
if = {
limit = {
NOT = { exists = scope:laamp_town_crier }
}
#Create Elder to stuff in pool
if = {
limit = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
create_character = {
template = generic_peasant_character
location = scope:visiting_location
age = { 50 60 }
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_town_crier
}
}
#Create Town Crier to stuff in pool
else = {
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_town_crier
}
}
}
#Remember the Town Crier
1010_remember_vendor_character_effect = { GUILD = crier CHARACTER = scope:laamp_town_crier }
#First Contract
if = {
limit = {
NOT = { exists = scope:1025_first_contract }
}
#Did we, or someone else, check for contracts here recently?
if = {
limit = {
scope:visiting_location = { has_variable = 1025_saved_first_contract_type }
}
#Translating values from variable to flag translates to number?
1025_translate_variable_into_flag_effect = { NUM = first }
}
#Otherwise generate a new type
else = {
1025_randomize_and_remember_contract_type_effect = { NUM = first }
}
}
#Set up the employer, if necessary
if = {
limit = { exists = scope:1025_first_contract }
1025_generate_employer_effect = { NUM = first }
}
#Second Contract
if = {
limit = {
NOT = { exists = scope:1025_second_contract }
}
#Did we, or someone else, check for contracts here recently?
if = {
limit = {
scope:visiting_location = { has_variable = 1025_saved_second_contract_type }
}
#Translating values from variable to flag
1025_translate_variable_into_flag_effect = { NUM = second }
}
#Otherwise generate a new type
else = {
1025_randomize_and_remember_contract_type_effect = { NUM = second }
}
}
#Set up the employer, if necessary
if = {
limit = { exists = scope:1025_second_contract }
1025_generate_employer_effect = { NUM = second }
}
#If no legendary contract, Third Contract
if = {
limit = {
NOT = { exists = scope:1025_third_contract }
}
#Did we, or someone else, check for contracts here recently?
if = {
limit = {
scope:visiting_location = { has_variable = 1025_saved_third_contract_type }
}
#Translating values from variable to flag
1025_translate_variable_into_flag_effect = { NUM = third }
}
#Otherwise generate a new type
else = {
1025_randomize_and_remember_contract_type_effect = { NUM = third }
}
}
#Set up the employer, if necessary
if = {
limit = { exists = scope:1025_third_contract }
1025_generate_employer_effect = { NUM = third }
}
}
}
#Contract A
option = {
name = ep3_laamp_decision_event.1025.a
trigger = {
exists = scope:1025_first_contract
1025_is_renowned_thief_trigger = { NUM = first }
}
show_as_unavailable = { exists = scope:1025_first_contract }
#Remove the remember-variable for A
scope:visiting_location = { remove_variable ?= 1025_saved_first_contract_type }
#Spawn contract(s)
1025_option_picked_spawn_contract_effect = { NUM = first }
#Pick tooltip and set up the cooldown for the contract type
1025_option_tooltip_and_cooldown_contract_type_effect = { NUM = first }
#Done here; go back to the main event
1025_finished_contract_effect = yes
}
#Contract B
option = {
name = ep3_laamp_decision_event.1025.b
trigger = {
exists = scope:1025_second_contract
1025_is_renowned_thief_trigger = { NUM = second }
}
show_as_unavailable = { exists = scope:1025_second_contract }
#Remove the remember-variable for B
scope:visiting_location = { remove_variable ?= 1025_saved_second_contract_type }
#Spawn contract(s)
1025_option_picked_spawn_contract_effect = { NUM = second }
#Pick tooltip and set up the cooldown for the contract type
1025_option_tooltip_and_cooldown_contract_type_effect = { NUM = second }
#Done here; go back to the main event
1025_finished_contract_effect = yes
}
#Contract C
option = {
name = ep3_laamp_decision_event.1025.c
trigger = {
exists = scope:1025_third_contract
1025_is_renowned_thief_trigger = { NUM = third }
}
show_as_unavailable = { exists = scope:1025_third_contract }
#Remove the remember-variable for C
scope:visiting_location = { remove_variable ?= 1025_saved_third_contract_type }
#Spawn contract(s)
1025_option_picked_spawn_contract_effect = { NUM = third }
#Pick tooltip and set up the cooldown for the contract type
1025_option_tooltip_and_cooldown_contract_type_effect = { NUM = third }
#Done here; go back to the main event
1025_finished_contract_effect = yes
}
#I want to do something else
option = {
#Nothing here
name = {
trigger = {
NOT = {
exists = scope:been_to_contract
exists = scope:1025_first_contract
exists = scope:1025_second_contract
exists = scope:1025_third_contract
}
}
text = ep3_laamp_decision_event.1025.d_nothing
}
name = ep3_laamp_decision_event.1025.d
if = {
limit = {
NOT = {
exists = scope:1025_first_contract
exists = scope:1025_second_contract
exists = scope:1025_third_contract
}
}
save_scope_value_as = {
name = laamp_decision_has_contracted
value = flag:no
}
}
#For desc flavor
else = { save_scope_as = been_to_contract }
#Go back to the main event
1001_return_to_second_effect = yes
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:contract }
}
}
######################################################################
# TAVERN
# ep3_laamp_decision_event.1030
######################################################################
#Withered workaround
scripted_effect 1030_save_hub_scope_effect = {
if = {
limit = {
NOT = { exists = scope:been_to_$HUB$ }
}
save_scope_as = been_to_$HUB$
}
}
#Set the correct variable to block off the Tavern option and remove the desc flavor variable
scripted_effect 1030_finished_tavern_effect = {
remove_list_variable = {
name = list_of_options
target = flag:has_tavern_option
}
save_scope_as = laamp_decision_finished_tavern_option
}
#Nothing left for us to do
scripted_trigger 1030_done_with_tavern_trigger = {
exists = scope:laamp_decision_has_storied
exists = scope:laamp_decision_has_recruited
trigger_if = {
limit = { exists = scope:laamp_spouse_material }
exists = scope:laamp_decision_has_spoused
}
trigger_if = {
limit = { exists = scope:laamp_hooded_figure }
exists = scope:laamp_decision_recruited_hood
}
}
#Should be an alright seedy fella
scripted_trigger 1030_gallowsbait_character_trigger = {
intrigue > 15
has_trait = gallowsbait
OR = {
has_trait_xp = {
trait = gallowsbait
track = bandit
value = medium_lifestyle_random_xp_low
}
has_trait_xp = {
trait = gallowsbait
track = trickster
value = medium_lifestyle_random_xp_low
}
has_trait_xp = {
trait = gallowsbait
track = thief
value = medium_lifestyle_random_xp_low
}
has_trait_xp = {
trait = gallowsbait
track = poacher
value = medium_lifestyle_random_xp_low
}
has_trait_xp = {
trait = gallowsbait
track = marauder
value = medium_lifestyle_random_xp_low
}
}
}
#Not Emperors and Kings, except if...
scripted_trigger 1030_appropriate_noble_trigger = {
is_available_ai_adult = yes
NOR = {
is_contact_of = root
has_variable = 1030_has_been_hooded_recently
has_any_scripted_relation = root #Remember to disable this for rival should we revisit to add some form of murder option in the future
}
#... they're eccentric
trigger_if = {
limit = {
NOT = { has_trait = eccentric }
}
highest_held_title_tier <= tier_duchy
}
}
scripted_trigger 1030_not_already_used_character_trigger = {
1010_basic_merchant_checks_trigger = yes
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
#Visit the local tavern
ep3_laamp_decision_event.1030 = {
type = character_event
title = ep3_laamp_decision_event.1030.t
window = visit_settlement_window
desc = {
#Intro
first_valid = {
#We've returned to this scene, now what
#RETURN: We've returned from Main Square
random_valid = {
triggered_desc = {
trigger = {
var:return_from_location ?= flag:main_square
1000_is_a_nomadic_holding_trigger = no
exists = scope:been_to_tavern
OR = {
scope:tavern_loc_tracker ?= 0
scope:tavern_loc_tracker ?= 2
}
}
desc = ep3_laamp_decision_event.1030.desc_returned_01
}
#Nomad variant
triggered_desc = {
trigger = {
var:return_from_location ?= flag:main_square
1000_is_a_nomadic_holding_trigger = yes
exists = scope:been_to_tavern
OR = {
scope:tavern_loc_tracker ?= 0
scope:tavern_loc_tracker ?= 2
}
}
desc = ep3_laamp_decision_event.1030.desc_nomad_returned_01
}
triggered_desc = {
trigger = {
var:return_from_location ?= flag:main_square
scope:tavern_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1030.desc_returned_02
}
}
#RETURN: We've returned from the Storyteller
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = no
var:return_from_location ?= flag:storyteller
}
desc = ep3_laamp_decision_event.1030.desc_returned_from_story
}
#Nomad variant
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
var:return_from_location ?= flag:storyteller
}
desc = ep3_laamp_decision_event.1030.desc_nomad_returned_from_story
}
#RETURN: We've returned from the Recruitment
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = no
var:return_from_location ?= flag:recruit
}
desc = ep3_laamp_decision_event.1030.desc_returned_from_recruit
}
#Nomad variant
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
var:return_from_location ?= flag:recruit
}
desc = ep3_laamp_decision_event.1030.desc_nomad_returned_from_recruit
}
#RETURN: We've returned from unwinding with the Spouse Material
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = no
var:return_from_location ?= flag:spouse
exists = scope:1035_unwinded_with_spouse_potential
}
desc = ep3_laamp_decision_event.1030.desc_returned_from_unwinding_spouse
}
#Nomad variant
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
var:return_from_location ?= flag:spouse
exists = scope:1035_unwinded_with_spouse_potential
}
desc = ep3_laamp_decision_event.1030.desc_nomad_returned_from_unwinding_spouse
}
#RETURN: We've returned from the Spouse Material
triggered_desc = {
trigger = { var:return_from_location ?= flag:spouse }
desc = ep3_laamp_decision_event.1030.desc_returned_from_spouse
}
#RETURN: We failed to save noble Hooded Figure
triggered_desc = {
trigger = {
var:return_from_location ?= flag:hood
scope:laamp_decision_recruited_hood ?= flag:wounded
}
desc = ep3_laamp_decision_event.1030.desc_returned_from_hood_noble_fail
}
#RETURN: We've returned from the noble Hooded Figure
triggered_desc = {
trigger = {
var:return_from_location ?= flag:hood
exists = scope:laamp_disguised_noble
}
desc = ep3_laamp_decision_event.1030.desc_returned_from_hood_noble
}
#RETURN: We've returned from the Hooded Figure
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = no
var:return_from_location ?= flag:hood
}
desc = ep3_laamp_decision_event.1030.desc_returned_from_hood
}
#Nomad variant
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
var:return_from_location ?= flag:hood
}
desc = ep3_laamp_decision_event.1030.desc_nomad_returned_from_hood
}
#FIRST TIME: Nomad dwelling
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
NOT = { exists = scope:been_to_tavern }
}
desc = ep3_laamp_decision_event.1030.desc_nomad
}
#FIRST TIME: First time here
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_tavern }
}
desc = ep3_laamp_decision_event.1030.desc
}
}
#MID: Is there a spouse? Do we recognize them? Have we interacted with them?
first_valid = {
#RETURN: Reused spouse is still here
triggered_desc = {
trigger = {
exists = scope:been_to_tavern
exists = scope:laamp_recurring_spouse
NOR = {
exists = scope:been_to_spouse
exists = scope:laamp_decision_has_spoused
}
}
desc = ep3_laamp_decision_event.1030.desc_mid_return_reused_spouse
}
#FIRST TIME: You've seen this lass/lad before
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_tavern }
exists = scope:laamp_recurring_spouse
}
desc = ep3_laamp_decision_event.1030.desc_mid_reused_spouse
}
#RETURN: Spouse is still here
triggered_desc = {
trigger = {
exists = scope:been_to_tavern
exists = scope:laamp_spouse_material
NOR = {
exists = scope:been_to_spouse
exists = scope:laamp_decision_has_spoused
}
}
desc = ep3_laamp_decision_event.1030.desc_mid_return_spouse
}
#FIRST TIME: Nomad dwelling
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
NOT = { exists = scope:been_to_tavern }
exists = scope:laamp_spouse_material
}
desc = ep3_laamp_decision_event.1030.desc_nomad_mid_spouse
}
#Otherwise just exclude them
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
NOT = { exists = scope:been_to_tavern }
}
desc = ep3_laamp_decision_event.1030.desc_nomad_mid
}
#FIRST TIME
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_tavern }
exists = scope:laamp_spouse_material
}
desc = ep3_laamp_decision_event.1030.desc_mid_spouse
}
#Otherwise just exclude them
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_tavern }
}
desc = ep3_laamp_decision_event.1030.desc_mid
}
}
#Outro
first_valid = {
#FIRST TIME: First time here, look at the hood
triggered_desc = {
trigger = {
exists = scope:laamp_hooded_figure
NOT = { exists = scope:been_to_tavern }
}
desc = ep3_laamp_decision_event.1030.desc_outro_hooded
}
#FIRST TIME: First time here, curious partner
triggered_desc = {
trigger = {
exists = scope:visiting_partner
NOT = { exists = scope:been_to_tavern }
}
desc = ep3_laamp_decision_event.1030.desc_outro_partner
}
#FIRST TIME: First time here
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_tavern }
}
desc = ep3_laamp_decision_event.1030.desc_outro
}
#RETURN: Partner - there is nothing left for us here
triggered_desc = {
trigger = {
exists = scope:visiting_partner
1030_done_with_tavern_trigger = yes
}
desc = ep3_laamp_decision_event.1030.desc_outro_return_partner_finished
}
#RETURN: There is nothing left for us here
triggered_desc = {
trigger = { 1030_done_with_tavern_trigger = yes }
desc = ep3_laamp_decision_event.1030.desc_outro_return_finished
}
#RETURN: Hood noble did not deviate, yet
triggered_desc = {
trigger = {
exists = scope:laamp_hooded_figure
exists = scope:laamp_disguised_noble
NOR = {
exists = scope:laamp_decision_recruited_hood
exists = scope:been_to_hood
}
}
desc = ep3_laamp_decision_event.1030.desc_outro_hooded_noble_return
}
#RETURN: Hood thief did not deviate, yet
triggered_desc = {
trigger = {
exists = scope:laamp_hooded_figure
NOR = {
exists = scope:laamp_decision_recruited_hood
exists = scope:been_to_hood
}
}
desc = ep3_laamp_decision_event.1030.desc_outro_hooded_return
}
#RETURN: We've been here before
random_valid = {
#RETURN: Partner flavor
triggered_desc = {
trigger = {
exists = scope:visiting_partner
exists = scope:been_to_tavern
scope:tavern_loc_tracker ?= 0
has_variable = 1030_use_partner_animation_var
}
desc = ep3_laamp_decision_event.1030.desc_outro_return_partner_01
}
triggered_desc = {
trigger = {
exists = scope:visiting_partner
scope:tavern_loc_tracker ?= 1
has_variable = 1030_use_partner_animation_var
}
desc = ep3_laamp_decision_event.1030.desc_outro_return_partner_02
}
triggered_desc = {
trigger = {
exists = scope:visiting_partner
scope:tavern_loc_tracker ?= 2
has_variable = 1030_use_partner_animation_var
}
desc = ep3_laamp_decision_event.1030.desc_outro_return_partner_03
}
#RETURN: Generics
triggered_desc = {
trigger = {
exists = scope:been_to_tavern
scope:tavern_loc_tracker ?= 0
NOT = { has_variable = 1030_use_partner_animation_var }
}
desc = ep3_laamp_decision_event.1030.desc_outro_return_01
}
triggered_desc = {
trigger = {
scope:tavern_loc_tracker ?= 1
NOT = { has_variable = 1030_use_partner_animation_var }
}
desc = ep3_laamp_decision_event.1030.desc_outro_return_02
}
triggered_desc = {
trigger = {
scope:tavern_loc_tracker ?= 2
NOT = { has_variable = 1030_use_partner_animation_var }
}
desc = ep3_laamp_decision_event.1030.desc_outro_return_03
}
}
}
}
theme = landless_adventurer
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_social" }
override_icon = { reference = "gfx/interface/icons/event_types/type_travel_stewardship.dds" }
override_background = {
trigger = { 1000_is_a_nomadic_holding_trigger = yes }
reference = mpo_tent_interior_mongol
}
override_background = {
trigger = {
scope:visiting_location = {
has_holding_type = tribal_holding
}
}
reference = throne_room_tribal
}
override_background = { reference = tavern }
#PARTNER / ROOT
left_portrait = {
trigger = {
exists = scope:1030_first_character
#Don't display this one if ROOT is in both portraits
NAND = {
scope:1030_first_character = root
exists = scope:1030_second_character
scope:1030_second_character = root
}
}
character = scope:1030_first_character
#PARTNER: If it's our (tired) visiting partner
triggered_animation = {
trigger = {
1030_done_with_tavern_trigger = yes
scope:visiting_partner ?= scope:1030_first_character
}
animation = boredom
}
#PARTNER: Variation 01
triggered_animation = {
trigger = {
scope:visiting_partner ?= scope:1030_first_character
exists = scope:been_to_tavern
scope:tavern_loc_tracker ?= 0
root = { has_variable = 1030_use_partner_animation_var }
}
animation = interested
}
#PARTNER: Variation 02
triggered_animation = {
trigger = {
scope:visiting_partner ?= scope:1030_first_character
scope:tavern_loc_tracker ?= 1
root = { has_variable = 1030_use_partner_animation_var }
}
animation = laugh
}
#PARTNER: Variation 03
triggered_animation = {
trigger = {
scope:visiting_partner ?= scope:1030_first_character
scope:tavern_loc_tracker ?= 2
root = { has_variable = 1030_use_partner_animation_var }
}
animation = dancing
}
#PARTNER: If it's our visiting partner
triggered_animation = {
trigger = { scope:visiting_partner ?= scope:1030_first_character }
animation = personality_content
}
#ROOT: Hooded figure!
triggered_animation = {
trigger = {
scope:1030_first_character = root
exists = scope:laamp_hooded_figure
NOT = { exists = scope:been_to_hood }
}
animation = interested
}
#ROOT: Eyeing the vixen at the bar
triggered_animation = {
trigger = {
scope:1030_first_character = root
exists = scope:laamp_spouse_material
NOT = { exists = scope:been_to_spouse }
}
animation = admiration
}
#ROOT: Eh, why not
triggered_animation = {
trigger = {
scope:1030_first_character = root
OR = {
has_trait = lunatic
has_trait = possessed
has_trait = eccentric
}
}
animation = personality_irrational
}
#ROOT: That's.. a lot of people
triggered_animation = {
trigger = {
scope:1030_first_character = root
OR = {
has_trait = paranoid
has_trait = shy
}
}
animation = personality_coward
}
#ROOT: My kind of people!
triggered_animation = {
trigger = {
scope:1030_first_character = root
OR = {
has_trait = lifestyle_reveler
has_trait = gregarious
}
}
animation = happiness
}
#Fallback, we really shouldn't end up here
animation = happiness
}
#SPOUSE / ROOT
center_portrait = {
trigger = { exists = scope:1030_second_character }
camera = camera_event_scheme_vs_right_look_right
character = scope:1030_second_character
#SPOUSE: Untapped
triggered_animation = {
trigger = {
scope:laamp_spouse_material ?= scope:1030_second_character
NOT = { exists = scope:been_to_spouse }
}
animation = personality_rational
}
#SPOUSE: Been there
triggered_animation = {
trigger = { scope:laamp_spouse_material ?= scope:1030_second_character }
animation = personality_cynical
}
#ROOT: Hooded figure!
triggered_animation = {
trigger = {
scope:1030_second_character = root
exists = scope:laamp_hooded_figure
NOT = { exists = scope:been_to_hood }
}
animation = interested
}
#ROOT: Eyeing the vixen at the bar
triggered_animation = {
trigger = {
scope:1030_second_character = root
exists = scope:laamp_spouse_material
NOT = { exists = scope:been_to_spouse }
}
animation = admiration
}
#ROOT: Eh, why not
triggered_animation = {
trigger = {
scope:1030_second_character = root
OR = {
has_trait = lunatic
has_trait = possessed
has_trait = eccentric
}
}
animation = personality_irrational
}
#ROOT: That's.. a lot of people
triggered_animation = {
trigger = {
scope:1030_second_character = root
OR = {
has_trait = paranoid
has_trait = shy
}
}
animation = personality_coward
}
#ROOT: My kind of people!
triggered_animation = {
trigger = {
scope:1030_second_character = root
OR = {
has_trait = lifestyle_reveler
has_trait = gregarious
}
}
animation = happiness
}
#Fallback, we really shouldn't end up here
animation = personality_rational
}
#HOOD / SPOUSE
right_portrait = {
trigger = {
exists = scope:1030_third_character
#If this is root, then that means we have talked to the Hooded Figure and we don't have a Spouse to display, so let's disappear the portrait
scope:1030_third_character != root
}
camera = camera_event_scheme_vs_center_look_left
character = scope:1030_third_character
#HOOD: Hood for the hooded figure
triggered_outfit = {
trigger = { scope:laamp_hooded_figure ?= scope:1030_third_character }
outfit_tags = { western_stealth_hood }
}
#HOOD NOBLE: We've returned here and it's still the hooded noble
triggered_animation = {
trigger = {
scope:laamp_disguised_noble ?= scope:1030_third_character
exists = scope:been_to_tavern
}
animation = drink_goblet
}
#HOOD THIEF: We've returned here and it's still the hooded thief
triggered_animation = {
trigger = {
scope:laamp_hooded_figure ?= scope:1030_third_character
exists = scope:been_to_tavern
}
animation = spymaster
}
#SPOUSE: Untapped
triggered_animation = {
trigger = {
scope:laamp_spouse_material ?= scope:1030_third_character
NOT = { exists = scope:been_to_spouse }
}
animation = personality_rational
}
#SPOUSE: Been there
triggered_animation = {
trigger = { scope:laamp_spouse_material ?= scope:1030_third_character }
animation = personality_cynical
}
#Fallback, we really shouldn't end up here
animation = personality_callous
}
#Shove the Spouse / Hood here if they exist, we've visited them but we haven't actioned them yet
lower_left_portrait = {
trigger = {
NOT = { root ?= scope:1030_fourth_character }
}
character = scope:1030_fourth_character
}
lower_center_portrait = {
trigger = {
NOT = { root ?= scope:1030_fifth_character }
}
character = scope:1030_fifth_character
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Set up the ancillary portraits to remind the player of the characters
if = {
#Hood _and_ Spouse exists
limit = {
#We've been to both at least once
exists = scope:been_to_spouse
exists = scope:been_to_hood
#We're not done with them yet
AND = {
exists = scope:laamp_spouse_material
NOT = { exists = scope:laamp_decision_has_spoused }
}
AND = {
exists = scope:laamp_hooded_figure
NOT = { exists = scope:laamp_decision_recruited_hood }
}
#This isn't already the state
NAND = {
exists = scope:1030_fourth_character
scope:1030_fourth_character ?= scope:laamp_spouse_material
exists = scope:1030_fifth_character
scope:1030_fifth_character ?= scope:laamp_hooded_figure
}
}
scope:laamp_spouse_material = { save_scope_as = 1030_fourth_character }
scope:laamp_hooded_figure = { save_scope_as = 1030_fifth_character }
}
else_if = {
#Only Spouse exists
limit = {
exists = scope:laamp_spouse_material
NOR = {
#We're not done with Spouse yet
exists = scope:laamp_decision_has_spoused
#This isn't already the state
AND = {
exists = scope:1030_fourth_character
scope:1030_fourth_character ?= scope:laamp_spouse_material
}
}
#We've been to Spouse at least once
exists = scope:been_to_spouse
}
scope:laamp_spouse_material = { save_scope_as = 1030_fourth_character }
}
else_if = {
#Hood exists but Spouse either never existed or got recruited
limit = {
exists = scope:laamp_hooded_figure
NOR = {
#We're not done with Hood yet
exists = scope:laamp_decision_recruited_hood
#This isn't already the state
AND = {
exists = scope:1030_fourth_character
scope:1030_fourth_character ?= scope:laamp_hooded_figure
}
}
#We've been to Hood at least once
exists = scope:been_to_hood
OR = {
#Either the Spouse never existed
NAND = {
exists = scope:laamp_spouse_material
exists = scope:laamp_decision_has_spoused
}
#Or we've recruited the Spouse already
AND = {
exists = scope:laamp_spouse_material
exists = scope:laamp_decision_has_spoused
}
}
}
scope:laamp_hooded_figure = { save_scope_as = 1030_fourth_character }
#If we've already attached Hood to the fifth portrait, overwrite it with ROOT to hide that portrait
if = {
limit = { exists = scope:1030_fifth_character }
save_scope_as = 1030_fifth_character
}
}
#Clean up any existing fourth/fifth portrait if we're done with all who exist
if = {
limit = {
exists = scope:1030_fourth_character
trigger_if = {
limit = {
exists = scope:laamp_spouse_material
exists = scope:laamp_hooded_figure
}
#We've recruited the Spouse already
AND = {
exists = scope:laamp_spouse_material
exists = scope:laamp_decision_has_spoused
}
#We've recruited the Hood already
AND = {
exists = scope:laamp_hooded_figure
exists = scope:laamp_decision_recruited_hood
}
}
trigger_else_if = {
limit = {
exists = scope:laamp_spouse_material
NOT = { exists = scope:laamp_hooded_figure }
}
#We've recruited the Spouse already
AND = {
exists = scope:laamp_spouse_material
exists = scope:laamp_decision_has_spoused
}
}
trigger_else_if = {
limit = {
exists = scope:laamp_hooded_figure
NOT = { exists = scope:laamp_spouse_material }
}
#We've recruited the Hood already
AND = {
exists = scope:laamp_hooded_figure
exists = scope:laamp_decision_recruited_hood
}
}
trigger_else = { always = no }
#This isn't already the state
scope:1030_fourth_character != root
}
#Overwrite with ROOT to hide that portrait
save_scope_as = 1030_fourth_character
}
if = {
limit = {
#We've recruited the Hood already
AND = {
exists = scope:laamp_hooded_figure
exists = scope:laamp_decision_recruited_hood
}
#This isn't already the state
exists = scope:1030_fifth_character
scope:1030_fifth_character != root
}
#Overwrite with ROOT to hide that portrait
save_scope_as = 1030_fifth_character
}
#Can we _not_ repeat the loc?
1025_set_and_check_hub_loc_tracker_scope_effect = { HUB = tavern }
#Some animation flavor
random_list = {
75 = {
trigger = {
exists = scope:visiting_partner
trigger_if = {
limit = { exists = scope:laamp_hooded_figure }
exists = scope:been_to_hood
}
}
set_variable = 1030_use_partner_animation_var
}
25 = {
#Nothing
}
}
#Create the spouse character
if = {
limit = {
OR = {
#Do we remember someone?
any_pool_character = {
province = scope:visiting_location
location = scope:visiting_location
root = {
is_target_in_variable_list = {
name = 1025_remembered_spouse_potential_list
target = prev #The considered spouse character
}
}
}
#Or did we actually encounter them?
any_pool_character = {
province = scope:visiting_location
location = scope:visiting_location
is_target_in_variable_list = {
name = 1030_marked_as_spouse_material_for_list
target = root
}
}
}
}
random_pool_character = {
province = scope:visiting_location
limit = {
OR = {
root = {
is_target_in_variable_list = {
name = 1025_remembered_spouse_potential_list
target = prev #The considered spouse character
}
}
is_target_in_variable_list = {
name = 1030_marked_as_spouse_material_for_list
target = root
}
}
}
save_scope_as = laamp_spouse_material
#Some more loc flavor shenanigans for these saved scopes
if = {
#Only save them if we actually interacted with them
limit = {
root = {
is_target_in_variable_list = {
name = 1025_remembered_spouse_potential_list
target = prev #The considered spouse character
}
}
}
save_scope_as = laamp_recurring_spouse
}
}
}
#No? Then roll for a new spouse
if = {
limit = {
NOR = {
exists = scope:laamp_spouse_material
#Unless you're on local cooldown
scope:visiting_location = {
is_target_in_variable_list = {
name = laamp_decisions_1000_checked_for_spouse_list
target = root
}
}
}
allowed_more_spouses = yes
}
random_list = {
75 = {
#Maybe?
modifier = {
OR = {
has_trait = seducer
has_trait = rakish
}
add = -25
}
#No spouse
}
25 = { #Nerf this number into the ground to keep our LAAMP friends spouseless forever
#Find a spouse in the pool
if = {
limit = {
NOT = { exists = scope:laamp_spouse_material }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
#We can marry them
can_marry_character_trigger = { CHARACTER = root }
#We want to marry them
root = { is_attracted_to_gender_of = prev } #Prev is the spouse scope
#They might want to marry us
is_attracted_to_gender_of = root
}
save_scope_as = laamp_spouse_material
}
}
#Otherwise create 'em
if = {
limit = {
NOT = { exists = scope:laamp_spouse_material }
}
#Gender doesn't matter
if = {
limit = { allowed_to_marry_same_sex_trigger = yes }
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
diplomacy = { low_skill_rating high_skill_rating }
martial = { low_skill_rating high_skill_rating }
stewardship = { low_skill_rating high_skill_rating }
intrigue = { low_skill_rating high_skill_rating }
learning = { low_skill_rating high_skill_rating }
save_scope_as = laamp_spouse_material
}
}
#Straight female
else_if = {
limit = { is_female = yes }
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
gender = male
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
diplomacy = { low_skill_rating high_skill_rating }
martial = { low_skill_rating high_skill_rating }
stewardship = { low_skill_rating high_skill_rating }
intrigue = { low_skill_rating high_skill_rating }
learning = { low_skill_rating high_skill_rating }
save_scope_as = laamp_spouse_material
}
}
#Straight male
else = {
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
gender = female
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
diplomacy = { low_skill_rating high_skill_rating }
martial = { low_skill_rating high_skill_rating }
stewardship = { low_skill_rating high_skill_rating }
intrigue = { low_skill_rating high_skill_rating }
learning = { low_skill_rating high_skill_rating }
save_scope_as = laamp_spouse_material
}
}
}
#Some buffs pls?
scope:laamp_spouse_material ?= {
if = {
limit = {
NOT = { has_variable = 1030_has_rolled_for_congenital_traits }
NOR = {
has_trait = beauty_good_1
has_trait = intellect_good_1
has_trait = physique_good_1
has_trait = fecund
has_trait = strong
has_trait = shrewd
}
}
hidden_effect = {
random = {
chance = 5
random_list = {
10 = { add_trait = beauty_good_1 }
10 = { add_trait = intellect_good_1 }
10 = { add_trait = physique_good_1 }
10 = { add_trait = fecund }
10 = { add_trait = strong }
10 = { add_trait = shrewd }
}
}
}
}
#Give 'em a year
add_to_variable_list = {
name = 1030_marked_as_spouse_material_for_list
target = root
days = visit_settlement_minimum_cooldown_days
}
#... no more congenital traits rolls for them
set_variable = 1030_has_rolled_for_congenital_traits
#Funny as it looks when the tooltip wanders through all possible options, this is probs what looks more WAD
if = {
limit = {
NOT = { has_variable = raunchy_compliment_noun }
}
set_raunchy_compliment_noun_effect = yes
}
}
}
}
#Set up the cooldown per holding, so that you can hop around to different taverns
scope:visiting_location = {
add_to_variable_list = {
name = laamp_decisions_1000_checked_for_spouse_list
target = root
days = visit_settlement_minimum_cooldown_days
}
}
}
#Rare: Spawn a hooded figure
if = {
limit = {
NOT = { has_variable = laamp_decision_1000_checked_for_hood }
}
random_list = {
75 = {
#No Hooded Figure
}
#Shady Noble
25 = {
#Look for the holder first
if = {
limit = {
scope:visiting_location.county.holder ?= {
1030_appropriate_noble_trigger = yes
location = scope:visiting_location
}
}
scope:visiting_location.county.holder = {
save_scope_as = laamp_hooded_figure
save_scope_as = laamp_disguised_noble
}
}
#Otherwise a landed or ladmin in the same location
if = {
limit = {
NOT = { exists = scope:laamp_hooded_figure }
}
scope:visiting_location = {
random_character_in_location = {
limit = {
1030_appropriate_noble_trigger = yes
is_landed_or_landless_administrative = yes
}
save_scope_as = laamp_hooded_figure
save_scope_as = laamp_disguised_noble
}
#... or a landed/ladmin in a neighboring province. Does this tank performance?
if = {
limit = {
NOT = { exists = scope:laamp_hooded_figure }
}
random_neighboring_province = {
limit = { is_sea_province = no }
random_character_in_location = {
limit = {
1030_appropriate_noble_trigger = yes
is_landed_or_landless_administrative = yes
}
save_scope_as = laamp_hooded_figure
save_scope_as = laamp_disguised_noble
}
}
}
}
}
scope:laamp_hooded_figure ?= {
#Don't need to pull the same ruler several times
set_variable = {
name = 1030_has_been_hooded_recently
days = visit_settlement_cooldown_days
}
}
}
#Master Thief
25 = {
#More common in Tribal/No Settlement
modifier = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
factor = 2
}
#Has this person been our thief in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_thief_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_hooded_figure
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_thief
}
#Otherwise find a thief in the pool
if = {
limit = {
NOT = { exists = scope:laamp_hooded_figure }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
is_available_healthy_adult = yes
1030_gallowsbait_character_trigger = yes
}
save_scope_as = laamp_hooded_figure
}
}
#Otherwise create a thief
if = {
limit = {
NOT = { exists = scope:laamp_hooded_figure }
}
#Create bodyguard to stuff in pool
create_character = {
template = bp1_yearly_2021_intrigue_person_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
intrigue = { decent_skill_rating high_skill_rating }
save_scope_as = laamp_hooded_figure
}
scope:laamp_hooded_figure ?= {
#Chance to add a malus trait to this spectatular being
if = {
limit = {
NOR = {
has_trait = possessed_1
has_trait = lunatic_1
has_trait = depressed_1
has_trait = drunkard
has_trait = hashishiyah
has_trait = irritable
}
}
hidden_effect = {
random = {
chance = 20
random_list = {
10 = { add_trait = possessed_1 }
10 = { add_trait = lunatic_1 }
10 = { add_trait = depressed_1 }
10 = { add_trait = drunkard }
10 = { add_trait = hashishiyah }
10 = { add_trait = irritable }
}
}
}
}
#... also, it's a criminal, so... yeah
hidden_effect = {
if = {
limit = {
NOT = { has_trait = gallowsbait }
}
add_trait = gallowsbait
random_list = {
#Bandit
25 = {
add_trait_xp = {
trait = gallowsbait
track = bandit
value = {
integer_range = {
min = medium_lifestyle_random_xp_low
max = medium_lifestyle_random_xp_high
}
}
}
}
#Trickster
25 = {
add_trait_xp = {
trait = gallowsbait
track = trickster
value = {
integer_range = {
min = medium_lifestyle_random_xp_low
max = medium_lifestyle_random_xp_high
}
}
}
}
#Thief
25 = {
add_trait_xp = {
trait = gallowsbait
track = thief
value = {
integer_range = {
min = medium_lifestyle_random_xp_low
max = medium_lifestyle_random_xp_high
}
}
}
}
#Poacher
25 = {
add_trait_xp = {
trait = gallowsbait
track = poacher
value = {
integer_range = {
min = medium_lifestyle_random_xp_low
max = medium_lifestyle_random_xp_high
}
}
}
}
#Marauder
25 = {
add_trait_xp = {
trait = gallowsbait
track = marauder
value = {
integer_range = {
min = medium_lifestyle_random_xp_low
max = medium_lifestyle_random_xp_high
}
}
}
}
}
}
}
}
}
}
}
#For the portrait
scope:laamp_hooded_figure ?= { save_scope_as = 1030_second_character }
#No decision-scumming
set_variable = {
name = laamp_decision_1000_checked_for_hood
days = visit_settlement_cooldown_days
}
}
#Set up the initial portraits
if = {
limit = {
NOT = { exists = scope:1030_portraits_setup }
}
if = {
limit = {
exists = scope:laamp_spouse_material
exists = scope:laamp_hooded_figure
}
#Spouse, Hood and Partner exists
if = {
limit = { exists = scope:visiting_partner }
scope:visiting_partner = { save_scope_as = 1030_first_character }
}
scope:laamp_spouse_material = { save_scope_as = 1030_second_character }
scope:laamp_hooded_figure = { save_scope_as = 1030_third_character }
}
else_if = {
limit = { exists = scope:laamp_spouse_material }
#Spouse and Partner exists
if = {
limit = { exists = scope:visiting_partner }
scope:visiting_partner = { save_scope_as = 1030_first_character }
}
#Save ROOT
save_scope_as = 1030_second_character
scope:laamp_spouse_material = { save_scope_as = 1030_third_character }
}
else_if = {
limit = { exists = scope:laamp_hooded_figure }
#Hood and Partner exists
if = {
limit = { exists = scope:visiting_partner }
scope:visiting_partner = { save_scope_as = 1030_first_character }
}
#Save ROOT
save_scope_as = 1030_second_character
scope:laamp_hooded_figure = { save_scope_as = 1030_third_character }
}
else_if = {
limit = { exists = scope:visiting_partner }
#Only Partner exists
scope:visiting_partner = { save_scope_as = 1030_first_character }
#Save ROOT
save_scope_as = 1030_second_character
}
else = {
#You're alone - save ROOT
save_scope_as = 1030_second_character
}
save_scope_as = 1030_portraits_setup
}
}
#Listen to a story
option = {
name = {
text = {
first_valid = {
#Return to the storyteller
triggered_desc = {
trigger = { exists = scope:been_to_storyteller }
desc = ep3_laamp_decision_event.1030.a_second
}
#First time at the storyteller's
desc = ep3_laamp_decision_event.1030.a
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1030.a.cooldown.tt
NOT = { exists = scope:laamp_decision_has_storied }
}
}
show_as_unavailable = { always = yes }
reason = storyteller
custom_tooltip = ep3_laamp_decision_event.1030.a.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = tavern }
#Go to the storyteller
trigger_event = ep3_laamp_decision_event.1031
ai_chance = { base = 100 }
}
#Look for someone to recruit
option = {
name = {
text = {
first_valid = {
#Return to the recruits
triggered_desc = {
trigger = { exists = scope:been_to_recruit }
desc = ep3_laamp_decision_event.1030.b_second
}
#First time talking to recruits
desc = ep3_laamp_decision_event.1030.b
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1030.b.cooldown.tt
NOT = { exists = scope:laamp_decision_has_recruited }
}
}
show_as_unavailable = { always = yes }
reason = recruitment
custom_tooltip = ep3_laamp_decision_event.1030.b.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = tavern }
#Go to the recruits
trigger_event = ep3_laamp_decision_event.1033
ai_chance = { base = 100 }
}
#Check out that Spouse Material
option = {
name = {
text = {
first_valid = {
#Already scoped out the spouse
triggered_desc = {
trigger = {
OR = {
exists = scope:been_to_spouse
exists = scope:laamp_recurring_spouse
}
}
desc = ep3_laamp_decision_event.1030.c_second
}
#First time talking to spouse
desc = ep3_laamp_decision_event.1030.c
}
}
}
trigger = {
exists = scope:laamp_spouse_material
#Recently recruited a spouse, settle down there
trigger_if = {
limit = { has_variable = 1035_has_spoused_recently }
custom_tooltip = {
text = ep3_laamp_decision_event.1030.c.cooldown.tt
always = no
}
}
#Loc differences
trigger_else_if = {
limit = { scope:laamp_decision_has_spoused ?= flag:no }
custom_tooltip = {
text = ep3_laamp_decision_event.1030.c.failure.cooldown.tt
always = no
}
}
trigger_else = { always = yes }
}
show_as_unavailable = {
#Show it if we return here from the Spouse screen
trigger_if = {
limit = { exists = scope:laamp_spouse_material }
always = yes
}
#If we are already married, don't show it
trigger_else = { always = no }
}
reason = potential_spouse
highlight_portrait = scope:laamp_spouse_material
#Been there once already
if = {
limit = {
OR = {
exists = scope:laamp_recurring_spouse
exists = scope:been_to_spouse
}
}
custom_tooltip = ep3_laamp_decision_event.1030.c.tt_second
}
else = {
custom_tooltip = ep3_laamp_decision_event.1030.c.tt
}
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = tavern }
#Go to the spouse material
trigger_event = ep3_laamp_decision_event.1035
ai_chance = { base = 100 }
}
#Rare Option: Visit Hooded Figure
option = {
name = {
text = {
first_valid = {
#Return to the Hood noble
triggered_desc = {
trigger = {
exists = scope:been_to_hood
exists = scope:laamp_disguised_noble
}
desc = ep3_laamp_decision_event.1030.d_third
}
#Return to the Hood thief
triggered_desc = {
trigger = { exists = scope:been_to_hood }
desc = ep3_laamp_decision_event.1030.d_second
}
#First time at the Hood
desc = ep3_laamp_decision_event.1030.d
}
}
}
trigger = {
exists = scope:laamp_hooded_figure
NOT = { exists = scope:laamp_decision_recruited_hood }
is_ai = no
}
reason = hooded_character
#Been there once already
if = {
limit = { exists = scope:been_to_hood }
custom_tooltip = ep3_laamp_decision_event.1030.d.tt_second
}
else = {
custom_tooltip = ep3_laamp_decision_event.1030.d.tt
}
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = tavern }
#Go to the hooded figure screen
trigger_event = ep3_laamp_decision_event.1037
}
#I want to do something else
option = {
name = {
text = {
first_valid = {
#Nothing left to do
triggered_desc = {
trigger = { 1030_done_with_tavern_trigger = yes }
desc = ep3_laamp_decision_event.1030.e_second
}
#Back to main square
desc = ep3_laamp_decision_event.1030.e
}
}
}
#Have we done everything? Are we closing off the option?
if = {
limit = { 1030_done_with_tavern_trigger = yes }
#Clean up unnecessary variables and close off the option
1030_finished_tavern_effect = yes
}
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = tavern }
#Go back to the main event
1000_return_to_main_effect = yes
ai_chance = { base = 100 }
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:tavern }
remove_variable ?= 1030_use_partner_animation_var
}
}
#Return to the holding hub (church grounds, castle grounds etc) from a subsequent event
scripted_effect 1031_been_to_effect = {
#For desc flavor
if = {
limit = {
NOT = { exists = scope:been_to_$GUILD$ }
}
save_scope_as = been_to_$GUILD$
}
#Go back to the previous screen
if = {
limit = { var:return_from_location ?= flag:tavern }
1031_return_to_tavern_effect = yes
}
#Go back to church grounds
if = {
limit = { var:return_from_location ?= flag:church_grounds }
1041_return_to_church_grounds_effect = yes
}
#Go back to castle grounds
if = {
limit = { var:return_from_location ?= flag:castle_grounds }
1051_return_to_castle_effect = yes
}
#Go back to craftsmen district
if = {
limit = { var:return_from_location ?= flag:craftsmen }
1061_return_to_craftsmen_effect = yes
}
}
#We return to the tavern main room to peruse other options
scripted_effect 1031_return_to_tavern_effect = {
custom_tooltip = ep3_laamp_decision_event.1031.return.tt
trigger_event = ep3_laamp_decision_event.1030
}
#Set the correct variable to block off the Storyteller option and remove the desc flavor variable
scripted_effect 1031_storied_effect = {
save_scope_as = laamp_decision_has_storied
#Go back to the tavern main room
hidden_effect = { 1031_return_to_tavern_effect = yes }
}
#The one that ya want
scripted_effect 1031_actual_skill_increase_effect = {
if = {
limit = { scope:1031_skill_to_buff = flag:diplomacy }
add_diplomacy_skill = 1
}
if = {
limit = { scope:1031_skill_to_buff = flag:martial }
add_martial_skill = 1
}
if = {
limit = { scope:1031_skill_to_buff = flag:stewardship }
add_stewardship_skill = 1
}
if = {
limit = { scope:1031_skill_to_buff = flag:intrigue }
add_intrigue_skill = 1
}
if = {
limit = { scope:1031_skill_to_buff = flag:learning }
add_learning_skill = 1
}
}
#Participation prize
scripted_effect 1031_add_skill_modifier_effect = {
if = {
limit = { scope:1031_skill_to_buff = flag:diplomacy }
add_character_modifier = {
modifier = laamp_decision_exotic_story_diplomacy_gain_modifier
days = visit_settlement_minimum_cooldown_days
}
}
if = {
limit = { scope:1031_skill_to_buff = flag:martial }
add_character_modifier = {
modifier = laamp_decision_exotic_story_martial_gain_modifier
days = visit_settlement_minimum_cooldown_days
}
}
if = {
limit = { scope:1031_skill_to_buff = flag:stewardship }
add_character_modifier = {
modifier = laamp_decision_exotic_story_stewardship_gain_modifier
days = visit_settlement_minimum_cooldown_days
}
}
if = {
limit = { scope:1031_skill_to_buff = flag:intrigue }
add_character_modifier = {
modifier = laamp_decision_exotic_story_intrigue_gain_modifier
days = visit_settlement_minimum_cooldown_days
}
}
if = {
limit = { scope:1031_skill_to_buff = flag:learning }
add_character_modifier = {
modifier = laamp_decision_exotic_story_learning_gain_modifier
days = visit_settlement_minimum_cooldown_days
}
}
}
#Modified by how low the skill is - lower means higher chance
scripted_effect 1031_boost_lowest_skill_effect = {
random_list = {
2 = {
desc = ep3_laamp_decision_event.1031.a_success.desc
trigger = {
trigger_if = {
limit = { has_variable = 1031_skill_gain_variable }
var:1031_skill_gain_variable != visit_settlement_skill_gain_cap_value
}
trigger_else = { always = yes }
}
#Skill is less than low_skill_rating
modifier = {
scope:1031_skill_to_buff_value < low_skill_rating
add = 23
}
#Skill is less than average_skill_rating
modifier = {
scope:1031_skill_to_buff_value >= low_skill_rating
scope:1031_skill_to_buff_value < average_skill_rating
add = 18
}
#Skill is less than medium_skill_rating
modifier = {
scope:1031_skill_to_buff_value >= average_skill_rating
scope:1031_skill_to_buff_value < medium_skill_rating
add = 13
}
#Skill is less than high_skill_rating
modifier = {
scope:1031_skill_to_buff_value >= medium_skill_rating
scope:1031_skill_to_buff_value < high_skill_rating
add = 8
}
#Skill is less than very_high_skill_rating
modifier = {
scope:1031_skill_to_buff_value >= high_skill_rating
scope:1031_skill_to_buff_value < very_high_skill_rating
add = 3
}
#What do you mean, only see one side of the argument?
modifier = {
has_trait = zealous
factor = 0.8
}
#Easier time finding the silver lining. Probs.
modifier = {
has_trait = eccentric
factor = 2
}
send_interface_toast = {
type = event_toast_effect_good
title = ep3_laamp_decision_event.1031.a_success.t
desc = ep3_laamp_decision_event.1031.a_success.desc
left_icon = root
#Increase skill
1031_actual_skill_increase_effect = yes
}
#We cap the max amount of skill points gained
if = {
limit = {
NOT = { has_variable = 1031_skill_gain_variable }
}
set_variable = {
name = 1031_skill_gain_variable
value = 1
}
}
else_if = {
limit = {
has_variable = 1031_skill_gain_variable
var:1031_skill_gain_variable != visit_settlement_skill_gain_cap_value
}
change_variable = {
name = 1031_skill_gain_variable
add = 1
}
}
else = {
#Nothing happens
}
}
25 = {
desc = ep3_laamp_decision_event.1031.a_semi_success.desc
send_interface_toast = {
type = event_toast_effect_neutral
title = ep3_laamp_decision_event.1031.a_semi_success.t
desc = ep3_laamp_decision_event.1031.a_semi_success.desc
left_icon = root
#Have some lifestyle xp
if = {
limit = { scope:1031_skill_to_buff = flag:diplomacy }
add_diplomacy_lifestyle_xp = medium_lifestyle_xp
}
if = {
limit = { scope:1031_skill_to_buff = flag:martial }
add_martial_lifestyle_xp = medium_lifestyle_xp
}
if = {
limit = { scope:1031_skill_to_buff = flag:stewardship }
add_stewardship_lifestyle_xp = medium_lifestyle_xp
}
if = {
limit = { scope:1031_skill_to_buff = flag:intrigue }
add_intrigue_lifestyle_xp = medium_lifestyle_xp
}
if = {
limit = { scope:1031_skill_to_buff = flag:learning }
add_learning_lifestyle_xp = medium_lifestyle_xp
}
}
}
50 = {
desc = ep3_laamp_decision_event.1031.a_failure.desc
send_interface_toast = {
type = event_toast_effect_neutral
title = ep3_laamp_decision_event.1031.a_failure.t
desc = ep3_laamp_decision_event.1031.a_failure.desc
left_icon = root
#Apply temporary skill modifier
1031_add_skill_modifier_effect = yes
}
}
}
}
#Used often enough to warrant a trigger
scripted_trigger 1031_is_max_witty_trigger = {
has_trait = tourney_participant
has_trait_xp = {
trait = tourney_participant
track = wit
value = 100
}
}
#Storyteller
ep3_laamp_decision_event.1031 = {
type = character_event
title = ep3_laamp_decision_event.1031.t
window = visit_settlement_window
desc = {
#Stay a while, and listen!
random_valid = {
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 1
var:1031_saved_storyteller_state ?= 9
}
}
desc = ep3_laamp_decision_event.1031.desc_01
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 2
var:1031_saved_storyteller_state ?= 10
}
}
desc = ep3_laamp_decision_event.1031.desc_02
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 3
var:1031_saved_storyteller_state ?= 11
}
}
desc = ep3_laamp_decision_event.1031.desc_03
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 4
var:1031_saved_storyteller_state ?= 12
}
}
desc = ep3_laamp_decision_event.1031.desc_04
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 5
var:1031_saved_storyteller_state ?= 13
}
}
desc = ep3_laamp_decision_event.1031.desc_05
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 6
var:1031_saved_storyteller_state ?= 14
}
}
desc = ep3_laamp_decision_event.1031.desc_06
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 7
var:1031_saved_storyteller_state ?= 15
}
}
desc = ep3_laamp_decision_event.1031.desc_07
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 8
var:1031_saved_storyteller_state ?= 16
}
}
desc = ep3_laamp_decision_event.1031.desc_08
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 9
var:1031_saved_storyteller_state ?= 1
}
}
desc = ep3_laamp_decision_event.1031.desc_09
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 10
var:1031_saved_storyteller_state ?= 2
}
}
desc = ep3_laamp_decision_event.1031.desc_10
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 11
var:1031_saved_storyteller_state ?= 3
}
}
desc = ep3_laamp_decision_event.1031.desc_11
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 12
var:1031_saved_storyteller_state ?= 4
}
}
desc = ep3_laamp_decision_event.1031.desc_12
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 13
var:1031_saved_storyteller_state ?= 5
}
}
desc = ep3_laamp_decision_event.1031.desc_13
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 14
var:1031_saved_storyteller_state ?= 6
}
}
desc = ep3_laamp_decision_event.1031.desc_14
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 15
var:1031_saved_storyteller_state ?= 7
}
}
desc = ep3_laamp_decision_event.1031.desc_15
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 16
var:1031_saved_storyteller_state ?= 8
}
}
desc = ep3_laamp_decision_event.1031.desc_16
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 17
var:1031_saved_storyteller_state ?= 9
}
}
desc = ep3_laamp_decision_event.1031.desc_17
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 18
var:1031_saved_storyteller_state ?= 10
}
}
desc = ep3_laamp_decision_event.1031.desc_18
}
triggered_desc = {
trigger = {
OR = {
var:1031_saved_storyteller_state ?= 19
var:1031_saved_storyteller_state ?= 11
}
}
desc = ep3_laamp_decision_event.1031.desc_19
}
}
desc = ep3_laamp_decision_event.1031.desc_outro
}
theme = landless_adventurer
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_learning" }
override_icon = { reference = "gfx/interface/icons/event_types/type_learning.dds" }
override_background = {
trigger = {
scope:visiting_location = { 1000_is_a_nomadic_holding_trigger = yes }
}
reference = bp1_bonfire
}
override_background = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
reference = bp1_kitchen_western
}
override_background = { reference = relaxing_room_location }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
triggered_animation = {
trigger = { has_trait = zealous }
animation = personality_cynical
}
animation = interested
}
center_portrait = {
character = root
triggered_animation = {
trigger = { has_trait = eccentric }
animation = happiness
}
triggered_animation = {
trigger = { has_trait = zealous }
animation = dismissal
}
animation = thinking
}
right_portrait = {
character = scope:laamp_storyteller
camera = camera_event_scheme_far_right
animation = storyteller
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Can we _not_ repeat the loc?
if = {
limit = { has_variable = 1031_saved_storyteller_state }
#We're capped out? Reset.
if = {
limit = { var:1031_saved_storyteller_state = 19 }
remove_variable ?= 1031_saved_storyteller_state
set_variable = {
name = 1031_saved_storyteller_state
value = 1
years = 10
}
}
#No? Then just increment.
else = {
save_scope_value_as = {
name = 1031_storyteller_state_cache
value = var:1031_saved_storyteller_state
}
remove_variable ?= 1031_saved_storyteller_state
set_variable = {
name = 1031_saved_storyteller_state
value = {
value = scope:1031_storyteller_state_cache
add = 1
}
years = 10
}
}
}
#Otherwise set up the counter
else = {
set_variable = {
name = 1031_saved_storyteller_state
value = {
#Randomize where we start
integer_range = {
min = 1
max = 16
}
}
years = 10
}
}
#Find our storyteller
if = {
#Do we already have a storyteller?
limit = {
NOT = { exists = scope:laamp_storyteller }
}
#Has this person been our storyteller in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
faith = scope:visiting_location.faith
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_storyteller_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_storyteller
}
#Otherwise find a storyteller in the pool
if = {
limit = {
NOT = { exists = scope:laamp_storyteller }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
has_trait = lifestyle_reveler
}
save_scope_as = laamp_storyteller
}
}
#Otherwise create a storyteller
if = {
limit = {
NOT = { exists = scope:laamp_storyteller }
}
#Create storyteller to stuff in pool
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
trait = lifestyle_reveler
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_storyteller
}
}
#Make 'em a Reveler
scope:laamp_storyteller ?= {
if = {
limit = {
NOT = { has_trait = lifestyle_reveler }
}
add_trait = lifestyle_reveler
add_trait_xp = {
trait = lifestyle_reveler
value = {
integer_range = {
min = small_lifestyle_random_xp_mid
max = small_lifestyle_random_xp_high
}
}
}
}
}
#Remember the storyteller
1010_remember_vendor_character_effect = { GUILD = storyteller CHARACTER = scope:laamp_storyteller }
}
#What skill do we buff?
if = {
limit = {
NOT = { exists = scope:1031_skill_to_buff }
}
#Roll for which skill to boost
random_list = {
1 = {
save_scope_value_as = {
name = 1031_skill_to_buff
value = flag:diplomacy
}
save_scope_value_as = {
name = 1031_skill_to_buff_value
value = diplomacy
}
}
1 = {
save_scope_value_as = {
name = 1031_skill_to_buff
value = flag:martial
}
save_scope_value_as = {
name = 1031_skill_to_buff_value
value = martial
}
}
1 = {
save_scope_value_as = {
name = 1031_skill_to_buff
value = flag:stewardship
}
save_scope_value_as = {
name = 1031_skill_to_buff_value
value = stewardship
}
}
1 = {
save_scope_value_as = {
name = 1031_skill_to_buff
value = flag:intrigue
}
save_scope_value_as = {
name = 1031_skill_to_buff_value
value = intrigue
}
}
1 = {
save_scope_value_as = {
name = 1031_skill_to_buff
value = flag:learning
}
save_scope_value_as = {
name = 1031_skill_to_buff_value
value = learning
}
}
}
}
#Save the xp trait as a static number
if = {
limit = {
NOR = {
#We're not already maxed in Wit
1031_is_max_witty_trigger = yes
exists = scope:storyteller_xp
}
}
save_scope_value_as = {
name = storyteller_xp
value = {
integer_range = {
min = small_lifestyle_random_xp_low
max = small_lifestyle_random_xp_mid
}
}
}
}
}
#Contemplate the story
option = {
name = {
text = {
first_valid = {
#Eccentric appreciates this
triggered_desc = {
trigger = { has_trait = eccentric }
desc = ep3_laamp_decision_event.1031.a_eccentric
}
#Zealous does not appreciate this
triggered_desc = {
trigger = { has_trait = zealous }
desc = ep3_laamp_decision_event.1031.a_zealous
}
#'s alright I guess
desc = ep3_laamp_decision_event.1031.a
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1031.a.cooldown.tt
NOT = { has_variable = 1031_has_storied_recently }
}
}
show_as_unavailable = { always = yes }
#Set the cooldown on the action
set_variable = {
name = 1031_has_storied_recently
days = visit_settlement_minimum_cooldown_days
}
#Chance to boost your lowest skill
1031_boost_lowest_skill_effect = yes
if = {
limit = {
has_trait = zealous
NOT = { has_trait = eccentric }
}
stress_impact = { zealous = miniscule_stress_impact_gain }
}
#Set the variables and redirect us back to the tavern main room
1031_storied_effect = yes
ai_chance = {
base = 100
modifier = {
has_variable = 1031_skill_gain_variable
var:1031_skill_gain_variable < visit_settlement_skill_gain_cap_value
add = 400 #Just do it
}
}
}
#Learn revelry or strong-arm the skill gain
option = {
name = {
text = {
first_valid = {
#I know this one!
triggered_desc = {
trigger = { 1031_is_max_witty_trigger = yes }
desc = ep3_laamp_decision_event.1031.b_reveler
}
#Yeeh narration!
desc = ep3_laamp_decision_event.1031.b
}
}
}
trigger = {
#Put a cooldown on strongarming it
trigger_if = {
limit = { 1031_is_max_witty_trigger = yes }
custom_tooltip = {
text = ep3_laamp_decision_event.1031.b.cooldown.tt
NOT = { has_variable = 1031_has_reveled_recently }
}
}
#If we're zealous, we also need to be eccentric
trigger_if = {
limit = { has_trait = zealous }
has_trait = eccentric
}
#Trigger for everyone else
trigger_else = {
always = yes
}
}
show_as_unavailable = {
#Hide if what you're missing is a trait
trigger_if = {
limit = {
has_trait = zealous
NOT = { has_trait = eccentric }
}
always = no
}
trigger_else = { always = yes }
}
#Strongarm it
if = {
limit = { 1031_is_max_witty_trigger = yes }
1031_actual_skill_increase_effect = yes
#Set the cooldown on the action
set_variable = {
name = 1031_has_reveled_recently
months = visit_settlement_small_cooldown_days
}
stress_impact = {
base = medium_stress_impact_gain
ambitious = minor_stress_impact_loss
}
}
#Otherwise learn something
else = {
#Pay up
pay_short_term_gold = {
target = scope:laamp_storyteller
gold = minor_gold_laamps_value
}
#Gain trait
if = {
limit = {
NOT = { has_trait = tourney_participant }
}
add_trait = tourney_participant
add_trait_xp = {
trait = tourney_participant
track = wit
value = scope:storyteller_xp
}
}
#Or be educated
else = {
add_trait_xp = {
trait = tourney_participant
track = wit
value = scope:storyteller_xp
}
}
}
#Set the variables and redirect us back to the tavern main room
1031_storied_effect = yes
ai_chance = {
base = 100
modifier = {
1031_is_max_witty_trigger = no
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
1031_is_max_witty_trigger = yes
stress_level > 1
factor = 0
}
}
}
#Stress relief
option = {
name = {
text = {
first_valid = {
#Blasphemy!
triggered_desc = {
trigger = { has_trait = zealous }
desc = ep3_laamp_decision_event.1031.c_zealous
}
#_I_ was entertained
desc = ep3_laamp_decision_event.1031.c
}
}
}
trigger = {
#Put a cooldown on relaxation
custom_tooltip = {
text = ep3_laamp_decision_event.1031.c.cooldown.tt
NOT = { has_variable = 1031_has_relaxed_recently }
}
}
show_as_unavailable = { always = yes }
#Heathens!
if = {
limit = { has_trait = zealous }
add_piety = minor_piety_gain
}
#Took my mind off of things
stress_impact = {
base = miniscule_stress_impact_loss
zealous = minor_stress_impact_loss
}
#Set the cooldown on the action
set_variable = {
name = 1031_has_relaxed_recently
months = visit_settlement_minimum_cooldown_days
}
#Set the variables and redirect us back to the tavern main room
1031_storied_effect = yes
ai_chance = {
base = 200 #Just do it
}
}
#I want to go back
option = {
name = ep3_laamp_decision_event.1031.d
#If you can't do anything, go in here, see the cooldown dates, go out and then we grey out the option
if = {
limit = {
has_variable = 1031_has_storied_recently
has_variable = 1031_has_reveled_recently
has_variable = 1031_has_relaxed_recently
}
#Set the variables and redirect us back to the tavern main room
1031_storied_effect = yes
}
else = {
#Set the variables and redirect us back to the tavern main room
1031_been_to_effect = { GUILD = storyteller }
}
ai_chance = { base = 100 }
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:storyteller }
}
}
#Set the correct variable to block off the Recruitment option and remove the desc flavor variable
scripted_effect 1033_recruited_effect = {
save_scope_as = laamp_decision_has_recruited
#Go back to the tavern main room
hidden_effect = { 1031_return_to_tavern_effect = yes }
}
#Tombola!
scripted_effect 1033_generate_character_effect = {
random_list = {
#Generic
60 = {
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
diplomacy = { decent_skill_rating high_skill_rating }
save_scope_as = 1033_new_character
}
}
#Diplomacy
10 = {
#Some variation
modifier = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
factor = 2
}
create_character = {
template = bp1_yearly_2021_diplomacy_person_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
diplomacy = { decent_skill_rating high_skill_rating }
save_scope_as = 1033_new_character
}
}
#Martial
10 = {
modifier = {
scope:visiting_location = { has_holding_type = castle_holding }
factor = 2
}
create_character = {
template = bp1_yearly_2021_martial_person_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
martial = { decent_skill_rating high_skill_rating }
save_scope_as = 1033_new_character
}
}
#Stewardship
10 = {
modifier = {
scope:visiting_location = { has_holding_type = city_holding }
factor = 2
}
create_character = {
template = bp1_yearly_2021_stewardship_person_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
stewardship = { decent_skill_rating high_skill_rating }
save_scope_as = 1033_new_character
}
}
#Intrigue
10 = {
modifier = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
factor = 2
}
create_character = {
template = bp1_yearly_2021_intrigue_person_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
intrigue = { decent_skill_rating high_skill_rating }
save_scope_as = 1033_new_character
}
}
#Learning
10 = {
modifier = {
scope:visiting_location = {
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
}
factor = 2
}
create_character = {
template = bp1_yearly_2021_learning_person_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
learning = { decent_skill_rating high_skill_rating }
save_scope_as = 1033_new_character
}
}
#... witch
5 = {
modifier = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
factor = 2
}
create_character = {
template = bp1_yearly_2021_learning_witch_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
learning = { decent_skill_rating high_skill_rating }
save_scope_as = 1033_new_character
}
}
}
scope:1033_new_character ?= {
#Chance to add a malus trait to this spectatular being
if = {
limit = {
NOR = {
has_trait = possessed_1
has_trait = lunatic_1
has_trait = depressed_1
has_trait = drunkard
has_trait = hashishiyah
has_trait = irritable
}
}
hidden_effect = {
random = {
chance = 20
random_list = {
10 = { add_trait = possessed_1 }
10 = { add_trait = lunatic_1 }
10 = { add_trait = depressed_1 }
10 = { add_trait = drunkard }
10 = { add_trait = hashishiyah }
10 = { add_trait = irritable }
}
}
}
}
}
if = {
limit = { scope:laamp_first_recruit ?= $SCOPE$ }
scope:1033_new_character = { save_scope_as = laamp_first_recruit }
}
if = {
limit = { scope:laamp_second_recruit ?= $SCOPE$ }
scope:1033_new_character = { save_scope_as = laamp_second_recruit }
}
if = {
limit = { scope:laamp_third_recruit ?= $SCOPE$ }
scope:1033_new_character = { save_scope_as = laamp_third_recruit }
}
}
#Used enough to warrant an effect
scripted_effect 1033_add_courtier_with_opinion_effect = {
if = {
limit = {
has_perk = professional_workforce_perk
}
$TARGET$ = {
if = {
limit = {
highest_skill_including_prowess = prowess
}
add_prowess_skill = 5
}
else_if = {
limit = {
highest_skill = intrigue
}
add_intrigue_skill = 5
}
else_if = {
limit = {
highest_skill = martial
}
add_martial_skill = 5
}
else_if = {
limit = {
highest_skill = stewardship
}
add_stewardship_skill = 5
}
else_if = {
limit = {
highest_skill = diplomacy
}
add_diplomacy_skill = 5
}
else_if = {
limit = {
highest_skill = learning
}
add_learning_skill = 5
}
hidden_effect = {
force_character_skill_recalculation = yes
}
}
}
add_courtier = $TARGET$
hidden_effect = {
$TARGET$ = {
add_opinion = {
modifier = recruited_me_opinion
target = root
opinion = 50
}
}
}
}
scripted_effect 1033_set_cost_effect = {
save_scope_value_as = {
name = $VALUE_NAME$_sum_skills
value = {
add = $CHARACTER$.diplomacy
add = $CHARACTER$.martial
add = $CHARACTER$.stewardship
add = $CHARACTER$.intrigue
add = $CHARACTER$.learning
add = $CHARACTER$.prowess
}
}
save_scope_value_as = {
name = $VALUE_NAME$
value = {
integer_range = {
min = medium_gold_laamps_value
max = major_gold_laamps_value
}
#Cheaper out in the wilds
if = {
limit = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
multiply = 0.6
}
if = { #They're stellar? More expensive. :elmofire:
limit = { scope:$VALUE_NAME$_sum_skills >= 120 } #Good in all skills?
multiply = 8 #20 in all skills
}
else_if = {
limit = { scope:$VALUE_NAME$_sum_skills >= 100 } #Good in four skills?
multiply = 5
}
else_if = {
limit = { scope:$VALUE_NAME$_sum_skills >= 80 } #Good in three skills?
multiply = 4
}
else_if = {
limit = { scope:$VALUE_NAME$_sum_skills >= 60 } #Good in two skills?
multiply = 3
}
else_if = {
limit = { scope:$VALUE_NAME$_sum_skills >= 40 } #Good in one-and-a-half skill? Should be roughly 90-110 gold
multiply = 2.5
}
else_if = {
limit = { scope:$VALUE_NAME$_sum_skills >= 20 } #Good in one skill?
multiply = 1.5
}
#Add perk discounts and other things here.
}
}
}
#This is a remotely interesting character
scripted_trigger 1033_has_interesting_skillset_trigger = {
OR = {
diplomacy > high_skill_rating
martial > high_skill_rating
stewardship > high_skill_rating
intrigue > high_skill_rating
learning > high_skill_rating
prowess > high_skill_rating
}
}
#Recruitment
ep3_laamp_decision_event.1033 = {
type = character_event
title = ep3_laamp_decision_event.1033.t
window = visit_settlement_window
desc = {
#What's going down in the recruitment corner
first_valid = {
#We've returned to this scene, now what
#RETURN: We have three recruits
random_valid = {
triggered_desc = {
trigger = {
NOT = { exists = scope:laamp_generic_jane }
exists = scope:been_to_recruit
scope:recruit_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1033.desc_returned_01
}
triggered_desc = {
trigger = {
NOT = { exists = scope:laamp_generic_jane }
scope:recruit_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1033.desc_returned_02
}
}
#RETURN: We have two recruits, and Jane
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_recruit
scope:recruit_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1033.desc_returned_jane_01
}
triggered_desc = {
trigger = { scope:recruit_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1033.desc_returned_jane_02
}
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_recruit }
}
desc = ep3_laamp_decision_event.1033.desc
}
}
#Do we have two or three potential recruits?
first_valid = {
triggered_desc = {
trigger = {
exists = scope:laamp_generic_jane
NOT = { exists = scope:been_to_recruit }
}
desc = ep3_laamp_decision_event.1033.desc_mid_two
}
triggered_desc = {
trigger = {
NOT = {
exists = scope:been_to_recruit
exists = scope:laamp_generic_jane
}
}
desc = ep3_laamp_decision_event.1033.desc_mid_three
}
}
#OUTRO:
first_valid = {
#We have a Visiting Partner
triggered_desc = {
trigger = {
exists = scope:visiting_partner
NOT = { exists = scope:laamp_generic_jane }
}
desc = ep3_laamp_decision_event.1033.desc_partner_outro
}
#We have a Generic Jane
triggered_desc = {
trigger = {
exists = scope:laamp_generic_jane
NOT = { exists = scope:been_to_recruit }
}
desc = ep3_laamp_decision_event.1033.desc_jane_outro
}
triggered_desc = {
trigger = { exists = scope:laamp_generic_jane }
desc = ep3_laamp_decision_event.1033.desc_returned_jane_outro
}
#We have no Visiting Partner or Generic Jane
desc = ep3_laamp_decision_event.1033.desc_outro
}
}
theme = landless_adventurer
override_icon = { reference = "gfx/interface/icons/event_types/type_duty.dds" }
override_background = { reference = feast }
#Our recruits
left_portrait = {
trigger = { exists = scope:1033_first_character }
character = scope:1033_first_character
triggered_animation = {
trigger = {
scope:recruit_loc_tracker ?= 1
NOT = { scope:1033_first_character ?= scope:visiting_partner }
}
animation = flirtation
}
#Friendly
triggered_animation = {
trigger = {
scope:1033_first_character = { 1010_has_friendly_traits = yes }
}
animation = admiration
}
#Business-minded
triggered_animation = {
trigger = {
scope:1033_first_character = { 1010_has_commerce_traits = yes }
}
animation = schadenfreude
}
#Uninterested
triggered_animation = {
trigger = {
scope:1033_first_character = { 1010_has_uninterested_traits = yes }
}
animation = personality_cynical
}
#Irrational
triggered_animation = {
trigger = {
scope:1033_first_character = { 1010_has_irrational_traits = yes }
}
animation = personality_irrational
}
#A bit awkward
triggered_animation = {
trigger = {
scope:1033_first_character = { 1010_has_standoffish_traits = yes }
}
animation = shame
}
animation = interested
}
center_portrait = {
character = scope:1033_second_character
triggered_animation = {
trigger = {
scope:recruit_loc_tracker ?= 1
scope:1033_second_character != root
}
animation = worry
}
#Friendly
triggered_animation = {
trigger = {
scope:1033_second_character = { 1010_has_friendly_traits = yes }
}
animation = personality_compassionate
}
#Business-minded
triggered_animation = {
trigger = {
scope:1033_second_character = { 1010_has_commerce_traits = yes }
}
animation = personality_dishonorable
}
#Uninterested
triggered_animation = {
trigger = {
scope:1033_second_character = { 1010_has_uninterested_traits = yes }
}
animation = personality_callous
}
#Irrational
triggered_animation = {
trigger = {
scope:1033_second_character = { 1010_has_irrational_traits = yes }
}
animation = laugh
}
#A bit awkward
triggered_animation = {
trigger = {
scope:1033_second_character = { 1010_has_standoffish_traits = yes }
}
animation = disbelief
}
animation = hero_flex
}
right_portrait = {
trigger = { exists = scope:1033_third_character }
character = scope:1033_third_character
camera = camera_event_scheme_center_forward
triggered_animation = {
trigger = { exists = scope:laamp_generic_jane }
animation = personality_zealous
}
triggered_animation = {
trigger = {
scope:recruit_loc_tracker ?= 1
NOT = { exists = scope:laamp_generic_jane }
}
animation = disapproval
}
#Friendly
triggered_animation = {
trigger = {
scope:1033_third_character = { 1010_has_friendly_traits = yes }
}
animation = personality_forgiving
}
#Business-minded
triggered_animation = {
trigger = {
scope:1033_third_character = { 1010_has_commerce_traits = yes }
}
animation = personality_greedy
}
#Uninterested
triggered_animation = {
trigger = {
scope:1033_third_character = { 1010_has_uninterested_traits = yes }
}
animation = disapproval
}
#Irrational
triggered_animation = {
trigger = {
scope:1033_third_character = { 1010_has_irrational_traits = yes }
}
animation = eccentric
}
#A bit awkward
triggered_animation = {
trigger = {
scope:1033_third_character = { 1010_has_standoffish_traits = yes }
}
animation = personality_coward
}
animation = scheme
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#For the background
scope:visiting_location.county.holder = { save_scope_as = bg_override_char }
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = recruit }
#Create the characters
if = {
limit = {
NOT = { exists = scope:laamp_first_recruit }
}
#First character
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
#Remotely interesting
1033_has_interesting_skillset_trigger = yes
}
save_scope_as = laamp_first_recruit
}
#Otherwise create 'em
if = {
limit = {
NOT = { exists = scope:laamp_first_recruit }
}
#Create first recruit to stuff in pool
save_scope_as = laamp_first_recruit
1033_generate_character_effect = { SCOPE = scope:laamp_first_recruit }
}
#Set their cost
1033_set_cost_effect = { CHARACTER = scope:laamp_first_recruit VALUE_NAME = first_recruit_cost }
#Second character
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
#Remotely interesting
1033_has_interesting_skillset_trigger = yes
this != scope:laamp_first_recruit
}
save_scope_as = laamp_second_recruit
}
#Otherwise create 'em
if = {
limit = {
NOT = { exists = scope:laamp_second_recruit }
}
#Create second recruit to stuff in pool
save_scope_as = laamp_second_recruit
1033_generate_character_effect = { SCOPE = scope:laamp_second_recruit }
}
#Set their cost
1033_set_cost_effect = { CHARACTER = scope:laamp_second_recruit VALUE_NAME = second_recruit_cost }
#You have no one? Well. Have a generic Joe
if = {
limit = {
any_courtier = { count <= 2 }
}
#Grab someone random
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
is_available_healthy_adult = yes
NOR = {
this = scope:laamp_first_recruit
this = scope:laamp_second_recruit
}
}
#More fun this way
weight = {
base = 1
modifier = {
any_secret = { exists = this }
factor = 2
}
}
save_scope_as = laamp_generic_jane
}
#Otherwise create 'em
if = {
limit = {
NOT = { exists = scope:laamp_generic_jane }
}
#Create generic to stuff in pool
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_generic_jane
}
#... you didn't think it would be _that_ easy, right?
scope:laamp_generic_jane ?= {
hidden_effect = {
random = {
chance = 20
random_list = {
#Have a murderer
10 = {
trigger = { is_murderer_trigger = no }
#Create a victim to kill
create_character = {
template = generic_peasant_character
culture = scope:visiting_location.location.county.culture
faith = scope:visiting_location.location.county.faith
location = scope:visiting_location.location
after_creation = { set_to_lowborn = yes }
save_scope_as = 1030_previous_victim
}
scope:1030_previous_victim = {
death = {
death_reason = death_murder
killer = scope:laamp_generic_jane
}
}
#Set up secret
scope:laamp_generic_jane = {
add_secret = {
type = secret_murder
target = scope:1030_previous_victim
}
}
}
#Or a witch
10 = {
trigger = { is_witch_trigger = no }
add_secret = { type = secret_witch }
}
#Or a cannibal
10 = {
trigger = { is_cannibal_trigger = no }
add_secret = { type = secret_cannibal }
}
#Maybe a deviant?
10 = {
trigger = { is_deviant_trigger = no }
add_secret = { type = secret_deviant }
}
}
}
}
}
}
}
#Third character
if = {
limit = {
NOT = { exists = scope:laamp_generic_jane }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
#Remotely interesting
1033_has_interesting_skillset_trigger = yes
NOR = {
this = scope:laamp_first_recruit
this = scope:laamp_second_recruit
}
}
save_scope_as = laamp_third_recruit
}
if = {
limit = {
NOT = { exists = scope:laamp_third_recruit }
}
#Create third recruit to stuff in pool
save_scope_as = laamp_third_recruit
1033_generate_character_effect = { SCOPE = scope:laamp_third_recruit }
}
#Set their cost
if = {
limit = { exists = scope:laamp_third_recruit }
1033_set_cost_effect = { CHARACTER = scope:laamp_third_recruit VALUE_NAME = third_recruit_cost }
}
}
}
#Determine whom to display
if = {
limit = {
NOT = { exists = scope:1033_second_character }
}
if = {
limit = { exists = scope:laamp_first_recruit }
scope:laamp_first_recruit = { save_scope_as = 1033_first_character }
}
if = {
limit = { exists = scope:laamp_second_recruit }
scope:laamp_second_recruit = { save_scope_as = 1033_second_character }
}
if = {
limit = { exists = scope:laamp_generic_jane }
scope:laamp_generic_jane = { save_scope_as = 1033_third_character }
}
if = {
limit = {
NOT = { exists = scope:1033_third_character }
exists = scope:laamp_third_recruit
}
scope:laamp_third_recruit = { save_scope_as = 1033_third_character }
}
if = {
limit = {
NOT = { exists = scope:1033_first_character }
exists = scope:visiting_partner
}
scope:visiting_partner = { save_scope_as = 1033_first_character }
}
if = {
limit = {
NOT = { exists = scope:1033_second_character }
}
save_scope_as = 1033_second_character
}
}
}
#Recruit character A
option = {
name = ep3_laamp_decision_event.1033.a
#Pay gold
pay_short_term_gold = {
target = scope:laamp_first_recruit
gold = scope:first_recruit_cost
}
#Hire wo/manpower
1033_add_courtier_with_opinion_effect = { TARGET = scope:laamp_first_recruit }
#Set the variables and redirect us back to the tavern main room
1033_recruited_effect = yes
#Rewards for the Camp Party
hidden_effect = {
if = {
limit = {
has_character_flag = better_recruitment_visit_holding_flag
}
scope:laamp_first_recruit = {
ep3_camp_party_visit_holding_skills_boost = yes
}
}
}
ai_chance = {
base = 50
modifier = {
short_term_gold < scope:first_recruit_cost
short_term_gold < laamp_ai_spending_pants_value
any_courtier = { count <= 2 }
factor = 0
}
}
}
#Recruit character B
option = {
name = ep3_laamp_decision_event.1033.b
#Pay gold
pay_short_term_gold = {
target = scope:laamp_second_recruit
gold = scope:second_recruit_cost
}
#Hire wo/manpower
1033_add_courtier_with_opinion_effect = { TARGET = scope:laamp_second_recruit }
#Set the variables and redirect us back to the tavern main room
1033_recruited_effect = yes
hidden_effect = {
if = {
limit = {
has_character_flag = better_recruitment_visit_holding_flag
}
scope:laamp_second_recruit = {
ep3_camp_party_visit_holding_skills_boost = yes
}
}
}
ai_chance = {
base = 50
modifier = {
short_term_gold < scope:second_recruit_cost
short_term_gold < laamp_ai_spending_pants_value
any_courtier = { count <= 2 }
factor = 0
}
}
}
#Recruit character C
option = {
name = ep3_laamp_decision_event.1033.c
trigger = {
NOT = { exists = scope:laamp_generic_jane }
}
#Pay gold
pay_short_term_gold = {
target = scope:laamp_third_recruit
gold = scope:third_recruit_cost
}
#Hire wo/manpower
1033_add_courtier_with_opinion_effect = { TARGET = scope:laamp_third_recruit }
#Set the variables and redirect us back to the tavern main room
1033_recruited_effect = yes
hidden_effect = {
if = {
limit = {
has_character_flag = better_recruitment_visit_holding_flag
}
scope:laamp_third_recruit = {
ep3_camp_party_visit_holding_skills_boost = yes
}
}
}
ai_chance = {
base = 50
modifier = {
short_term_gold < scope:third_recruit_cost
short_term_gold < laamp_ai_spending_pants_value
any_courtier = { count <= 2 }
factor = 0
}
}
}
#Generic Jane keeps waving their hand
option = {
name = ep3_laamp_decision_event.1033.d
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1033.d.cooldown.tt
NOT = { has_variable = 1033_generic_jane_cooldown }
exists = scope:laamp_generic_jane
}
}
show_as_unavailable = {
#Show that it's unavailable if it would actually be available
trigger_if = {
limit = {
exists = scope:laamp_generic_jane
has_variable = 1033_generic_jane_cooldown
}
always = yes
}
trigger_else = { always = no }
}
#Add 'em
1033_add_courtier_with_opinion_effect = { TARGET = scope:laamp_generic_jane }
set_variable = {
name = 1033_generic_jane_cooldown
days = visit_settlement_minimum_cooldown_days
}
#Set the variables and redirect us back to the tavern main room
1033_recruited_effect = yes
hidden_effect = {
if = {
limit = {
has_character_flag = better_recruitment_visit_holding_flag
}
scope:laamp_generic_jane = {
ep3_camp_party_visit_holding_skills_boost = yes
}
}
}
ai_chance = {
base = 1000 #Just do it
}
}
#I want to go back
option = {
name = ep3_laamp_decision_event.1033.e
#Set the variables and redirect us back to the tavern main room
1031_been_to_effect = { GUILD = recruit }
ai_chance = {
base = 100
modifier = {
has_trait = greedy
factor = 2
}
}
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:recruit }
}
}
#Set the correct variable to block off the Spouse option and remove the desc flavor variable
scripted_effect 1035_spoused_effect = {
save_scope_value_as = {
name = laamp_decision_has_spoused
value = flag:yes
}
#Cooldown for prowling
set_variable = {
name = 1035_has_spoused_recently
days = visit_settlement_minimum_cooldown_days
}
#Go back to the tavern main room
hidden_effect = { 1031_return_to_tavern_effect = yes }
}
#Spouse material
ep3_laamp_decision_event.1035 = {
type = character_event
title = ep3_laamp_decision_event.1035.t
window = visit_settlement_window
desc = {
#Well, hello there
first_valid = {
#We've returned to this scene, now what
#RETURN: Generics
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_spouse
scope:spouse_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1035.desc_returned_01
}
triggered_desc = {
trigger = { scope:spouse_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1035.desc_returned_02
}
}
#FIRST TIME: We've seen this spouse-r before
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_spouse
NOT = { exists = scope:been_to_spouse }
}
desc = ep3_laamp_decision_event.1035.desc_reused_spouse
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_spouse }
}
desc = ep3_laamp_decision_event.1035.desc
}
}
}
theme = seduction
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_seduction" }
override_background = {
trigger = { 1000_is_a_nomadic_holding_trigger = yes }
reference = ep3_military_tent #Give me other variations - like a yurt - and I'll use a yurt. Otherwise you get a tent.
}
override_background = {
trigger = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
reference = tavern
}
override_background = { reference = tavern }
center_portrait = {
character = root
camera = camera_event_scheme_vs_right_look_right
triggered_animation = {
trigger = {
OR = {
has_trait = paranoid
has_trait = craven
has_trait = shy
}
}
animation = shame
}
animation = ecstasy
}
right_portrait = {
character = scope:laamp_spouse_material
#First time engaging them
triggered_animation = {
trigger = {
NOT = { exists = scope:been_to_spouse }
}
animation = personality_callous
}
animation = personality_cynical
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Run this once: Re-save the portrait so the Spouse is not the 1030_second_character / 1030_third_character
if = {
limit = { scope:1030_second_character ?= scope:laamp_spouse_material }
#If we have a partner, shuffle the portraits
if = {
limit = { exists = scope:visiting_partner }
#Move ROOT into the second character slot
save_scope_as = 1030_second_character
scope:visiting_partner = { save_scope_as = 1030_first_character }
}
#Otherwise overwrite the portrait with ROOT to disappear the second one
else = { save_scope_as = 1030_second_character }
}
else_if = {
limit = { scope:1030_third_character ?= scope:laamp_spouse_material }
#Overwrite the portrait with ROOT to disappear the third one
save_scope_as = 1030_third_character
#And move ROOT into the second character slot
save_scope_as = 1030_second_character
}
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = spouse }
#Remember this potential spouse -- for a while, at least
add_to_variable_list = {
name = 1025_remembered_spouse_potential_list
target = scope:laamp_spouse_material
days = visit_settlement_minimum_cooldown_days
}
#Set the drink cost
if = {
limit = {
NOT = { exists = scope:spouse_drink_cost }
}
save_scope_value_as = {
name = spouse_drink_cost
value = {
integer_range = {
min = tiny_gold_laamps_value
max = minor_gold_laamps_value
}
}
}
}
#Pick a pick-up line
if = {
limit = {
NOT = { exists = scope:1035_saved_pickup_line }
}
random_list = {
10 = {
save_scope_value_as = {
name = 1035_saved_pickup_line
value = flag:first
}
}
10 = {
save_scope_value_as = {
name = 1035_saved_pickup_line
value = flag:second
}
}
10 = {
save_scope_value_as = {
name = 1035_saved_pickup_line
value = flag:third
}
}
10 = {
save_scope_value_as = {
name = 1035_saved_pickup_line
value = flag:fourth
}
}
10 = {
save_scope_value_as = {
name = 1035_saved_pickup_line
value = flag:fifth
}
}
}
}
}
#Buy 'em a drink
option = {
name = ep3_laamp_decision_event.1035.a
#Pay gold
remove_short_term_gold = scope:spouse_drink_cost
#Have them join your camp
1033_add_courtier_with_opinion_effect = { TARGET = scope:laamp_spouse_material }
#Set the variables and redirect us back to the tavern main room
1035_spoused_effect = yes
ai_chance = {
base = 300
modifier = {
short_term_gold < scope:spouse_drink_cost
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Intrigue Duel
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { scope:1035_saved_pickup_line ?= flag:first }
desc = ep3_laamp_decision_event.1035.b_first
}
triggered_desc = {
trigger = { scope:1035_saved_pickup_line ?= flag:second }
desc = ep3_laamp_decision_event.1035.b_second
}
triggered_desc = {
trigger = { scope:1035_saved_pickup_line ?= flag:third }
desc = ep3_laamp_decision_event.1035.b_third
}
triggered_desc = {
trigger = { scope:1035_saved_pickup_line ?= flag:fourth }
desc = ep3_laamp_decision_event.1035.b_fourth
}
triggered_desc = {
trigger = { scope:1035_saved_pickup_line ?= flag:fifth }
desc = ep3_laamp_decision_event.1035.b_fifth
}
#Fallback
desc = ep3_laamp_decision_event.1035.b_fallback
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1035.b.cooldown.tt
NOT = { has_variable = 1035_spouse_duelled_recently }
}
}
show_as_unavailable = { always = yes }
duel = {
skill = intrigue
value = average_skill_rating
#Success: Hire 'em up
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep3_laamp_decision_event.1035.b.success
send_interface_toast = {
title = ep3_laamp_decision_event.1035.b.success
left_icon = root
right_icon = scope:laamp_spouse_material
#Yippee!
1033_add_courtier_with_opinion_effect = { TARGET = scope:laamp_spouse_material }
#This 'finished' is different since it changes between flag:yes and flag:no
1035_spoused_effect = yes
}
}
#Failure: Bye, now
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -20
}
desc = ep3_laamp_decision_event.1035.b.failure
send_interface_toast = {
type = event_toast_text_bad
title = ep3_laamp_decision_event.1035.b.failure
desc = ep3_laamp_decision_event.1035.b.failure.tt
left_icon = root
right_icon = scope:laamp_spouse_material
#Oh well
custom_tooltip = ep3_laamp_decision_event.1035.b.failure.tt
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_has_spoused
value = flag:no
}
#Go back to the tavern main room
1031_return_to_tavern_effect = yes
}
}
}
#Cooldown for the action
set_variable = {
name = 1035_spouse_duelled_recently
days = visit_settlement_minimum_cooldown_days
}
ai_chance = { base = 200 }
}
#Triggered Option: Seducer
option = {
name = ep3_laamp_decision_event.1035.c
trigger = {
has_trait = seducer
is_ai = no
trigger_if = {
limit = { has_variable = 1035_spouse_unwinded_recently }
custom_tooltip = {
text = ep3_laamp_decision_event.1035.c.cooldown.tt
always = no
}
}
}
show_as_unavailable = { always = yes }
#Pick 'em up
progress_towards_lover_effect = {
CHARACTER = scope:laamp_spouse_material
REASON = lover_tavern_hookup
OPINION = 50
}
add_courtier = scope:laamp_spouse_material
save_scope_as = 1035_unwinded_with_spouse_potential
#Cooldown for the action
set_variable = {
name = 1035_spouse_unwinded_recently
months = visit_settlement_minimum_cooldown_days
}
#Set the variables and redirect us back to the tavern main room
1035_spoused_effect = yes
}
#I want to go back
option = {
name = ep3_laamp_decision_event.1035.d
#Set the variables and redirect us back to the tavern main room
1031_been_to_effect = { GUILD = spouse }
ai_chance = { base = 100 }
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:spouse }
}
}
#Set the correct variable to block off the Hood option and remove the desc flavor variable
scripted_effect 1037_hooded_effect = {
save_scope_value_as = {
name = laamp_decision_recruited_hood
value = flag:no
}
#Go back to the tavern main room
hidden_effect = { 1031_return_to_tavern_effect = yes }
}
#This implementation hurts me as much as it hurts you
scripted_effect 1037_determine_highest_gallowsbait_track_effect = {
if = {
limit = { has_trait = gallowsbait }
#Is any of it aced?
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = bandit
value = 100 #Max value
}
}
save_scope_as = ace_gallowsbait_bandit
}
else_if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = trickster
value = 100 #Max value
}
}
save_scope_as = ace_gallowsbait_trickster
}
else_if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = thief
value = 100 #Max value
}
}
save_scope_as = ace_gallowsbait_thief
}
else_if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = poacher
value = 100 #Max value
}
}
save_scope_as = ace_gallowsbait_poacher
}
else_if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = marauder
value = 100 #Max value
}
}
save_scope_as = ace_gallowsbait_marauder
}
#If two are roughly the same, randomize it
random_list = {
10 = {
trigger = { exists = scope:ace_gallowsbait_bandit }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:bandit
}
}
10 = {
trigger = { exists = scope:ace_gallowsbait_trickster }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:trickster
}
}
10 = {
trigger = { exists = scope:ace_gallowsbait_thief }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:thief
}
}
10 = {
trigger = { exists = scope:ace_gallowsbait_poacher }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:poacher
}
}
10 = {
trigger = { exists = scope:ace_gallowsbait_marauder }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:marauder
}
}
}
#No? Then find an intermediate.
if = {
limit = {
NOT = { exists = scope:1037_highest_gallowsbait_track }
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = bandit
value >= medium_lifestyle_random_xp_high
}
}
save_scope_as = intermediate_gallowsbait_bandit
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = trickster
value >= medium_lifestyle_random_xp_high
}
}
save_scope_as = intermediate_gallowsbait_trickster
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = thief
value >= medium_lifestyle_random_xp_high
}
}
save_scope_as = intermediate_gallowsbait_thief
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = poacher
value >= medium_lifestyle_random_xp_high
}
}
save_scope_as = intermediate_gallowsbait_poacher
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = marauder
value >= medium_lifestyle_random_xp_high
}
}
save_scope_as = intermediate_gallowsbait_marauder
}
#If two are roughly the same, randomize it
random_list = {
10 = {
trigger = { exists = scope:intermediate_gallowsbait_bandit }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:bandit
}
}
10 = {
trigger = { exists = scope:intermediate_gallowsbait_trickster }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:trickster
}
}
10 = {
trigger = { exists = scope:intermediate_gallowsbait_thief }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:thief
}
}
10 = {
trigger = { exists = scope:intermediate_gallowsbait_poacher }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:poacher
}
}
10 = {
trigger = { exists = scope:intermediate_gallowsbait_marauder }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:marauder
}
}
}
}
#Still nothing? How about an average.
if = {
limit = {
NOT = { exists = scope:1037_highest_gallowsbait_track }
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = bandit
value >= medium_lifestyle_random_xp_low
}
}
save_scope_as = average_gallowsbait_bandit
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = trickster
value >= medium_lifestyle_random_xp_low
}
}
save_scope_as = average_gallowsbait_trickster
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = thief
value >= medium_lifestyle_random_xp_low
}
}
save_scope_as = average_gallowsbait_thief
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = poacher
value >= medium_lifestyle_random_xp_low
}
}
save_scope_as = average_gallowsbait_poacher
}
if = {
limit = {
has_trait_xp = {
trait = gallowsbait
track = marauder
value >= medium_lifestyle_random_xp_low
}
}
save_scope_as = average_gallowsbait_marauder
}
#If two are roughly the same, randomize it
random_list = {
10 = {
trigger = { exists = scope:average_gallowsbait_bandit }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:bandit
}
}
10 = {
trigger = { exists = scope:average_gallowsbait_trickster }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:trickster
}
}
10 = {
trigger = { exists = scope:average_gallowsbait_thief }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:thief
}
}
10 = {
trigger = { exists = scope:average_gallowsbait_poacher }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:poacher
}
}
10 = {
trigger = { exists = scope:average_gallowsbait_marauder }
save_scope_value_as = {
name = 1037_highest_gallowsbait_track
value = flag:marauder
}
}
}
}
#If we still don't have a scope here, we need to have another look at the character pool pull/create, 'cause then it didn't reach medium_lifestyle_random_xp_low in any track
}
}
#Yupyup
scripted_effect 1037_hire_thief_effect = {
hidden_effect = {
reverse_add_opinion = {
target = scope:laamp_hooded_figure
modifier = recruited_me_opinion
opinion = 30
}
}
add_courtier = scope:laamp_hooded_figure
#The actual effect happens in after
show_as_tooltip = {
camp_officer_grant_effect = {
EMPLOYER = root
POS = master_thief
CANDIDATE = scope:laamp_hooded_figure
}
}
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_recruited_hood
value = flag:yes
}
#Go back to tavern
hidden_effect = { 1031_return_to_tavern_effect = yes }
}
#Pretty self-explanatory
scripted_trigger 1037_maxed_gallowsbait_track_trigger = {
OR = {
has_trait_xp = {
trait = gallowsbait
track = bandit
value = 100 #Max value
}
has_trait_xp = {
trait = gallowsbait
track = trickster
value = 100 #Max value
}
has_trait_xp = {
trait = gallowsbait
track = thief
value = 100 #Max value
}
has_trait_xp = {
trait = gallowsbait
track = poacher
value = 100 #Max value
}
has_trait_xp = {
trait = gallowsbait
track = marauder
value = 100 #Max value
}
}
}
scripted_effect 1037_noble_reward_effect = {
add_contact = scope:laamp_disguised_noble
add_hook_if_possible_default_length_effect = {
TARGET = scope:laamp_disguised_noble
TYPE = favor_hook
}
progress_towards_friend_effect = {
REASON = friend_rescued_from_tavern_brawl
CHARACTER = scope:laamp_disguised_noble
OPINION = default_friend_opinion
}
}
#Duel for your highest skill stat
scripted_effect 1037_highest_skill_duel_effect = {
if = {
limit = { highest_skill = diplomacy }
1037_duel_effect = { SKILL = diplomacy }
}
else_if = {
limit = { highest_skill = stewardship }
1037_duel_effect = { SKILL = stewardship }
}
else_if = {
limit = { highest_skill = intrigue }
1037_duel_effect = { SKILL = intrigue }
}
else_if = {
limit = { highest_skill = learning }
1037_duel_effect = { SKILL = learning }
}
else_if = {
limit = { highest_skill = martial }
1037_duel_effect = { SKILL = martial }
}
else_if = {
limit = { highest_skill_including_prowess = prowess }
1037_duel_effect = { SKILL = prowess }
}
}
#Actual duel effect
scripted_effect 1037_duel_effect = {
duel = {
skill = $SKILL$
value = medium_skill_rating
#Success: Yay, free contact
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep3_laamp_decision_event.1037.b.success
send_interface_toast = {
title = ep3_laamp_decision_event.1037.b.success.t
left_icon = root
right_icon = scope:laamp_disguised_noble
#Woo rewards
show_as_tooltip = { #Don't need two toasts for the hook
add_contact = scope:laamp_disguised_noble
progress_towards_friend_effect = {
REASON = friend_rescued_from_tavern_brawl
CHARACTER = scope:laamp_disguised_noble
OPINION = default_friend_opinion
}
}
hidden_effect = { 1037_noble_reward_effect = yes }
#Go back to the main event
1037_hooded_effect = yes
}
}
#Failure: Whoopsie, they became wounded
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -20
}
desc = ep3_laamp_decision_event.1037.b.failure
send_interface_toast = {
title = ep3_laamp_decision_event.1037.b.failure.t
left_icon = root
right_icon = scope:laamp_disguised_noble
random_list = {
50 = {
#Less chance that _we_ get hurt if we're buff
compare_modifier = { value = prowess }
#Oops
scope:laamp_disguised_noble = {
increase_wounds_effect = { REASON = fight }
}
}
50 = {
#Owwie
increase_wounds_effect = { REASON = fight }
}
}
save_scope_value_as = {
name = laamp_decision_recruited_hood
value = flag:wounded
}
#Go back to the tavern main room
1037_hooded_effect = yes
}
}
}
}
#The hooded figure
ep3_laamp_decision_event.1037 = {
type = character_event
window = visit_settlement_window
title = {
first_valid = {
#Noble
triggered_desc = {
trigger = { exists = scope:laamp_disguised_noble }
desc = ep3_laamp_decision_event.1037.t_noble
}
#Thief
desc = ep3_laamp_decision_event.1037.t
}
}
desc = {
#Hello, hooded person
first_valid = {
#We've returned to this scene, now what
#RETURN: Noble
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_hood
exists = scope:laamp_disguised_noble
scope:hood_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1037.desc_noble_returned_01
}
triggered_desc = {
trigger = {
exists = scope:laamp_disguised_noble
scope:hood_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1037.desc_noble_returned_02
}
}
#RETURN: Thief
random_valid = {
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = no
exists = scope:been_to_hood
exists = scope:1037_neighboring_holding
scope:hood_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1037.desc_returned_01
}
#Nomad variant
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
exists = scope:been_to_hood
exists = scope:1037_neighboring_holding
scope:hood_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1037.desc_nomad_returned_01
}
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = no
exists = scope:been_to_hood
scope:hood_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1037.desc_returned_02
}
#Nomad variant
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
exists = scope:been_to_hood
scope:hood_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1037.desc_nomad_returned_02
}
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = no
scope:hood_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1037.desc_returned_03
}
#Nomad variant
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
scope:hood_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1037.desc_nomad_returned_03
}
}
#FIRST TIME: We've seen this thief before
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = no
exists = scope:laamp_recurring_thief
NOT = { exists = scope:been_to_hood }
}
desc = ep3_laamp_decision_event.1037.desc_reused_thief
}
#Nomad variant
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
exists = scope:laamp_recurring_thief
NOT = { exists = scope:been_to_hood }
}
desc = ep3_laamp_decision_event.1037.desc_nomad_reused_thief
}
#FIRST TIME: Hooded noble is in trouble!
triggered_desc = {
trigger = {
exists = scope:laamp_disguised_noble
NOT = { exists = scope:been_to_hood }
}
desc = ep3_laamp_decision_event.1037.desc_noble
}
#FIRST TIME: Hooded thief
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = no
NOT = { exists = scope:been_to_hood }
}
desc = ep3_laamp_decision_event.1037.desc
}
#Nomad variant
triggered_desc = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
NOT = { exists = scope:been_to_hood }
}
desc = ep3_laamp_decision_event.1037.desc_nomad
}
}
}
theme = landless_adventurer
override_sound = {
trigger = { exists = scope:laamp_disguised_noble }
reference = "event:/SFX/Events/Themes/sfx_event_theme_type_dynasty"
}
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_intrigue" }
override_icon = {
trigger = {
NOT = { exists = scope:laamp_disguised_noble }
}
reference = "gfx/interface/icons/event_types/type_intrigue.dds"
}
override_background = {
trigger = { exists = scope:laamp_disguised_noble }
reference = tavern
}
override_background = {
trigger = { 1000_is_a_nomadic_holding_trigger = yes }
reference = ep3_relaxing_tent
}
override_background = { reference = bp1_wine_cellar }
left_portrait = {
trigger = { exists = scope:1037_left_character }
character = scope:1037_left_character
#Noble: Engaging the noble
triggered_animation = {
trigger = {
exists = scope:laamp_disguised_noble
NOT = { exists = scope:been_to_hood }
}
animation = disbelief
}
#Noble: They're fighting
triggered_animation = {
trigger = { exists = scope:laamp_disguised_noble }
animation = personality_coward
}
animation = interested
}
center_portrait = {
character = scope:1037_center_character
camera = camera_event_scheme_center_look_semi_right
#Noble: First time engaging the noble
triggered_animation = {
trigger = {
exists = scope:laamp_disguised_noble
NOT = { exists = scope:been_to_hood }
}
#_Seating tax_?!
animation = anger
}
#Noble: I am NOT paying
triggered_animation = {
trigger = { exists = scope:laamp_disguised_noble }
animation = disapproval
}
#Thief: Is... cleaning up blood?
triggered_animation = {
trigger = { scope:hood_loc_tracker ?= 1 }
animation = disbelief
}
#Thief: Don't like this
triggered_animation = {
trigger = { has_trait = honest }
animation = stress
}
#Thief
animation = personality_rational
}
right_portrait = {
character = scope:1037_right_character
camera = camera_event_scheme_far_right
#Noble: Ruffian: First time engaging the noble
triggered_animation = {
trigger = {
exists = scope:laamp_disguised_noble
NOT = { exists = scope:been_to_hood }
}
#Menacing
animation = menacing
}
#Noble: Ruffian: I am NOT paying
triggered_animation = {
trigger = { exists = scope:laamp_disguised_noble }
animation = threatening
}
#Thief: Just cleaned up some blood. 's fine.
triggered_animation = {
trigger = {
1000_is_a_nomadic_holding_trigger = yes
scope:hood_loc_tracker ?= 1
}
#Happy to see you
animation = spymaster
}
#Thief: First time engaging the thief
triggered_animation = {
trigger = {
exists = scope:laamp_recurring_thief
NOT = { exists = scope:been_to_hood }
}
#Happy to see you
animation = ecstasy
}
#Thief: Whadda ya want
triggered_animation = {
trigger = {
NOT = { exists = scope:been_to_hood }
}
#A bit reserved
animation = disapproval
}
animation = chess_cocky
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Run this once: Re-save the portrait so the Hood is not the 1030_third_character
if = {
limit = { scope:1030_third_character ?= scope:laamp_hooded_figure }
#Shuffle Spouse over, if they exist
if = {
limit = { scope:1030_second_character ?= scope:laamp_spouse_material }
scope:laamp_spouse_material ?= { save_scope_as = 1030_third_character }
}
#Otherwise overwrite the portrait with ROOT to disappear the third one
else = { save_scope_as = 1030_third_character }
#Move ROOT into the second character slot
if = {
limit = {
NOT = { scope:1030_second_character ?= root }
}
save_scope_as = 1030_second_character
}
#Remember the thief
if = {
limit = {
NOT = { exists = scope:laamp_disguised_noble }
}
1010_remember_vendor_character_effect = { GUILD = thief CHARACTER = scope:laamp_hooded_figure }
}
}
#Tweak the portraits for the noble-fight
if = {
limit = {
exists = scope:laamp_disguised_noble
NOT = { scope:1037_left_character ?= root }
}
#Move ourselves to the left
save_scope_as = 1037_left_character
#Plonk the perilous noble in the middle
scope:laamp_disguised_noble = { save_scope_as = 1037_center_character }
#Shove a ruffian on the right
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
after_creation = { set_to_lowborn = yes }
save_scope_as = 1037_local_ruffian
}
scope:1037_local_ruffian = { save_scope_as = 1037_right_character }
}
#Otherwise set up the thief situation
else_if = {
limit = {
NOR = {
exists = scope:laamp_disguised_noble
exists = scope:1037_center_character
}
}
#We go in the middle
save_scope_as = 1037_center_character
#... and the thief on the right
scope:laamp_hooded_figure = { save_scope_as = 1037_right_character }
}
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = hood }
#Thief effects
if = {
limit = {
NOR = {
exists = scope:laamp_disguised_noble
exists = scope:1037_neighboring_holding
}
}
#Save a neighboring holding
location = {
random_neighboring_province = {
limit = {
is_sea_province = no
has_holding = yes
}
save_scope_as = 1037_neighboring_holding
}
}
#Figure their highest Gallowbait track
scope:laamp_hooded_figure = { 1037_determine_highest_gallowsbait_track_effect = yes }
}
#Noble effects
if = {
limit = { exists = scope:laamp_disguised_noble }
#Exactly how much does the hooded noble owe?
save_scope_value_as = {
name = noble_tab_value
value = {
value = scope:laamp_disguised_noble.medium_gold_value
#Go outside of the city to drink, eh
if = {
limit = {
scope:visiting_location = {
OR = {
has_holding_type = tribal_holding
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
multiply = 0.5
}
}
}
}
}
#Noble: Pay their tab
option = {
name = ep3_laamp_decision_event.1037.a
trigger = { exists = scope:laamp_disguised_noble }
flavor = ep3_laamp_decision_event.1037.a.flavor
#Pay up
remove_short_term_gold = scope:noble_tab_value
#Woo rewards
1037_noble_reward_effect = yes
#Quite the molah
stress_impact = { greedy = minor_stress_impact_gain }
#Set the variables and redirect us back to the tavern main room
1037_hooded_effect = yes
}
#Noble: Duel the villain
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { highest_skill_including_prowess = diplomacy }
desc = ep3_laamp_decision_event.1037.b_diplomacy
}
triggered_desc = {
trigger = { highest_skill_including_prowess = stewardship }
desc = ep3_laamp_decision_event.1037.b_stewardship
}
triggered_desc = {
trigger = { highest_skill_including_prowess = intrigue }
desc = ep3_laamp_decision_event.1037.b_intrigue
}
triggered_desc = {
trigger = { highest_skill_including_prowess = learning }
desc = ep3_laamp_decision_event.1037.b_learning
}
triggered_desc = {
trigger = {
OR = {
highest_skill_including_prowess = martial
highest_skill_including_prowess = prowess
}
}
desc = ep3_laamp_decision_event.1037.b_martial
}
}
}
}
trigger = { exists = scope:laamp_disguised_noble }
flavor = ep3_laamp_decision_event.1037.b.flavor
#Duel effect
1037_highest_skill_duel_effect = yes
}
#Noble Triggered Option: We're pretty bad, bro
option = {
name = ep3_laamp_decision_event.1037.c
trigger = {
exists = scope:laamp_disguised_noble
has_trait = gallowsbait
OR = {
#Bandit
has_trait_xp = {
trait = gallowsbait
track = bandit
value > 50 #Half-way
}
#Trickster
has_trait_xp = {
trait = gallowsbait
track = trickster
value > 50 #Half-way
}
#Thief
has_trait_xp = {
trait = gallowsbait
track = thief
value > 50 #Half-way
}
#Poacher
has_trait_xp = {
trait = gallowsbait
track = poacher
value > 50 #Half-way
}
#Marauder
has_trait_xp = {
trait = gallowsbait
track = marauder
value > 50 #Half-way
}
}
}
flavor = ep3_laamp_decision_event.1037.c.flavor
if = {
limit = {
NOT = {
has_trait_xp = {
trait = gallowsbait
track = marauder
value = 100 #Max
}
}
}
add_trait_xp = {
trait = gallowsbait
track = marauder
value = small_lifestyle_random_xp_low
}
}
#Woo rewards
1037_noble_reward_effect = yes
#I just don't like being criminal, OK?
stress_impact = {
honest = minor_stress_impact_gain
}
#Set the variables and redirect us back to the tavern main room
1037_hooded_effect = yes
}
#Thief: Recruit them (expensive)
option = {
name = {
text = {
first_valid = {
#I have an open position...
triggered_desc = {
trigger = { can_employ_court_position_type = master_thief_camp_officer }
desc = ep3_laamp_decision_event.1037.d_thief_position
}
#Standard reply
desc = ep3_laamp_decision_event.1037.d
}
}
}
#Replace it with the strongarm option if we have aced a Gallowsbait track
trigger = {
1037_maxed_gallowsbait_track_trigger = no
#Not available if it's the hooded noble
NOT = { exists = scope:laamp_disguised_noble }
}
#Half if you can offer them an attractive position
if = {
limit = { can_employ_court_position_type = master_thief_camp_officer } #If we, sometime in the future, easily can determine which track of a scaling trait is highest, let's gate it to Thief track
pay_short_term_gold = {
target = scope:laamp_hooded_figure
gold = {
value = major_gold_laamps_value
divide = 2
}
}
#Hire them (effect in After)
1037_hire_thief_effect = yes
}
#Otherwise pay up
else = {
pay_short_term_gold = {
target = scope:laamp_hooded_figure
gold = major_gold_laamps_value
}
#Have them join your camp
1033_add_courtier_with_opinion_effect = { TARGET = scope:laamp_hooded_figure }
#Set the variables and redirect us back to the tavern main room
1037_hooded_effect = yes
}
}
#Thief: Intrigue Duel
option = {
name = ep3_laamp_decision_event.1037.e
#Replace it with the strongarm option if we have aced a Gallowsbait track
trigger = {
1037_maxed_gallowsbait_track_trigger = no
#Not available if it's the hooded noble
NOT = { exists = scope:laamp_disguised_noble }
}
duel = {
skill = intrigue
target = scope:laamp_hooded_figure
#Success: Hire 'em up
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 2
desc = ep3_laamp_decision_event.1037.e.success
send_interface_toast = {
title = ep3_laamp_decision_event.1037.e.success
left_icon = root
right_icon = scope:laamp_hooded_figure
#Yippee!
if = {
limit = { can_employ_court_position_type = master_thief_camp_officer }
#Hire them (effect in After)
1037_hire_thief_effect = yes
}
else = {
1033_add_courtier_with_opinion_effect = { TARGET = scope:laamp_hooded_figure }
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_recruited_hood
value = flag:yes
}
#Go back to tavern
hidden_effect = { 1031_return_to_tavern_effect = yes }
}
}
}
#Failure: Bye, now
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -20
}
desc = ep3_laamp_decision_event.1037.e.failure
send_interface_toast = {
type = event_toast_text_bad
title = ep3_laamp_decision_event.1037.e.failure
desc = ep3_laamp_decision_event.1037.e.failure.tt
left_icon = root
right_icon = scope:laamp_hooded_figure
#Oh well
custom_tooltip = ep3_laamp_decision_event.1037.e.failure.tt
#This 'finished' is different since it changes between flag:yes and flag:no
1037_hooded_effect = yes
}
}
}
}
#Thief: Teach me about Gallowsbait...
option = {
name = ep3_laamp_decision_event.1037.f
trigger = {
#Unless you are full in whatever the hooded figure offers
NOR = {
#Bandit
AND = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = bandit
value >= 100 #Max value
}
scope:1037_highest_gallowsbait_track ?= flag:bandit
}
#Trickster
AND = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = trickster
value >= 100 #Max value
}
scope:1037_highest_gallowsbait_track ?= flag:trickster
}
#Thief
AND = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = thief
value >= 100 #Max value
}
scope:1037_highest_gallowsbait_track ?= flag:thief
}
#Poacher
AND = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = poacher
value >= 100 #Max value
}
scope:1037_highest_gallowsbait_track ?= flag:poacher
}
#Marauder
AND = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = marauder
value >= 100 #Max value
}
scope:1037_highest_gallowsbait_track ?= flag:marauder
}
}
#Not available if it's the hooded noble
NOT = { exists = scope:laamp_disguised_noble }
}
#Get trait
if = {
limit = {
NOT = { has_trait = gallowsbait }
}
add_trait = gallowsbait
}
#Or get a significant amount of experience in trait
else = {
#Pay gold
pay_short_term_gold = {
target = scope:laamp_hooded_figure
gold = medium_gold_laamps_value
}
if = {
limit = { scope:1037_highest_gallowsbait_track ?= flag:bandit }
add_trait_xp = {
trait = gallowsbait
track = bandit
value = trait_third_level_value
}
}
else_if = {
limit = { scope:1037_highest_gallowsbait_track ?= flag:trickster }
add_trait_xp = {
trait = gallowsbait
track = trickster
value = trait_third_level_value
}
}
else_if = {
limit = { scope:1037_highest_gallowsbait_track ?= flag:thief }
add_trait_xp = {
trait = gallowsbait
track = thief
value = trait_third_level_value
}
}
else_if = {
limit = { scope:1037_highest_gallowsbait_track ?= flag:poacher }
add_trait_xp = {
trait = gallowsbait
track = poacher
value = trait_third_level_value
}
}
else_if = {
limit = { scope:1037_highest_gallowsbait_track ?= flag:marauder }
add_trait_xp = {
trait = gallowsbait
track = marauder
value = trait_third_level_value
}
}
}
#Some Intrigue lifestyle gain, coming up
add_intrigue_lifestyle_xp = medium_lifestyle_xp
#Stressful for honest characters
stress_impact = {
honest = minor_stress_impact_gain
}
#Set the variables and redirect us back to the tavern main room
1037_hooded_effect = yes
}
#Thief Triggered Option: You have aced Gallowsbait in a track
option = {
name = ep3_laamp_decision_event.1037.g
trigger = {
has_trait = gallowsbait
1037_maxed_gallowsbait_track_trigger = yes
#Not available if it's the hooded noble
NOT = { exists = scope:laamp_disguised_noble }
}
1033_add_courtier_with_opinion_effect = { TARGET = scope:laamp_hooded_figure }
#Set the variables and redirect us back to the tavern main room
1037_hooded_effect = yes
ai_chance = {
base = 100
}
}
#I want to go back
option = {
name = ep3_laamp_decision_event.1037.h
#Set the variables and redirect us back to the tavern main room
1031_been_to_effect = { GUILD = hood }
}
after = {
if = {
limit = { scope:laamp_decision_recruited_hood ?= flag:yes }
#Appoint them
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:laamp_hooded_figure
COURT_POS = master_thief_camp_officer
}
}
camp_officer_grant_effect = {
EMPLOYER = root
POS = master_thief
CANDIDATE = scope:laamp_hooded_figure
}
}
}
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:hood }
}
}
######################################################################
# CHURCH GROUNDS
# ep3_laamp_decision_event.1040
######################################################################
#Set the correct variable to block off the Church option and remove the desc flavor variable
scripted_effect 1040_finished_churched_effect = {
remove_list_variable = {
name = list_of_options
target = flag:has_church_option
}
save_scope_as = laamp_decision_finished_church_option
}
#Nothing left for us to do
scripted_trigger 1040_done_with_church_trigger = {
exists = scope:laamp_decision_has_healed
exists = scope:laamp_decision_has_churched
exists = scope:laamp_decision_has_gardened
trigger_if = {
limit = { exists = scope:laamp_physician_recruit }
exists = scope:laamp_decision_recruited_physician
}
}
#One of your sick kids who wouldn't fit the visiting_partner trigger
scripted_trigger 1040_sickly_minor_trigger = {
location = root.location
is_courtier_of = root
is_travelling = no
is_imprisoned = no
1000_has_illness_or_wound_to_treat_trigger = yes
age < 10
}
#Church Holding: Visit the local church grounds
ep3_laamp_decision_event.1040 = {
type = character_event
title = ep3_laamp_decision_event.1040.t
window = visit_settlement_window
desc = {
#Intro
first_valid = {
#We've returned to this scene, now what
#RETURN: We've returned from Main Square
random_valid = {
triggered_desc = {
trigger = {
var:return_from_location ?= flag:main_square
exists = scope:been_to_church_grounds
OR = {
scope:church_grounds_loc_tracker ?= 0
scope:church_grounds_loc_tracker ?= 2
}
}
desc = ep3_laamp_decision_event.1040.desc_returned_01
}
triggered_desc = {
trigger = {
var:return_from_location ?= flag:main_square
scope:church_grounds_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1040.desc_returned_02
}
}
#RETURN: We've returned from the Healer
triggered_desc = {
trigger = { var:return_from_location ?= flag:healer }
desc = ep3_laamp_decision_event.1040.desc_returned_from_healer
}
#RETURN: We've returned from the Church
triggered_desc = {
trigger = { var:return_from_location ?= flag:church }
desc = ep3_laamp_decision_event.1040.desc_returned_from_church
}
#RETURN: We've returned from the Garden
triggered_desc = {
trigger = { var:return_from_location ?= flag:garden }
desc = ep3_laamp_decision_event.1040.desc_returned_from_garden
}
#RETURN: We've returned from the Physician
triggered_desc = {
trigger = { var:return_from_location ?= flag:physician }
desc = ep3_laamp_decision_event.1040.desc_returned_from_physician
}
#FIRST TIME: First time here
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_church_grounds }
}
desc = ep3_laamp_decision_event.1040.desc
}
}
#Outro
first_valid = {
#FIRST TIME: For some reason, you have both Sickly Minor and Physician
triggered_desc = {
trigger = {
exists = scope:laamp_physician_recruit
exists = scope:1040_sickly_minor
NOT = { exists = scope:been_to_church_grounds }
}
desc = ep3_laamp_decision_event.1040.desc_outro_physician_sickly_minor
}
#FIRST TIME: First time here, look at the physician
triggered_desc = {
trigger = {
exists = scope:laamp_physician_recruit
NOT = { exists = scope:been_to_church_grounds }
}
desc = ep3_laamp_decision_event.1040.desc_outro_physician
}
#FIRST TIME: First time here, sickly minor
triggered_desc = {
trigger = {
exists = scope:1040_sickly_minor
NOT = { exists = scope:been_to_church_grounds }
}
desc = ep3_laamp_decision_event.1040.desc_outro_sickly_minor
}
#FIRST TIME: First time here, curious partner
triggered_desc = {
trigger = {
exists = scope:visiting_partner
NOT = { exists = scope:been_to_church_grounds }
}
desc = ep3_laamp_decision_event.1040.desc_outro_partner
}
#FIRST TIME: First time here
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_church_grounds }
}
desc = ep3_laamp_decision_event.1040.desc_outro
}
#RETURN: Partner - there is nothing left for us here
triggered_desc = {
trigger = {
exists = scope:visiting_partner
1040_done_with_church_trigger = yes
}
desc = ep3_laamp_decision_event.1040.desc_outro_return_partner_finished
}
#RETURN: There is nothing left for us here
triggered_desc = {
trigger = { 1040_done_with_church_trigger = yes }
desc = ep3_laamp_decision_event.1040.desc_outro_return_finished
}
#RETURN: Physician did not move to their study, yet
triggered_desc = {
trigger = {
exists = scope:laamp_physician_recruit
NOR = {
exists = scope:been_to_physician
exists = scope:laamp_decision_recruited_physician
}
}
desc = ep3_laamp_decision_event.1040.desc_outro_physician_return
}
#RETURN: We've been here before
first_valid = {
#RETURN: Sickly minor is still at the healer's
triggered_desc = {
trigger = {
exists = scope:1040_sickly_minor
var:return_from_location ?= flag:healer
scope:1040_sickly_minor = { has_any_illness = yes }
}
desc = ep3_laamp_decision_event.1040.desc_outro_sickly_minor_return
}
random_valid = {
#RETURN: Partner flavor
triggered_desc = {
trigger = {
exists = scope:visiting_partner
exists = scope:been_to_church_grounds
scope:church_grounds_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1040.desc_outro_return_partner_01
}
triggered_desc = {
trigger = {
exists = scope:visiting_partner
scope:church_grounds_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1040.desc_outro_return_partner_02
}
triggered_desc = {
trigger = {
exists = scope:visiting_partner
scope:church_grounds_loc_tracker ?= 2
}
desc = ep3_laamp_decision_event.1040.desc_outro_return_partner_03
}
#RETURN: Generics
triggered_desc = {
trigger = {
exists = scope:been_to_church_grounds
scope:church_grounds_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1040.desc_outro_return_01
}
triggered_desc = {
trigger = { scope:church_grounds_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1040.desc_outro_return_02
}
triggered_desc = {
trigger = { scope:church_grounds_loc_tracker ?= 2 }
desc = ep3_laamp_decision_event.1040.desc_outro_return_03
}
}
}
}
}
theme = faith
#Get outta here already
override_effect_2d = {
trigger = {
1040_done_with_church_trigger = yes
scope:visiting_location = { is_drylands_or_desert_trigger = no }
}
reference = rain
}
override_background = {
trigger = {
location = {
culture = { has_graphical_east_asia_culture_group_trigger = no }
geographical_region = world_asia_southeast
}
}
reference = holy_site_generic
}
override_background = { reference = courtyard_location }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#If it's our (tired) visiting partner
triggered_animation = {
trigger = { 1040_done_with_church_trigger = yes }
animation = boredom
}
#Concerned about our kid
triggered_animation = {
trigger = {
exists = scope:1040_sickly_minor
is_close_family_of = scope:1040_sickly_minor
OR = {
AND = {
var:return_from_location ?= flag:healer
scope:1040_sickly_minor = { has_any_illness = yes }
}
NOT = { exists = scope:been_to_church_grounds }
}
}
animation = stress
}
#Zealous dudette
triggered_animation = {
trigger = {
scope:visiting_partner = { has_trait = zealous }
}
animation = personality_zealous
}
#Cynical dude
triggered_animation = {
trigger = {
scope:visiting_partner = { has_trait = cynical }
}
animation = personality_cynical
}
#Friendly
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_friendly_traits = yes }
}
animation = personality_forgiving
}
#Business-minded
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_commerce_traits = yes }
}
animation = personality_greedy
}
#Uninterested
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_uninterested_traits = yes }
}
animation = personality_callous
}
#Irrational
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_irrational_traits = yes }
}
animation = personality_irrational
}
#A bit awkward
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_standoffish_traits = yes }
}
animation = personality_coward
}
animation = survey
}
center_portrait = {
character = root
#Concerned about our kid
triggered_animation = {
trigger = {
exists = scope:1040_sickly_minor
OR = {
AND = {
var:return_from_location ?= flag:healer
scope:1040_sickly_minor = { has_any_illness = yes }
}
NOT = { exists = scope:been_to_church_grounds }
}
}
animation = worry
}
#Bah, humbug
triggered_animation = {
trigger = {
OR = {
has_trait = cynical
any_secret = { type = secret_non_believer }
}
}
animation = boredom
}
animation = personality_content
}
#Do we have a Physician?
right_portrait = {
trigger = {
exists = scope:1040_third_character
#If this is root, then that means we have talked to the Physician, so let's disappear the portrait
scope:1040_third_character != root
}
camera = camera_event_scheme_center_forward
character = scope:1040_third_character
#Otherwise it's the Physician
animation = personality_zealous
}
#Shove the Physician as long as we've visited them but haven't actioned them
lower_left_portrait = {
trigger = {
exists = scope:1040_fourth_character
#Unless we've actioned them and overwritten them with ROOT
scope:1040_fourth_character != root
}
character = scope:1040_fourth_character
}
#Show the kid here if not actioned
lower_center_portrait = {
trigger = {
exists = scope:1040_fifth_character
scope:1040_sickly_minor = { has_any_illness = yes }
scope:1040_fifth_character != root
}
character = scope:1040_fifth_character
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Set up the ancillary portraits to remind the player of the characters
if = {
#Physician exists
limit = {
#We've been to them at least once
exists = scope:been_to_physician
#We're not done with them yet
AND = {
exists = scope:laamp_physician_recruit
NOT = { exists = scope:laamp_decision_recruited_physician }
}
#This isn't already the state
NAND = {
exists = scope:1040_fourth_character
scope:1040_fourth_character ?= scope:laamp_physician_recruit
}
}
scope:laamp_physician_recruit = { save_scope_as = 1040_fourth_character }
}
#Clear out the ancillary portrait(s)
if = {
limit = {
exists = scope:1040_fourth_character
scope:laamp_physician_recruit ?= scope:1040_fourth_character
exists = scope:laamp_decision_recruited_physician
}
#Overwrite with ROOT to hide that portrait
save_scope_as = 1040_fourth_character
}
if = {
limit = {
exists = scope:1040_fifth_character
scope:1040_sickly_minor ?= scope:1040_fifth_character
exists = scope:laamp_decision_has_healed
}
#Overwrite with ROOT to hide that portrait
save_scope_as = 1040_fifth_character
}
#Can we _not_ repeat the loc?
1025_set_and_check_hub_loc_tracker_scope_effect = { HUB = church_grounds }
#Do we have a sick minor we snuck along?
if = {
limit = {
NOT = { exists = scope:1040_sickly_minor }
any_close_family_member = { 1040_sickly_minor_trigger = yes }
}
random_close_family_member = {
limit = { 1040_sickly_minor_trigger = yes }
save_scope_as = 1040_sickly_minor
save_scope_as = 1040_fifth_character
}
}
#Rare: Spawn a spectacular Physician
if = {
limit = {
NOT = { has_variable = laamp_decision_1000_checked_for_physician }
}
random_list = {
80 = {
#No Physician
}
20 = {
#Has this person been our physician in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_physician_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_physician_recruit
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_physician
}
#Otherwise find a physician in the pool
if = {
limit = {
NOT = { exists = scope:laamp_physician_recruit }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
has_trait = devoted
learning >= 15
OR = {
has_trait = lifestyle_physician
has_trait = lifestyle_herbalist
has_trait = lifestyle_mystic
}
}
save_scope_as = laamp_physician_recruit
}
}
#Otherwise create a physician
if = {
limit = {
NOT = { exists = scope:laamp_physician_recruit }
}
#Create physician to stuff in pool
create_character = {
template = bp1_yearly_2021_learning_person_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
learning = { decent_skill_rating high_skill_rating }
save_scope_as = laamp_physician_recruit
}
scope:laamp_physician_recruit ?= {
#Chance to add a malus trait to this spectatular being
if = {
limit = {
NOR = {
has_trait = possessed_1
has_trait = lunatic_1
has_trait = depressed_1
has_trait = drunkard
has_trait = hashishiyah
has_trait = irritable
any_secret = { type = secret_witch }
}
}
hidden_effect = {
random = {
chance = 20
random_list = {
10 = { add_trait = possessed_1 }
10 = { add_trait = lunatic_1 }
10 = { add_trait = depressed_1 }
10 = { add_trait = drunkard }
10 = { add_trait = hashishiyah }
10 = { add_trait = irritable }
10 = {
add_secret = { type = secret_witch }
}
}
}
}
}
if = {
limit = {
NOT = { has_trait = devoted }
}
add_trait = devoted
}
}
}
scope:laamp_physician_recruit = { save_scope_as = 1040_third_character }
#Remember the physician
1010_remember_vendor_character_effect = { GUILD = physician CHARACTER = scope:laamp_physician_recruit }
}
}
#No decision-scumming
set_variable = {
name = laamp_decision_1000_checked_for_physician
days = visit_settlement_cooldown_days
}
}
#Make sure we remember the church isn't available because you were a thieving heathen
if = {
limit = {
NOT = { exists = scope:laamp_decision_has_churched }
has_variable = 1040_caught_stealing
}
save_scope_as = laamp_decision_has_churched
}
}
#Attempt to improve your health // OR // Attempt to cure (curable) illness
option = {
name = {
text = {
first_valid = {
#Sickly child is still waiting at the healer's
triggered_desc = {
trigger = {
exists = scope:been_to_healer
exists = scope:1040_sickly_minor
NOT = { exists = scope:laamp_decision_has_healed }
}
desc = ep3_laamp_decision_event.1040.a_second_sickly_minor
}
#Return to healer
triggered_desc = {
trigger = { exists = scope:been_to_healer }
desc = ep3_laamp_decision_event.1040.a_second
}
#We are meeting a sickly child at the healer's
triggered_desc = {
trigger = { exists = scope:1040_sickly_minor }
desc = ep3_laamp_decision_event.1040.a_sickly_minor
}
#First time going to healer
desc = ep3_laamp_decision_event.1040.a
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1040.a.cooldown.tt
NOT = { exists = scope:laamp_decision_has_healed }
}
}
show_as_unavailable = { always = yes }
reason = visit_healer
custom_tooltip = ep3_laamp_decision_event.1040.a.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = church_grounds }
#Go to the Healer screen
trigger_event = ep3_laamp_decision_event.1041
ai_chance = { base = 100 }
}
#Visit church
option = {
name = {
text = {
first_valid = {
#Return to church
triggered_desc = {
trigger = { exists = scope:been_to_church }
desc = ep3_laamp_decision_event.1040.b_second
}
#First time at church
desc = ep3_laamp_decision_event.1040.b
}
}
}
trigger = {
#You were recently caught stealing from the church
trigger_if = {
limit = { has_variable = 1040_caught_stealing }
custom_tooltip = {
text = caught_stealing.tt
always = no
}
}
trigger_else = {
custom_tooltip = {
text = ep3_laamp_decision_event.1040.b.cooldown.tt
NOT = { exists = scope:laamp_decision_has_churched }
}
}
}
show_as_unavailable = { always = yes }
reason = visit_church
custom_tooltip = ep3_laamp_decision_event.1040.b.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = church_grounds }
#Go to the Church screen
trigger_event = ep3_laamp_decision_event.1043
ai_chance = {
base = 100
modifier = {
has_trait = zealous
factor = 2
}
modifier = {
has_trait = pilgrim
factor = 2
}
}
}
#Convert to local faith // OR // Contemplate faith
option = {
name = {
text = {
first_valid = {
#Convert to faith
triggered_desc = {
trigger = { exists = scope:been_to_garden }
desc = ep3_laamp_decision_event.1040.c_second
}
#Contemplate faith
desc = ep3_laamp_decision_event.1040.c
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1040.c.cooldown.tt
NOT = { exists = scope:laamp_decision_has_gardened }
}
}
show_as_unavailable = { always = yes }
reason = visit_garden
custom_tooltip = ep3_laamp_decision_event.1040.c.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = church_grounds }
#Go to the Garden screen
trigger_event = ep3_laamp_decision_event.1045
ai_chance = {
base = 100
modifier = {
stress_level >= 2
add = 400
}
}
}
#Rare Option: Hire cheaper, skilled, Physician
option = {
name = {
text = {
first_valid = {
#Return to talk to physician
triggered_desc = {
trigger = { exists = scope:been_to_physician }
desc = ep3_laamp_decision_event.1040.d_second
}
#First time talking to physician
desc = ep3_laamp_decision_event.1040.d
}
}
}
trigger = {
exists = scope:laamp_physician_recruit
NOT = { exists = scope:laamp_decision_recruited_physician }
}
reason = recruit_physician
custom_tooltip = ep3_laamp_decision_event.1040.d.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = church_grounds }
#For the Physician screen
trigger_event = ep3_laamp_decision_event.1047
ai_chance = {
base = 1000 #Just do it
}
}
#I want to do something else
option = {
name = {
text = {
first_valid = {
#Nothing left to do
triggered_desc = {
trigger = { 1040_done_with_church_trigger = yes }
desc = ep3_laamp_decision_event.1040.e_second
}
#Back to main square
desc = ep3_laamp_decision_event.1040.e
}
}
}
#Have we done everything? Are we closing off the option?
if = {
limit = { 1040_done_with_church_trigger = yes }
#Clean up unnecessary variables and close off the option
1040_finished_churched_effect = yes
}
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = church_grounds }
#Go back to the main event
1000_return_to_main_effect = yes
ai_chance = { base = 100 }
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:church_grounds }
}
}
#Pretty straight forward
scripted_effect 1041_chance_to_buff_item_rarity_effect = {
random_list = {
20 = {
trigger = {
exists = scope:laamp_healer_character
$VENDOR$ = scope:laamp_healer_character
}
set_artifact_rarity_famed = yes
}
40 = {
modifier = {
exists = scope:laamp_jeweler_craftsman
$VENDOR$ = scope:laamp_jeweler_craftsman
factor = 2
}
set_artifact_rarity_masterwork = yes
}
80 = {
set_artifact_rarity_common = yes
}
}
}
#Reused effect to set the value variables
scripted_effect 1041_set_item_value_effect = {
#Weapon cost
if = {
limit = { has_variable = 1061_laamp_decision_weapon }
if = {
limit = { rarity = masterwork }
set_variable = {
name = 1061_weapon_value
value = {
value = root.major_gold_value
multiply = { 1 1.5 }
}
}
}
else = {
set_variable = {
name = 1061_weapon_value
value = {
value = root.medium_gold_value
multiply = { 0.75 1.25 }
}
}
}
}
#Armor cost
if = {
limit = { has_variable = 1063_laamp_decision_armor }
if = {
limit = { rarity = masterwork }
set_variable = {
name = 1063_armor_value
value = {
value = root.major_gold_value
multiply = { 1.5 2 }
}
}
}
else = {
set_variable = {
name = 1063_armor_value
value = {
value = root.medium_gold_value
multiply = { 1.25 1.75 }
}
}
}
}
#Accessory cost
if = {
limit = {
OR = {
has_variable = 1041_laamp_decision_health_artifact
has_variable = 1065_laamp_decision_accessory
}
}
if = {
limit = {
rarity = famed
has_variable = 1041_laamp_decision_health_artifact
}
set_variable = {
name = 1065_accessory_value
value = {
value = root.massive_gold_value
multiply = { 1 1.5 }
}
}
}
else_if = {
limit = { rarity = masterwork }
set_variable = {
name = 1065_accessory_value
value = {
value = root.major_gold_value
multiply = { 1.25 1.75 }
}
}
}
else = {
set_variable = {
name = 1065_accessory_value
value = {
value = root.medium_gold_value
multiply = { 1 1.5 }
}
}
}
}
}
#We return to the church grounds event to peruse other options
scripted_effect 1041_return_to_church_grounds_effect = {
custom_tooltip = ep3_laamp_decision_event.1041.return.tt
trigger_event = ep3_laamp_decision_event.1040
}
#Set the correct variable to block off the Healer option and remove the desc flavor variable
scripted_effect 1041_healed_effect = {
scope:1041_health_artifact = { remove_variable ?= 1065_accessory_value }
remove_variable ?= 1041_healer_aptitude
remove_variable ?= 1041_partner_healer_aptitude
save_scope_as = laamp_decision_has_healed
#Go back to church grounds
hidden_effect = { 1041_return_to_church_grounds_effect = yes }
}
#Determine the variable effect based on their aptitude, one for the healer and one for the physician-partner
scripted_effect 1041_calculate_aptitude_modifier_effect = {
if = {
limit = {
$CHARACTER$ = {
aptitude = {
court_position = court_physician_court_position
value >= 1
}
}
}
change_variable = {
name = $VARIABLE$
add = 1
}
}
if = {
limit = {
$CHARACTER$ = {
aptitude = {
court_position = court_physician_court_position
value >= 2
}
}
}
change_variable = {
name = $VARIABLE$
add = 1
}
}
if = {
limit = {
$CHARACTER$ = {
aptitude = {
court_position = court_physician_court_position
value >= 3
}
}
}
change_variable = {
name = $VARIABLE$
add = 1
}
}
if = {
limit = {
$CHARACTER$ = {
aptitude = {
court_position = court_physician_court_position
value >= 4
}
}
}
change_variable = {
name = $VARIABLE$
add = 1
}
}
if = {
limit = {
$CHARACTER$ = {
aptitude = {
court_position = court_physician_court_position
value >= 5
}
}
}
change_variable = {
name = $VARIABLE$
add = 1
}
}
}
#The actual removal-of-illness
scripted_effect 1041_remove_illness_or_wound_effect = {
random_list = {
100 = {
trigger = { has_character_modifier = infected_wound_modifier }
remove_character_modifier = infected_wound_modifier
}
100 = {
trigger = { has_character_modifier = gangrene_modifier }
remove_character_modifier = gangrene_modifier
}
100 = {
trigger = { has_trait = wounded_1 }
remove_trait = wounded_1
}
100 = {
trigger = { has_trait = wounded_2 }
remove_trait = wounded_2
}
100 = {
trigger = { has_trait = wounded_3 }
remove_trait = wounded_3
}
100 = {
trigger = { has_trait = ill }
remove_trait = ill
}
100 = {
trigger = { has_trait = pneumonic }
remove_trait = pneumonic
}
50 = {
trigger = { has_trait = typhus }
remove_trait = typhus
}
50 = {
trigger = { has_trait = gout_ridden }
remove_trait = gout_ridden
}
50 = {
trigger = { has_trait = consumption }
remove_trait = consumption
}
50 = {
trigger = { has_trait = smallpox }
remove_trait = smallpox
}
50 = {
trigger = { has_trait = great_pox }
remove_trait = great_pox
}
25 = {
trigger = { has_trait = cancer }
remove_trait = cancer
}
25 = {
trigger = { has_trait = bubonic_plague }
remove_trait = bubonic_plague
}
25 = {
trigger = { has_trait = leper }
remove_trait = leper
}
}
}
#Do you feel lucky?
scripted_effect 1041_treatment_roll_effect = {
random_list = {
#Failure
70 = {
#Some weighting based on the aptitude of the performing party (healer/physician-partner)
modifier = {
exists = $VARIABLE$
$VARIABLE$ >= 5
add = -15
}
modifier = {
exists = $VARIABLE$
$VARIABLE$ >= 4
add = -15
}
modifier = {
exists = $VARIABLE$
$VARIABLE$ >= 3
add = -15
}
#Notify us about the outcome
if = {
limit = {
NOT = { $TARGET_CHARACTER$ = root } #If our partner gets treated
}
send_interface_toast = {
type = event_toast_text_bad
title = ep3_laamp_decision_event.1041.treatment_failure.t
desc = ep3_laamp_decision_event.1041.treatment_failure.desc
left_icon = root
right_icon = $TARGET_CHARACTER$
}
}
else = {
send_interface_toast = {
type = event_toast_text_bad #If we get treated
title = ep3_laamp_decision_event.1041.treatment_failure.t
desc = ep3_laamp_decision_event.1041.treatment_failure.desc
left_icon = root
}
}
#Nothing happens
}
#Success
30 = {
modifier = {
NOT = { $TARGET_CHARACTER$ = root } #The scoped character is either visiting_partner or sickly_minor
$TARGET_CHARACTER$ = {
age < 20
is_child_of = root
}
add = 30
}
modifier = {
NOT = { $TARGET_CHARACTER$ = root } #... a cold-hearted person can tweak this back later on when people complain about too low child mortality rates
$TARGET_CHARACTER$ = {
age < 10
is_child_of = root
}
add = 30
}
#If our partner gets treated
if = {
limit = {
NOT = { $TARGET_CHARACTER$ = root } #The scoped character is either visiting_partner or sickly_minor
}
send_interface_toast = {
type = event_toast_effect_good
title = ep3_laamp_decision_event.1041.treatment_success.t
left_icon = root
right_icon = $TARGET_CHARACTER$
$TARGET_CHARACTER$ = { 1041_remove_illness_or_wound_effect = yes }
}
}
#If we get treated, automatic toast
else = { 1041_remove_illness_or_wound_effect = yes }
}
}
}
#Someone learn-y or mystic
scripted_trigger 1041_physician_partner_trigger = {
OR = {
learning >= 15
has_trait = lifestyle_physician
has_trait = lifestyle_mystic
has_trait = witch
}
}
#Visit Healer
ep3_laamp_decision_event.1041 = {
type = character_event
title = ep3_laamp_decision_event.1041.t
window = visit_settlement_window
desc = {
#What are they up to?
first_valid = {
#We've returned to this scene, now what
#RETURN: A sick minor... is still here
triggered_desc = {
trigger = {
exists = scope:1040_sickly_minor
exists = scope:been_to_healer
}
desc = ep3_laamp_decision_event.1041.desc_returned_sickly_minor
}
#RETURN: Physician partner wants a stab at it
triggered_desc = {
trigger = {
scope:visiting_partner ?= {
1041_physician_partner_trigger = yes
1000_has_illness_or_wound_to_treat_trigger = no
}
exists = scope:been_to_healer
}
desc = ep3_laamp_decision_event.1041.desc_returned_physician_partner
}
#RETURN: Generics
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_healer
scope:healer_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1041.desc_returned_01
}
triggered_desc = {
trigger = { scope:healer_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1041.desc_returned_02
}
}
#FIRST TIME: A sick minor was snuck along
triggered_desc = {
trigger = {
exists = scope:1040_sickly_minor
NOT = { exists = scope:been_to_healer }
}
desc = ep3_laamp_decision_event.1041.desc_sickly_minor
}
#FIRST TIME: Our partner is actually pretty physician-y
triggered_desc = {
trigger = {
scope:visiting_partner ?= {
1041_physician_partner_trigger = yes
1000_has_illness_or_wound_to_treat_trigger = no
}
NOT = { exists = scope:been_to_healer }
}
desc = ep3_laamp_decision_event.1041.desc_physician_partner
}
#FIRST TIME: We've seen this healer before
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_healer_character
NOT = { exists = scope:been_to_healer }
}
desc = ep3_laamp_decision_event.1041.desc_reused_healer
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_healer }
}
desc = ep3_laamp_decision_event.1041.desc
}
}
#Describe the artifact
first_valid = {
#RETURN: Horn artifact
triggered_desc = {
trigger = {
exists = scope:been_to_healer
scope:1041_health_artifact = { has_variable = health_horn }
}
desc = ep3_laamp_decision_event.1041.desc_outro_return_horn
}
#FIRST TIME: Horn artifact
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_healer }
scope:1041_health_artifact = { has_variable = health_horn }
}
desc = ep3_laamp_decision_event.1041.desc_outro_horn
}
#RETURN: Other artifacts
triggered_desc = {
trigger = {
exists = scope:been_to_healer
scope:1041_health_artifact = {
NOT = { has_variable = health_horn }
}
}
desc = ep3_laamp_decision_event.1041.desc_outro_return_artifact
}
#FIRST TIME: Other artifacts
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_healer }
scope:1041_health_artifact = {
NOT = { has_variable = health_horn }
}
}
desc = ep3_laamp_decision_event.1041.desc_outro_artifact
}
}
}
theme = medicine
#Someone close to you is sick
override_sound = {
trigger = {
OR = {
scope:visiting_partner ?= { 1000_has_illness_or_wound_to_treat_trigger = yes }
exists = scope:1040_sickly_minor
}
}
reference = "event:/MUSIC/Cues/Events/Illness/mx_cue_illness"
}
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_medicine" }
override_background = { reference = physicians_study }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#If it's our (tired) visiting partner
triggered_animation = {
trigger = { 1040_done_with_church_trigger = yes }
animation = boredom
}
#Concerned about our kid
triggered_animation = {
trigger = {
exists = scope:1040_sickly_minor
is_close_family_of = scope:1040_sickly_minor
}
animation = stress
}
#Sick dudette
triggered_animation = {
trigger = { 1000_has_illness_or_wound_to_treat_trigger = yes }
animation = pain
}
#Doctor dude
triggered_animation = {
trigger = { 1041_physician_partner_trigger = yes }
animation = ecstasy
}
animation = thinking
}
center_portrait = {
character = root
triggered_animation = {
trigger = { exists = scope:1040_sickly_minor }
animation = worry
}
animation = personality_content
}
right_portrait = {
character = scope:laamp_healer_character
camera = camera_event_scheme_far_right
animation = physician
}
#Do we have a sick minor?
lower_left_portrait = {
trigger = { exists = scope:1040_sickly_minor }
character = scope:1040_sickly_minor
}
artifact = {
target = scope:1041_health_artifact
position = lower_right_portrait
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = healer }
#Find our healer
if = {
#Do we already have a healer?
limit = {
NOT = { exists = scope:laamp_healer_character }
}
#Has this person been our healer in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_healer_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_healer_character
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_healer_character
}
#Otherwise find a healer in the pool
if = {
limit = {
NOT = { exists = scope:laamp_healer_character }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
has_trait = lifestyle_physician
}
save_scope_as = laamp_healer_character
}
}
#Otherwise create a healer
if = {
limit = {
NOT = { exists = scope:laamp_healer_character }
}
#Create healer to stuff in pool
create_character = {
template = physician_high_character_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_healer_character
}
}
#Remember the healer
1010_remember_vendor_character_effect = { GUILD = healer CHARACTER = scope:laamp_healer_character }
#Find our healing artifact
if = {
limit = {
NOT = { exists = scope:1041_health_artifact }
}
scope:laamp_healer_character ?= {
#Have we created healing artifacts recently, which we can pull?
if = {
limit = {
any_character_artifact ?= { has_variable = 1041_laamp_decision_health_artifact }
}
random_character_artifact = {
limit = { has_variable = 1041_laamp_decision_health_artifact }
save_scope_as = 1041_health_artifact
}
}
#If we don't have any old healing artifacts; generate a new one!
hidden_effect_new_object = { #HAZMAT SUIT OF ERROR SUPRESSION
if = {
limit = {
NOT = { exists = scope:1041_health_artifact }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_healer_character }
#Generate healing artifact
generate_health_trinket_effect = yes
#Finalization
scope:newly_created_health_artifact ?= {
set_variable = {
name = 1041_laamp_decision_health_artifact
days = visit_settlement_cooldown_days
}
#Belt & suspenders
set_variable = 1041_laamp_decision_health_artifact
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1041_health_artifact
}
}
#Set the value of the health artifact
scope:1041_health_artifact = { 1041_set_item_value_effect = yes }
}
}
}
if = {
limit = {
exists = scope:laamp_healer_character
NOT = { has_variable = 1041_healer_aptitude }
}
#Calculate the healer's aptitude
set_variable = {
name = 1041_healer_aptitude
value = 0
}
1041_calculate_aptitude_modifier_effect = { CHARACTER = scope:laamp_healer_character VARIABLE = 1041_healer_aptitude }
#Calculate our physician friend's aptitude
if = {
limit = {
scope:visiting_partner ?= { 1041_physician_partner_trigger = yes }
}
set_variable = {
name = 1041_partner_healer_aptitude
value = 0
}
1041_calculate_aptitude_modifier_effect = { CHARACTER = scope:visiting_partner VARIABLE = 1041_partner_healer_aptitude }
}
}
}
#For the background
scope:laamp_healer_character = {
if = {
limit = {
is_ruler = no
exists = court_owner
}
court_owner = { save_scope_as = bg_override_char }
}
else = {
save_scope_as = bg_override_char
}
}
}
#Attempt to improve your health // OR // Attempt to cure (curable) illness
option = {
name = {
text = {
first_valid = {
#We're ill
triggered_desc = {
trigger = { 1000_has_illness_or_wound_to_treat_trigger = yes }
desc = ep3_laamp_decision_event.1041.a_ill
}
#Just a standard procedure
desc = ep3_laamp_decision_event.1041.a
}
}
}
#We're ill, roll for some treatment
if = {
limit = { 1000_has_illness_or_wound_to_treat_trigger = yes }
1041_treatment_roll_effect = { TARGET_CHARACTER = root VARIABLE = var:1041_healer_aptitude }
}
#Standard procedure health modifier
else = {
if = {
limit = { has_character_modifier = laamp_decision_church_health_modifier }
hidden_effect = { remove_character_modifier = laamp_decision_church_health_modifier }
}
add_character_modifier = {
modifier = laamp_decision_church_health_modifier
days = visit_settlement_cooldown_days
}
}
pay_short_term_gold = {
target = scope:laamp_healer_character
gold = minor_gold_value
}
#Set the variables and redirect us back to the Church Grounds
1041_healed_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < minor_gold_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
1000_has_illness_or_wound_to_treat_trigger = no
has_character_modifier = laamp_decision_church_health_modifier
factor = 0
}
}
}
#Buy the health artifact
option = {
name = ep3_laamp_decision_event.1041.b
scope:1041_health_artifact = {
root = {
pay_short_term_gold = {
target = scope:laamp_healer_character
gold = prev.var:1065_accessory_value
}
}
set_owner = root
}
#Set the variables and redirect us back to the Church Grounds
1041_healed_effect = yes
ai_chance = {
base = 50
modifier = {
short_term_gold < scope:1041_health_artifact.var:1065_accessory_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Triggered Option: Your partner wants to try their hand at the procedure
option = {
name = ep3_laamp_decision_event.1041.c
trigger = {
scope:visiting_partner ?= {
1041_physician_partner_trigger = yes
1000_has_illness_or_wound_to_treat_trigger = no
}
NOT = { exists = scope:1040_sickly_minor }
}
flavor = ep3_laamp_decision_event.1041.c.flavor
#We're ill, roll for some treatment
if = {
limit = { 1000_has_illness_or_wound_to_treat_trigger = yes }
1041_treatment_roll_effect = { TARGET_CHARACTER = root VARIABLE = var:1041_partner_healer_aptitude }
}
#Standard procedure health modifier
else = {
if = {
limit = { has_character_modifier = laamp_decision_church_health_partner_modifier }
hidden_effect = { remove_character_modifier = laamp_decision_church_health_partner_modifier }
}
add_character_modifier = {
modifier = laamp_decision_church_health_partner_modifier
days = visit_settlement_cooldown_days
}
}
progress_towards_friend_effect = {
REASON = friend_allowed_to_treat
CHARACTER = scope:visiting_partner
OPINION = default_friend_opinion
}
scope:visiting_partner = {
if = {
limit = {
NOT = { has_trait = lifestyle_physician }
}
add_trait = lifestyle_physician
}
else_if = {
limit = {
has_trait = lifestyle_physician
has_trait_xp = {
trait = lifestyle_physician
value < 100
}
}
add_trait_xp = {
trait = lifestyle_physician
value = 40
}
}
else = {
add_learning_skill = 1
}
}
#Set the variables and redirect us back to the Church Grounds
1041_healed_effect = yes
ai_chance = { base = 200 }
}
#Triggered Option: Your partner or sickly minor is ill
option = {
name = {
text = ep3_laamp_decision_event.1041.d
trigger = { exists = scope:1040_sickly_minor }
}
name = {
text = ep3_laamp_decision_event.1041.d.partner
trigger = { exists = scope:visiting_partner }
}
trigger = {
OR = {
scope:visiting_partner ?= { 1000_has_illness_or_wound_to_treat_trigger = yes }
exists = scope:1040_sickly_minor
}
}
if = {
limit = { exists = scope:1040_sickly_minor }
1041_treatment_roll_effect = { TARGET_CHARACTER = scope:1040_sickly_minor VARIABLE = var:1041_healer_aptitude }
progress_towards_friend_effect = {
REASON = friend_got_treatment
CHARACTER = scope:1040_sickly_minor
OPINION = default_friend_opinion
}
}
else = {
1041_treatment_roll_effect = { TARGET_CHARACTER = scope:visiting_partner VARIABLE = var:1041_healer_aptitude }
progress_towards_friend_effect = {
REASON = friend_got_treatment
CHARACTER = scope:visiting_partner
OPINION = default_friend_opinion
}
}
pay_short_term_gold = {
target = scope:laamp_healer_character
gold = minor_gold_value
}
#Set the variables and redirect us back to the Church Grounds
1041_healed_effect = yes
ai_chance = {
base = 300
modifier = {
short_term_gold < minor_gold_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#I want to go back
option = {
name = ep3_laamp_decision_event.1041.e
#Sets variables and returns us to church grounds screen
1031_been_to_effect = { GUILD = healer }
ai_chance = { base = 100 }
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:healer }
}
}
#Set the correct variable to block off the Church option and remove the desc flavor variable
scripted_effect 1043_churched_effect = {
save_scope_as = laamp_decision_has_churched
#Go back to church grounds
hidden_effect = { 1041_return_to_church_grounds_effect = yes }
}
#Not really into religion
scripted_trigger 1043_is_unzealous_trigger = {
OR = {
has_trait = cynical
any_secret = { type = secret_non_believer }
}
}
#Visit Church
ep3_laamp_decision_event.1043 = {
type = character_event
title = ep3_laamp_decision_event.1043.t
window = visit_settlement_window
desc = {
#What are they up to?
first_valid = {
#We've returned to this scene, now what
#RETURN: Generics
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_church
scope:church_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1043.desc_returned_01
}
triggered_desc = {
trigger = { scope:church_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1043.desc_returned_02
}
}
#FIRST TIME: We've seen this NunMonk before
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_clergy_character
NOT = { exists = scope:been_to_church }
}
desc = ep3_laamp_decision_event.1043.desc_reused_clergy
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_church }
}
desc = ep3_laamp_decision_event.1043.desc
}
}
#How about some theft
first_valid = {
#RETURN: Longing master thief
triggered_desc = {
trigger = {
scope:visiting_partner ?= { has_court_position = master_thief_camp_officer }
exists = scope:been_to_church
}
desc = ep3_laamp_decision_event.1043.desc_return_outro_thief
}
#RETURN: Outro
triggered_desc = {
trigger = { exists = scope:been_to_church }
desc = ep3_laamp_decision_event.1043.desc_return_outro
}
#FIRST TIME: Longing master thief
triggered_desc = {
trigger = {
scope:visiting_partner ?= { has_court_position = master_thief_camp_officer }
NOT = { exists = scope:been_to_church }
}
desc = ep3_laamp_decision_event.1043.desc_outro_thief
}
#FIRST TIME: Outro
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_church }
}
desc = ep3_laamp_decision_event.1043.desc_outro
}
}
}
theme = faith
override_sound = { reference = "event:/MUSIC/Cues/Events/Sacral Happening/mx_cue_epic_sacral_moment" }
override_background = { reference = temple }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#Master thief
triggered_animation = {
trigger = { has_court_position = master_thief_camp_officer }
animation = scheme
}
#Unzealous
triggered_animation = {
trigger = { 1043_is_unzealous_trigger = yes }
animation = personality_cynical
}
#Zealous
triggered_animation = {
trigger = {
scope:visiting_partner = { has_trait = zealous }
}
animation = ecstasy
}
#Friendly
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_friendly_traits = yes }
}
animation = interested
}
#Business-minded
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_commerce_traits = yes }
}
animation = personality_greedy
}
#Uninterested
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_uninterested_traits = yes }
}
animation = boredom
}
#Irrational
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_irrational_traits = yes }
}
animation = personality_irrational
}
#A bit awkward
triggered_animation = {
trigger = {
scope:visiting_partner = { 1010_has_standoffish_traits = yes }
}
animation = disapproval
}
animation = personality_honorable
}
center_portrait = {
character = root
triggered_animation = {
trigger = { 1043_is_unzealous_trigger = yes }
animation = disapproval
}
animation = personality_content
}
right_portrait = {
character = scope:laamp_clergy_character
animation = personality_forgiving
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#For the background
scope:visiting_location.county.holder = { save_scope_as = bg_override_char }
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = church }
#Find our clergy
if = {
#Do we already have a clergy?
limit = {
NOT = { exists = scope:laamp_clergy_character }
}
#Has this person been our clergy in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
faith = scope:visiting_location.faith
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_clergy_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_clergy_character
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_clergy_character
}
#Otherwise find a clergy in the pool
if = {
limit = {
NOT = { exists = scope:laamp_clergy_character }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
has_trait = devoted
faith = scope:visiting_location.faith
}
save_scope_as = laamp_clergy_character
}
}
#Otherwise create a clergy
if = {
limit = {
NOT = { exists = scope:laamp_clergy_character }
}
#Create clergy to stuff in pool
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
trait = devoted
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_clergy_character
}
}
#Remember the clerger
1010_remember_vendor_character_effect = { GUILD = clergy CHARACTER = scope:laamp_clergy_character }
}
#How much gold is in the collect; and how difficult is it?
if = {
limit = {
NOT = { exists = scope:1043_collect_gold_value }
}
#Randomize the initial value
set_variable = {
name = 1043_collect_gold_difficulty
value = {
integer_range = {
min = 0
max = 2
}
}
}
#Then add difficulty based on how much gold is in the collect
random_list = {
10 = {
save_scope_value_as = {
name = 1043_collect_gold_value
value = minor_gold_laamps_value
}
change_variable = {
name = 1043_collect_gold_difficulty
add = 1
}
}
10 = {
save_scope_value_as = {
name = 1043_collect_gold_value
value = medium_gold_laamps_value
}
change_variable = {
name = 1043_collect_gold_difficulty
add = 2
}
}
10 = {
save_scope_value_as = {
name = 1043_collect_gold_value
value = major_gold_laamps_value
}
change_variable = {
name = 1043_collect_gold_difficulty
add = 3
}
}
}
#Did we go robbing a bunch of churches previously?
if = {
limit = {
has_variable = 1043_heightened_security
exists = var:1043_collect_gold_difficulty
}
change_variable = {
name = 1043_collect_gold_difficulty
add = var:1043_heightened_security
}
}
#Set the difficulty
if = {
limit = { exists = var:1043_collect_gold_difficulty }
if = {
limit = { var:1043_collect_gold_difficulty >= 5 }
save_scope_value_as = {
name = 1043_collect_gold_difficulty_rating
value = monumentally_high_skill_rating #Had to invent a new difficulty, just for you :hmmyes:
}
}
else_if = {
limit = { var:1043_collect_gold_difficulty = 4 }
save_scope_value_as = {
name = 1043_collect_gold_difficulty_rating
value = extremely_high_skill_rating
}
}
else_if = {
limit = { var:1043_collect_gold_difficulty = 3 }
save_scope_value_as = {
name = 1043_collect_gold_difficulty_rating
value = high_skill_rating
}
}
else_if = {
limit = { var:1043_collect_gold_difficulty = 2 }
save_scope_value_as = {
name = 1043_collect_gold_difficulty_rating
value = medium_skill_rating
}
}
else = {
save_scope_value_as = {
name = 1043_collect_gold_difficulty_rating
value = low_skill_rating
}
}
}
}
}
#Donate some gold for piety
option = {
name = ep3_laamp_decision_event.1043.a
flavor = {
first_valid = {
triggered_desc = {
trigger = { 1043_is_unzealous_trigger = yes }
desc = ep3_laamp_decision_event.1043.a.flavor_unzealous
}
}
}
if = {
limit = { NOT = { exists = var:visit_settlement_church_donation } }
set_variable = {
name = visit_settlement_church_donation
years = visit_settlement_medium_cooldown_year
value = 1
}
}
else = {
set_local_variable = {
name = visit_settlement_church_donation_temp
value = var:visit_settlement_church_donation
}
set_variable = {
name = visit_settlement_church_donation
years = visit_settlement_medium_cooldown_year
value = {
value = local_var:visit_settlement_church_donation_temp
add = 1
}
}
}
#Pay gold, feel more pious
pay_short_term_gold = {
target = scope:laamp_clergy_character
gold = minor_gold_value
}
add_piety = visit_settlement_piety_gain_value
#Roll for epiphanous clergy
hidden_effect = {
scope:laamp_clergy_character = {
random_list = {
95 = {
modifier = {
has_trait = possessed_1
factor = 0.5
}
#Nothing happens
}
5 = {
modifier = {
piety_level = high_piety_level
add = 5
}
modifier = {
piety_level = very_high_piety_level
add = 5
}
modifier = {
piety_level = max_piety_level
add = 5
}
set_variable = 1043_is_epiphanous
}
}
}
}
stress_impact = {
greedy = minor_stress_impact_gain
zealous = minor_stress_impact_loss
generous = minor_stress_impact_loss
improvident = medium_stress_impact_loss #Throw 'em a bone
}
trigger_event = ep3_laamp_decision_event.1044
ai_chance = {
base = 100
modifier = {
has_trait = greedy
factor = 0
}
modifier = {
short_term_gold < minor_gold_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Ask for blessing
option = {
name = ep3_laamp_decision_event.1043.b
trigger = {
NOR = {
has_character_modifier = laamp_decision_church_blessing_stress_loss_modifier
has_character_modifier = laamp_decision_church_blessing_stress_gain_modifier
piety_level < low_piety_level
}
}
show_as_unavailable = { always = yes }
reason = piety
#Pokémon blue?
add_character_modifier = {
modifier = laamp_decision_church_blessing_stress_loss_modifier
years = 5
}
#Set the variables and redirect us back to the Church Grounds
1043_churched_effect = yes
ai_chance = {
base = 200
modifier = {
piety_level > medium_piety_level
add = 300
}
}
}
#'Borrow' gold from the collect
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = {
scope:visiting_partner ?= { has_court_position = master_thief_camp_officer }
}
desc = ep3_laamp_decision_event.1043.c_master_thief
}
triggered_desc = {
trigger = { has_variable = 1043_heightened_security }
desc = ep3_laamp_decision_event.1043.c_guarded
}
desc = ep3_laamp_decision_event.1043.c
}
}
}
trigger = { is_ai = no }
flavor = {
first_valid = {
triggered_desc = {
trigger = {
has_variable = 1043_heightened_security
var:1043_heightened_security != 0
}
desc = ep3_laamp_decision_event.1043.c.flavor_guarded
}
desc = ep3_laamp_decision_event.1043.c.flavor
}
}
duel = {
skill = intrigue
value = scope:1043_collect_gold_difficulty_rating
#Success: Coin!
50 = {
modifier = {
scope:visiting_partner ?= { has_court_position = master_thief_camp_officer }
factor = 2
}
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 10
desc = ep3_laamp_decision_event.1043.c.thievery_success.desc
send_interface_toast = {
title = ep3_laamp_decision_event.1043.c.thievery_success.t
left_icon = root
add_gold = scope:1043_collect_gold_value
}
hidden_effect = {
#... fool me twice; shame on you.
if = {
limit = { has_variable = 1043_heightened_security }
random_list = {
50 = {
#Nothing
}
50 = {
#Save old value as temp
set_variable = {
name = 1043_heightened_security_temp
value = var:1043_heightened_security
}
#Remove the variable we'll refresh
remove_variable ?= 1043_heightened_security
#Set the new proper variable and add the old value as well
set_variable = {
name = 1043_heightened_security
value = {
value = var:1043_heightened_security_temp
add = 1
}
years = visit_settlement_medium_cooldown_year
}
#Then remove the temp
remove_variable ?= 1043_heightened_security_temp
}
}
}
#Fool me once, shame on me...
else = {
set_variable = {
name = 1043_heightened_security
value = 0
years = visit_settlement_medium_cooldown_year
}
}
}
}
#Failure: Banished!
50 = {
modifier = {
scope:visiting_partner ?= { has_court_position = master_thief_camp_officer }
factor = 0.5
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -20
}
desc = ep3_laamp_decision_event.1043.c.thievery_failure.desc
send_interface_toast = {
type = event_toast_text_bad
title = ep3_laamp_decision_event.1043.c.thievery_failure.t
desc = ep3_laamp_decision_event.1043.c.thievery_failure.desc
left_icon = root
custom_tooltip = ep3_laamp_decision_event.1041.return.tt
#Shame on you
add_piety = medium_piety_loss
#Shame shame
if = {
limit = {
NOT = { has_trait = gallowsbait }
}
add_trait = gallowsbait
}
else_if = {
limit = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = thief
value < 100
}
}
add_trait_xp = {
trait = gallowsbait
track = thief
value = small_lifestyle_random_xp_low
}
}
}
#You will not be going back to the church any time soon
set_variable = {
name = 1040_caught_stealing
days = visit_settlement_small_cooldown_days
}
}
#Critical Failure: The local guards are summoned
10 = {
trigger = {
trigger_if = {
limit = { exists = scope:visiting_partner }
NOT = {
scope:visiting_partner = { has_court_position = master_thief_camp_officer }
}
}
trigger_else = { always = yes }
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
min = 5
desc = ep3_laamp_decision_event.1043.c.thievery_critical_failure.desc
send_interface_toast = {
title = ep3_laamp_decision_event.1043.c.thievery_critical_failure.t
left_icon = root
#Quite the tussle
increase_wounds_effect = { REASON = fight }
#Shame on you
add_piety = medium_piety_loss
#Violent shame, even
if = {
limit = {
NOT = { has_trait = gallowsbait }
}
add_trait = gallowsbait
}
else_if = {
limit = {
has_trait = gallowsbait
has_trait_xp = {
trait = gallowsbait
track = bandit
value < 100
}
}
add_trait_xp = {
trait = gallowsbait
track = bandit
value = small_lifestyle_random_xp_mid
}
}
}
#You will not be going back to the church any time soon
set_variable = {
name = 1040_caught_stealing
days = visit_settlement_small_cooldown_days
}
}
}
#Super-stressful for honest characters and zealous characters, IF you share faith
if = {
limit = { scope:visiting_location.county.faith = root.faith }
stress_impact = {
honest = major_stress_impact_gain
zealous = major_stress_impact_gain
deceitful = minor_stress_impact_loss
greedy = minor_stress_impact_loss
}
}
else = {
stress_impact = {
honest = major_stress_impact_gain
deceitful = minor_stress_impact_loss
}
}
#Set the variables and redirect us back to the Church Grounds
1043_churched_effect = yes
}
#I want to go back
option = {
name = ep3_laamp_decision_event.1043.d
#Sets variables and returns us to church grounds screen
1031_been_to_effect = { GUILD = church }
ai_chance = { base = 200 }
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:church }
}
}
#Post-Donation
ep3_laamp_decision_event.1044 = {
type = character_event
title = ep3_laamp_decision_event.1043.t
window = visit_settlement_window
desc = {
first_valid = {
#Strange person thinks you're a reincarnation or something? Why not.
triggered_desc = {
trigger = {
scope:laamp_clergy_character = { has_variable = 1043_is_epiphanous }
}
desc = ep3_laamp_decision_event.1044.desc_epiphany
}
desc = ep3_laamp_decision_event.1044.desc
}
}
theme = faith
override_sound = {
trigger = {
scope:laamp_clergy_character = { has_variable = 1043_is_epiphanous }
}
reference = "event:/DLC/FP4/MUSIC/Stingers/mx_stinger_legends_lvl_03"
}
override_sound = { reference = "event:/MUSIC/Cues/Events/Low Key Positive/mx_cue_low_key_postive" }
override_background = { reference = temple }
override_effect_2d = {
trigger = {
scope:laamp_clergy_character = { has_variable = 1043_is_epiphanous }
}
reference = legend_glow #Too much?
}
left_portrait = {
character = root
triggered_animation = {
trigger = {
scope:laamp_clergy_character = { has_variable = 1043_is_epiphanous }
}
animation = disbelief
}
triggered_animation = {
trigger = { 1043_is_unzealous_trigger = yes }
animation = shock
}
animation = admiration
}
right_portrait = {
character = scope:laamp_clergy_character
triggered_animation = {
trigger = { has_variable = 1043_is_epiphanous }
animation = shock
}
animation = happiness
}
#Do we have someone to display?
lower_left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
hidden_effect = {
scope:laamp_clergy_character = {
if = {
limit = { has_variable = 1043_is_epiphanous }
add_trait = loyal
add_trait = holy_warrior
}
}
}
}
#Ask for blessing
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = {
scope:laamp_clergy_character = { has_variable = 1043_is_epiphanous }
}
desc = ep3_laamp_decision_event.1044.a_epiphany
}
desc = ep3_laamp_decision_event.1044.a
}
}
}
trigger = {
NOR = {
has_character_modifier = laamp_decision_church_blessing_stress_loss_modifier
has_character_modifier = laamp_decision_church_blessing_stress_gain_modifier
piety_level < low_piety_level
}
}
show_as_unavailable = { always = yes }
reason = piety
#Or Pokémon red?
add_character_modifier = {
modifier = laamp_decision_church_blessing_stress_gain_modifier
years = 5
}
ai_chance = {
base = 100
modifier = {
piety_level > medium_piety_level
add = 300
}
}
}
#Triggered Option: Clergy Person wants to join your camp
option = {
name = ep3_laamp_decision_event.1044.b
trigger = {
scope:laamp_clergy_character = { has_variable = 1043_is_epiphanous }
}
add_courtier = scope:laamp_clergy_character
ai_chance = {
base = 100
modifier = {
has_trait = paranoid
factor = 0
}
}
}
#Nah
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = {
scope:laamp_clergy_character = { has_variable = 1043_is_epiphanous }
}
desc = ep3_laamp_decision_event.1044.c_epiphany
}
desc = ep3_laamp_decision_event.1044.c
}
}
}
#Tooltip so we know where we're going
custom_tooltip = ep3_laamp_decision_event.1041.return.tt
ai_chance = {
base = 100
}
}
after = {
#Set the variables and redirect us back to the Church Grounds
1043_churched_effect = yes
}
}
#Set the correct variable to block off the Garden option and remove the desc flavor variable
scripted_effect 1045_gardened_effect = {
save_scope_as = laamp_decision_has_gardened
#Go back to church grounds
hidden_effect = { 1041_return_to_church_grounds_effect = yes }
}
#Right?
scripted_trigger 1045_probably_knows_gardening_trigger = {
OR = {
has_trait = lifestyle_gardener
has_trait = lifestyle_herbalist
learning > high_skill_rating
}
}
#Used in enough places to warrant a trigger
scripted_trigger 1045_could_harvest_garden_trigger = {
OR = {
trigger_if = {
limit = { exists = scope:visiting_partner }
scope:visiting_partner = { 1045_probably_knows_gardening_trigger = yes }
}
1045_probably_knows_gardening_trigger = yes
}
}
#Ditto
scripted_trigger 1045_could_unwind_in_garden_trigger = {
scope:visiting_partner ?= {
OR = {
AND = {
has_relation_potential_lover = root
root = { might_cheat_on_every_partner_trigger = yes }
}
has_relation_lover = root
}
}
}
#Visit Garden
ep3_laamp_decision_event.1045 = {
type = character_event
title = ep3_laamp_decision_event.1045.t
window = visit_settlement_window
desc = {
#What's going down in the garden
first_valid = {
#We've returned to this scene, now what
#RETURN: Generics
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_garden
scope:garden_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1045.desc_returned_01
}
triggered_desc = {
trigger = { scope:garden_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1045.desc_returned_02
}
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_garden }
}
desc = ep3_laamp_decision_event.1045.desc
}
}
#Hey look, some plants
first_valid = {
#RETURN: Still partner plants
triggered_desc = {
trigger = {
scope:visiting_partner ?= { 1045_probably_knows_gardening_trigger = yes }
exists = scope:been_to_garden
}
desc = ep3_laamp_decision_event.1045.desc_outro_return_partner
}
#RETURN: Still plants
triggered_desc = {
trigger = {
1045_probably_knows_gardening_trigger = yes
exists = scope:been_to_garden
}
desc = ep3_laamp_decision_event.1045.desc_outro_return_gardener
}
#FIRST TIME: Partner PLAAANTSSS
triggered_desc = {
trigger = {
scope:visiting_partner ?= { 1045_probably_knows_gardening_trigger = yes }
NOT = { exists = scope:been_to_garden }
}
desc = ep3_laamp_decision_event.1045.desc_outro_partner
}
#FIRST TIME: PLAAANTSSS
triggered_desc = {
trigger = {
1045_probably_knows_gardening_trigger = yes
NOT = { exists = scope:been_to_garden }
}
desc = ep3_laamp_decision_event.1045.desc_outro_gardener
}
}
}
theme = faith
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_health_good" }
override_background = { reference = garden }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
triggered_animation = {
trigger = {
NOT = { has_variable = 1045_has_harvested_recently }
1045_probably_knows_gardening_trigger = yes
}
animation = survey
}
animation = happiness
}
center_portrait = {
character = root
triggered_animation = {
trigger = {
NOT = { has_variable = 1045_has_harvested_recently }
scope:visiting_partner ?= { 1045_probably_knows_gardening_trigger = yes }
}
animation = interested
}
triggered_animation = {
trigger = { 1045_probably_knows_gardening_trigger = yes }
animation = survey
}
triggered_animation = {
trigger = { faith != scope:visiting_location.faith }
animation = stress
}
animation = thinking
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#For the background
scope:visiting_location.county.holder = { save_scope_as = bg_override_char }
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = garden }
}
#Convert / contemplate faith
option = {
name = {
text = {
first_valid = {
#Convert to faith
triggered_desc = {
trigger = {
faith != scope:visiting_location.faith
}
desc = ep3_laamp_decision_event.1045.a_convert
}
#Contemplate faith
desc = ep3_laamp_decision_event.1045.a
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1045.a.cooldown.tt
NOT = { has_variable = 1045_contemplated_garden_recently }
}
}
show_as_unavailable = { always = yes }
#Convert
if = {
limit = {
faith != scope:visiting_location.faith
}
set_character_faith = scope:visiting_location.faith
stress_impact = {
base = minor_stress_impact_loss
zealous = major_stress_impact_gain
}
}
#Contemplate faith
else = {
stress_impact = {
base = medium_stress_impact_loss
content = minor_stress_impact_loss
zealous = medium_stress_impact_loss
}
}
#Cooldown for the action
set_variable = {
name = 1045_contemplated_garden_recently
days = visit_settlement_minimum_cooldown_days
}
#Set the variables and redirect us back to the Church Grounds
1045_gardened_effect = yes
ai_chance = {
base = 100
modifier = {
faith != scope:visiting_location.faith
has_trait = zealous
factor = 0
}
modifier = {
faith != scope:visiting_location.faith
any_secret ?= { secret_type = secret_non_believer }
add = 300
}
}
}
#Triggered Option: Those plants look edible
option = {
name = {
text = {
first_valid = {
#Gardener friend
triggered_desc = {
trigger = {
scope:visiting_partner ?= { 1045_probably_knows_gardening_trigger = yes }
}
desc = ep3_laamp_decision_event.1045.b_partner
}
#Gardener self
desc = ep3_laamp_decision_event.1045.b
}
}
}
trigger = {
trigger_if = {
limit = { has_variable = 1045_has_harvested_recently }
custom_tooltip = {
text = ep3_laamp_decision_event.1045.b.cooldown.tt
always = no
}
}
trigger_else = { 1045_could_harvest_garden_trigger = yes }
}
show_as_unavailable = {
#Only show it if you could've actually done it
trigger_if = {
limit = { 1045_could_harvest_garden_trigger = yes }
always = yes
}
trigger_else = { always = no }
}
#Get some provisions
if = {
limit = {
domicile ?= { provisions < max_provisions }
}
domicile ?= {
change_provisions = {
value = {
value = root.minor_gold_laamps_value
multiply = {
value = max_provisions
divide = 250
round = yes
min = 1
}
}
}
}
}
#... or sell the morsels, if capped
else = { add_gold = minor_gold_laamps_value }
#Probably holy somewhere
if = {
limit = {
faith = {
OR = {
has_doctrine = tenet_sanctity_of_nature
trait_is_virtue = lifestyle_gardener
trait_is_virtue = lifestyle_herbalist
}
}
}
add_piety = medium_piety_gain
}
#Cooldown for the action
set_variable = {
name = 1045_has_harvested_recently
days = visit_settlement_minimum_cooldown_days
}
#Set the variables and redirect us back to the Church Grounds
1045_gardened_effect = yes
ai_chance = {
base = 1000 #Just do it
}
}
#Triggered Option: Stress relief? Stress relief.
option = {
name = ep3_laamp_decision_event.1045.c
trigger = {
trigger_if = {
limit = { has_variable = 1045_garden_unwinded_recently }
custom_tooltip = {
text = ep3_laamp_decision_event.1045.c.cooldown.tt
always = no
}
}
trigger_else = { 1045_could_unwind_in_garden_trigger = yes }
}
show_as_unavailable = {
#Only show it if you could've actually done it
trigger_if = {
limit = { 1045_could_unwind_in_garden_trigger = yes }
always = yes
}
trigger_else = { always = no }
}
#Stress relief
had_sex_with_effect = { CHARACTER = scope:visiting_partner PREGNANCY_CHANCE = pregnancy_chance }
progress_towards_lover_effect = {
CHARACTER = scope:visiting_partner
REASON = lover_contemplative_sex
OPINION = default_lover_opinion
}
#Probably holy to some?
if = {
limit = {
faith = { has_doctrine = tenet_carnal_exaltation }
}
add_piety = medium_piety_gain
}
#Or not
else_if = {
limit = {
faith = {
OR = {
trait_is_sin = lustful
trait_is_sin = rakish
trait_is_sin = seducer
}
}
}
add_piety = minor_piety_loss
}
#Cooldown for the action
set_variable = {
name = 1045_garden_unwinded_recently
days = visit_settlement_minimum_cooldown_days
}
#Stress loss with some factors
stress_impact = {
base = medium_stress_impact_loss
rakish = medium_stress_impact_loss
seducer = minor_stress_impact_loss
lustful = minor_stress_impact_loss
paranoid = minor_stress_impact_gain
chaste = minor_stress_impact_gain
}
#Set the variables and redirect us back to the Church Grounds
1045_gardened_effect = yes
ai_chance = {
base = 100
modifier = {
has_trait = lustful
add = 500
}
modifier = {
has_trait = rakish
add = 500
}
modifier = {
has_trait = chaste
factor = 0
}
}
}
#I want to go back
option = {
name = ep3_laamp_decision_event.1045.d
#Everything is on cooldown, I guess
if = {
limit = {
has_variable = 1045_contemplated_garden_recently
trigger_if = {
limit = { 1045_could_harvest_garden_trigger = yes }
has_variable = 1045_has_harvested_recently
}
trigger_if = {
limit = { 1045_could_unwind_in_garden_trigger = yes }
has_variable = 1045_garden_unwinded_recently
}
}
1045_gardened_effect = yes
}
else = {
#Sets variables and returns us to church grounds screen
1031_been_to_effect = { GUILD = garden }
}
ai_chance = { base = 100 }
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:garden }
}
}
#Hire the Physician, show/set the effects and variables
scripted_effect 1047_hire_physician_effect = {
hidden_effect = {
reverse_add_opinion = {
target = scope:laamp_physician_recruit
modifier = recruited_me_opinion
opinion = 30
}
}
add_courtier = scope:laamp_physician_recruit
#The actual effect happens in after
show_as_tooltip = {
court_position_grant_effect = {
EMPLOYER = root
POS = court_physician
CANDIDATE = scope:laamp_physician_recruit
}
}
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_recruited_physician
value = flag:yes
}
#Go back to church grounds
hidden_effect = { 1041_return_to_church_grounds_effect = yes }
}
#Visit Physician
ep3_laamp_decision_event.1047 = {
type = character_event
title = ep3_laamp_decision_event.1047.t
window = visit_settlement_window
desc = {
#What're they doing?
first_valid = {
#We've returned to this scene, now what
#RETURN:
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_physician
scope:physician_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1047.desc_returned_01
}
triggered_desc = {
trigger = { scope:physician_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1047.desc_returned_02
}
triggered_desc = {
trigger = { scope:physician_loc_tracker ?= 2 }
desc = ep3_laamp_decision_event.1047.desc_returned_03
}
}
#FIRST TIME: We've seen this physician before
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_physician
NOT = { exists = scope:been_to_physician }
}
desc = ep3_laamp_decision_event.1047.desc_reused_physician
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_physician }
}
desc = ep3_laamp_decision_event.1047.desc
}
}
}
theme = learning
override_sound = { reference = "event:/MUSIC/Cues/Events/Positive/mx_cue_postive_effect" }
override_background = { reference = location_study }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
triggered_animation = {
trigger = { 1041_physician_partner_trigger = yes }
animation = interested
}
animation = personality_compassionate
}
center_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:laamp_physician_recruit
camera = camera_event_scheme_far_right
animation = reading
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Run this once: Re-save the portrait so the Physician is not the 1040_third_character (since they narratively moved to their study)
if = {
limit = { scope:1040_third_character = scope:laamp_physician_recruit }
#Overwrite with ROOT to block off the portrait
save_scope_as = 1040_third_character
#Remember the bodyguard
1010_remember_vendor_character_effect = { GUILD = physician CHARACTER = scope:laamp_physician_recruit }
}
#Can we _not_ repeat the loc?
1025_set_and_check_hub_loc_tracker_scope_effect = { HUB = physician }
}
#Pay gold
option = {
name = ep3_laamp_decision_event.1047.a
pay_short_term_gold = {
target = scope:laamp_physician_recruit
gold = minor_gold_value
}
#Wrap effect to hire 'em, set scope & return to church
1047_hire_physician_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < minor_gold_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Have x piety
option = {
name = ep3_laamp_decision_event.1047.b
trigger = { piety >= 1000 }
show_as_unavailable = { always = yes }
reason = piety
#Wrap effect to hire 'em, set scope & return to church
1047_hire_physician_effect = yes
ai_chance = {
base = 1000 #Just do it
}
}
#Learning duel
option = {
name = ep3_laamp_decision_event.1047.c
duel = {
skill = learning
value = average_skill_rating
#Success: Hire 'em up
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
OR = {
has_trait = scholar
has_trait = whole_of_body
has_trait = crusader_king
}
factor = 2
}
desc = ep3_laamp_decision_event.1047.c.success
send_interface_toast = {
title = ep3_laamp_decision_event.1047.c.success
left_icon = root
right_icon = scope:laamp_physician_recruit
#Yippee!
1047_hire_physician_effect = yes
}
}
#Failure: Bye, now
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -20
}
modifier = {
has_trait = zealous
factor = 0.5
}
desc = ep3_laamp_decision_event.1047.c.failure
send_interface_toast = {
type = event_toast_text_bad
title = ep3_laamp_decision_event.1047.c.failure
desc = ep3_laamp_decision_event.1047.c.failure.tt
left_icon = root
right_icon = scope:laamp_physician_recruit
#Oh well
custom_tooltip = ep3_laamp_decision_event.1047.c.failure.tt
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_recruited_physician
value = flag:no
}
1041_return_to_church_grounds_effect = yes
}
}
}
ai_chance = {
base = 100
modifier = {
piety >= 1000
factor = 0
}
}
}
#I want to go back
option = {
name = ep3_laamp_decision_event.1047.d
#Sets variables and returns us to church grounds screen
1031_been_to_effect = { GUILD = physician }
ai_chance = {
base = 100
modifier = {
employs_court_position = court_physician_court_position
factor = 2
}
}
}
after = {
if = {
limit = { scope:laamp_decision_recruited_physician ?= flag:yes }
#Appoint them
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:laamp_physician_recruit
COURT_POS = court_physician_court_position
}
}
court_position_grant_effect = {
EMPLOYER = root
POS = court_physician
CANDIDATE = scope:laamp_physician_recruit
}
}
}
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:physician }
}
}
######################################################################
# CASTLE GROUNDS
# ep3_laamp_decision_event.1050
######################################################################
#Set the correct variable to block off the Castle option and remove the desc flavor variable
scripted_effect 1050_finished_castle_effect = {
remove_list_variable = {
name = list_of_options
target = flag:has_castle_option
}
save_scope_as = laamp_decision_finished_castle_option
}
#Can reinforce MaA
scripted_trigger 1050_has_maa_to_reinforce_trigger = {
any_maa_regiment ?= { maa_current_troops_count < maa_max_troops_count }
}
#Nothing left for us to do
scripted_trigger 1050_done_with_castle_trigger = {
exists = scope:laamp_decision_has_trained
exists = scope:laamp_decision_has_garrisoned
trigger_if = {
limit = { 1050_has_maa_to_reinforce_trigger = yes }
exists = scope:laamp_decision_has_reinforced
}
trigger_if = {
limit = { exists = scope:laamp_bodyguard_recruit }
exists = scope:laamp_decision_recruited_bodyguard
}
}
#Castle Holding: Visit the local castle grounds
ep3_laamp_decision_event.1050 = {
type = character_event
title = ep3_laamp_decision_event.1050.t
window = visit_settlement_window
desc = {
#Intro
first_valid = {
#We've returned to this scene, now what
#RETURN: We've returned from Main Square
random_valid = {
triggered_desc = {
trigger = {
var:return_from_location ?= flag:main_square
exists = scope:been_to_castle_grounds
OR = {
scope:castle_loc_tracker ?= 0
scope:castle_loc_tracker ?= 2
}
}
desc = ep3_laamp_decision_event.1050.desc_returned_01
}
triggered_desc = {
trigger = {
var:return_from_location ?= flag:main_square
scope:castle_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1050.desc_returned_02
}
}
#RETURN: We've returned from the Training ground
triggered_desc = {
trigger = { var:return_from_location ?= flag:training }
desc = ep3_laamp_decision_event.1050.desc_returned_from_training
}
#RETURN: We've returned from the Garrison
triggered_desc = {
trigger = { var:return_from_location ?= flag:garrison }
desc = ep3_laamp_decision_event.1050.desc_returned_from_garrison
}
#RETURN: We've returned from the Reinforcers
triggered_desc = {
trigger = { var:return_from_location ?= flag:reinforcers }
desc = ep3_laamp_decision_event.1050.desc_returned_from_reinforcers
}
#RETURN: We've returned from the Bodyguard
triggered_desc = {
trigger = { var:return_from_location ?= flag:bodyguard }
desc = ep3_laamp_decision_event.1050.desc_returned_from_bodyguard
}
#FIRST TIME: First time here
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_castle_grounds }
}
desc = ep3_laamp_decision_event.1050.desc
}
}
#Mid - MaA option or not?
first_valid = {
#FIRST TIME: Yup, we can reinforce MaA
triggered_desc = {
trigger = {
1050_has_maa_to_reinforce_trigger = yes
NOT = { exists = scope:been_to_castle_grounds }
}
desc = ep3_laamp_decision_event.1050.mid_maa
}
#FIRST TIME: Nope, no MaA to reinforce
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_castle_grounds }
}
desc = ep3_laamp_decision_event.1050.mid_no_maa
}
}
#Outro
first_valid = {
#FIRST TIME: First time here, look at the bodyguard
triggered_desc = {
trigger = {
exists = scope:laamp_bodyguard_recruit
NOT = { exists = scope:been_to_castle_grounds }
}
desc = ep3_laamp_decision_event.1050.desc_outro_bodyguard
}
#FIRST TIME: First time here, curious partner
triggered_desc = {
trigger = {
exists = scope:visiting_partner
NOT = { exists = scope:been_to_castle_grounds }
}
desc = ep3_laamp_decision_event.1050.desc_outro_partner
}
#FIRST TIME: First time here
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_castle_grounds }
}
desc = ep3_laamp_decision_event.1050.desc_outro
}
#RETURN: Partner - there is nothing left for us here
triggered_desc = {
trigger = {
exists = scope:visiting_partner
1050_done_with_castle_trigger = yes
}
desc = ep3_laamp_decision_event.1050.desc_outro_return_partner_finished
}
#RETURN: There is nothing left for us here
triggered_desc = {
trigger = { 1050_done_with_castle_trigger = yes }
desc = ep3_laamp_decision_event.1050.desc_outro_return_finished
}
#RETURN: Bodyguard did not deviate, yet
triggered_desc = {
trigger = {
exists = scope:laamp_bodyguard_recruit
NOR = {
exists = scope:been_to_bodyguard
exists = scope:laamp_decision_recruited_bodyguard
}
}
desc = ep3_laamp_decision_event.1050.desc_outro_bodyguard_return
}
#RETURN: We've been here before
random_valid = {
#RETURN: Partner flavor
triggered_desc = {
trigger = {
exists = scope:visiting_partner
exists = scope:been_to_castle_grounds
scope:castle_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1050.desc_outro_return_partner_01
}
triggered_desc = {
trigger = {
exists = scope:visiting_partner
scope:castle_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1050.desc_outro_return_partner_02
}
triggered_desc = {
trigger = {
exists = scope:visiting_partner
scope:castle_loc_tracker ?= 2
}
desc = ep3_laamp_decision_event.1050.desc_outro_return_partner_03
}
#RETURN: Generics
triggered_desc = {
trigger = {
exists = scope:been_to_castle_grounds
scope:castle_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1050.desc_outro_return_01
}
triggered_desc = {
trigger = { scope:castle_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1050.desc_outro_return_02
}
triggered_desc = {
trigger = { scope:castle_loc_tracker ?= 2 }
desc = ep3_laamp_decision_event.1050.desc_outro_return_03
}
}
}
}
theme = martial
#Get outta here already
override_effect_2d = {
trigger = {
1050_done_with_castle_trigger = yes
scope:visiting_location = { is_drylands_or_desert_trigger = no }
}
reference = rain
}
override_background = {
trigger = {
scope:visiting_location = {
geographical_region = world_europe
NOT = { geographical_region = world_europe_west_iberia }
}
}
reference = gallows
}
override_background = { reference = ep3_city_gate }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#If it's our (tired) visiting partner
triggered_animation = {
trigger = { 1050_done_with_castle_trigger = yes }
animation = boredom
}
animation = survey
}
center_portrait = {
character = root
triggered_animation = {
trigger = {
exists = scope:laamp_bodyguard_recruit
NOR = {
exists = scope:been_to_bodyguard
exists = scope:laamp_decision_recruited_bodyguard
}
}
animation = interested
}
triggered_animation = {
trigger = { prowess < average_skill_rating }
animation = personality_coward
}
animation = personality_bold
}
#Do we have someone to display?
right_portrait = {
trigger = {
exists = scope:1050_third_character
#If this is root, then that means we have talked to the Bodyguard, so let's disappear the portrait
scope:1050_third_character != root
}
character = scope:1050_third_character
camera = camera_event_scheme_vs_extra_right_look_right
#We've returned here and it's still the bodyguard
triggered_animation = {
trigger = { exists = scope:been_to_castle_grounds }
animation = disapproval
}
#Otherwise some seething to go
animation = rage
}
lower_left_portrait = {
trigger = {
exists = scope:1050_fourth_character
scope:1050_fourth_character != root
}
character = scope:1050_fourth_character
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Set up the ancillary portraits to remind the player of the characters
if = {
#Bodyguard exists
limit = {
#We've been to them at least once
exists = scope:been_to_bodyguard
#We're not done with them yet
AND = {
exists = scope:laamp_bodyguard_recruit
NOT = { exists = scope:laamp_decision_recruited_bodyguard }
}
#This isn't already the state
NAND = {
exists = scope:1050_fourth_character
scope:1050_fourth_character ?= scope:laamp_bodyguard_recruit
}
}
scope:laamp_bodyguard_recruit = { save_scope_as = 1050_fourth_character }
}
#Clear out the ancillary portrait(s)
if = {
limit = {
exists = scope:1050_fourth_character
scope:laamp_bodyguard_recruit ?= scope:1050_fourth_character
exists = scope:laamp_decision_recruited_bodyguard
}
#Overwrite with ROOT to hide that portrait
save_scope_as = 1050_fourth_character
}
#Can we _not_ repeat the loc?
1025_set_and_check_hub_loc_tracker_scope_effect = { HUB = castle }
#Rare: Spawn a spectacular Bodyguard
if = {
limit = {
NOT = { has_variable = laamp_decision_1000_checked_for_bodyguard }
}
random_list = {
80 = {
#No Bodyguard
}
20 = {
#Has this person been our bodyguard in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_bodyguard_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:saved_character_check }
}
save_scope_as = laamp_bodyguard_recruit
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_bodyguard
}
#Otherwise find a bodyguard in the pool
if = {
limit = {
NOT = { exists = scope:laamp_bodyguard_recruit }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
is_available_healthy_adult = yes
prowess > 15
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = this }
}
save_scope_as = laamp_bodyguard_recruit
}
}
#Otherwise create a bodyguard
if = {
limit = {
NOT = { exists = scope:laamp_bodyguard_recruit }
}
#Create bodyguard to stuff in pool
create_character = {
template = bp1_yearly_2021_martial_person_template
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
prowess = { decent_skill_rating high_skill_rating }
save_scope_as = laamp_bodyguard_recruit
}
scope:laamp_bodyguard_recruit ?= {
#Chance to add a malus trait to this spectatular being
if = {
limit = {
NOR = {
has_trait = possessed_1
has_trait = lunatic_1
has_trait = depressed_1
has_trait = drunkard
has_trait = hashishiyah
has_trait = irritable
}
}
hidden_effect = {
random = {
chance = 20
random_list = {
10 = { add_trait = possessed_1 }
10 = { add_trait = lunatic_1 }
10 = { add_trait = depressed_1 }
10 = { add_trait = drunkard }
10 = { add_trait = hashishiyah }
10 = { add_trait = irritable }
}
}
}
}
}
}
scope:laamp_bodyguard_recruit = { save_scope_as = 1050_third_character }
}
}
#No decision-scumming
set_variable = {
name = laamp_decision_1000_checked_for_bodyguard
days = visit_settlement_cooldown_days
}
}
}
#Train prowess
option = {
name = {
text = {
first_valid = {
#Return to the training grounds
triggered_desc = {
trigger = { exists = scope:been_to_training }
desc = ep3_laamp_decision_event.1050.a_second
}
#First time at the training grounds
desc = ep3_laamp_decision_event.1050.a
}
}
}
trigger = {
#Recruited the Master of Arms
trigger_if = {
limit = {
exists = scope:laamp_disgruntled_moa
scope:laamp_decision_has_trained ?= flag:no
}
custom_tooltip = {
text = recruited_maa.tt
always = no
}
}
#Been there, done that
trigger_else_if = {
limit = { scope:laamp_decision_has_trained ?= flag:yes }
custom_tooltip = {
text = ep3_laamp_decision_event.1050.a.cooldown.tt
always = no
}
}
trigger_else = { always = yes }
}
show_as_unavailable = { always = yes }
reason = visit_training_grounds
custom_tooltip = ep3_laamp_decision_event.1050.a.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = castle_grounds }
#Go to the training grounds
trigger_event = ep3_laamp_decision_event.1051
ai_chance = { base = 100 }
}
#Scout knights at the garrison
option = {
name = {
text = {
first_valid = {
#Return to the garrison
triggered_desc = {
trigger = { exists = scope:been_to_garrison }
desc = ep3_laamp_decision_event.1050.b_second
}
#First time at the garrison
desc = ep3_laamp_decision_event.1050.b
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1050.b.cooldown.tt
NOT = { exists = scope:laamp_decision_has_garrisoned }
}
}
show_as_unavailable = { always = yes }
reason = visit_garrison
custom_tooltip = ep3_laamp_decision_event.1050.b.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = castle_grounds }
#Go to the garrison screen
trigger_event = ep3_laamp_decision_event.1053
ai_chance = { base = 100 }
}
#Check out the demoralized soldiers
option = {
name = {
text = {
first_valid = {
#Already scoped out contract
triggered_desc = {
trigger = { exists = scope:been_to_reinforcers }
desc = ep3_laamp_decision_event.1050.c_second
}
#First time reading contract
desc = ep3_laamp_decision_event.1050.c
}
}
}
trigger = {
trigger_if = {
limit = { exists = scope:laamp_decision_has_reinforced }
custom_tooltip = {
text = ep3_laamp_decision_event.1050.c.cooldown.tt
NOT = { exists = scope:laamp_decision_has_reinforced }
}
}
trigger_else_if = {
limit = {
any_in_list = {
variable = 1055_reinforced_recently
this = scope:visiting_location
}
}
custom_tooltip = {
text = ep3_laamp_decision_event.1050.c.cooldown_province.tt
NOT = {
any_in_list = {
variable = 1055_reinforced_recently
this = scope:visiting_location
}
}
}
}
trigger_else = { 1050_has_maa_to_reinforce_trigger = yes }
}
show_as_unavailable = {
OR = {
1050_has_maa_to_reinforce_trigger = yes
exists = scope:laamp_decision_has_reinforced
}
}
reason = reinforce_maa
custom_tooltip = ep3_laamp_decision_event.1050.c.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = castle_grounds }
#Go to the Town Crier
trigger_event = ep3_laamp_decision_event.1055
ai_chance = { base = 100 }
}
#Rare Option: Hire cheaper, skilled, Bodyguard
option = {
name = {
text = {
first_valid = {
#Return to the Bodyguard
triggered_desc = {
trigger = { exists = scope:been_to_bodyguard }
desc = ep3_laamp_decision_event.1050.d_second
}
#First time at the Bodyguard
desc = ep3_laamp_decision_event.1050.d
}
}
}
trigger = {
exists = scope:laamp_bodyguard_recruit
NOT = { exists = scope:laamp_decision_recruited_bodyguard }
}
reason = recruit_bodyguard
#Been there once already
if = {
limit = { exists = scope:been_to_bodyguard }
custom_tooltip = ep3_laamp_decision_event.1050.d.tt_second
}
else = {
custom_tooltip = ep3_laamp_decision_event.1050.d.tt
}
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = castle_grounds }
#Go to the bodyguard screen
trigger_event = ep3_laamp_decision_event.1057
ai_chance = {
base = 500
}
}
#I want to do something else
option = {
name = {
text = {
first_valid = {
#Nothing left to do
triggered_desc = {
trigger = { 1050_done_with_castle_trigger = yes }
desc = ep3_laamp_decision_event.1050.e_second
}
#Back to main square
desc = ep3_laamp_decision_event.1050.e
}
}
}
#Have we done everything? Are we closing off the option?
if = {
limit = { 1050_done_with_castle_trigger = yes }
#Clean up unnecessary variables and close off the option
1050_finished_castle_effect = yes
}
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = castle_grounds }
#Go back to the main event
1000_return_to_main_effect = yes
ai_chance = {
base = 100
modifier = {
OR = {
has_trait = greedy
has_trait = paranoid
}
add = 300
}
}
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:castle_grounds }
}
}
#We return to the castle event to peruse other options
scripted_effect 1051_return_to_castle_effect = {
custom_tooltip = ep3_laamp_decision_event.1051.return.tt
trigger_event = ep3_laamp_decision_event.1050
}
#One, two, one, two, hepp-hepp-hepp
scripted_effect 1051_actual_training_effect = {
#Pay for training if it ain't scope:visiting_partner
if = {
limit = { $TRAINER$ = scope:laamp_disgruntled_moa }
pay_short_term_gold = {
target = scope:laamp_disgruntled_moa
gold = visit_settlement_paid_training_value
}
}
#Add the prowess
random_list = {
#Athletisism!
10 = {
trigger = {
has_trait = athletic
1051_skill_cap_trigger = no
}
desc = ep3_laamp_decision_event.1051.a_athletic.desc
send_interface_toast = {
type = event_toast_effect_good
title = travel_events.2007.a_success_tt
desc = ep3_laamp_decision_event.1051.a_athletic.desc
left_icon = root
#Increase skill
add_prowess_skill = 2
}
hidden_effect = { 1051_increment_skill_gain_effect = yes }
}
#Regular prowess
25 = {
trigger = { 1051_skill_cap_trigger = no }
desc = ep3_laamp_decision_event.1051.a.desc
send_interface_toast = {
type = event_toast_effect_good
title = travel_events.2032.a_learning.tt
desc = ep3_laamp_decision_event.1051.a.desc
left_icon = root
#Increase skill
add_prowess_skill = 1
}
hidden_effect = { 1051_increment_skill_gain_effect = yes }
}
#Blademaster
25 = {
trigger = {
1051_skill_cap_trigger = yes
1051_maxed_blademaster_trigger = no
}
desc = ep3_laamp_decision_event.1051.a.desc
send_interface_toast = {
type = event_toast_effect_good
title = travel_events.2007.a_soft_success_tt
desc = ep3_laamp_decision_event.1051.a.desc
left_icon = root
#Gain trait
if = {
limit = {
NOT = { has_trait = lifestyle_blademaster }
}
add_trait = lifestyle_blademaster
add_trait_xp = {
trait = lifestyle_blademaster
value = scope:blademaster_xp
}
}
#Or be educated
else = {
add_trait_xp = {
trait = lifestyle_blademaster
value = scope:blademaster_xp
}
}
}
}
#... fallback.
25 = {
trigger = {
1051_skill_cap_trigger = yes
1051_maxed_blademaster_trigger = yes
}
desc = ep3_laamp_decision_event.1051.a.desc
send_interface_toast = {
type = event_toast_effect_good
title = travel_events.2003.b_success_tt
desc = ep3_laamp_decision_event.1051.a.desc
left_icon = root
#Gain martial lifestyle xp
add_martial_lifestyle_xp = medium_lifestyle_xp
#... and some stress relief?
stress_impact = {
base = medium_stress_impact_loss
}
}
}
#Too much joshing around
25 = {
trigger = { scope:visiting_partner ?= $TRAINER$ }
desc = ep3_laamp_decision_event.1051.c_joshing.desc
send_interface_toast = {
type = event_toast_text_neutral
title = ep3_laamp_decision_event.1051.c_joshing.t
desc = ep3_laamp_decision_event.1051.c_joshing.desc
left_icon = root
right_icon = scope:visiting_partner
}
}
#Too much joshing around
5 = {
trigger = { scope:visiting_partner ?= $TRAINER$ }
min = 5
desc = ep3_laamp_decision_event.1051.c_wounded.desc
send_interface_toast = {
type = event_toast_text_neutral
title = ep3_laamp_decision_event.1051.c_wounded.t
desc = ep3_laamp_decision_event.1051.c_wounded.desc
left_icon = root
right_icon = scope:visiting_partner
scope:visiting_partner = {
increase_wounds_effect = { REASON = training_accident }
}
}
}
}
#Set the variables and redirect us back to the Castle
1051_finished_training_effect = yes
}
scripted_effect 1051_increment_skill_gain_effect = {
#We cap the max amount of skill points gained
if = {
limit = {
NOT = { has_variable = 1051_skill_gain_variable }
}
set_variable = {
name = 1051_skill_gain_variable
value = 1
}
}
else_if = {
limit = {
has_variable = 1051_skill_gain_variable
var:1051_skill_gain_variable != visit_settlement_skill_gain_cap_value
}
change_variable = {
name = 1051_skill_gain_variable
add = 1
}
}
else = {
#Nothing happens
}
}
#Set the correct variable to block off the Training option and remove the desc flavor variable
scripted_effect 1051_finished_training_effect = {
save_scope_value_as = {
name = laamp_decision_has_trained
value = flag:yes
}
#Go back to castle grounds
hidden_effect = { 1051_return_to_castle_effect = yes }
}
#Find someone who isn't saved, doesn't dislike you and is pretty martial
scripted_trigger 1051_random_martial_character_trigger = {
1010_basic_merchant_checks_trigger = yes
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:saved_character_check }
OR = {
martial >= average_skill_rating
prowess >= high_skill_rating
}
}
scripted_trigger 1051_can_sparr_trigger = {
is_adult = yes
scope:visiting_partner ?= {
is_adult = yes
is_healthy = yes
martial >= high_skill_rating
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root }
}
}
scripted_trigger 1051_skill_cap_trigger = {
has_variable = 1051_skill_gain_variable
var:1051_skill_gain_variable >= visit_settlement_skill_gain_cap_value
}
scripted_trigger 1051_maxed_blademaster_trigger = {
has_trait = lifestyle_blademaster
has_trait_xp = {
trait = lifestyle_blademaster
value = 100 #Max
}
}
#Training Grounds
ep3_laamp_decision_event.1051 = {
type = character_event
title = ep3_laamp_decision_event.1051.t
window = visit_settlement_window
desc = {
#What're they doing?
first_valid = {
#We've returned to this scene, now what
#RETURN:
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_training
scope:training_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1051.desc_returned_01
}
triggered_desc = {
trigger = { scope:training_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1051.desc_returned_02
}
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_training }
}
desc = ep3_laamp_decision_event.1051.desc
}
}
#Martial partner outro
first_valid = {
#RETURN:
triggered_desc = {
trigger = {
exists = scope:been_to_training
1051_can_sparr_trigger = yes
}
desc = ep3_laamp_decision_event.1051.desc_outro_return_martial_partner
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_training }
1051_can_sparr_trigger = yes
}
desc = ep3_laamp_decision_event.1051.desc_outro_martial_partner
}
}
}
theme = martial
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_activity" }
override_background = { reference = ep2_tournament }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
triggered_animation = {
trigger = { 1051_can_sparr_trigger = yes }
animation = marshal_shield
}
animation = thinking
}
center_portrait = {
character = root
animation = marshal
}
right_portrait = {
character = scope:laamp_disgruntled_moa
camera = camera_event_scheme_far_right
animation = disapproval
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = training }
#Find our potential Master of Arms (MoA) character
if = {
#Do we already have a MoA?
limit = {
NOT = { exists = scope:laamp_disgruntled_moa }
}
#Don't really care about saving this character in a list
random_pool_character = {
province = scope:visiting_location
limit = {
1051_random_martial_character_trigger = yes
has_trait = overseer
has_trait = disloyal
}
alternative_limit = {
1051_random_martial_character_trigger = yes
has_trait = overseer
}
alternative_limit = {
1051_random_martial_character_trigger = yes
has_trait = disloyal
}
alternative_limit = { 1051_random_martial_character_trigger = yes }
save_scope_as = laamp_disgruntled_moa
}
#Otherwise create a suiting candidate
if = {
limit = {
NOT = { exists = scope:laamp_disgruntled_moa }
}
#Create MoA to stuff in pool
create_character = {
template = new_warrior_character
location = scope:visiting_location
dynasty = none
trait = disloyal
gender_female_chance = root_soldier_female_chance
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_disgruntled_moa
}
}
hidden_effect = {
scope:laamp_disgruntled_moa = {
if = {
limit = {
NOT = { has_trait = overseer }
}
random_list = {
75 = {
#No trait
}
25 = {
add_trait = overseer
}
}
}
}
}
if = {
limit = { 1051_can_sparr_trigger = yes }
scope:visiting_partner ?= { save_scope_as = fighting_child }
}
}
#Save the xp trait as a static number
if = {
limit = {
NOR = {
1051_maxed_blademaster_trigger = yes
exists = scope:blademaster_xp
}
}
save_scope_value_as = {
name = blademaster_xp
value = {
integer_range = {
min = small_lifestyle_random_xp_low
max = small_lifestyle_random_xp_mid
}
}
}
}
}
#RAAAH TRAINING
option = {
name = ep3_laamp_decision_event.1051.a
trigger = {
gold >= visit_settlement_paid_training_value
}
show_as_unavailable = { always = yes }
#Cue training montage
1051_actual_training_effect = { TRAINER = scope:laamp_disgruntled_moa }
ai_chance = {
base = 100
modifier = {
prowess < low_skill_rating
short_term_gold < tiny_gold_laamps_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
prowess < mediocre_skill_rating
short_term_gold < minor_gold_laamps_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
prowess < decent_skill_rating
short_term_gold < medium_gold_laamps_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
prowess < high_skill_rating
short_term_gold < major_gold_laamps_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
prowess < extremely_high_skill_rating
short_term_gold < massive_gold_laamps_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Hire the guy as Master of Arms?
option = {
name = ep3_laamp_decision_event.1051.b
trigger = {
custom_description = {
text = not_have_master_of_arms_building
OR = {
can_employ_court_position_type = master_of_arms_camp_officer
employs_court_position = master_of_arms_camp_officer
}
}
}
reason = unlocked_master_of_arms
show_as_unavailable = { always = yes }
#Pay up
pay_short_term_gold = {
target = scope:laamp_disgruntled_moa
gold = medium_gold_laamps_value
}
hidden_effect = {
reverse_add_opinion = {
target = scope:laamp_disgruntled_moa
modifier = recruited_me_opinion
opinion = 30
}
}
add_courtier = scope:laamp_disgruntled_moa
#The actual effect happens in after
show_as_tooltip = {
camp_officer_grant_effect = {
EMPLOYER = root
POS = master_of_arms
CANDIDATE = scope:laamp_disgruntled_moa
}
}
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_has_trained
value = flag:no
}
#Go back to castle grounds
hidden_effect = { 1051_return_to_castle_effect = yes }
ai_chance = {
base = 100
modifier = {
short_term_gold < medium_gold_laamps_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
employs_court_position = master_of_arms_camp_officer
factor = 0
}
}
}
#Triggered Option: Sparr with your martial partner
option = {
name = ep3_laamp_decision_event.1051.c
trigger = { 1051_can_sparr_trigger = yes }
#This erroneously claims that the option is available because of ROOT's martial
show_unlock_reason = no
#Training? Hopefully.
1051_actual_training_effect = { TRAINER = scope:visiting_partner }
#Do some bonding
progress_towards_friend_effect = {
CHARACTER = scope:visiting_partner
REASON = friend_castle_sparring
OPINION = 15
}
ai_chance = {
base = 400
}
}
#I want to do something else
option = {
name = ep3_laamp_decision_event.1051.d
#Sets variables and returns us to castle grounds screen
1031_been_to_effect = { GUILD = training }
ai_chance = {
base = 200
modifier = {
has_trait = greedy
factor = 2
}
}
}
after = {
if = {
limit = { scope:laamp_decision_has_trained ?= flag:no }
#Appoint them
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:laamp_disgruntled_moa
COURT_POS = master_of_arms_camp_officer
}
}
camp_officer_grant_effect = {
EMPLOYER = root
POS = master_of_arms
CANDIDATE = scope:laamp_disgruntled_moa
}
}
}
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:training }
}
}
#Set the correct variable to block off the Garrison option and remove the desc flavor variable
scripted_effect 1053_finished_garrison_effect = {
save_scope_as = laamp_decision_has_garrisoned
#Go back to castle grounds
hidden_effect = { 1051_return_to_castle_effect = yes }
}
#Add the guard to your camp
scripted_effect 1053_add_guard_effect = {
hidden_effect = {
reverse_add_opinion = {
target = $GUARD$
modifier = recruited_me_opinion
opinion = 30
}
}
add_courtier = $GUARD$
#Go back to castle grounds
1053_finished_garrison_effect = yes
}
#Find someone who isn't saved, doesn't dislike you and is worse martial
scripted_trigger 1053_random_martial_character_trigger = {
1010_basic_merchant_checks_trigger = yes
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:saved_character_check }
OR = {
martial >= average_skill_rating
prowess >= average_skill_rating
}
}
#Find someone who isn't saved, doesn't dislike you and is less martial
scripted_trigger 1053_worse_martial_character_trigger = {
1010_basic_merchant_checks_trigger = yes
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:saved_character_check }
1033_has_interesting_skillset_trigger = no
}
#Garrison
ep3_laamp_decision_event.1053 = {
type = character_event
title = ep3_laamp_decision_event.1053.t
window = visit_settlement_window
desc = {
#What're they doing?
first_valid = {
#We've returned to this scene, now what
#RETURN:
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_garrison
scope:garrison_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1053.desc_returned_01
}
triggered_desc = {
trigger = { scope:garrison_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1053.desc_returned_02
}
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_garrison }
}
desc = ep3_laamp_decision_event.1053.desc
}
}
}
theme = landless_adventurer
override_icon = { reference = "gfx/interface/icons/event_types/type_duty.dds" }
override_background = { reference = armory }
left_portrait = {
character = scope:1053_first_character
#PARTNER:
triggered_animation = {
trigger = { scope:1053_first_character ?= scope:visiting_partner }
animation = interested
}
#ROOT: Return
triggered_animation = {
trigger = {
scope:1053_first_character = root
exists = scope:been_to_garrison
}
animation = chess_cocky
}
#ROOT
animation = admiration
}
center_portrait = {
character = scope:laamp_talented_guard
#They're counting coins
triggered_animation = {
trigger = { scope:garrison_loc_tracker ?= 1 }
animation = steward
}
#They just won a game of cards
triggered_animation = {
trigger = {
exists = scope:been_to_garrison
scope:garrison_loc_tracker ?= 0
}
animation = personality_dishonorable
}
animation = hero_flex
}
right_portrait = {
character = scope:laamp_plain_guard
camera = camera_event_scheme_far_right
#They were just asleep
triggered_animation = {
trigger = { scope:garrison_loc_tracker ?= 1 }
animation = boredom
}
#They're tending their wounds
triggered_animation = {
trigger = {
exists = scope:been_to_garrison
scope:garrison_loc_tracker ?= 0
}
animation = pain
}
animation = disapproval
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = garrison }
#Find our garrison guards
if = {
#Do we already have the guards?
limit = {
NOT = { exists = scope:laamp_plain_guard }
}
#Don't really care about saving this character in a list
random_pool_character = {
province = scope:visiting_location
limit = { 1053_worse_martial_character_trigger = yes }
save_scope_as = laamp_plain_guard
}
#Otherwise create a suiting plain guard
if = {
limit = {
NOT = { exists = scope:laamp_plain_guard }
}
#Create guard character to stuff in pool
create_character = {
template = bandit_character
location = scope:visiting_location
dynasty = none
gender_female_chance = root_soldier_female_chance
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_plain_guard
}
}
#Set their cost
1033_set_cost_effect = { CHARACTER = scope:laamp_plain_guard VALUE_NAME = plain_guard_cost }
#Don't really care about saving this character in a list
random_pool_character = {
province = scope:visiting_location
limit = { 1053_random_martial_character_trigger = yes }
save_scope_as = laamp_plain_guard
}
#Otherwise create a suiting talented guard
if = {
limit = {
NOT = { exists = scope:laamp_talented_guard }
}
#Create guard character to stuff in pool
create_character = {
template = new_warrior_character
location = scope:visiting_location
dynasty = none
gender_female_chance = root_soldier_female_chance
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_talented_guard
}
}
#Set their cost
1033_set_cost_effect = { CHARACTER = scope:laamp_talented_guard VALUE_NAME = talented_guard_cost }
}
#Set up the portrait
if = {
limit = {
NOT = { exists = scope:1053_first_character }
}
#Partner first
if = {
limit = { exists = scope:visiting_partner }
scope:visiting_partner = { save_scope_as = 1053_first_character }
}
#Otherwise ROOT
else = { save_scope_as = 1053_first_character }
}
#For the background
scope:laamp_plain_guard = {
if = {
limit = {
is_ruler = no
exists = court_owner
}
court_owner = { save_scope_as = bg_override_char }
}
else = {
save_scope_as = bg_override_char
}
}
}
#Hey, FirstPerson, want to join us?
option = {
name = ep3_laamp_decision_event.1053.a
pay_short_term_gold = {
target = scope:laamp_plain_guard
gold = scope:plain_guard_cost
}
#The actual adding of the guard and redirecting to castle grounds
1053_add_guard_effect = { GUARD = scope:laamp_plain_guard }
ai_chance = {
base = 200
modifier = {
short_term_gold > scope:plain_guard_cost
factor = 2
}
}
}
#How about you, more skilled SecondPerson?
option = {
name = ep3_laamp_decision_event.1053.b
pay_short_term_gold = {
target = scope:laamp_talented_guard
gold = scope:talented_guard_cost
}
#The actual adding of the guard and redirecting to castle grounds
1053_add_guard_effect = { GUARD = scope:laamp_talented_guard }
ai_chance = {
base = 100
modifier = {
short_term_gold > scope:talented_guard_cost
factor = 2
}
}
}
#I just wanna play some dice.
option = {
name = ep3_laamp_decision_event.1053.c
random_list = {
35 = {
desc = ep3_laamp_decision_event.1053.c.plain_wins
send_interface_toast = {
title = ep3_laamp_decision_event.1053.c.plain_wins
left_icon = root
right_icon = scope:laamp_plain_guard
pay_short_term_gold = {
target = scope:laamp_plain_guard
gold = minor_gold_value
}
}
}
35 = {
desc = ep3_laamp_decision_event.1053.c.talented_wins
send_interface_toast = {
title = ep3_laamp_decision_event.1053.c.talented_wins
left_icon = root
right_icon = scope:laamp_talented_guard
pay_short_term_gold = {
target = scope:laamp_talented_guard
gold = minor_gold_value
}
}
}
30 = {
desc = ep3_laamp_decision_event.1053.c.you_win
send_interface_toast = {
title = ep3_laamp_decision_event.1053.c.you_win
left_icon = root
scope:laamp_plain_guard = {
pay_short_term_gold = {
target = root
gold = minor_gold_value
}
}
scope:laamp_talented_guard = {
pay_short_term_gold = {
target = root
gold = minor_gold_value
}
}
}
}
}
stress_impact = {
base = minor_stress_impact_loss
arbitrary = minor_stress_impact_loss
improvident = minor_stress_impact_loss
}
#Go back to castle grounds
1053_finished_garrison_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < minor_gold_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
has_trait = greedy
factor = 0
}
}
}
#I want to do something else
option = {
name = ep3_laamp_decision_event.1053.d
#Sets variables and returns us to castle grounds screen
1031_been_to_effect = { GUILD = garrison }
ai_chance = {
base = 200
modifier = {
has_trait = greedy
factor = 2
}
}
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:garrison }
}
}
#Set the correct scopes, and transfer us back to main
scripted_effect 1055_finished_reinforcers_effect = {
save_scope_as = laamp_decision_has_reinforced
add_to_variable_list = {
name = 1055_reinforced_recently
target = root.location
days = visit_settlement_minimum_cooldown_days
}
#Go back to castle grounds
hidden_effect = { 1051_return_to_castle_effect = yes }
}
#Pretty self-explanatory
scripted_effect 1055_calculate_reinforcements_effect = {
if = {
limit = { $RESOURCE$_level >= max_$RESOURCE$_level }
custom_tooltip = {
text = ep3_laamp_decision_event.1055.$RESOURCE$_full.tt
every_in_list = {
list = damaged_maa_regiments
change_maa_troops_count = replenishable_troops_value
}
}
}
# 80%
else_if = {
limit = { $RESOURCE$_level >= very_high_$RESOURCE$_level }
custom_tooltip = {
text = ep3_laamp_decision_event.1055.$RESOURCE$_partial_80.tt
every_in_list = {
list = damaged_maa_regiments
change_maa_troops_count = {
value = replenishable_troops_value
multiply = 0.8
}
}
}
}
# 60%
else_if = {
limit = { $RESOURCE$_level >= high_$RESOURCE$_level }
custom_tooltip = {
text = ep3_laamp_decision_event.1055.$RESOURCE$_partial_60.tt
every_in_list = {
list = damaged_maa_regiments
change_maa_troops_count = {
value = replenishable_troops_value
multiply = 0.6
}
}
}
}
# 40%
else_if = {
limit = { $RESOURCE$_level >= medium_$RESOURCE$_level }
custom_tooltip = {
text = ep3_laamp_decision_event.1055.$RESOURCE$_partial_40.tt
every_in_list = {
list = damaged_maa_regiments
change_maa_troops_count = {
value = replenishable_troops_value
multiply = 0.4
}
}
}
}
# 20%
else = {
custom_tooltip = {
text = ep3_laamp_decision_event.1055.$RESOURCE$_partial_20.tt
every_in_list = {
list = damaged_maa_regiments
change_maa_troops_count = {
value = replenishable_troops_value
multiply = 0.2
}
}
}
}
}
#Well, are ya, punk?
scripted_trigger 1055_is_famous_trigger = {
OR = {
AND = {
prestige_level = max_prestige_level
NOT = { has_variable = 1055_reinforced_with_prestige_recently }
}
AND = {
piety_level = max_piety_level
NOT = { has_variable = 1055_reinforced_with_piety_recently }
}
AND = {
has_trait = knight_errant
has_trait_xp = {
trait = knight_errant
value = 100 #Max XP
}
NOT = { has_variable = 1055_reinforced_with_knight_errant_recently }
}
}
}
#Reinforcers
ep3_laamp_decision_event.1055 = {
type = character_event
title = ep3_laamp_decision_event.1055.t
window = visit_settlement_window
desc = {
#What're they doing?
first_valid = {
#We've returned to this scene, now what
#RETURN: Maxed prestige or piety
triggered_desc = {
trigger = {
exists = scope:been_to_reinforcers
1055_is_famous_trigger = yes
}
desc = ep3_laamp_decision_event.1055.desc_maxed_out_returned
}
#RETURN:
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_reinforcers
scope:reinforcers_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1055.desc_returned_01
}
triggered_desc = {
trigger = { scope:reinforcers_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1055.desc_returned_02
}
}
#FIRST TIME: Maxed prestige or piety
triggered_desc = {
trigger = { 1055_is_famous_trigger = yes }
desc = ep3_laamp_decision_event.1055.desc_maxed_out
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_reinforcers }
}
desc = ep3_laamp_decision_event.1055.desc
}
}
}
theme = landless_adventurer
override_sound = {
trigger = { 1055_is_famous_trigger = yes }
reference = "event:/DLC/FP4/MUSIC/Stingers/mx_stinger_legends_lvl_03"
}
override_icon = { reference = "gfx/interface/icons/event_types/type_martial.dds" }
override_background = { reference = ep3_camp }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
triggered_animation = {
trigger = {
root = { 1055_is_famous_trigger = yes }
}
animation = happiness
}
animation = survey
}
center_portrait = {
character = root
#Defender
triggered_animation = {
trigger = {
has_trait = knight_errant
has_trait_xp = {
trait = knight_errant
value = 100 #Max XP
}
NOT = { has_variable = 1055_reinforced_with_knight_errant_recently }
}
animation = marshal_shield
}
#Zealous
triggered_animation = {
trigger = {
piety_level = max_piety_level
NOT = { has_variable = 1055_reinforced_with_piety_recently }
}
animation = personality_zealous
}
#Prestigious
triggered_animation = {
trigger = {
prestige_level = max_prestige_level
NOT = { has_variable = 1055_reinforced_with_prestige_recently }
}
animation = hero_flex
}
triggered_animation = {
trigger = { has_trait = greedy }
animation = thinking
}
animation = betting
}
right_portrait = {
character = scope:laamp_maa_reinforcer
camera = camera_event_scheme_far_right
triggered_animation = {
trigger = {
root = { 1055_is_famous_trigger = yes }
}
animation = personality_coward
}
animation = dismissal
}
#Am I overusing this?
override_effect_2d = {
trigger = { 1055_is_famous_trigger = yes }
reference = legend_glow
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = reinforcers }
#Find a spokesperson
if = {
#Do we already have a spokesperson?
limit = {
NOT = { exists = scope:laamp_maa_reinforcer }
}
#Don't really care about saving this character in a list
random_pool_character = {
province = scope:visiting_location
limit = { 1053_random_martial_character_trigger = yes }
save_scope_as = laamp_maa_reinforcer
}
#Otherwise create a spokesperson
if = {
limit = {
NOT = { exists = scope:laamp_plain_guard }
}
#Create spokesperson to stuff in pool
create_character = {
template = bandit_character
location = scope:visiting_location
dynasty = none
gender_female_chance = root_soldier_female_chance
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_maa_reinforcer
}
}
}
scope:laamp_maa_reinforcer = {
add_character_flag = {
flag = wear_armor
weeks = 1
}
}
#Run this once
if = {
limit = {
NOT = { exists = scope:least_damaged_maa_missing_soldiers }
}
every_maa_regiment = {
limit = { maa_current_troops_count < maa_max_troops_count }
add_to_list = damaged_maa_regiments
}
ordered_in_list = {
list = damaged_maa_regiments
order_by = {
value = replenishable_troops_value
multiply = -1
}
save_scope_value_as = {
name = least_damaged_maa_missing_soldiers
value = this.replenishable_troops_value
}
}
save_scope_value_as = {
name = num_damaged_maa_regiments
value = list_size:damaged_maa_regiments
}
}
}
#Based on Prestige level
option = {
name = ep3_laamp_decision_event.1055.a
trigger = { #This could be upgraded to diminishing returns
custom_tooltip = {
text = ep3_laamp_decision_event.1055.a.cooldown.tt
NOT = { has_variable = 1055_reinforced_with_prestige_recently }
}
}
show_as_unavailable = { always = yes }
flavor = ep3_laamp_decision_event.1055.a.flavor
reason = prestige_level
#Basically the same as piety
1055_calculate_reinforcements_effect = { RESOURCE = prestige }
#Le cooldown
set_variable = {
name = 1055_reinforced_with_prestige_recently
days = visit_settlement_minimum_cooldown_days
}
#Checkmark and block off the option
1055_finished_reinforcers_effect = yes
ai_chance = {
base = 200
}
}
#Based on Piety level
option = {
name = ep3_laamp_decision_event.1055.b
trigger = {
piety_level >= low_piety_level
}
show_as_unavailable = { always = yes }
flavor = ep3_laamp_decision_event.1055.b.flavor
reason = piety_level
#Basically the same as prestige
1055_calculate_reinforcements_effect = { RESOURCE = piety }
#Le cooldown
set_variable = {
name = 1055_reinforced_with_piety_recently
days = visit_settlement_minimum_cooldown_days
}
#Checkmark and block off the option
1055_finished_reinforcers_effect = yes
ai_chance = {
base = 200
}
}
#Scrounging for desperate soldiers with lower cost Provisions
option = {
name = ep3_laamp_decision_event.1055.c
trigger = {
domicile ?= { provisions >= scope:least_damaged_maa_missing_soldiers }
}
#Pick a random MaA to reinforce, fully
custom_tooltip = {
text = ep3_laamp_decision_event.1055.c.tt
random_in_list = {
list = damaged_maa_regiments
change_maa_troops_count = replenishable_troops_value
}
}
#For a cheaper sandwich
domicile ?= {
change_provisions = {
subtract = scope:least_damaged_maa_missing_soldiers
divide = visit_settlement_provision_refill_value
}
}
#No cooldown. For now.
#Checkmark and block off the option
1055_finished_reinforcers_effect = yes
ai_chance = {
base = 100
modifier = {
domicile ?= { provisions < sixty_percent_provisions_value }
factor = 0
}
}
}
#I am a Knight-Errant, you _fool_! Bask in my righteousness.
option = {
name = ep3_laamp_decision_event.1055.d
trigger = {
has_trait = knight_errant
has_trait_xp = {
trait = knight_errant
value = 100 #Max XP
}
NOT = { has_variable = 1055_reinforced_with_knight_errant_recently }
}
show_as_unavailable = { has_variable = 1055_reinforced_with_knight_errant_recently }
flavor = ep3_laamp_decision_event.1055.d.flavor
reason = knight_errant
#You're just that _good_
custom_tooltip = {
text = ep3_laamp_decision_event.1055.d.tt
every_in_list = {
list = damaged_maa_regiments
change_maa_troops_count = replenishable_troops_value
}
}
#Le cooldown
set_variable = {
name = 1055_reinforced_with_knight_errant_recently
days = visit_settlement_minimum_cooldown_days
}
#Checkmark and block off the option
1055_finished_reinforcers_effect = yes
ai_chance = {
base = 1000 #Just do it
}
}
#I want to do something else
option = {
name = ep3_laamp_decision_event.1055.e
#Sets variables and returns us to castle grounds screen
1031_been_to_effect = { GUILD = reinforcers }
ai_chance = { base = 200 }
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:reinforcers }
}
}
#Hire the Bodyguard, show/set the effects and variables
scripted_effect 1057_hire_bodyguard_effect = {
hidden_effect = {
reverse_add_opinion = {
target = scope:laamp_bodyguard_recruit
modifier = recruited_me_opinion
opinion = 30
}
}
add_courtier = scope:laamp_bodyguard_recruit
#The actual effect happens in after
show_as_tooltip = {
court_position_grant_effect = {
EMPLOYER = root
POS = bodyguard
CANDIDATE = scope:laamp_bodyguard_recruit
}
}
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_recruited_bodyguard
value = flag:yes
}
#Go back to castle grounds
hidden_effect = { 1051_return_to_castle_effect = yes }
}
#Visit Bodyguard
ep3_laamp_decision_event.1057 = {
type = character_event
title = ep3_laamp_decision_event.1057.t
window = visit_settlement_window
desc = {
#What're they doing?
first_valid = {
#We've returned to this scene, now what
#RETURN:
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_bodyguard
scope:bodyguard_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1057.desc_returned_01
}
triggered_desc = {
trigger = { scope:bodyguard_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1057.desc_returned_02
}
triggered_desc = {
trigger = { scope:bodyguard_loc_tracker ?= 2 }
desc = ep3_laamp_decision_event.1057.desc_returned_03
}
}
#FIRST TIME: We've seen this bodyguard before
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_bodyguard
NOT = { exists = scope:been_to_bodyguard }
}
desc = ep3_laamp_decision_event.1057.desc_reused_bodyguard
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_bodyguard }
}
desc = ep3_laamp_decision_event.1057.desc
}
}
}
theme = landless_adventurer
override_sound = { reference = "event:/MUSIC/Cues/Events/Positive/mx_cue_postive_effect" }
override_background = { reference = alley_day }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#Slicing up carcasses
triggered_animation = {
trigger = { scope:bodyguard_loc_tracker ?= 1 }
animation = disbelief
}
animation = worry
}
center_portrait = {
character = root
camera = camera_event_scheme_vs_extra_right_look_right
#Slicing up carcasses
triggered_animation = {
trigger = { scope:bodyguard_loc_tracker ?= 1 }
animation = fear
}
#Literal *flex*
triggered_animation = {
trigger = {
OR = {
has_trait = gallant
prowess > high_skill_rating
}
}
animation = hero_flex
}
animation = flirtation
}
right_portrait = {
character = scope:laamp_bodyguard_recruit
camera = camera_event_scheme_far_right
#Still angry
triggered_animation = {
trigger = {
NOT = { exists = scope:been_to_bodyguard }
}
animation = rage
}
#Had a pleasant conversation prior to interaction
triggered_animation = {
trigger = {
exists = scope:been_to_bodyguard
scope:bodyguard_loc_tracker ?= 0
}
animation = personality_compassionate
}
#Slicing up carcasses
triggered_animation = {
trigger = { scope:bodyguard_loc_tracker ?= 1 }
animation = hunting_knife_start
}
#State of life
animation = disappointed
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Run this once: Re-save the portrait so the Bodyguard is not the 1050_third_character (since they narratively moved to the alley)
if = {
limit = { scope:1050_third_character = scope:laamp_bodyguard_recruit }
#Overwrite with ROOT to block off the portrait
save_scope_as = 1050_third_character
#Remember the bodyguard
1010_remember_vendor_character_effect = { GUILD = bodyguard CHARACTER = scope:laamp_bodyguard_recruit }
}
#Can we _not_ repeat the loc?
1025_set_and_check_hub_loc_tracker_scope_effect = { HUB = bodyguard }
}
#Pay gold
option = {
name = ep3_laamp_decision_event.1057.a
pay_short_term_gold = {
target = scope:laamp_bodyguard_recruit
gold = minor_gold_value
}
#Wrap effect to hire 'em, set scope & return to castle
1057_hire_bodyguard_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < minor_gold_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
OR = {
prowess > high_skill_rating
has_trait = gallant
}
factor = 0
}
}
}
#Flex Prowess
option = {
name = ep3_laamp_decision_event.1057.b
trigger = {
prowess > high_skill_rating
NOT = { has_trait = gallant }
}
#Wrap effect to hire 'em, set scope & return to castle
1057_hire_bodyguard_effect = yes
ai_chance = {
base = 1000 #Just do it
}
}
#Diplomacy duel
option = {
name = ep3_laamp_decision_event.1057.c
duel = {
skill = diplomacy
value = average_skill_rating
#Success: Hire 'em up
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
OR = {
has_trait = overseer
has_trait = strategist
}
factor = 2
}
desc = ep3_laamp_decision_event.1057.c.success
send_interface_toast = {
title = ep3_laamp_decision_event.1057.c.success
left_icon = root
right_icon = scope:laamp_bodyguard_recruit
#Yippee!
1057_hire_bodyguard_effect = yes
}
}
#Failure: Bye, now
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -20
}
modifier = {
has_trait = zealous
factor = 0.5
}
desc = ep3_laamp_decision_event.1057.c.failure
send_interface_toast = {
type = event_toast_text_bad
title = ep3_laamp_decision_event.1057.c.failure
desc = ep3_laamp_decision_event.1057.c.failure.tt
left_icon = root
right_icon = scope:laamp_bodyguard_recruit
#Oh well
custom_tooltip = ep3_laamp_decision_event.1057.c.failure.tt
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_recruited_bodyguard
value = flag:no
}
1051_return_to_castle_effect = yes
}
}
}
ai_chance = {
base = 100
modifier = {
OR = {
prowess > high_skill_rating
has_trait = gallant
}
factor = 0
}
}
}
#Triggered Option: Gallant-flex them
option = {
name = ep3_laamp_decision_event.1057.d
trigger = { has_trait = gallant }
show_as_unavailable = { always = yes }
reason = gallant
#Have a cherry on top
scope:laamp_bodyguard_recruit = {
hidden_effect = {
if = {
limit = { has_trait = disloyal }
remove_trait = disloyal
}
}
if = {
limit = {
NOT = { has_trait = loyal }
}
add_trait = loyal
}
}
#Wrap effect to hire 'em, set scope & return to castle
1057_hire_bodyguard_effect = yes
ai_chance = {
base = 1000 #Just do it
}
}
#I want to do something else
option = {
name = ep3_laamp_decision_event.1057.e
#Saves scopes and returns us to castle grounds screen
1031_been_to_effect = { GUILD = bodyguard }
ai_chance = {
base = 100
modifier = {
OR = {
has_trait = greedy
has_trait = paranoid
}
add = 300
}
}
}
after = {
if = {
limit = { scope:laamp_decision_recruited_bodyguard ?= flag:yes }
#Appoint them
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:laamp_bodyguard_recruit
COURT_POS = bodyguard_court_position
}
}
court_position_grant_effect = {
EMPLOYER = root
POS = bodyguard
CANDIDATE = scope:laamp_bodyguard_recruit
}
}
}
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:bodyguard }
}
}
######################################################################
# CRAFTSMEN
# ep3_laamp_decision_event.1060
######################################################################
#Set the correct variable to block off the Craftsmen option and remove the desc flavor variable
scripted_effect 1060_finished_craftsmen_effect = {
remove_list_variable = {
name = list_of_options
target = flag:has_craftsman_option
}
save_scope_as = laamp_decision_finished_craftsmen_option
}
#Nothing left for us to do
scripted_trigger 1060_done_with_craftsmen_trigger = {
exists = scope:laamp_decision_bought_weapon
exists = scope:laamp_decision_bought_armor
exists = scope:laamp_decision_bought_accessory
trigger_if = {
limit = { exists = scope:laamp_quartermaster_recruit }
exists = scope:laamp_decision_recruited_quartermaster
}
}
scripted_trigger 1060_is_quartermaster_available_trigger = {
#They exist
exists = scope:laamp_quartermaster_recruit
#We've been there
exists = scope:been_to_quartermaster
#But we're not done with 'em
NOT = { exists = scope:laamp_decision_recruited_quartermaster }
}
#City Holding: Visit the local city craftsmen
ep3_laamp_decision_event.1060 = {
type = character_event
title = ep3_laamp_decision_event.1060.t
window = visit_settlement_window
desc = {
#Intro
first_valid = {
#We've returned to this scene, now what
#RETURN: We've returned from Main Square
random_valid = {
triggered_desc = {
trigger = {
var:return_from_location ?= flag:main_square
exists = scope:been_to_craftsmen
OR = {
scope:craftsmen_loc_tracker ?= 0
scope:craftsmen_loc_tracker ?= 2
}
}
desc = ep3_laamp_decision_event.1060.desc_returned_01
}
triggered_desc = {
trigger = {
var:return_from_location ?= flag:main_square
scope:craftsmen_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1060.desc_returned_02
}
}
#RETURN: We've returned from the Weaponsmith
triggered_desc = {
trigger = { var:return_from_location ?= flag:weaponsmith }
desc = ep3_laamp_decision_event.1060.desc_returned_from_weaponsmith
}
#RETURN: We've returned from the Armorer
triggered_desc = {
trigger = { var:return_from_location ?= flag:armorer }
desc = ep3_laamp_decision_event.1060.desc_returned_from_armorer
}
#RETURN: We've returned from the Jeweler
triggered_desc = {
trigger = { var:return_from_location ?= flag:jeweler }
desc = ep3_laamp_decision_event.1060.desc_returned_from_jeweler
}
#RETURN: We've returned from the Quartermaster
triggered_desc = {
trigger = { var:return_from_location ?= flag:quartermaster }
desc = ep3_laamp_decision_event.1060.desc_returned_from_quartermaster
}
#FIRST TIME: First time here
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_craftsmen }
}
desc = ep3_laamp_decision_event.1060.desc
}
}
#Outro
first_valid = {
#FIRST TIME: First time here, look at the quartermaster
triggered_desc = {
trigger = {
exists = scope:laamp_quartermaster_recruit
NOT = { exists = scope:been_to_craftsmen }
}
desc = ep3_laamp_decision_event.1060.desc_outro_quartermaster
}
#FIRST TIME: First time here, curious partner
triggered_desc = {
trigger = {
exists = scope:visiting_partner
NOT = { exists = scope:been_to_craftsmen }
}
desc = ep3_laamp_decision_event.1060.desc_outro_partner
}
#FIRST TIME: First time here
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_craftsmen }
}
desc = ep3_laamp_decision_event.1060.desc_outro
}
#RETURN: Partner - there is nothing left for us here
triggered_desc = {
trigger = {
exists = scope:visiting_partner
1060_done_with_craftsmen_trigger = yes
}
desc = ep3_laamp_decision_event.1060.desc_outro_return_partner_finished
}
#RETURN: There is nothing left for us here
triggered_desc = {
trigger = { 1060_done_with_craftsmen_trigger = yes }
desc = ep3_laamp_decision_event.1060.desc_outro_return_finished
}
#RETURN: Quartermaster did not move to the tavern, yet
triggered_desc = {
trigger = {
exists = scope:laamp_quartermaster_recruit
NOR = {
exists = scope:been_to_quartermaster
exists = scope:laamp_decision_recruited_quartermaster
}
}
desc = ep3_laamp_decision_event.1060.desc_outro_quartermaster_return
}
#RETURN: We've been here before
random_valid = {
#RETURN: Partner flavor
triggered_desc = {
trigger = {
exists = scope:visiting_partner
exists = scope:been_to_craftsmen
scope:craftsmen_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1060.desc_outro_return_partner_01
}
triggered_desc = {
trigger = {
exists = scope:visiting_partner
scope:craftsmen_loc_tracker ?= 1
}
desc = ep3_laamp_decision_event.1060.desc_outro_return_partner_02
}
triggered_desc = {
trigger = {
exists = scope:visiting_partner
scope:craftsmen_loc_tracker ?= 2
}
desc = ep3_laamp_decision_event.1060.desc_outro_return_partner_03
}
#RETURN: Generics
triggered_desc = {
trigger = {
exists = scope:been_to_craftsmen
scope:craftsmen_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1060.desc_outro_return_01
}
triggered_desc = {
trigger = { scope:craftsmen_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1060.desc_outro_return_02
}
triggered_desc = {
trigger = { scope:craftsmen_loc_tracker ?= 2 }
desc = ep3_laamp_decision_event.1060.desc_outro_return_03
}
}
}
}
theme = stewardship
#Get outta here already
override_effect_2d = {
trigger = {
1060_done_with_craftsmen_trigger = yes
scope:visiting_location = { is_drylands_or_desert_trigger = no }
}
reference = rain
}
override_background = { reference = market }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#If it's our (tired) visiting partner
triggered_animation = {
trigger = { 1060_done_with_craftsmen_trigger = yes }
animation = boredom
}
#If it's our visiting partner
animation = survey
}
center_portrait = {
character = root
triggered_animation = {
trigger = { has_trait = greedy }
animation = stress
}
animation = personality_forgiving
}
#Do we have someone to display?
right_portrait = {
trigger = {
exists = scope:1060_third_character
#If this is root, then that means we have talked to the Quartermaster so let's disappear the portrait
scope:1060_third_character != root
}
character = scope:1060_third_character
#Le Quartermaster
animation = eyeroll
}
#The craftsmen
lower_left_portrait = {
#Let's remove them when the option is no longer available
trigger = {
scope:1060_fourth_character != root
}
character = scope:1060_fourth_character
}
lower_center_portrait = {
#Let's remove them when the option is no longer available
trigger = {
scope:1060_fifth_character != root
}
character = scope:1060_fifth_character
}
lower_right_portrait = {
#Let's remove them when the option is no longer available
trigger = {
scope:1060_sixth_character != root
}
character = scope:1060_sixth_character
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Can we _not_ repeat the loc?
1025_set_and_check_hub_loc_tracker_scope_effect = { HUB = craftsmen }
#Find our weaponsmith
if = {
#Do we already have a weaponsmith?
limit = {
NOT = { exists = scope:laamp_weaponsmith_craftsman }
}
#Has this person been our weaponsmith in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_weaponsmith_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_weaponsmith_craftsman
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_weaponsmith_craftsman
}
#Otherwise find a weaponsmith in the pool
if = {
limit = {
NOT = { exists = scope:laamp_weaponsmith_craftsman }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
}
save_scope_as = laamp_weaponsmith_craftsman
}
}
#Otherwise create a weaponsmith
if = {
limit = {
NOT = { exists = scope:laamp_weaponsmith_craftsman }
}
#Create weaponsmith to stuff in pool
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_weaponsmith_craftsman
}
}
scope:laamp_weaponsmith_craftsman = { save_scope_as = 1060_fourth_character }
}
#And our armorer
if = {
#Do we already have an armorer?
limit = {
NOT = { exists = scope:laamp_armorer_craftsman }
}
#Has this person been our armorer in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_armorer_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_jeweler_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_armorer_craftsman
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_armorer_craftsman
}
#Otherwise find an armorer in the pool
if = {
limit = {
NOT = { exists = scope:laamp_armorer_craftsman }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
}
save_scope_as = laamp_armorer_craftsman
}
}
#Otherwise create an armorer
if = {
limit = {
NOT = { exists = scope:laamp_armorer_craftsman }
}
#Create armorer to stuff in pool
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_armorer_craftsman
}
}
scope:laamp_armorer_craftsman = { save_scope_as = 1060_fifth_character }
}
#And finally, our jeweler
if = {
#Do we already have a jeweler?
limit = {
NOT = { exists = scope:laamp_jeweler_craftsman }
}
#Has this person been our jeweler in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_jeweler_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_quartermaster_trigger = no
}
save_scope_as = laamp_jeweler_craftsman
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_jeweler_craftsman
}
#Otherwise find a jeweler in the pool
if = {
limit = {
NOT = { exists = scope:laamp_jeweler_craftsman }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
}
save_scope_as = laamp_jeweler_craftsman
}
}
#Otherwise create a jeweler
if = {
limit = {
NOT = { exists = scope:laamp_jeweler_craftsman }
}
#Create jeweler to stuff in pool
create_character = {
template = generic_peasant_character
location = scope:visiting_location
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
save_scope_as = laamp_jeweler_craftsman
}
}
scope:laamp_jeweler_craftsman = { save_scope_as = 1060_sixth_character }
}
#Rare: Spawn a spectacular Quartermaster
if = {
limit = {
can_employ_court_position_type = quartermaster_camp_officer
NOT = { has_variable = laamp_decision_1000_checked_for_quartermaster }
}
random_list = {
80 = {
#No Quartermaster
}
20 = {
trigger = { can_employ_court_position_type = quartermaster_camp_officer }
#Has this person been our quartermaster in the past 10 years?
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
save_temporary_scope_as = saved_character_check
#Let's avoid double-dipping
1010_is_a_saved_quartermaster_trigger = yes
1010_is_a_saved_merchant_trigger = no
1010_is_a_saved_peddler_trigger = no
1010_is_a_saved_crier_trigger = no
1010_is_a_saved_storyteller_trigger = no
1010_is_a_saved_thief_trigger = no
1010_is_a_saved_healer_trigger = no
1010_is_a_saved_clergy_trigger = no
1010_is_a_saved_physician_trigger = no
1010_is_a_saved_bodyguard_trigger = no
1010_is_a_saved_weaponsmith_trigger = no
1010_is_a_saved_armorer_trigger = no
1010_is_a_saved_jeweler_trigger = no
}
save_scope_as = laamp_quartermaster_recruit
#Some more loc flavor shenanigans for these saved scopes
save_scope_as = laamp_recurring_quartermaster
}
#Otherwise find a quartermaster in the pool
if = {
limit = {
NOT = { exists = scope:laamp_quartermaster_recruit }
}
random_pool_character = {
province = scope:visiting_location
limit = {
1010_basic_merchant_checks_trigger = yes
NOT = { has_trait = devoted } #Look, I like weaponsmith nuns as much as the next person, but it looked _slightly_ off
stewardship >= 15
NOR = {
has_trait = generous
has_trait = profligate
has_trait = improvident
}
}
save_scope_as = laamp_quartermaster_recruit
}
}
#Or create a quartermaster
if = {
limit = {
NOT = { exists = scope:laamp_quartermaster_recruit }
}
#Create quartermaster to stuff in pool
create_character = {
template = bp1_yearly_2021_stewardship_person_template
location = scope:visiting_location
trait = arrogant
dynasty = none
culture = scope:visiting_location.culture
faith = scope:visiting_location.faith
stewardship = { decent_skill_rating high_skill_rating }
save_scope_as = laamp_quartermaster_recruit
}
scope:laamp_quartermaster_recruit ?= {
#Chance to add a malus trait to this spectatular being
if = {
limit = {
NOR = {
has_trait = possessed_1
has_trait = lunatic_1
has_trait = depressed_1
has_trait = drunkard
has_trait = hashishiyah
has_trait = irritable
}
}
hidden_effect = {
random = {
chance = 20
random_list = {
10 = { add_trait = possessed_1 }
10 = { add_trait = lunatic_1 }
10 = { add_trait = depressed_1 }
10 = { add_trait = drunkard }
10 = { add_trait = hashishiyah }
10 = { add_trait = irritable }
}
}
}
}
}
}
scope:laamp_quartermaster_recruit = { save_scope_as = 1060_third_character }
}
}
#No decision-scumming
set_variable = {
name = laamp_decision_1000_checked_for_quartermaster
days = visit_settlement_cooldown_days
}
}
#Fourth portrait
if = {
limit = {
OR = {
#If we've already finished off the Weaponsmith
AND = {
scope:1060_fourth_character = scope:laamp_weaponsmith_craftsman
exists = scope:laamp_decision_bought_weapon
}
#And we did that before talking to the Quartermaster
AND = {
1060_is_quartermaster_available_trigger = yes
scope:1060_fourth_character = root
}
}
}
#Put the Quartermaster in the slot, if they exist
if = {
limit = { 1060_is_quartermaster_available_trigger = yes }
scope:laamp_quartermaster_recruit = { save_scope_as = 1060_fourth_character }
#Hide the portrait with ROOT if they already are saved somewhere else
if = {
limit = { scope:1060_fifth_character ?= scope:laamp_quartermaster_recruit }
save_scope_as = 1060_fifth_character
}
#Hide the portrait with ROOT if they already are saved somewhere else
if = {
limit = { scope:1060_sixth_character ?= scope:laamp_quartermaster_recruit }
save_scope_as = 1060_sixth_character
}
}
#Otherwise hide the portrait with ROOT
else = { save_scope_as = 1060_fourth_character }
}
#Fifth portrait
if = {
limit = {
OR = {
#If we've already finished off the Armorer
AND = {
scope:1060_fifth_character = scope:laamp_armorer_craftsman
exists = scope:laamp_decision_bought_armor
}
#And we did that before talking to the Quartermaster
AND = {
1060_is_quartermaster_available_trigger = yes
scope:1060_fifth_character = root
}
}
}
#Put the Quartermaster in the slot, if they exist
if = {
limit = {
1060_is_quartermaster_available_trigger = yes
NOR = {
scope:1060_fourth_character ?= scope:laamp_quartermaster_recruit
scope:1060_sixth_character ?= scope:laamp_quartermaster_recruit
}
}
scope:laamp_quartermaster_recruit = { save_scope_as = 1060_fifth_character }
}
#Otherwise hide the portrait with ROOT
else = { save_scope_as = 1060_fifth_character }
}
#Sixth portrait
if = {
limit = {
OR = {
#If we've already finished off the Jeweler
AND = {
scope:1060_sixth_character = scope:laamp_jeweler_craftsman
exists = scope:laamp_decision_bought_accessory
}
#And we did that before talking to the Quartermaster
AND = {
1060_is_quartermaster_available_trigger = yes
scope:1060_sixth_character = root
}
}
}
#Put the Quartermaster in the slot, if they exist
if = {
limit = {
1060_is_quartermaster_available_trigger = yes
NOR = {
scope:1060_fourth_character ?= scope:laamp_quartermaster_recruit
scope:1060_fifth_character ?= scope:laamp_quartermaster_recruit
}
}
scope:laamp_quartermaster_recruit = { save_scope_as = 1060_sixth_character }
}
#Otherwise hide the portrait with ROOT
else = { save_scope_as = 1060_sixth_character }
}
}
#Visit Weaponsmith
option = {
name = {
text = {
first_valid = {
#Return to look at the weapons
triggered_desc = {
trigger = { exists = scope:been_to_weaponsmith }
desc = ep3_laamp_decision_event.1060.a_second
}
#First time looking at weapons
desc = ep3_laamp_decision_event.1060.a
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1060.a.cooldown.tt
NOT = { exists = scope:laamp_decision_bought_weapon }
}
}
show_as_unavailable = { always = yes }
reason = visit_weaponsmith
highlight_portrait = scope:laamp_weaponsmith_craftsman
custom_tooltip = ep3_laamp_decision_event.1060.a.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = craftsmen }
#Go to the Weaponsmith screen
trigger_event = ep3_laamp_decision_event.1061
ai_chance = { base = 100 }
}
#Visit Armorer
option = {
name = {
text = {
first_valid = {
#Return to look at the armor
triggered_desc = {
trigger = { exists = scope:been_to_armorer }
desc = ep3_laamp_decision_event.1060.b_second
}
#First time looking at armor
desc = ep3_laamp_decision_event.1060.b
}
}
}
trigger = {
#Recruited the armorer
trigger_if = {
limit = { scope:laamp_decision_bought_armor ?= flag:no }
custom_tooltip = {
text = recruited_armorer.tt
always = no
}
}
#Been there, done that
trigger_else_if = {
limit = { scope:laamp_decision_bought_armor ?= flag:yes }
custom_tooltip = {
text = ep3_laamp_decision_event.1060.b.cooldown.tt
always = no
}
}
trigger_else = { exists = scope:laamp_armorer_craftsman }
}
show_as_unavailable = { always = yes }
reason = visit_armorsmith
highlight_portrait = scope:laamp_armorer_craftsman
custom_tooltip = ep3_laamp_decision_event.1060.b.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = craftsmen }
#Go to the Armorer screen
trigger_event = ep3_laamp_decision_event.1063
ai_chance = { base = 100 }
}
#Visit Jeweler
option = {
name = {
text = {
first_valid = {
#Return to look at the accessories
triggered_desc = {
trigger = { exists = scope:been_to_jeweler }
desc = ep3_laamp_decision_event.1060.c_second
}
#First time looking at accessories
desc = ep3_laamp_decision_event.1060.c
}
}
}
trigger = {
custom_tooltip = {
text = ep3_laamp_decision_event.1060.c.cooldown.tt
NOT = { exists = scope:laamp_decision_bought_accessory }
}
}
show_as_unavailable = { always = yes }
reason = visit_jeweler
highlight_portrait = scope:laamp_jeweler_craftsman
custom_tooltip = ep3_laamp_decision_event.1060.c.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = craftsmen }
#Go to the Jeweler screen
trigger_event = ep3_laamp_decision_event.1065
ai_chance = { base = 100 }
}
#Rare Option: Hire cheaper, skilled, Quartermaster
option = {
name = {
text = {
first_valid = {
#Return to talk to the Quartermaster
triggered_desc = {
trigger = { exists = scope:been_to_quartermaster }
desc = ep3_laamp_decision_event.1060.d_second
}
#First time talking to the Quartermaster
desc = ep3_laamp_decision_event.1060.d
}
}
}
trigger = {
exists = scope:laamp_quartermaster_recruit
NOT = { exists = scope:laamp_decision_recruited_quartermaster }
}
reason = unlocked_quartermaster
highlight_portrait = scope:laamp_quartermaster_recruit
custom_tooltip = ep3_laamp_decision_event.1060.d.tt
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = craftsmen }
#For the Quartermaster screen
trigger_event = ep3_laamp_decision_event.1067
ai_chance = { base = 500 }
}
#I want to do something else
option = {
name = {
text = {
first_valid = {
#Nothing left to do
triggered_desc = {
trigger = { 1060_done_with_craftsmen_trigger = yes }
desc = ep3_laamp_decision_event.1060.e_second
}
#Back to main square
desc = ep3_laamp_decision_event.1060.e
}
}
}
#Have we done everything? Are we closing off the option?
if = {
limit = { 1060_done_with_craftsmen_trigger = yes }
#Clean up unnecessary variables and close off the option
1060_finished_craftsmen_effect = yes
}
#*Withered* - This needs to be done manually because the scope isn't saved before the next event is triggered if it's run in After = { ... }
1030_save_hub_scope_effect = { HUB = craftsmen }
#Go back to the main event
1000_return_to_main_effect = yes
ai_chance = {
base = 100
modifier = {
OR = {
has_trait = greedy
has_trait = paranoid
}
add = 300
}
}
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:craftsmen }
}
}
#Identify the weapon artifacts
scripted_effect 1061_set_weapon_variable_effect = {
set_variable = {
name = 1061_laamp_decision_weapon
days = visit_settlement_cooldown_days
}
}
#Simple enough
scripted_trigger 1061_is_rare_item_trigger = {
OR = {
rarity = masterwork
rarity = famed
rarity = illustrious
}
}
#Chance to flush the inventory to simulate someone else buying the item or similar. Refresh the stock.
scripted_effect 1061_chance_to_flush_inventory_effect = {
hidden_effect = {
random_list = {
#We didn't buy this one
50 = {
trigger = {
$FIRST_ITEM$ = { artifact_owner = $VENDOR$ }
}
#Less chance to destroy premium stuff
modifier = {
$FIRST_ITEM$ = { 1061_is_rare_item_trigger = yes }
factor = 0.5
}
destroy_artifact = $FIRST_ITEM$
}
#Or this one
50 = {
trigger = {
$SECOND_ITEM$ = { artifact_owner = $VENDOR$ }
}
#Less chance to destroy premium stuff
modifier = {
$SECOND_ITEM$ = { 1061_is_rare_item_trigger = yes }
factor = 0.5
}
destroy_artifact = $SECOND_ITEM$
}
#Nor this one?
50 = {
trigger = {
$THIRD_ITEM$ = { artifact_owner = $VENDOR$ }
}
#Less chance to destroy premium stuff
modifier = {
$THIRD_ITEM$ = { 1061_is_rare_item_trigger = yes }
factor = 0.5
}
destroy_artifact = $THIRD_ITEM$
}
}
}
}
#Chance for the vendor to have a real gem, once in a while
scripted_effect 1061_buff_item_modifiers_effect = {
#Masterwork modifiers
if = {
limit = { rarity = masterwork }
if = {
limit = { has_variable = 1061_laamp_decision_weapon }
add_scaled_artifact_modifier_prowess_effect = yes
add_scaled_artifact_modifier_combat_effect = yes
}
if = {
limit = { has_variable = 1063_laamp_decision_armor }
add_scaled_artifact_modifier_negate_prowess_penalty_effect = yes
add_scaled_artifact_modifier_terrain_advantage_effect = yes
}
if = {
limit = { has_variable = 1065_laamp_decision_accessory }
add_scaled_artifact_modifier_hire_mercenary_effect = yes
add_scaled_artifact_modifier_prestige_effect = yes
}
}
}
#We return to the craftsmen event to peruse other options
scripted_effect 1061_return_to_craftsmen_effect = {
custom_tooltip = ep3_laamp_decision_event.1061.return.tt
trigger_event = ep3_laamp_decision_event.1060
}
#Set the correct variable to block off the Weaponsmith option and remove the desc flavor variable
scripted_effect 1061_bought_weapon_effect = {
scope:1061_first_weapon = { remove_variable ?= 1061_weapon_value }
scope:1061_second_weapon = { remove_variable ?= 1061_weapon_value }
scope:1061_third_weapon = { remove_variable ?= 1061_weapon_value }
save_scope_as = laamp_decision_bought_weapon
#Simulate shifting inventory
1061_chance_to_flush_inventory_effect = {
FIRST_ITEM = scope:1061_first_weapon
SECOND_ITEM = scope:1061_second_weapon
THIRD_ITEM = scope:1061_third_weapon
VENDOR = scope:laamp_weaponsmith_craftsman
}
#Go back to craftsmen district
hidden_effect = { 1061_return_to_craftsmen_effect = yes }
}
#The actual transfer
scripted_effect 1061_buy_item_effect = {
#Weapon
if = {
limit = { has_variable = 1061_laamp_decision_weapon }
root = {
pay_short_term_gold = {
target = scope:laamp_weaponsmith_craftsman
gold = prev.var:1061_weapon_value #Is set via the 1041_set_item_value_effect on the artifact itself
}
}
}
#Armor
if = {
limit = { has_variable = 1063_laamp_decision_armor }
root = {
pay_short_term_gold = {
target = scope:laamp_armorer_craftsman
gold = prev.var:1063_armor_value
}
}
}
#Accessory
if = {
limit = { has_variable = 1065_laamp_decision_accessory }
root = {
pay_short_term_gold = {
target = scope:laamp_jeweler_craftsman
gold = prev.var:1065_accessory_value
}
}
}
set_owner = root
}
#Visit Weaponsmith
ep3_laamp_decision_event.1061 = {
type = character_event
title = ep3_laamp_decision_event.1061.t
window = visit_settlement_window
desc = {
first_valid = {
#We've returned to this scene, now what
#RETURN: Generics
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_weaponsmith
scope:weaponsmith_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1061.desc_returned_01
}
triggered_desc = {
trigger = { scope:weaponsmith_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1061.desc_returned_02
}
}
#FIRST TIME: We've seen this weaponsmith before
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_weaponsmith_craftsman
NOT = { exists = scope:been_to_weaponsmith }
}
desc = ep3_laamp_decision_event.1061.desc_reused_weaponsmith
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_weaponsmith }
}
desc = ep3_laamp_decision_event.1061.desc
}
}
}
theme = stewardship
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_martial" }
override_background = { reference = armory }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
animation = marshal_random_weapon
}
center_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:laamp_weaponsmith_craftsman
camera = camera_event_scheme_far_right
animation = inspect_weapon
}
artifact = {
target = scope:1061_first_weapon
position = lower_left_portrait
}
artifact = {
target = scope:1061_second_weapon
position = lower_center_portrait
}
artifact = {
target = scope:1061_third_weapon
position = lower_right_portrait
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
location.province_owner = { save_scope_as = bg_override_char }
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = weaponsmith }
#Find our weapons
if = {
limit = {
NOT = { exists = scope:1061_first_weapon }
}
scope:laamp_weaponsmith_craftsman = {
#Have we created weapons recently, which we can pull?
if = {
limit = {
any_character_artifact ?= { has_variable = 1061_laamp_decision_weapon }
}
every_character_artifact = {
limit = { has_variable = 1061_laamp_decision_weapon }
add_to_list = list_of_potential_weapons
}
random_in_list = {
list = list_of_potential_weapons
save_scope_as = 1061_first_weapon
}
random_in_list = {
list = list_of_potential_weapons
limit = {
this != scope:1061_first_weapon
}
save_scope_as = 1061_second_weapon
}
random_in_list = {
list = list_of_potential_weapons
limit = {
NOR = {
this = scope:1061_first_weapon
this = scope:1061_second_weapon
}
}
save_scope_as = 1061_third_weapon
}
}
#If we don't have any old weapons; generate new ones!
hidden_effect_new_object = { #HAZMAT SUIT OF ERROR SUPRESSION
if = {
limit = {
NOT = { exists = scope:1061_first_weapon }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_weaponsmith_craftsman }
#Generate weapon
create_artifact_weapon_effect = {
OWNER = scope:laamp_weaponsmith_craftsman
CREATOR = scope:laamp_weaponsmith_craftsman
SET_WEAPON_TYPE = flag:no
}
#Finalization
scope:newly_created_artifact ?= {
1061_set_weapon_variable_effect = yes
1061_buff_item_modifiers_effect = yes
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1061_first_weapon
}
}
if = {
limit = {
NOT = { exists = scope:1061_second_weapon }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_weaponsmith_craftsman }
#Generate weapon
create_artifact_weapon_effect = {
OWNER = scope:laamp_weaponsmith_craftsman
CREATOR = scope:laamp_weaponsmith_craftsman
SET_WEAPON_TYPE = flag:no
}
#Finalization
scope:newly_created_artifact ?= {
1061_set_weapon_variable_effect = yes
1061_buff_item_modifiers_effect = yes
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1061_second_weapon
}
}
if = {
limit = {
NOT = { exists = scope:1061_third_weapon }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_weaponsmith_craftsman }
#Generate weapon
create_artifact_weapon_effect = {
OWNER = scope:laamp_weaponsmith_craftsman
CREATOR = scope:laamp_weaponsmith_craftsman
SET_WEAPON_TYPE = flag:no
}
#Finalization
scope:newly_created_artifact ?= {
1061_set_weapon_variable_effect = yes
1061_buff_item_modifiers_effect = yes
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1061_third_weapon
}
}
#Set the value of the weapons
scope:1061_first_weapon = { 1041_set_item_value_effect = yes }
scope:1061_second_weapon = { 1041_set_item_value_effect = yes }
scope:1061_third_weapon = { 1041_set_item_value_effect = yes }
}
}
#Remember the weaponsmith
1010_remember_vendor_character_effect = { GUILD = weaponsmith CHARACTER = scope:laamp_weaponsmith_craftsman }
}
}
#Weapon #1
option = {
name = ep3_laamp_decision_event.1061.a
#Pay gold, transfer weapon
scope:1061_first_weapon = { 1061_buy_item_effect = yes }
#Then set correct variables and reroute us to the craftsmen
1061_bought_weapon_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < scope:1061_first_weapon.var:1061_weapon_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Weapon #2
option = {
name = ep3_laamp_decision_event.1061.b
#Pay gold, transfer weapon
scope:1061_second_weapon = { 1061_buy_item_effect = yes }
#Then set correct variables and reroute us to the craftsmen
1061_bought_weapon_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < scope:1061_second_weapon.var:1061_weapon_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Weapon #3
option = {
name = ep3_laamp_decision_event.1061.c
#Pay gold, transfer weapon
scope:1061_third_weapon = { 1061_buy_item_effect = yes }
#Then set correct variables and reroute us to the craftsmen
1061_bought_weapon_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < scope:1061_third_weapon.var:1061_weapon_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#I want to visit another craftsman
option = {
name = ep3_laamp_decision_event.1061.d
#Sets variables and returns us to craftman screen
1031_been_to_effect = { GUILD = weaponsmith }
ai_chance = {
base = 200
modifier = {
has_trait = greedy
factor = 2
}
}
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:weaponsmith }
}
}
#Identify the armor artifacts
scripted_effect 1063_set_armor_variable_effect = {
set_variable = {
name = 1063_laamp_decision_armor
days = visit_settlement_cooldown_days
}
}
#Set the correct variable to block off the Armorer option and remove the desc flavor variable
scripted_effect 1063_bought_armor_effect = {
scope:1063_first_armor = { remove_variable ?= 1063_armor_value }
scope:1063_second_armor = { remove_variable ?= 1063_armor_value }
scope:1063_third_armor = { remove_variable ?= 1063_armor_value }
save_scope_value_as = {
name = laamp_decision_bought_armor
value = flag:yes
}
#Simulate shifting inventory
1061_chance_to_flush_inventory_effect = {
FIRST_ITEM = scope:1063_first_armor
SECOND_ITEM = scope:1063_second_armor
THIRD_ITEM = scope:1063_third_armor
VENDOR = scope:laamp_armorer_craftsman
}
#Go back to craftsmen district
hidden_effect = { 1061_return_to_craftsmen_effect = yes }
}
#Visit Armorer
ep3_laamp_decision_event.1063 = {
type = character_event
title = ep3_laamp_decision_event.1063.t
window = visit_settlement_window
desc = {
first_valid = {
#We've returned to this scene, now what
#RETURN: Generics
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_armorer
scope:armorer_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1063.desc_returned_01
}
triggered_desc = {
trigger = { scope:armorer_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1063.desc_returned_02
}
}
#FIRST TIME: We've seen this armorer before
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_armorer_craftsman
NOT = { exists = scope:been_to_armorer }
}
desc = ep3_laamp_decision_event.1063.desc_reused_armorer
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_armorer }
}
desc = ep3_laamp_decision_event.1063.desc
}
}
}
theme = stewardship
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_generic" }
override_background = { reference = armory }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
animation = personality_content
}
center_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:laamp_armorer_craftsman
camera = camera_event_scheme_far_right
animation = personality_bold
}
artifact = {
target = scope:1063_first_armor
position = lower_left_portrait
}
artifact = {
target = scope:1063_second_armor
position = lower_center_portrait
}
artifact = {
target = scope:1063_third_armor
position = lower_right_portrait
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
location.province_owner = { save_scope_as = bg_override_char }
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = armorer }
#Find our armors
if = {
limit = {
NOT = { exists = scope:1063_first_armor }
}
scope:laamp_armorer_craftsman = {
#Have we created armors recently, which we can pull?
if = {
limit = {
any_character_artifact ?= { has_variable = 1063_laamp_decision_armor }
}
every_character_artifact = {
limit = { has_variable = 1063_laamp_decision_armor }
add_to_list = list_of_potential_armors
}
random_in_list = {
list = list_of_potential_armors
save_scope_as = 1063_first_armor
}
random_in_list = {
list = list_of_potential_armors
limit = {
this != scope:1063_first_armor
}
save_scope_as = 1063_second_armor
}
random_in_list = {
list = list_of_potential_armors
limit = {
NOR = {
this = scope:1063_first_armor
this = scope:1063_second_armor
}
}
save_scope_as = 1063_third_armor
}
}
#If we don't have any old armors; generate new ones!
hidden_effect_new_object = { #HAZMAT SUIT OF ERROR SUPRESSION
if = {
limit = {
NOT = { exists = scope:1063_first_armor }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_armorer_craftsman }
#Generate armor
create_artifact_armor_effect = {
OWNER = scope:laamp_armorer_craftsman
CREATOR = scope:laamp_armorer_craftsman
SET_ARMOR_TYPE = flag:no
}
#Finalization
scope:newly_created_artifact ?= {
1063_set_armor_variable_effect = yes
1061_buff_item_modifiers_effect = yes
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1063_first_armor
}
}
if = {
limit = {
NOT = { exists = scope:1063_second_armor }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_armorer_craftsman }
#Generate armor
create_artifact_armor_effect = {
OWNER = scope:laamp_armorer_craftsman
CREATOR = scope:laamp_armorer_craftsman
SET_ARMOR_TYPE = flag:armor_type_lamellar
}
#Finalization
scope:newly_created_artifact ?= {
1063_set_armor_variable_effect = yes
1061_buff_item_modifiers_effect = yes
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1063_second_armor
}
}
if = {
limit = {
NOT = { exists = scope:1063_third_armor }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_armorer_craftsman }
#Generate armor
create_artifact_armor_effect = {
OWNER = scope:laamp_armorer_craftsman
CREATOR = scope:laamp_armorer_craftsman
SET_ARMOR_TYPE = flag:armor_type_scale
}
#Finalization
scope:newly_created_artifact ?= {
1063_set_armor_variable_effect = yes
1061_buff_item_modifiers_effect = yes
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1063_third_armor
}
}
#Set the value of the armors
scope:1063_first_armor = { 1041_set_item_value_effect = yes }
scope:1063_second_armor = { 1041_set_item_value_effect = yes }
scope:1063_third_armor = { 1041_set_item_value_effect = yes }
}
}
#Remember the armorer
1010_remember_vendor_character_effect = { GUILD = armorer CHARACTER = scope:laamp_armorer_craftsman }
}
}
#Armor #1
option = {
name = ep3_laamp_decision_event.1063.a
#Pay gold, transfer armor
scope:1063_first_armor = { 1061_buy_item_effect = yes }
#Then set correct variables and reroute us to the craftsmen
1063_bought_armor_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < scope:1063_first_armor.var:1063_armor_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Armor #2
option = {
name = ep3_laamp_decision_event.1063.b
#Pay gold, transfer armor
scope:1063_second_armor = { 1061_buy_item_effect = yes }
#Then set correct variables and reroute us to the craftsmen
1063_bought_armor_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < scope:1063_second_armor.var:1063_armor_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Armor #3
option = {
name = ep3_laamp_decision_event.1063.c
#Pay gold, transfer armor
scope:1063_third_armor = { 1061_buy_item_effect = yes }
#Then set correct variables and reroute us to the craftsmen
1063_bought_armor_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < scope:1063_third_armor.var:1063_armor_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#TRIGGERED OPTION: Attempt to recruit the armorer
option = {
name = ep3_laamp_decision_event.1063.d
trigger = {
custom_description = {
text = not_have_armorer_building
can_employ_court_position_type = armorer_camp_officer
}
}
reason = unlocked_armorer
pay_short_term_gold = {
target = scope:laamp_armorer_craftsman
gold = minor_gold_value
}
hidden_effect = {
reverse_add_opinion = {
target = scope:laamp_armorer_craftsman
modifier = recruited_me_opinion
opinion = 30
}
}
add_courtier = scope:laamp_armorer_craftsman
#The actual effect happens in after
show_as_tooltip = {
camp_officer_grant_effect = {
EMPLOYER = root
POS = armorer
CANDIDATE = scope:laamp_armorer_craftsman
}
}
#Sets variables and returns us to craftman screen
save_scope_value_as = {
name = laamp_decision_bought_armor
value = flag:no
}
#Go back to craftsmen district
hidden_effect = { 1061_return_to_craftsmen_effect = yes }
ai_chance = {
base = 100
modifier = {
short_term_gold < minor_gold_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
modifier = {
employs_court_position = armorer_camp_officer
factor = 0
}
}
}
#I want to visit another craftsman
option = {
name = ep3_laamp_decision_event.1063.e
#Sets variables and returns us to craftman screen
1031_been_to_effect = { GUILD = armorer }
ai_chance = {
base = 200
modifier = {
has_trait = greedy
factor = 2
}
}
}
after = {
if = {
limit = { scope:laamp_decision_bought_armor ?= flag:no }
#Appoint them
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:laamp_armorer_craftsman
COURT_POS = armorer_camp_officer
}
}
camp_officer_grant_effect = {
EMPLOYER = root
POS = armorer
CANDIDATE = scope:laamp_armorer_craftsman
}
}
}
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:armorer }
}
}
#Identify the accessory artifacts
scripted_effect 1065_set_accessory_variable_effect = {
set_variable = {
name = 1065_laamp_decision_accessory
days = visit_settlement_cooldown_days
}
}
#Set the correct variable to block off the Jeweler option and remove the desc flavor variable
scripted_effect 1065_bought_accessory_effect = {
scope:1065_first_accessory = { remove_variable ?= 1065_accessory_value }
scope:1065_second_accessory = { remove_variable ?= 1065_accessory_value }
scope:1065_third_accessory = { remove_variable ?= 1065_accessory_value }
save_scope_as = laamp_decision_bought_accessory
#Simulate shifting inventory
1061_chance_to_flush_inventory_effect = {
FIRST_ITEM = scope:1065_first_accessory
SECOND_ITEM = scope:1065_second_accessory
THIRD_ITEM = scope:1065_third_accessory
VENDOR = scope:laamp_jeweler_craftsman
}
#Go back to craftsmen district
hidden_effect = { 1061_return_to_craftsmen_effect = yes }
}
#Visit Jeweler
ep3_laamp_decision_event.1065 = {
type = character_event
title = ep3_laamp_decision_event.1065.t
window = visit_settlement_window
desc = {
first_valid = {
#We've returned to this scene, now what
#RETURN: Generics
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_jeweler
scope:jeweler_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1065.desc_returned_01
}
triggered_desc = {
trigger = { scope:jeweler_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1065.desc_returned_02
}
}
#FIRST TIME: We've seen this jeweler before
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_jeweler_craftsman
NOT = { exists = scope:been_to_jeweler }
}
desc = ep3_laamp_decision_event.1065.desc_reused_jeweler
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_jeweler }
}
desc = ep3_laamp_decision_event.1065.desc
}
}
}
theme = stewardship
override_background = { reference = physicians_study }
left_portrait = {
trigger = { exists = scope:visiting_partner }
character = scope:visiting_partner
#It kinda makes sense, doesn't it?
triggered_animation = {
trigger = {
exists = scope:been_to_jeweler
scope:jeweler_loc_tracker ?= 0
}
animation = interested
}
animation = war_over_tie
}
center_portrait = {
character = root
#It kinda makes sense, doesn't it?
triggered_animation = {
trigger = {
exists = scope:been_to_jeweler
scope:jeweler_loc_tracker ?= 0
}
animation = disbelief
}
animation = thinking
}
right_portrait = {
character = scope:laamp_jeweler_craftsman
camera = camera_event_scheme_vs_center_look_left
#It kinda makes sense, doesn't it?
triggered_animation = {
trigger = {
exists = scope:been_to_jeweler
scope:jeweler_loc_tracker ?= 0
}
animation = paranoia
}
triggered_animation = {
trigger = { scope:jeweler_loc_tracker ?= 1 }
animation = writing
}
animation = chess_cocky
}
artifact = {
target = scope:1065_first_accessory
position = lower_left_portrait
}
artifact = {
target = scope:1065_second_accessory
position = lower_center_portrait
}
artifact = {
target = scope:1065_third_accessory
position = lower_right_portrait
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
location.province_owner = { save_scope_as = bg_override_char }
#Can we _not_ repeat the loc?
1025_set_and_check_scene_loc_tracker_scope_effect = { SCENE = jeweler }
#Find our accessories
if = {
limit = {
NOT = { exists = scope:1065_first_accessory }
}
scope:laamp_jeweler_craftsman = {
#Have we created accessories recently, which we can pull?
if = {
limit = {
any_character_artifact ?= { has_variable = 1065_laamp_decision_accessory }
}
every_character_artifact = {
limit = { has_variable = 1065_laamp_decision_accessory }
add_to_list = list_of_potential_accessories
}
random_in_list = {
list = list_of_potential_accessories
save_scope_as = 1065_first_accessory
}
random_in_list = {
list = list_of_potential_accessories
limit = {
this != scope:1065_first_accessory
}
save_scope_as = 1065_second_accessory
}
random_in_list = {
list = list_of_potential_accessories
limit = {
NOR = {
this = scope:1065_first_accessory
this = scope:1065_second_accessory
}
}
save_scope_as = 1065_third_accessory
}
}
#If we don't have any old accessories; generate new ones!
hidden_effect_new_object = { #HAZMAT SUIT OF ERROR SUPRESSION
if = {
limit = {
NOT = { exists = scope:1065_first_accessory }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_armorer_craftsman }
#Generate accessory
random_list = {
50 = {
create_artifact_brooch_effect = {
OWNER = scope:laamp_jeweler_craftsman
SMITH = scope:laamp_jeweler_craftsman
}
}
50 = {
create_artifact_ring_effect = {
OWNER = scope:laamp_jeweler_craftsman
SMITH = scope:laamp_jeweler_craftsman
}
}
50 = {
create_artifact_necklace_effect = {
OWNER = scope:laamp_jeweler_craftsman
SMITH = scope:laamp_jeweler_craftsman
}
}
}
#Finalization
scope:newly_created_artifact ?= {
1065_set_accessory_variable_effect = yes
1061_buff_item_modifiers_effect = yes
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1065_first_accessory
}
}
if = {
limit = {
NOT = { exists = scope:1065_second_accessory }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_armorer_craftsman }
#Generate accessory
random_list = {
50 = {
create_artifact_crown_effect = {
OWNER = scope:laamp_jeweler_craftsman
SMITH = scope:laamp_jeweler_craftsman
}
}
50 = {
create_artifact_regalia_effect = {
OWNER = scope:laamp_jeweler_craftsman
SMITH = scope:laamp_jeweler_craftsman
}
}
}
#Finalization
scope:newly_created_artifact ?= {
1065_set_accessory_variable_effect = yes
1061_buff_item_modifiers_effect = yes
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1065_second_accessory
}
}
if = {
limit = {
NOT = { exists = scope:1065_third_accessory }
}
#Set rarity, maybe
1041_chance_to_buff_item_rarity_effect = { VENDOR = scope:laamp_armorer_craftsman }
#Generate accessory
random_list = {
#Don't need two rings etc
50 = {
trigger = {
NOT = {
scope:1065_first_accessory = { artifact_type = brooch }
}
}
create_artifact_brooch_effect = {
OWNER = scope:laamp_jeweler_craftsman
SMITH = scope:laamp_jeweler_craftsman
}
}
50 = {
trigger = {
NOT = {
scope:1065_first_accessory = { artifact_type = ring }
}
}
create_artifact_ring_effect = {
OWNER = scope:laamp_jeweler_craftsman
SMITH = scope:laamp_jeweler_craftsman
}
}
50 = {
trigger = {
NOT = {
scope:1065_first_accessory = { artifact_type = necklace }
}
}
create_artifact_necklace_effect = {
OWNER = scope:laamp_jeweler_craftsman
SMITH = scope:laamp_jeweler_craftsman
}
}
}
#Finalization
scope:newly_created_artifact ?= {
1065_set_accessory_variable_effect = yes
1061_buff_item_modifiers_effect = yes
#Don't need no notification about this
1020_suppress_artifact_notifications_effect = yes
save_scope_as = 1065_third_accessory
}
}
#Set the value of the accessories
scope:1065_first_accessory = { 1041_set_item_value_effect = yes }
scope:1065_second_accessory = { 1041_set_item_value_effect = yes }
scope:1065_third_accessory = { 1041_set_item_value_effect = yes }
}
#Remember the jeweler
1010_remember_vendor_character_effect = { GUILD = jeweler CHARACTER = scope:laamp_jeweler_craftsman }
}
}
}
#Accessory #1
option = {
name = ep3_laamp_decision_event.1065.a
#Pay gold, transfer Accessory
scope:1065_first_accessory = { 1061_buy_item_effect = yes }
#Then set correct variables and reroute us to the craftsmen
1065_bought_accessory_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < scope:1065_first_accessory.var:1065_accessory_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Accessory #2
option = {
name = ep3_laamp_decision_event.1065.b
#Pay gold, transfer Accessory
scope:1065_second_accessory = { 1061_buy_item_effect = yes }
#Then set correct variables and reroute us to the craftsmen
1065_bought_accessory_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < scope:1065_second_accessory.var:1065_accessory_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#Accessory #3
option = {
name = ep3_laamp_decision_event.1065.c
#Pay gold, transfer Accessory
scope:1065_third_accessory = { 1061_buy_item_effect = yes }
#Then set correct variables and reroute us to the craftsmen
1065_bought_accessory_effect = yes
ai_chance = {
base = 100
modifier = {
short_term_gold < scope:1065_third_accessory.var:1065_accessory_value
short_term_gold < laamp_ai_spending_pants_value
factor = 0
}
}
}
#I want to visit another craftsman
option = {
name = ep3_laamp_decision_event.1065.d
#Sets variables and returns us to craftman screen
1031_been_to_effect = { GUILD = jeweler }
ai_chance = {
base = 200
modifier = {
has_trait = greedy
factor = 2
}
}
}
after = {
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:jeweler }
}
}
#Hire the Quartermaster, show/set the effects and variables
scripted_effect 1067_hire_quartermaster_effect = {
hidden_effect = {
reverse_add_opinion = {
target = scope:laamp_quartermaster_recruit
modifier = recruited_me_opinion
opinion = 30
}
}
add_courtier = scope:laamp_quartermaster_recruit
#The actual effect happens in after
show_as_tooltip = {
camp_officer_grant_effect = {
EMPLOYER = root
POS = quartermaster
CANDIDATE = scope:laamp_quartermaster_recruit
}
}
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_recruited_quartermaster
value = flag:yes
}
#Go back to craftsmen district
hidden_effect = { 1061_return_to_craftsmen_effect = yes }
}
#Visit Quartermaster
ep3_laamp_decision_event.1067 = {
type = character_event
title = ep3_laamp_decision_event.1067.t
window = visit_settlement_window
desc = {
first_valid = {
#We've returned to this scene, now what
#RETURN:
random_valid = {
triggered_desc = {
trigger = {
exists = scope:been_to_quartermaster
scope:quartermaster_loc_tracker ?= 0
}
desc = ep3_laamp_decision_event.1067.desc_returned_01
}
triggered_desc = {
trigger = { scope:quartermaster_loc_tracker ?= 1 }
desc = ep3_laamp_decision_event.1067.desc_returned_02
}
triggered_desc = {
trigger = { scope:quartermaster_loc_tracker ?= 2 }
desc = ep3_laamp_decision_event.1067.desc_returned_03
}
}
#FIRST TIME: We've seen this quartermaster before
triggered_desc = {
trigger = {
exists = scope:laamp_recurring_quartermaster
NOT = { exists = scope:been_to_quartermaster }
}
desc = ep3_laamp_decision_event.1067.desc_reused_quartermaster
}
#FIRST TIME:
triggered_desc = {
trigger = {
NOT = { exists = scope:been_to_quartermaster }
}
desc = ep3_laamp_decision_event.1067.desc
}
}
}
theme = landless_adventurer
override_sound = { reference = "event:/MUSIC/Cues/Events/Positive/mx_cue_postive_effect" }
override_background = { reference = tavern }
left_portrait = {
character = root
animation = scheme
}
right_portrait = {
character = scope:laamp_quartermaster_recruit
animation = drink_goblet
}
immediate = {
#To prevent the character, for whatever reason, managing to not have the variable be removed when exiting VS
temporarily_lock_visit_settlement_effect = yes
#Run this once: Re-save the portrait so the Quartermaster is not the 1060_third_character (since they narratively moved to the tavern)
if = {
limit = { scope:1060_third_character = scope:laamp_quartermaster_recruit }
#Overwrite the portrait with ROOT to disable it
save_scope_as = 1060_third_character
#Remember the Quartermaster
1010_remember_vendor_character_effect = { GUILD = quartermaster CHARACTER = scope:laamp_quartermaster_recruit }
}
#Can we _not_ repeat the loc?
1025_set_and_check_hub_loc_tracker_scope_effect = { HUB = quartermaster } #This is only a hub because it has 3 random locs
}
#Pay up
option = {
name = ep3_laamp_decision_event.1067.a
pay_short_term_gold = {
target = scope:laamp_quartermaster_recruit
gold = minor_gold_value
}
#Wrap effect to hire 'em and also set up variables
1067_hire_quartermaster_effect = yes
ai_chance = {
base = 100
modifier = {
any_courtier = { count >= many_followers_value }
factor = 0
}
}
}
#I have a sizeable camp for you to manage
option = {
name = ep3_laamp_decision_event.1067.b
trigger = {
custom_tooltip = {
text = not_enough_followers.tt
any_courtier = { count >= many_followers_value }
}
}
reason = many_followers
#_Oh noes_
show_as_unavailable = { always = yes }
#Wrap effect to hire 'em and also set up variables
1067_hire_quartermaster_effect = yes
ai_chance = {
base = 1000 #Just do it
}
}
#Intrigue duel
option = {
name = ep3_laamp_decision_event.1067.c
duel = {
skill = intrigue
value = average_skill_rating
#Success: Hire 'em up
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep3_laamp_decision_event.1067.c.success
send_interface_toast = {
title = ep3_laamp_decision_event.1067.c.success
left_icon = root
right_icon = scope:laamp_quartermaster_recruit
#Yippee!
1067_hire_quartermaster_effect = yes
}
}
#Failure: Bye, now
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -20
}
desc = ep3_laamp_decision_event.1067.c.failure
send_interface_toast = {
type = event_toast_text_bad
title = ep3_laamp_decision_event.1067.c.failure
desc = ep3_laamp_decision_event.1067.c.failure.tt
left_icon = root
right_icon = scope:laamp_quartermaster_recruit
#Oh well
custom_tooltip = ep3_laamp_decision_event.1067.c.failure.tt
#This 'finished' is different since it changes between flag:yes and flag:no
save_scope_value_as = {
name = laamp_decision_recruited_quartermaster
value = flag:no
}
1061_return_to_craftsmen_effect = yes
}
}
}
ai_chance = {
base = 100
modifier = {
any_courtier = { count >= many_followers_value }
factor = 0
}
}
}
#Let's not
option = {
name = ep3_laamp_decision_event.1067.d
#Sets variables and returns us to craftman screen
1031_been_to_effect = { GUILD = quartermaster }
ai_chance = {
base = 100
modifier = {
any_courtier = { count >= many_followers_value }
factor = 0
}
}
}
after = {
if = {
limit = { scope:laamp_decision_recruited_quartermaster ?= flag:yes }
#Appoint them
if = {
limit = {
can_appoint_char_to_court_position = {
CHAR = scope:laamp_quartermaster_recruit
COURT_POS = quartermaster_camp_officer
}
}
camp_officer_grant_effect = {
EMPLOYER = root
POS = quartermaster
CANDIDATE = scope:laamp_quartermaster_recruit
}
}
}
#What was our last location
1000_update_last_location_effect = { LOCATION_FLAG = flag:quartermaster }
}
}
######################################################################
# END
######################################################################
#Seasoned Visitor Decision
scripted_effect 1100_book_creation_effect = {
if = {
limit = {
has_variable = poi_visited
}
if = {
limit = {
artifacts_use_indian_books_trigger = yes
}
create_artifact = {
name = marco_polo_book_title
type = journal
template = marco_polo_book
creator = root
description = marco_polo_book_desc
visuals = indian_book
save_scope_as = newly_created_artifact
modifier = artifact_monthly_prestige_1_modifier
wealth = 50
quality = 10
}
}
else = {
create_artifact = {
name = marco_polo_book_title
type = journal
template = marco_polo_book
creator = root
description = marco_polo_book_desc
visuals = book
save_scope_as = newly_created_artifact
modifier = artifact_monthly_prestige_1_modifier
wealth = 50
quality = 10
}
}
hidden_effect = {
if = {
limit = {
var:poi_visited >= 60
}
scope:newly_created_artifact = {
add_artifact_modifier = artifact_monthly_lifestyle_xp_4_modifier
set_artifact_rarity = illustrious
}
}
else_if = {
limit = {
var:poi_visited >= 48
}
scope:newly_created_artifact = {
add_artifact_modifier = artifact_monthly_lifestyle_xp_3_modifier
set_artifact_rarity = famed
}
}
else_if = {
limit = {
var:poi_visited >= 36
}
scope:newly_created_artifact = {
add_artifact_modifier = artifact_monthly_lifestyle_xp_2_modifier
set_artifact_rarity = masterwork
}
}
else_if = {
limit = {
var:poi_visited >= 24
}
scope:newly_created_artifact = {
add_artifact_modifier = artifact_monthly_lifestyle_xp_1_modifier
set_artifact_rarity = common
}
}
scope:newly_created_artifact = {
remove_artifact_modifier = artifact_monthly_prestige_1_modifier
}
}
}
}
scripted_effect 1100_lifestyle_perk_effect = {
if = {
limit = {
has_variable = poi_visited
}
if = {
limit = {
var:poi_visited >= 56
}
add_relevant_lifestyle_perk_point_effect = { NUMBER = 5 }
}
else_if = {
limit = {
var:poi_visited >= 48
}
add_relevant_lifestyle_perk_point_effect = { NUMBER = 4 }
}
else_if = {
limit = {
var:poi_visited >= 40
}
add_relevant_lifestyle_perk_point_effect = { NUMBER = 3 }
}
else_if = {
limit = {
var:poi_visited >= 32
}
add_relevant_lifestyle_perk_point_effect = { NUMBER = 2 }
}
else_if = {
limit = {
var:poi_visited >= 24
}
add_relevant_lifestyle_perk_point_effect = { NUMBER = 1 }
}
}
}
ep3_laamp_decision_event.1100 = {
type = character_event
title = ep3_laamp_decision_event.1100.t
desc = ep3_laamp_decision_event.1100.desc
window = visit_settlement_window
theme = travel
override_background = { reference = relaxing_room }
left_portrait = {
character = root
animation = writing
}
immediate = {
add_character_flag = had_seasoned_visitor_decision
}
option = { #I will take it to my grave
name = ep3_laamp_decision_event.1100.a
flavor = ep3_laamp_decision_event.1100.a.flavor
custom_tooltip = ep3_laamp_decision_event.1100.a.desc
1100_lifestyle_perk_effect = yes
ai_chance = {
base = 50
}
}
option = { #I will write it down for future generations
name = ep3_laamp_decision_event.1100.b
flavor = ep3_laamp_decision_event.1100.b.flavor
1100_book_creation_effect = yes
custom_tooltip = ep3_laamp_decision_event.1100.b.desc
ai_chance = {
base = 100
}
}
option = { #Postpone the decision
name = ep3_laamp_decision_event.1100.c
flavor = ep3_laamp_decision_event.1100.c.flavor
custom_tooltip = ep3_laamp_decision_event.1100.c.desc
remove_character_flag = had_seasoned_visitor_decision
hidden_effect = {
add_prestige_no_experience = 1500
add_gold = 500
}
ai_chance = {
base = 0
}
}
}
#Zealous Missionary Decision
ep3_laamp_decision_event.1101 = {
type = character_event
title = ep3_laamp_decision_event.1101.t
desc = ep3_laamp_decision_event.1101.desc
window = visit_settlement_window
theme = faith
override_background = { reference = holy_site_generic }
left_portrait = {
character = root
animation = prayer
}
override_effect_2d = {
reference = legend_glow
}
immediate = {
location = {
save_scope_as = holy_site_location
}
set_variable = {
name = holy_site_ascension
value = scope:holy_site_location
}
}
option = {
name = ep3_laamp_decision_event.1101.a
custom_tooltip = ep3_laamp_decision_event.1101.a.desc
}
}
ep3_laamp_decision_event.1102 = {
type = character_event
title = ep3_laamp_decision_event.1102.t
desc = ep3_laamp_decision_event.1102.desc
window = visit_settlement_window
theme = faith
override_background = { reference = terrain }
left_portrait = {
character = root
triggered_animation = {
trigger = {
learning >= 12
}
animation = prayer
}
animation = personality_zealous
}
immediate = {
add_character_flag = zealous_missionary_start
}
trigger = {
has_variable = holy_site_ascension
}
option = {
name = ep3_laamp_decision_event.1102.a
give_nickname = nick_the_missionary
custom_tooltip = ep3_laamp_decision_event.1102.a.desc
add_character_flag = {
flag = zealous_missionary_timer
years = 10
}
trigger_event = ep3_laamp_decision_event.1103
trigger_event = {
id = ep3_laamp_decision_event.1104
months = 122 #2 months after the timer runs out
}
set_variable = {
name = num_counties_converted
value = 0
}
ai_chance = {
base = 100
}
}
option = {
name = ep3_laamp_decision_event.1102.b
custom_tooltip = ep3_laamp_decision_event.1102.b.desc
remove_character_flag = zealous_missionary_start
ai_chance = {
base = 0
}
}
}
ep3_laamp_decision_event.1103 = {
type = character_event
title = ep3_laamp_decision_event.1103.t
window = visit_settlement_window
desc = {
random_valid = {
triggered_desc = {
trigger = { scope:current_location.county.faith = scope:current_location.county.holder.faith }
desc = ep3_laamp_decision_event.1103.desc
}
desc = ep3_laamp_decision_event.1103.desc.alternative
}
}
theme = faith
override_background = { reference = terrain }
left_portrait = {
character = root
triggered_animation = {
trigger = {
martial >= 12
}
animation = inspect_weapon
}
triggered_animation = {
trigger = {
learning >= 12
}
animation = prayer
}
triggered_animation = {
trigger = {
always = yes
}
animation = personality_zealous
}
}
immediate = {
location = {
save_scope_as = current_location
}
}
trigger = { #Double safeguard
has_character_flag = zealous_missionary_timer
government_has_flag = government_is_landless_adventurer
location ?= {
has_holding = yes
}
NOT = {
location.faith = root.faith
is_ai = yes
any_player = {
OR = {
this = location.county.holder
this = location.county.holder.top_liege
}
}
}
}
option = { #pray very hard
name = {
text = {
random_valid = {
desc = ep3_laamp_decision_event.1103.a
desc = ep3_laamp_decision_event.1103.a.alternative
}
}
}
custom_tooltip = ep3_laamp_decision_event.1103.difficulty.desc
custom_tooltip = ep3_laamp_decision_event.1103.a.desc
duel = {
skills = { diplomacy learning }
value = very_high_skill_rating
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
add = {
subtract = location.county.county_opinion
}
}
modifier = {
factor = 0.75
location.county.faith.religion = root.religion
}
modifier = {
factor = 0.75
knows_language_of_culture = location.county.culture
}
send_interface_toast = {
type = event_toast_effect_good
title = ep3_laamp_decision_event.1103.a.success
left_icon = root
right_icon = location.county
location.county = {
set_county_faith = root.faith
}
ep3_hasan_advance_radicalism = yes
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
modifier = {
add = location.county.development_level
}
send_interface_toast = {
type = event_toast_effect_good
title = ep3_laamp_decision_event.1103.a.failure
left_icon = root
right_icon = location.county
add_stress = major_stress_gain
}
}
}
add_stress = miniscule_stress_gain
add_piety = {
value = 10
multiply = location.county.development_level
min = 20
}
reverse_add_opinion = {
modifier = vengeful_opinion
opinion = -75
target = location.county.holder
}
ai_chance = {
base = 25
modifier = {
add = root.learning
}
}
}
option = {
trigger = {
root.faith = {
NOR = {
has_doctrine = tenet_dharmic_pacifism
has_doctrine = tenet_pacifism
}
}
}
name = {
text = {
random_valid = {
desc = ep3_laamp_decision_event.1103.b
desc = ep3_laamp_decision_event.1103.b.alternative
}
}
}
flavor = ep3_laamp_decision_event.1103.b.flavor
custom_tooltip = ep3_laamp_decision_event.1103.difficulty.desc
custom_tooltip = ep3_laamp_decision_event.1103.b.desc
duel = {
skills = { martial intrigue }
value = high_skill_rating
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
modifier = {
add = {
value = root.number_of_knights
multiply = 10
}
}
modifier = {
add = root.current_military_strength
}
modifier = {
factor = 1.2
root.faith = {
has_doctrine = tenet_armed_pilgrimages
}
}
send_interface_toast = {
type = event_toast_effect_good
title = ep3_laamp_decision_event.1103.a.success
left_icon = root
right_icon = location.county
location.county = {
set_county_faith = root.faith
}
ep3_hasan_advance_radicalism = yes
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
modifier = {
add = location.county.development_level
}
modifier = {
add = location.barony.building_max_garrison
}
send_interface_toast = {
type = event_toast_effect_good
title = ep3_laamp_decision_event.1103.a.failure
left_icon = root
right_icon = location.county
increase_wounds_effect = { REASON = fight }
random_courtier ?= {
increase_wounds_effect = { REASON = fight }
}
}
}
}
add_piety = 50
reverse_add_opinion = {
modifier = vengeful_opinion
opinion = -75
target = location.county.holder
}
ai_chance = {
base = 50
modifier = {
add = {
value = root.current_military_strength
multiply = 0.1
}
}
modifier = {
add = {
value = location.barony.building_max_garrison
multiply = -0.1
}
}
modifier = {
add = root.martial
}
}
}
option = {
name = {
text = {
random_valid = {
desc = ep3_laamp_decision_event.1103.c
desc = ep3_laamp_decision_event.1103.c.alternative
}
}
}
flavor = ep3_laamp_decision_event.1103.c.flavor
custom_tooltip = ep3_laamp_decision_event.1103.c.desc
add_stress = minor_stress_gain
ai_chance = {
base = 0
}
}
after = {
hidden_effect = {
if = {
limit = {
location.county.faith ?= root.faith
exists = var:num_counties_converted
}
change_variable = {
name = num_counties_converted
add = 1
}
}
}
}
}
ep3_laamp_decision_event.1104 = {
type = character_event
title = ep3_laamp_decision_event.1104.t
window = visit_settlement_window
desc = {
first_valid = {
triggered_desc = {
trigger = {
exists = scope:success
}
desc = ep3_laamp_decision_event.1104.desc
}
triggered_desc = {
trigger = {
exists = scope:failure
}
desc = ep3_laamp_decision_event.1104.desc.failure
}
}
}
theme = faith
override_background = { reference = terrain }
left_portrait = {
character = root
triggered_animation = {
trigger = {
exists = scope:success
}
animation = happiness
}
triggered_animation = {
trigger = {
exists = scope:failure
}
animation = shame
}
}
override_effect_2d = {
trigger = {
exists = scope:success
}
reference = legend_glow
}
override_effect_2d = {
trigger = {
exists = scope:failure
}
reference = rain
}
trigger = {
has_variable = zealous_missionary_start
NOT = {
has_variable = zealous_missionary_timer
}
}
immediate = {
if = {
limit = {
has_variable = num_counties_converted
var:num_counties_converted >= 3
}
save_scope_as = success
}
else = {
save_scope_as = failure
}
}
option = {
trigger = {
exists = scope:success
}
name = ep3_laamp_decision_event.1104.a
add_piety = omega_piety_gain
add_trait = saint
}
option = {
trigger = {
exists = scope:failure
}
name = ep3_laamp_decision_event.1104.b
add_stress = monumental_stress_gain
add_piety_level = -5
if = {
limit = {
has_nickname = nick_the_missionary
}
remove_nickname = yes
give_nickname = nick_the_unworthy
}
}
}
ep3_laamp_decision_event.1110 = {
type = character_event
title = ep3_laamp_decision_event.1110.t
window = visit_settlement_window
desc = {
first_valid = {
triggered_desc = {
trigger = { exists = scope:first_kill }
desc = ep3_laamp_decision_event.1110.desc.has_kill
}
desc = ep3_laamp_decision_event.1110.desc.hasnt_kill
}
desc = ep3_laamp_decision_event.1110.desc.outro
}
theme = war
left_portrait = {
character = root
animation = celebrate_sword
}
override_background = { reference = battlefield }
override_effect_2d = {
reference = legend_glow
}
immediate = {
ordered_killed_character = {
order_by = days_since_death
save_scope_as = first_kill
}
}
option = {
name = ep3_laamp_decision_event.1110.a
flavor = ep3_laamp_decision_event.1110.a.flavor
custom_tooltip = ep3_laamp_decision_event.1110.a.desc
add_character_flag = had_laamp_conq_decision
trigger_event = {
id = conqueror.0001
months = 4
}
spawn_army = {
men_at_arms = {
type = accolade_maa_vanguards
stacks = 2
}
men_at_arms = {
type = accolade_maa_lancers
stacks = 2
}
men_at_arms = {
type = accolade_maa_archers
stacks = 4
}
inheritable = no
uses_supply = no
location = root.location
name = event_troop_default_name
}
if = {
limit = {
exists = location.kingdom.holder
}
add_pressed_claim = location.kingdom
start_war = {
cb = ep3_laamp_adventurer_kingdom_invasion
target = location.kingdom.holder
claimant = root
target_title = location.kingdom
target_title = location.kingdom.title_capital_county
}
}
else_if = {
limit = {
exists = location.duchy.holder
}
add_pressed_claim = location.duchy
start_war = {
cb = claim_cb
target = location.duchy.holder
claimant = root
target_title = location.duchy
target_title = location.duchy.title_capital_county
}
}
else_if = {
limit = {
exists = location.county.holder
}
add_pressed_claim = location.county
start_war = {
cb = claim_cb
target = location.county.holder
claimant = root
target_title = location.county
}
}
if = {
limit = { has_dlc_feature = legends }
create_legend_seed = {
type = heroic
quality = famed
chronicle = conqueror_chronicle
}
}
}
}
ep3_laamp_decision_event.1120 = {
type = character_event
title = ep3_laamp_decision_event.1120.t
window = visit_settlement_window
desc = ep3_laamp_decision_event.1120.desc
theme = intrigue
left_portrait = {
character = root
animation = personality_dishonorable
}
override_background = { reference = alley_night }
override_effect_2d = {
reference = fog
}
immediate = {
become_bandit_king_decision_effect = yes
set_variable = {
name = maa_number
value = 0
}
}
option = {
name = ep3_laamp_decision_event.1120.a
flavor = ep3_laamp_decision_event.1120.a.flavor
set_variable = { #error spam prevention
name = maa_number
value = 0
}
bandit_king_maa_spawn_effect = yes
}
}
ep3_laamp_decision_event.1130 = { #begin city construction
type = character_event
title = ep3_laamp_decision_event.1130.t
window = visit_settlement_window
desc = ep3_laamp_decision_event.1130.desc
theme = stewardship
override_background = { reference = terrain }
left_portrait = {
character = root
animation = survey
}
immediate = {
location = {
save_scope_as = city_location
}
}
option = { #less go
name = ep3_laamp_decision_event.1130.a
custom_tooltip = ep3_laamp_decision_event.1130.a.desc
add_character_flag = laamp_city_builder
scope:city_location = {
begin_create_holding = {
type = castle_holding
}
set_variable = laamp_city_construction
}
trigger_event = {
id = ep3_laamp_decision_event.1131
months = 1 # Checked monthly in trigger_fail for event
}
trigger_event = {
id = ep3_laamp_decision_event.1133
months = { 4 6 }
}
ai_chance = {
base = 10
}
}
option = { #I'm a silly goose, nvm
name = ep3_laamp_decision_event.1130.b
add_gold = 400
ai_chance = {
base = 0
}
}
}
ep3_laamp_decision_event.1131 = { #city is finished, wat do
type = character_event
title = ep3_laamp_decision_event.1131.t
desc = ep3_laamp_decision_event.1131.desc
theme = stewardship
override_background = { reference = alley_day }
left_portrait = {
character = root
animation = happiness
}
trigger = {
scope:city_location = {
has_holding_type = castle_holding
}
}
immediate = { #reward building spawn
save_scope_value_as = {
name = year_of_construction
value = current_year
}
laamp_city_builder_construction_effect = {
FLAG = mill
BUILDING = watermills
}
laamp_city_builder_construction_effect = {
FLAG = castle
BUILDING = castle
}
laamp_city_builder_construction_effect = {
FLAG = manor
BUILDING = farm_estates
}
laamp_city_builder_construction_effect = {
FLAG = guilds
BUILDING = guild_halls
}
laamp_city_builder_construction_effect = {
FLAG = prayer_hall
BUILDING = monastic_schools
}
}
on_trigger_fail = {
if = {
limit = {
scope:city_location = { #somehow, the city is still being built
has_ongoing_construction = yes
NOT = {
has_holding = yes
}
}
}
trigger_event = {
id = ep3_laamp_decision_event.1131
months = 1
}
}
}
option = { #well, actually imma get the whole county
name = ep3_laamp_decision_event.1131.a
add_pressed_claim = scope:city_location.county
add_pressed_claim = scope:city_location.barony
start_war = {
cb = claim_cb
target = scope:city_location.county.holder
claimant = root
target_title = scope:city_location.county
target_title = scope:city_location.barony
}
ai_chance = {
base = 0
}
}
option = { #the city existence is a reward enough
name = ep3_laamp_decision_event.1131.b
add_prestige = 2000
give_nickname = nick_the_city_builder
custom_tooltip = ep3_laamp_decision_event.1131.b.desc
trigger_event = {
id = ep3_laamp_decision_event.1140
months = { 1 1 }
}
remove_character_flag = laamp_city_builder
ai_chance = {
base = 10
}
}
after = {
remove_character_flag = laamp_city_builder_guilds
remove_character_flag = laamp_city_builder_guilds_upgrade
remove_character_flag = laamp_city_builder_castle
remove_character_flag = laamp_city_builder_castle_upgrade
remove_character_flag = laamp_city_builder_manor
remove_character_flag = laamp_city_builder_manor_upgrade
remove_character_flag = laamp_city_builder_prayer_hall
remove_character_flag = laamp_city_builder_prayer_hall_upgrade
remove_character_flag = laamp_city_builder_mill
remove_character_flag = laamp_city_builder_mill_upgrade
}
}
ep3_laamp_decision_event.1133 = { #get a mill
type = character_event
title = ep3_laamp_decision_event.1133.t
window = visit_settlement_window
desc = ep3_laamp_decision_event.1133.desc
theme = stewardship
override_background = { reference = terrain }
left_portrait = {
character = root
animation = survey
}
trigger = {
scope:city_location = {
has_ongoing_construction = yes
NOT = {
has_holding_type = castle_holding
}
}
OR = {
stewardship >= 18
has_trait = architect
}
}
on_trigger_fail = {
trigger_event = {
id = ep3_laamp_decision_event.1134
months = { 4 6 }
}
}
option = { #cool
name = ep3_laamp_decision_event.1133.a
add_character_flag = laamp_city_builder_mill
show_as_tooltip = {
scope:city_location = {
add_building = watermills_01
}
}
remove_short_term_gold = 80
ai_chance = {
base = 0
}
}
option = { #go for it!
name = ep3_laamp_decision_event.1133.b
add_character_flag = laamp_city_builder_mill_upgrade
show_as_tooltip = {
scope:city_location = {
add_building = watermills_03
}
}
remove_short_term_gold = 200
ai_chance = {
base = 10
}
}
option = { #nah
name = ep3_laamp_decision_event.1133.c
ai_chance = {
base = 0
}
}
after = {
trigger_event = {
id = ep3_laamp_decision_event.1134
months = { 4 6 }
}
}
}
ep3_laamp_decision_event.1134 = { #get more settlers, main building upgrade
type = character_event
title = ep3_laamp_decision_event.1134.t
window = visit_settlement_window
desc = ep3_laamp_decision_event.1134.desc
theme = stewardship
override_background = { reference = terrain }
left_portrait = {
character = root
animation = survey
}
trigger = {
scope:city_location = {
has_ongoing_construction = yes
NOT = {
has_holding_type = castle_holding
}
}
OR = {
piety_level >= 3
prestige_level >= 3
}
}
on_trigger_fail = {
trigger_event = {
id = ep3_laamp_decision_event.1135
months = { 4 6 }
}
}
option = { #cool
name = ep3_laamp_decision_event.1134.a
add_character_flag = laamp_city_builder_castle
scope:city_location = {
show_as_tooltip = { add_building = castle_02 }
}
remove_short_term_gold = 20
if = {
limit = {
piety_level >= 3
}
add_piety = -300
}
else = {
add_prestige = -300
}
ai_chance = {
base = 0
}
}
option = { #go for it!
name = ep3_laamp_decision_event.1134.b
add_character_flag = laamp_city_builder_castle_upgrade
scope:city_location = {
show_as_tooltip = { add_building = castle_03 }
}
remove_short_term_gold = 40
if = {
limit = {
piety_level >= 3
}
add_piety = -500
}
else = {
add_prestige = -500
}
ai_chance = {
base = 10
}
}
option = { #nah
name = ep3_laamp_decision_event.1134.c
ai_chance = {
base = 0
}
}
after = {
trigger_event = {
id = ep3_laamp_decision_event.1135
months = { 4 6 }
}
}
}
ep3_laamp_decision_event.1135 = { #argue for more favorable land assigment from county ruler, get manor houses building
type = character_event
title = ep3_laamp_decision_event.1135.t
window = visit_settlement_window
desc = ep3_laamp_decision_event.1135.desc
theme = stewardship
override_background = { reference = terrain }
left_portrait = {
character = root
animation = survey
}
right_portrait = {
character = scope:city_location.county.holder
animation = thinking
}
trigger = {
scope:city_location = {
has_ongoing_construction = yes
NOT = {
has_holding_type = castle_holding
}
}
scope:city_location.county.holder = {
reverse_opinion = {
target = root
value >= 40
}
}
NOR = {
scope:city_location = {
terrain = desert
terrain = desert_mountains
}
}
}
option = { #cool
name = ep3_laamp_decision_event.1135.a
add_character_flag = laamp_city_builder_manor
show_as_tooltip = {
scope:city_location = {
add_building = farm_estates_01
}
}
pay_short_term_gold = {
target = scope:city_location.county.holder
gold = 80
}
remove_short_term_gold = 60
ai_chance = {
base = 0
}
}
option = { #go for it!
name = ep3_laamp_decision_event.1135.b
add_character_flag = laamp_city_builder_manor_upgrade
show_as_tooltip = {
scope:city_location = {
add_building = farm_estates_03
}
}
pay_short_term_gold = {
target = scope:city_location.county.holder
gold = 120
}
remove_short_term_gold = 220
ai_chance = {
base = 10
}
}
option = { #nah
name = ep3_laamp_decision_event.1135.c
ai_chance = {
base = 0
}
}
}
ep3_laamp_decision_event.1136 = { #utilize connections, get guildhall
type = character_event
title = ep3_laamp_decision_event.1136.t
window = visit_settlement_window
desc = ep3_laamp_decision_event.1136.desc
orphan = yes
theme = stewardship
override_background = { reference = terrain }
left_portrait = {
character = root
animation = survey
}
trigger = {
scope:city_location = {
has_ongoing_construction = yes
NOT = {
has_holding_type = castle_holding
}
}
prestige_level >= 3
}
on_trigger_fail = {
trigger_event = {
id = ep3_laamp_decision_event.1137
months = { 4 6 }
}
}
option = { #cool
name = ep3_laamp_decision_event.1136.a
add_character_flag = laamp_city_builder_guilds
show_as_tooltip = {
scope:city_location = {
add_building = guild_halls_01
}
}
add_prestige = -400
remove_short_term_gold = 120
ai_chance = {
base = 0
}
}
option = { #go for it!
name = ep3_laamp_decision_event.1136.b
add_character_flag = laamp_city_builder_guilds_upgrade
show_as_tooltip = {
scope:city_location = {
add_building = guild_halls_03
}
}
add_prestige = -600
remove_short_term_gold = 200
ai_chance = {
base = 10
}
}
option = { #nah
name = ep3_laamp_decision_event.1136.c
ai_chance = {
base = 0
}
}
after = {
trigger_event = {
id = ep3_laamp_decision_event.1137
months = { 4 6 }
}
}
}
ep3_laamp_decision_event.1137 = { #utilize connections, get prayer hall
type = character_event
title = ep3_laamp_decision_event.1137.t
window = visit_settlement_window
desc = ep3_laamp_decision_event.1137.desc
theme = stewardship
override_background = { reference = terrain }
left_portrait = {
character = root
animation = survey
}
trigger = {
scope:city_location = {
has_ongoing_construction = yes
NOT = {
has_holding_type = castle_holding
}
}
piety_level >= 3
}
option = { #cool
name = ep3_laamp_decision_event.1137.a
add_character_flag = laamp_city_builder_prayer_hall
show_as_tooltip = {
scope:city_location = {
add_building = monastic_schools_01
}
}
add_piety = -400
remove_short_term_gold = 120
ai_chance = {
base = 0
}
}
option = { #go for it!
name = ep3_laamp_decision_event.1137.b
add_character_flag = laamp_city_builder_prayer_hall_upgrade
show_as_tooltip = {
scope:city_location = {
add_building = monastic_schools_03
}
}
add_piety = -600
remove_short_term_gold = 200
ai_chance = {
base = 10
}
}
option = { #nah
name = ep3_laamp_decision_event.1137.c
ai_chance = {
base = 0
}
}
}
ep3_laamp_decision_event.1140 = { #city pays dividend
hidden = yes
trigger = {
has_government = landless_adventurer_government
current_year <= laamp_city_construction_year_value
}
immediate = {
send_interface_toast = {
type = event_toast_effect_good
title = ep3_laamp_decision_event.1140.toast
left_icon = scope:city_location.barony
add_gold = {
value = 0
add = {
value = 4
multiply = scope:city_location.combined_building_level
}
add = {
value = 3
multiply = scope:city_location.county.development_level
}
multiply = { # Slowly decrease over time, by 1% every year
value = {
value = laamp_city_construction_year_value
subtract = current_year
divide = 100
}
}
min = 25
max = 200
}
}
primary_title.holder ?= {
trigger_event = {
id = ep3_laamp_decision_event.1140
months = { 11 13 }
}
}
}
}
##################################################
# Butcher Animals
# by Ewan Cowhig Croft
# 1201 - 1210
##################################################
scripted_effect 1201_prune_dog_stories_effect = {
remove_dog_story_modifiers_effect = yes
random_owned_story = {
type = story_cycle_pet_dog
hidden_effect = { end_story = yes }
}
}
# Your camp eats its dogs.
ep3_laamp_decision_event.1201 = {
type = character_event
title = ep3_laamp_decision_event.1201.t
desc = {
desc = ep3_laamp_decision_event.1201.desc.intro
first_valid = {
# There's a whole kennels being eaten, including our dog.
triggered_desc = {
trigger = {
exists = scope:kennels_gone
has_character_modifier = dog_story_modifier
}
desc = ep3_laamp_decision_event.1201.desc.eaten.kennels.have_dog
}
# There's a whole kennels being eaten, but we lack a dog.
triggered_desc = {
trigger = { exists = scope:kennels_gone }
desc = ep3_laamp_decision_event.1201.desc.eaten.kennels.no_dog
}
# There's one dog being eaten, and it's ours.
triggered_desc = {
trigger = {
scope:dogs_killed = 1
has_character_modifier = dog_story_modifier
}
desc = ep3_laamp_decision_event.1201.desc.eaten.one.have_dog
}
# There's one dog being eaten, and it's someone else's.
triggered_desc = {
trigger = { scope:dogs_killed = 1 }
desc = ep3_laamp_decision_event.1201.desc.eaten.one.no_dog
}
# There's many dogs being eaten, one of them ours.
triggered_desc = {
trigger = {
scope:dogs_killed >= 4
has_character_modifier = dog_story_modifier
}
desc = ep3_laamp_decision_event.1201.desc.eaten.many.have_dog
}
# There's many dogs being eaten, none of them ours.
triggered_desc = {
trigger = { scope:dogs_killed >= 4 }
desc = ep3_laamp_decision_event.1201.desc.eaten.many.no_dog
}
# There's a bare handful of dogs being eaten, one of them ours.
triggered_desc = {
trigger = {
scope:dogs_killed <= 3
has_character_modifier = dog_story_modifier
}
desc = ep3_laamp_decision_event.1201.desc.eaten.some.have_dog
}
# There's a bare handful of dogs being eaten, none of them ours.
desc = ep3_laamp_decision_event.1201.desc.eaten.some.no_dog
}
desc = ep3_laamp_decision_event.1201.desc.outro
}
theme = laamp
left_portrait = {
character = root
triggered_animation = {
trigger = { has_trait = callous }
animation = dismissal
}
animation = stress
}
right_portrait = {
character = scope:portrait_char
animation = fear
}
immediate = {
# Apply cooldown.
add_character_flag = {
flag = recently_ate_dogs
years = butcher_animals_decision_regular_cooldown_value
}
# Register how many provisions we'll get.
domicile = {
change_provisions = {
value = {
value = 0
root = {
every_courtier = {
limit = { has_character_modifier = dog_story_modifier }
add = butcher_animals_decision_dog_provision_value
}
if = {
limit = { has_character_modifier = dog_story_modifier }
add = butcher_animals_decision_dog_provision_value
}
}
if = {
limit = { has_domicile_building = baggage_train_kennel }
add = butcher_animals_decision_dog_building_provision_value
}
}
}
}
# Sort our aesthetics.
## How many dogs are we losing?
save_scope_value_as = {
name = dogs_killed
value = {
every_courtier = {
limit = { has_character_modifier = dog_story_modifier }
add = 1
}
if = {
limit = { has_character_modifier = dog_story_modifier }
add = 1
}
}
}
## Grab a portrait if possible.
random_courtier = {
limit = {
NOT = { has_trait = callous }
has_character_modifier = dog_story_modifier
}
weight = {
modifier = {
add = 1000
OR = {
is_close_family_of = root
is_consort_of = root
has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = root }
}
}
}
save_scope_as = portrait_char
}
# Aaaand remove our dogs.
## We do this separately in various blocks for proper tooltipping & linking.
every_courtier = {
custom = ep3_laamp_decision_event.1201.tt.followers_with_dogs
limit = {
NOT = { has_trait = callous }
has_character_modifier = dog_story_modifier
}
add_opinion = {
target = root
modifier = butcher_opinion
opinion = -25
}
}
every_courtier = {
limit = { has_character_modifier = dog_story_modifier }
custom_tooltip = {
text = ep3_laamp_decision_event.1201.tt.dog_lost
subject = this
}
}
hidden_effect = {
every_courtier = { 1201_prune_dog_stories_effect = yes }
}
# Liquidate the kennels.
domicile = {
if = {
limit = { has_domicile_building = baggage_train_kennel }
remove_domicile_building = baggage_train_kennel
# Flag that this happened.
save_scope_value_as = {
name = kennels_gone
value = yes
}
}
}
}
# Non-callous.
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { has_character_modifier = dog_story_modifier }
desc = ep3_laamp_decision_event.1201.a.own_dog
}
desc = ep3_laamp_decision_event.1201.a
}
}
}
# We do stress first because it's more if you eat your own pets.
if = {
limit = { has_character_modifier = dog_story_modifier }
# Goodbye, good boy.
custom_tooltip = {
text = ep3_laamp_decision_event.1201.tt.your_dog_lost
1201_prune_dog_stories_effect = yes
}
stress_impact = {
base = massive_stress_gain
sadistic = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
}
}
else = {
stress_impact = {
base = major_stress_gain
sadistic = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
}
}
# The AI only takes this if they have no other option.
ai_chance = { base = 0 }
}
# Callous.
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { has_character_modifier = dog_story_modifier }
desc = ep3_laamp_decision_event.1201.b.own_dog
}
desc = ep3_laamp_decision_event.1201.b
}
}
}
trigger = { has_trait = callous }
trait = callous
# Eh, I can get another.
if = {
limit = { has_character_modifier = dog_story_modifier }
custom_tooltip = {
text = ep3_laamp_decision_event.1201.tt.your_dog_lost
1201_prune_dog_stories_effect = yes
}
}
stress_impact = { callous = massive_stress_impact_loss }
# If the AI is callous, they should always take this.
ai_chance = { base = 1000 }
}
}
scripted_effect 1202_prune_cat_stories_effect = {
remove_cat_story_modifiers_effect = yes
random_owned_story = {
type = story_cycle_pet_cat
hidden_effect = { end_story = yes }
}
}
# Your camp eats its cats.
ep3_laamp_decision_event.1202 = {
type = character_event
title = ep3_laamp_decision_event.1202.t
desc = {
desc = ep3_laamp_decision_event.1202.desc.intro
first_valid = {
# There's one cat being eaten, and it's ours.
triggered_desc = {
trigger = {
scope:cats_killed = 1
has_character_modifier = cat_story_modifier
}
desc = ep3_laamp_decision_event.1202.desc.eaten.one.have_cat
}
# There's one cat being eaten, and it's someone else's.
triggered_desc = {
trigger = { scope:cats_killed = 1 }
desc = ep3_laamp_decision_event.1202.desc.eaten.one.no_cat
}
# There's many cats being eaten, one of them ours.
triggered_desc = {
trigger = {
scope:cats_killed >= 4
has_character_modifier = cat_story_modifier
}
desc = ep3_laamp_decision_event.1202.desc.eaten.many.have_cat
}
# There's many cats being eaten, none of them ours.
triggered_desc = {
trigger = { scope:cats_killed >= 4 }
desc = ep3_laamp_decision_event.1202.desc.eaten.many.no_cat
}
# There's a bare handful of cats being eaten, one of them ours.
triggered_desc = {
trigger = { has_character_modifier = cat_story_modifier }
desc = ep3_laamp_decision_event.1202.desc.eaten.some.have_cat
}
# There's a bare handful of cats being eaten, none of them ours.
desc = ep3_laamp_decision_event.1202.desc.eaten.some.no_cat
}
desc = ep3_laamp_decision_event.1202.desc.outro
}
theme = laamp
left_portrait = {
character = root
triggered_animation = {
trigger = { has_trait = callous }
animation = dismissal
}
animation = stress
}
right_portrait = {
character = scope:portrait_char
animation = fear
}
immediate = {
# Apply cooldown.
add_character_flag = {
flag = recently_ate_cats
years = butcher_animals_decision_regular_cooldown_value
}
# Register how many provisions we'll get.
domicile = {
change_provisions = {
value = {
value = 0
root = {
every_courtier = {
limit = { has_character_modifier = cat_story_modifier }
add = butcher_animals_decision_cat_provision_value
}
if = {
limit = { has_character_modifier = cat_story_modifier }
add = butcher_animals_decision_cat_provision_value
}
}
}
}
}
# Sort our aesthetics.
## How many cats are we losing?
save_scope_value_as = {
name = cats_killed
value = {
every_courtier = {
limit = { has_character_modifier = cat_story_modifier }
add = 1
}
if = {
limit = { has_character_modifier = cat_story_modifier }
add = 1
}
}
}
## Grab a portrait if possible.
random_courtier = {
limit = {
NOT = { has_trait = callous }
has_character_modifier = cat_story_modifier
}
weight = {
modifier = {
add = 1000
OR = {
is_close_family_of = root
is_consort_of = root
has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = root }
}
}
}
save_scope_as = portrait_char
}
# Aaaand remove our cats.
## We do this separately in various blocks for proper tooltipping & linking.
every_courtier = {
custom = ep3_laamp_decision_event.1201.tt.followers_with_cats
limit = {
NOT = { has_trait = callous }
has_character_modifier = cat_story_modifier
}
add_opinion = {
target = root
modifier = butcher_opinion
opinion = -25
}
}
every_courtier = {
limit = { has_character_modifier = cat_story_modifier }
custom_tooltip = {
text = ep3_laamp_decision_event.1202.tt.cat_lost
subject = this
}
}
hidden_effect = {
every_courtier = { 1202_prune_cat_stories_effect = yes }
}
}
# Non-callous.
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { has_character_modifier = cat_story_modifier }
desc = ep3_laamp_decision_event.1202.a.own_cat
}
desc = ep3_laamp_decision_event.1202.a
}
}
}
# We do stress first because it's more if you eat your own pets.
if = {
limit = { has_character_modifier = cat_story_modifier }
# Our regal companionship is ended.
custom_tooltip = {
text = ep3_laamp_decision_event.1202.tt.your_cat_lost
1202_prune_cat_stories_effect = yes
}
stress_impact = {
base = massive_stress_gain
sadistic = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
}
}
else = {
stress_impact = {
base = major_stress_gain
sadistic = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
}
}
# The AI only takes this if they have no other option.
ai_chance = { base = 0 }
}
# Callous.
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { has_character_modifier = cat_story_modifier }
desc = ep3_laamp_decision_event.1202.b.own_cat
}
desc = ep3_laamp_decision_event.1202.b
}
}
}
trigger = { has_trait = callous }
trait = callous
# A cat is a cat.
if = {
limit = { has_character_modifier = cat_story_modifier }
# Our regal companionship is ended.
custom_tooltip = {
text = ep3_laamp_decision_event.1202.tt.your_cat_lost
1202_prune_cat_stories_effect = yes
}
}
stress_impact = { callous = massive_stress_impact_loss }
# If the AI is callous, they should always take this.
ai_chance = { base = 1000 }
}
}
scripted_effect 1203_prune_horse_stories_effect = {
remove_horse_story_modifiers_effect = yes
random_owned_story = {
type = story_cycle_martial_lifestyle_warhorse
end_story = yes
}
}
# Your camp eats its horses.
ep3_laamp_decision_event.1203 = {
type = character_event
title = ep3_laamp_decision_event.1203.t
desc = {
desc = ep3_laamp_decision_event.1203.desc.intro
first_valid = {
# Both your horse and your reserve steeds are getting eaten.
triggered_desc = {
trigger = {
has_character_modifier = horse_story_modifier
exists = scope:horses_gone
}
desc = ep3_laamp_decision_event.1203.desc.eaten.both
}
# Just your horse is getting eaten.
triggered_desc = {
trigger = { has_character_modifier = horse_story_modifier }
desc = ep3_laamp_decision_event.1203.desc.eaten.own_horse
}
# Just the reserve steeds are getting eaten.
triggered_desc = {
trigger = { exists = scope:horses_gone }
desc = ep3_laamp_decision_event.1203.desc.eaten.reserve_steeds
}
}
desc = ep3_laamp_decision_event.1203.desc.outro
}
theme = laamp
left_portrait = {
character = root
triggered_animation = {
trigger = { has_trait = callous }
animation = dismissal
}
animation = stress
}
immediate = {
# Apply cooldown.
add_character_flag = {
flag = recently_ate_horses
years = butcher_animals_decision_regular_cooldown_value
}
# Make it look like we've killed our horse, but hold them till after for loc.
show_as_tooltip = { 1203_prune_horse_stories_effect = yes }
# Register how many provisions we'll get.
domicile = {
change_provisions = {
root = {
if = {
limit = { has_character_modifier = horse_story_modifier }
add = butcher_animals_decision_horse_provision_value
}
}
if = {
limit = { has_domicile_building = baggage_train_ample_steeds }
add = butcher_animals_decision_horse_building_provision_value
}
}
# Liquidate the horses.
if = {
limit = { has_domicile_building = baggage_train_ample_steeds }
remove_domicile_building = baggage_train_ample_steeds
# Flag that this happened.
save_scope_value_as = {
name = horses_gone
value = yes
}
}
}
}
# Non-callous: even in death, they carry us forward..
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { exists = scope:horses_gone }
desc = ep3_laamp_decision_event.1203.a.many_steeds
}
desc = ep3_laamp_decision_event.1203.a.single_steed
}
}
}
stress_impact = {
base = major_stress_gain
sadistic = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
}
# The AI only takes this if they have no other option.
ai_chance = { base = 0 }
}
# Callous: you know, this isn't that bad actually...
option = {
name = ep3_laamp_decision_event.1203.b
trigger = { has_trait = callous }
trait = callous
stress_impact = { callous = massive_stress_impact_loss }
# If the AI is callous, they should always take this.
ai_chance = { base = 1000 }
}
after = {
hidden_effect = { 1203_prune_horse_stories_effect = yes }
}
}
# Your camp eats its elephants.
ep3_laamp_decision_event.1204 = {
type = character_event
title = ep3_laamp_decision_event.1204.t
desc = ep3_laamp_decision_event.1204.desc
theme = laamp
left_portrait = {
character = root
triggered_animation = {
trigger = { has_trait = callous }
animation = dismissal
}
animation = stress
}
immediate = {
# Apply cooldown.
add_character_flag = {
flag = recently_ate_elephants
years = butcher_animals_decision_elephant_cooldown_value
}
# Register how many provisions we'll get.
domicile = {
change_provisions = butcher_animals_decision_elephant_building_provision
# Liquidate the elephants.
if = {
limit = { has_domicile_building = proving_grounds_elephantry_reserve }
remove_domicile_building = proving_grounds_elephantry_reserve
}
}
}
# Non-callous.
option = {
name = ep3_laamp_decision_event.1204.a
stress_impact = {
base = major_stress_gain
sadistic = minor_stress_impact_loss
compassionate = minor_stress_impact_gain
}
# The AI only takes this if they have no other option.
ai_chance = { base = 0 }
}
# Callous.
option = {
name = ep3_laamp_decision_event.1204.b
trigger = { has_trait = callous }
trait = callous
stress_impact = { callous = massive_stress_impact_loss }
# If the AI is callous, they should always take this.
ai_chance = { base = 1000 }
}
# Will there be additional consequences?
after = {
if = {
limit = {
any_maa_regiment = { is_unit_type = elephant_cavalry }
}
trigger_event = {
id = ep3_laamp_decision_event.1205
years = 1
}
}
}
}
# Elephant survivors never forget.
ep3_laamp_decision_event.1205 = {
type = character_event
title = ep3_laamp_decision_event.1205.t
desc = ep3_laamp_decision_event.1205.desc
theme = laamp
left_portrait = {
character = root
animation = shock
}
immediate = { add_character_modifier = ep3_laamp_decision_event_1205_modifier }
# Damn and blast these recalcitrant beasts!
option = {
name = ep3_laamp_decision_event.1205.a
custom_tooltip = ep3_laamp_decision_event.1205.a.tt
# No stress, no AI.
}
}
scripted_trigger ep3_laamp_decision_event_1300_age_diff_trigger = {
OR = {
age <= {
value = scope:char_current.age
add = 5
}
scope:char_current.age >= {
value = age
add = 5
}
}
}
#Youths of LAAMP-prone cultures consider becoming LAAMPs
ep3_laamp_decision_event.1300 = {
hidden = yes
trigger = {
laamp_youth_cultural_tradition_trigger = yes
#Looser skill reqs for eager-ass Normans
trigger_if = {
limit = {
culture = {
has_cultural_parameter = much_more_likely_to_be_laamps
}
}
OR = {
prowess >= 8
martial >= 8
}
}
trigger_else = {
OR = {
prowess >= 10
martial >= 10
}
}
ai_boldness > 0
ai_energy > 0
}
immediate = {
random = {
chance = 0
modifier = { add = ep3_laamp_chance_score_value }
#Counteract bonus in above value somewhat
modifier = {
always = yes
add = -50
}
create_landless_adventurer_title_effect = {
REASON = flag:runaway_allowed
FLAVOR_CHAR = liege
}
# Create a bunch of secondary chars to go on their adventure with them (so that Norman/Turkish bands don't immediately de-Normanify/Turkify).
while = {
count = 3
create_character = {
template = soldier_friend_character
employer = root
culture = root.culture
faith = root.faith
age = root.age
gender_female_chance = root_soldier_female_chance
after_creation = { add_to_list = created_chars_list }
}
}
while = {
count = 3
create_character = {
template = mercenary
employer = root
culture = root.culture
faith = root.faith
gender_female_chance = root_soldier_female_chance
after_creation = { add_to_list = created_chars_list }
}
}
## Plus add starting drama.
every_in_list = {
list = created_chars_list
save_scope_as = char_current
random_list = {
100 = {
trigger = {
any_in_list = {
list = created_chars_list
can_set_relation_friend_trigger = { CHARACTER = scope:char_current }
}
}
random_in_list = {
list = created_chars_list
limit = {
can_set_relation_friend_trigger = { CHARACTER = scope:char_current }
}
set_random_friendship_reason = { TARGET = scope:char_current }
}
}
100 = {
trigger = {
any_in_list = {
list = created_chars_list
can_set_relation_rival_trigger = { CHARACTER = scope:char_current }
}
}
random_in_list = {
list = created_chars_list
limit = {
can_set_relation_rival_trigger = { CHARACTER = scope:char_current }
}
set_random_rivalry_reason = {
TARGET = scope:char_current
RELATION = rival
}
}
}
100 = {
trigger = {
any_in_list = {
list = created_chars_list
ep3_laamp_decision_event_1300_age_diff_trigger = yes
can_set_relation_lover_trigger = { CHARACTER = scope:char_current }
}
}
random_in_list = {
list = created_chars_list
limit = {
ep3_laamp_decision_event_1300_age_diff_trigger = yes
can_set_relation_lover_trigger = { CHARACTER = scope:char_current }
}
set_random_lover_reason = { TARGET = scope:char_current }
}
}
}
}
trigger_event = ep3_laamps.0003
if = { # Debug AI tracking
limit = { debug_only = yes }
if = {
limit = { exists = global_var:ai_birthday_cultrad_laamp_count }
change_global_variable = {
name = ai_birthday_cultrad_laamp_count
add = 1
}
}
else = {
set_global_variable = {
name = ai_birthday_cultrad_laamp_count
value = 1
}
}
debug_log = "AI became adventurer due to cultural tradition"
debug_log_scopes = yes
}
}
}
}