N3OW_Western_eastern_europe/events/dlc/ep3/ep3_contract_events.txt

10152 lines
235 KiB
Text
Raw Normal View History

2025-12-16 13:42:24 +00:00
###################################################
## EP3 Contract Events
##
###################################################
namespace = ep3_contract_event
scripted_effect set_contract_scopes_effect = {
scope:task_contract.task_contract_taker ?= {
save_scope_as = task_contract_taker
}
scope:task_contract.task_contract_employer ?= {
save_scope_as = task_contract_employer
}
if = {
limit = {
exists = scope:task_contract.task_contract_destination
}
scope:task_contract.task_contract_destination = {
save_scope_as = task_contract_destination
}
}
else = {
scope:task_contract.var:task_contract_destination ?= {
save_scope_as = task_contract_destination
}
}
if = {
limit = {
exists = scope:task_contract.task_contract_target
}
scope:task_contract.task_contract_target ?= {
save_scope_as = task_contract_target
}
}
else = {
scope:task_contract.var:task_contract_target ?= {
save_scope_as = task_contract_target
}
}
scope:task_contract.var:task_contract_war ?= {
save_scope_as = task_contract_war
}
if = {
limit = {
exists = scope:task_contract.var:task_contract_object
}
scope:task_contract.var:task_contract_object = {
save_scope_as = task_contract_object
}
}
if = {
limit = {
exists = scope:task_contract.var:escorted_artifact
}
scope:task_contract.var:escorted_artifact = {
save_scope_as = escorted_artifact
}
}
if = {
limit = {
exists = scope:task_contract.var:escorted_gold
}
scope:task_contract.var:escorted_gold = {
save_scope_as = escorted_gold
}
}
if = {
limit = {
exists = scope:task_contract.var:escorted_story
}
scope:task_contract.var:escorted_story = {
save_scope_as = escorted_story
}
}
}
scripted_effect start_contract_travel_without_domicile = {
start_travel_plan = {
destination = scope:task_contract_destination
on_arrival_destinations = all
}
}
scripted_effect start_contract_travel_with_domicile = {
start_travel_plan = {
destination = scope:task_contract_destination
travel_with_domicile = yes
return_trip = no
on_arrival_destinations = all
}
}
#taking a transport contract - triggered after you take a transport contract
ep3_contract_event.0001 = {
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_vip } }
desc = ep3_contract_event.0001.t_vip
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_ward } }
desc = ep3_contract_event.0001.t_child
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_explorer } }
desc = ep3_contract_event.0001.t_explorer
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_artifact } }
desc = ep3_contract_event.0001.t_artifact
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_gold } }
desc = ep3_contract_event.0001.t_gold
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_animal } }
desc = ep3_contract_event.0001.t_animal
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_construction_contract } }
desc = ep3_contract_event.0001.t_construction
}
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_explorer } }
desc = ep3_contract_event.0001.desc_intro_explorer
}
desc = ep3_contract_event.0001.desc
}
#desc for the explorer contract type for differrent point of interests types
first_valid = {
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:special_buildings_martial }
desc = ep3_contract_event.0001.desc_special_buildings_martial
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:special_buildings_learning }
desc = ep3_contract_event.0001.desc_special_buildings_learning
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:special_buildings_religious }
desc = ep3_contract_event.0001.desc_special_buildings_religious
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:special_buildings_diplomatic }
desc = ep3_contract_event.0001.desc_special_buildings_diplomatic
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:grand_city }
desc = ep3_contract_event.0001.desc_grand_city
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:special_buildings_wonder }
desc = ep3_contract_event.0001.desc_special_buildings_wonder
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:special_buildings_economic }
desc = ep3_contract_event.0001.desc_special_buildings_economic
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:mausoleum_at_halicarnassus }
desc = ep3_contract_event.0001.desc_mausoleum_at_halicarnassus
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:lighthouse_of_alexandria }
desc = ep3_contract_event.0001.desc_lighthouse_of_alexandria
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:natural_feature }
desc = ep3_contract_event.0001.desc_natural_feature
}
triggered_desc = {
trigger = { scope:task_contract.var:travel_reason ?= flag:capitals }
desc = ep3_contract_event.0001.desc_capitals
}
}
first_valid = {
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_vip } }
desc = ep3_contract_event.0001.desc_vip
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_ward } }
desc = ep3_contract_event.0001.desc_child
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_explorer } }
desc = ep3_contract_event.0001.desc_explorer
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_artifact } }
desc = ep3_contract_event.0001.desc_artifact
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_gold } }
desc = ep3_contract_event.0001.desc_gold
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_animal } }
desc = ep3_contract_event.0001.desc_animal
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_construction_contract } }
desc = ep3_contract_event.0001.desc_construction
}
}
}
theme = landless_adventurer
override_background = { reference = terrain }
#task_contract_taker, you
left_portrait = {
character = root
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_vip } }
animation = personality_honorable
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_ward } }
animation = personality_compassionate
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_explorer } }
animation = interested_left
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_artifact } }
animation = personality_bold
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_gold } }
animation = stunned
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_animal } }
animation = love
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_construction_contract } }
animation = personality_rational
}
}
#character you have to escort, if exists
right_portrait = {
character = scope:right_portrait
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_vip } }
animation = personality_rational
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_ward } }
animation = clutching_toy
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_explorer } }
animation = eccentric
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_artifact } }
animation = personality_compassionate
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_gold } }
animation = personality_compassionate
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_animal } }
animation = personality_compassionate
}
triggered_animation = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_construction_contract } }
animation = personality_bold
}
}
#character giving you the contract, if it's not the chracter you have to escort
lower_right_portrait = {
trigger = {
NOR = {
scope:task_contract_object ?= scope:task_contract_target
scope:task_contract_object ?= scope:task_contract_employer
}
}
character = scope:task_contract_employer
}
#character you have to go to, if exists
lower_left_portrait = {
trigger = {
exists = scope:task_contract_target
scope:task_contract_target != scope:task_contract_employer
}
character = scope:task_contract_target
}
#artifact you have to escort, if exists
artifact = {
trigger = { exists = scope:escorted_artifact }
target = scope:escorted_artifact
position = lower_center_portrait
}
immediate = {
set_contract_scopes_effect = yes
if = {
limit = {
exists = scope:task_contract_object
}
scope:task_contract_object = {
save_scope_as = right_portrait
}
}
else = {
scope:task_contract_employer = {
save_scope_as = right_portrait
}
}
}
#take the contract and start the travel without domicile
option = {
name = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_vip } }
text = ep3_contract_event.0001.vip
}
name = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_ward } }
text = ep3_contract_event.0001.child
}
name = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_explorer } }
text = ep3_contract_event.0001.explorer
}
name = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_artifact } }
text = ep3_contract_event.0001.artifact
}
name = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_gold } }
text = ep3_contract_event.0001.gold
}
name = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_animal } }
text = ep3_contract_event.0001.animal
}
name = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_construction_contract } }
text = ep3_contract_event.0001.construction
}
scope:task_contract = {
switch = {
trigger = has_task_contract_type
#escorting a VIP
laamp_transport_vip = {
custom_tooltip = ep3_contract_event.0001.tt_vip
scope:task_contract_object = {
visit_court_of = root
add_character_flag = blocked_from_leaving
}
root = {
start_contract_travel_without_domicile = yes
}
}
#escorting a ward to guardian
laamp_transport_ward = {
custom_tooltip = ep3_contract_event.0001.tt_ward
scope:task_contract_object = {
visit_court_of = root
add_character_flag = blocked_from_leaving
}
root = {
start_contract_travel_without_domicile = yes
}
}
#escorting a random pool character to a random point of interest
laamp_transport_explorer = {
custom_tooltip = ep3_contract_event.0001.tt_explorer
scope:task_contract_object = {
if = {
limit = {
is_landed = no
}
visit_court_of = root
add_character_flag = blocked_from_leaving
}
}
root = {
start_contract_travel_without_domicile = yes
}
}
#escorting an artifact
laamp_transport_artifact = {
custom_tooltip = ep3_contract_event.0001.tt_artifact
scope:escorted_artifact = {
set_owner = root
set_variable = {
name = ungiftable
}
}
root = {
start_contract_travel_without_domicile = yes
}
}
#escorting a large sum of money
laamp_transport_gold = {
custom_tooltip = ep3_contract_event.0001.tt_gold
scope:task_contract_employer = {
pay_treasury_or_gold = {
target = root
value = scope:escorted_gold
}
}
root = {
start_contract_travel_without_domicile = yes
}
}
#escorting a dog or a cat
laamp_transport_animal = {
custom_tooltip = ep3_contract_event.0001.tt_animal
scope:task_contract_employer = {
if = {
limit = {
scope:escorted_story ?= { story_type = story_cycle_pet_dog }
}
transfer_dog_story_cycle_to_effect = {
CHARACTER = root
STORY = scope:escorted_story
}
}
else = {
transfer_cat_story_cycle_to_effect = {
CHARACTER = root
STORY = scope:escorted_story
}
}
}
root = {
start_contract_travel_without_domicile = yes
}
}
#delivering materials for holding construcion
laamp_construction_contract = {
custom_tooltip = ep3_contract_event.0001.tt_construction
root = {
start_contract_travel_without_domicile = yes
}
}
}
}
#AI should always try to complete the contract
ai_chance = {
base = 1
}
}
#take the contract and start the travel with domicile
option = {
name = ep3_contract_event.0001.with_domicile
scope:task_contract = {
switch = {
trigger = has_task_contract_type
#escorting a VIP
laamp_transport_vip = {
custom_tooltip = ep3_contract_event.0001.tt_vip
scope:task_contract_object = {
visit_court_of = root
add_character_flag = blocked_from_leaving
}
root = {
start_contract_travel_with_domicile = yes
}
}
#escorting a ward to guardian
laamp_transport_ward = {
custom_tooltip = ep3_contract_event.0001.tt_ward
scope:task_contract_object = {
visit_court_of = root
add_character_flag = blocked_from_leaving
}
root = {
start_contract_travel_with_domicile = yes
}
}
#escorting a random pool character to a random point of interest
laamp_transport_explorer = {
custom_tooltip = ep3_contract_event.0001.tt_explorer
scope:task_contract_object = {
if = {
limit = {
is_landed = no
}
visit_court_of = root
add_character_flag = blocked_from_leaving
}
}
root = {
start_contract_travel_with_domicile = yes
}
}
#escorting an artifact
laamp_transport_artifact = {
custom_tooltip = ep3_contract_event.0001.tt_artifact
scope:escorted_artifact = {
set_owner = root
set_variable = {
name = ungiftable
}
}
root = {
start_contract_travel_with_domicile = yes
}
}
#escorting a large sum of money
laamp_transport_gold = {
custom_tooltip = ep3_contract_event.0001.tt_gold
scope:task_contract_employer = {
pay_treasury_or_gold = {
target = root
value = scope:escorted_gold
}
}
root = {
start_contract_travel_with_domicile = yes
}
}
#escorting a dog or a cat
laamp_transport_animal = {
custom_tooltip = ep3_contract_event.0001.tt_animal
scope:task_contract_employer = {
if = {
limit = {
scope:escorted_story ?= { story_type = story_cycle_pet_dog }
}
transfer_dog_story_cycle_to_effect = {
CHARACTER = root
STORY = scope:escorted_story
}
}
else = {
transfer_cat_story_cycle_to_effect = {
CHARACTER = root
STORY = scope:escorted_story
}
}
}
root = {
start_contract_travel_with_domicile = yes
}
}
#delivering materials for holding construcion
laamp_construction_contract = {
custom_tooltip = ep3_contract_event.0001.tt_construction
root = {
start_contract_travel_with_domicile = yes
}
}
}
}
custom_tooltip = ep3_contract_event.0001.with_domicile.tt
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
scripted_trigger 0002_is_applicable_contract_trigger = {
OR = {
has_task_contract_group = laamp_contracts_transport_group
#Treasure Map Contract
AND = {
root = { has_variable = ep3_laamp_decision_1000_is_excavating }
exists = var:contract_treasure_location
}
}
}
#Event adding relevant characters to your travel entourage if you have an active transport contract
ep3_contract_event.0002 = {
hidden = yes
trigger = {
has_government = landless_adventurer_government
}
immediate = {
every_character_active_contract = {
limit = {
0002_is_applicable_contract_trigger = yes
save_temporary_scope_as = temp_contract
#task_contract_taker ?= root
root.current_travel_plan = {
#Treasure Map Contract
trigger_if = {
limit = {
scope:temp_contract = { exists = var:contract_treasure_location }
}
OR = {
final_destination_province ?= scope:temp_contract.var:contract_treasure_location
next_destination_province = scope:temp_contract.var:contract_treasure_location
any_future_path_location = {
this = scope:temp_contract.var:contract_treasure_location
}
}
}
trigger_else = {
OR = {
final_destination_province ?= scope:temp_contract.var:task_contract_destination
next_destination_province = scope:temp_contract.var:task_contract_destination
any_future_path_location = {
this = scope:temp_contract.var:task_contract_destination
}
}
}
}
}
var:task_contract_object ?= { add_to_list = task_contract_companions }
#Treasure Map Contract, add the scraggly old employer
if = {
limit = { has_task_contract_type = laamp_treasure_map_contract }
task_contract_employer = { add_to_list = task_contract_companions }
}
}
every_courtier_or_guest = {
limit = {
is_travelling = no
}
add_to_list = task_contract_companions
}
every_in_list = {
list = task_contract_companions
root.current_travel_plan = { add_companion = prev }
}
}
}
#Raid for Captives contract starting a war
ep3_contract_event.0003 = {
type = character_event
title = ep3_contract_event.0003.t
desc = ep3_contract_event.0003.desc
theme = war
#task_contract_taker, you
left_portrait = {
character = root
animation = personality_compassionate
}
#character giving you the contract
lower_right_portrait = {
character = scope:task_contract_employer
}
#character you have to fight in a war
lower_left_portrait = {
character = scope:task_contract_target
}
immediate = {
set_contract_scopes_effect = yes
}
#take the contract and start raiding
option = {
name = ep3_contract_event.0003.a
start_war = {
cb = ep3_laamp_raid_contract_cb
target = scope:task_contract_target
}
random_character_war = {
limit = {
using_cb = ep3_laamp_raid_contract_cb
primary_attacker = root
primary_defender = scope:task_contract_target
}
save_scope_as = new_war
}
scope:task_contract = {
set_variable = {
name = task_contract_war
value = scope:new_war
}
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
#Raid for Captives - complete contract letter event, triggered in the cb on war end
ep3_contract_event.0004 = {
type = letter_event
sender = scope:task_contract_employer
opening = {
first_valid = {
triggered_desc = {
trigger = { scope:task_contract_outcome ?= flag:failure }
desc = ep3_contract_event.0004.opening_failure
}
desc = ep3_contract_event.0004.opening
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:task_contract_outcome ?= flag:failure }
desc = ep3_contract_event.0004.desc_failure
}
desc = ep3_contract_event.0004.desc
}
}
immediate = {
if = {
limit = {
scope:task_contract_outcome ?= flag:failure
}
add_prestige = task_contract_failure_prestige_loss_full_value
reverse_add_opinion = {
opinion = -50
modifier = hate_opinion
target = scope:task_contract_employer
}
}
else = {
scope:task_contract_employer = {
custom_tooltip = ep3_contract_event.0004.success
every_prisoner = {
limit = {
has_character_flag = captured_in_ep3_laamp_raid_contract_cb
}
#doing this here instead of in the war effects to show a neat list of the prisoners in the tooltip
add_opinion = {
modifier = abductor_opinion
target = root
years = 5
}
root = {
if = {
limit = { NOT = { exists = local_var:temp_ransom } }
set_local_variable = {
name = temp_ransom
value = prev.ransom_cost
}
}
else = {
change_local_variable = {
name = temp_ransom
add = prev.ransom_cost
}
}
}
remove_character_flag = captured_in_ep3_laamp_raid_contract_cb
}
}
}
}
option = {
name = {
trigger = { scope:task_contract_outcome ?= flag:failure }
text = ep3_contract_event.0004.b
}
name = {
trigger = { NOT = { exists = scope:task_contract_outcome } }
text = ep3_contract_event.0004.a
}
if = {
limit = {
scope:task_contract_outcome ?= flag:failure
}
}
else = {
add_gold = {
value = local_var:temp_ransom
if = {
limit = {
domicile = { has_domicile_parameter = camp_improved_mercenary_contract_rewards }
}
multiply = camp_improved_mercenary_contract_rewards_value
}
if = {
limit = {
has_perk = hard_rule_perk
}
multiply = adventurer_hard_rule_contract_rewards_value
}
}
if = {
limit = {
faith != scope:defender.faith
}
add_piety = minor_piety_gain
}
}
}
}
#Treasure Hunting Contract - start event
ep3_contract_event.0005 = {
type = character_event
title = ep3_contract_event.0005.t
desc = ep3_contract_event.0005.desc
theme = travel
left_portrait = {
character = root
animation = personality_compassionate
}
lower_right_portrait = {
character = scope:task_contract_employer
}
immediate = {
}
#go on a treasure hunting travel, opens decision to set target location
option = {
name = ep3_contract_event.0005.a
custom_tooltip = ep3_contract_event.0005.a_tt
decision:treasure_hunting_contract_decision = {
open_view_data = {
view = decision_detail
player = root
}
}
#AI should always try to complete the contract
ai_chance = {
base = 1
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
#Treasure Hunting Contract - event triggered when you reach a location chosen in the decision
ep3_contract_event.0006 = {
type = character_event
title = ep3_contract_event.0006.t
desc = {
desc = ep3_contract_event.0006.desc
first_valid = {
triggered_desc = {
trigger = {
scope:task_contract_destination = {
has_holding_type = church_holding
}
}
desc = ep3_contract_event.0006.desc_locals_temple
}
triggered_desc = {
trigger = {
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
desc = ep3_contract_event.0006.desc_locals_city
}
triggered_desc = {
trigger = {
scope:task_contract_destination = {
has_holding_type = castle_holding
}
}
desc = ep3_contract_event.0006.desc_locals_castle
}
desc = ep3_contract_event.0006.desc_locals
}
}
theme = travel
left_portrait = {
character = root
animation = eavesdrop
}
right_portrait = {
character = scope:local_1
animation = debating
}
lower_left_portrait = {
character = scope:local_ruler
}
lower_right_portrait = {
trigger = { exists = scope:local_2 }
character = scope:local_2
}
#artifact you find
artifact = {
target = scope:newly_created_artifact
position = lower_center_portrait
}
override_background = {
trigger = {
scope:task_contract_destination = {
has_holding_type = castle_holding
}
}
reference = corridor_night
}
override_background = {
trigger = {
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
reference = market
}
override_background = {
trigger = {
scope:task_contract_destination = {
has_holding_type = church_holding
}
}
reference = temple
}
override_background = {
trigger = {
scope:task_contract_destination = {
NOR = {
has_holding_type = castle_holding
has_holding_type = city_holding
has_holding_type = church_holding
}
}
}
reference = tavern
}
trigger = {
any_character_task_contract = {
task_contract_type = laamp_treasure_hunting_contract
var:task_contract_destination ?= root.location
}
}
immediate = {
random_character_task_contract = {
task_contract_type = laamp_treasure_hunting_contract
limit = {
var:task_contract_destination ?= root.location
}
save_scope_as = task_contract
}
scope:task_contract.var:task_contract_destination = {
save_scope_as = task_contract_destination
county.holder = {
save_scope_as = local_ruler
}
}
scope:task_contract.task_contract_employer = {
save_scope_as = inspiration_owner
save_scope_as = task_contract_employer
}
if = {
limit = {
scope:task_contract_destination = {
has_holding_type = church_holding
}
}
if = {
limit = {
any_pool_character = {
province = scope:task_contract_destination
is_available_healthy_ai_adult = yes
}
}
random_pool_character = {
province = scope:task_contract_destination
limit = {
is_available_healthy_ai_adult = yes
}
save_scope_as = local_1
}
}
else = {
create_character = {
template = fp1_trade_partner_priest
location = scope:task_contract_destination
culture = scope:task_contract_destination.county.culture
faith = scope:task_contract_destination.county.faith
#Set up the scope
save_scope_as = local_1
}
}
inspiration_adventure_create_artifact_effect = {
OWNER = scope:local_1
CREATOR = scope:local_1
}
}
else_if = {
limit = {
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
if = {
limit = {
any_pool_character = {
province = scope:task_contract_destination
is_available_healthy_ai_adult = yes
}
}
random_pool_character = {
province = scope:task_contract_destination
limit = {
is_available_healthy_ai_adult = yes
}
save_scope_as = local_1
}
}
else = {
create_character = {
template = merchant_template
location = scope:task_contract_destination
culture = scope:task_contract_destination.county.culture
faith = scope:task_contract_destination.county.faith
#Set up the scope
save_scope_as = local_1
}
}
inspiration_adventure_create_artifact_effect = {
OWNER = scope:local_1
CREATOR = scope:local_1
}
}
else = {
if = {
limit = {
any_pool_character = {
province = scope:task_contract_destination
is_available_healthy_ai_adult = yes
}
}
random_pool_character = {
province = scope:task_contract_destination
limit = {
is_available_healthy_ai_adult = yes
}
save_scope_as = local_1
}
}
else = {
create_character = {
template = fp3_tomb_raider
location = scope:task_contract_destination
culture = scope:task_contract_destination.county.culture
faith = scope:task_contract_destination.county.faith
#Set up the scope
save_scope_as = local_1
}
}
if = {
limit = {
any_pool_character = {
province = scope:task_contract_destination
is_available_healthy_ai_adult = yes
this != scope:local_1
}
}
random_pool_character = {
province = scope:task_contract_destination
limit = {
is_available_healthy_ai_adult = yes
this != scope:local_1
}
save_scope_as = local_2
}
}
else = {
create_character = {
template = fp3_tomb_raider
location = scope:task_contract_destination
culture = scope:task_contract_destination.county.culture
faith = scope:task_contract_destination.county.faith
#Set up the scope
save_scope_as = local_2
}
}
if = {
limit = {
scope:task_contract_destination = {
has_holding_type = castle_holding
}
}
inspiration_adventure_create_artifact_effect = {
OWNER = scope:local_ruler
CREATOR = scope:local_ruler
}
}
else = {
inspiration_adventure_create_artifact_effect = {
OWNER = scope:local_1
CREATOR = scope:local_1
}
}
}
#Don't need no "Lost Court Artifact to [...]" errors for this
scope:newly_created_artifact = {
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 2
}
}
}
#go with the locals - castle only
option = {
name = ep3_contract_event.0006.castle
trigger = {
scope:task_contract_destination = {
has_holding_type = castle_holding
}
}
reason = castle_holding
duel = {
skills = { diplomacy intrigue }
target = scope:local_1
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
max = 50
}
desc = ep3_contract_event.0006.castle_won
save_scope_value_as = {
name = success_reason
value = flag:castle
}
trigger_event = ep3_contract_event.0007
show_as_tooltip = {
scope:newly_created_artifact = {
set_owner = root
}
}
}
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
min = -49
}
modifier = {
exists = scope:local_2
add = scope:local_2.intrigue
add = scope:local_2.diplomacy
}
desc = ep3_contract_event.0006.castle_lost_desc
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_contract_event.0006.castle_lost
desc = ep3_contract_event.0006.castle_lost_desc
left_icon = root
right_icon = scope:local_1
scope:newly_created_artifact = {
set_owner = scope:local_1
}
}
}
}
stress_impact = {
compassionate = minor_stress_impact_gain
deceitful = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#prove you're pious - church only
option = {
name = ep3_contract_event.0006.church
trigger = {
scope:task_contract_destination = {
has_holding_type = church_holding
}
}
reason = church_holding
random_list = {
4 = {
modifier = {
add = root.piety_level
}
modifier = {
add = root.num_virtuous_traits
}
modifier = {
add = {
value = root.num_sinful_traits
multiply = -1
}
}
modifier = {
add = root.learning
}
desc = ep3_contract_event.0006.church_won
save_scope_value_as = {
name = success_reason
value = flag:church
}
trigger_event = ep3_contract_event.0007
show_as_tooltip = {
scope:newly_created_artifact = {
set_owner = root
}
}
}
4 = {
modifier = {
add = scope:local_1.piety_level
}
modifier = {
add = scope:local_1.num_virtuous_traits
}
modifier = {
add = {
value = scope:local_1.num_sinful_traits
multiply = -1
}
}
desc = ep3_contract_event.0006.church_lost_desc
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_contract_event.0006.church_lost
desc = ep3_contract_event.0006.church_lost_desc
left_icon = root
right_icon = scope:local_1
scope:newly_created_artifact = {
set_owner = scope:local_1
}
}
}
}
stress_impact = {
cynical = minor_stress_impact_gain
zealous = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#barter for lower price - city only
option = {
name = ep3_contract_event.0006.city
trigger = {
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
reason = city_holding
random_list = {
1 = {
modifier = {
add = root.prestige_level
}
modifier = {
add = root.dynasty.dynasty_prestige_level
}
modifier = {
add = root.stewardship
}
desc = ep3_contract_event.0006.city_won
save_scope_value_as = {
name = success_reason
value = flag:city
}
pay_short_term_gold = {
target = scope:local_1
gold = minor_gold_value
}
trigger_event = ep3_contract_event.0007
show_as_tooltip = {
scope:newly_created_artifact = {
set_owner = root
}
}
}
1 = {
modifier = {
add = scope:local_1.prestige_level
}
modifier = {
add = scope:local_1.dynasty.dynasty_prestige_level
}
desc = ep3_contract_event.0006.city_lost_desc
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_contract_event.0006.city_lost
desc = ep3_contract_event.0006.city_lost_desc
left_icon = root
right_icon = scope:local_1
}
}
}
stress_impact = {
generous = minor_stress_impact_gain
greedy = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
modifier = {
factor = 0
short_term_gold < minor_gold_value
}
}
}
#try to buy it - always
option = {
name = ep3_contract_event.0006.buy
if = {
limit = {
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
pay_short_term_gold = {
target = scope:local_1
gold = major_gold_value
}
save_scope_value_as = {
name = success_reason
value = flag:buy
}
trigger_event = ep3_contract_event.0007
show_as_tooltip = {
scope:newly_created_artifact = {
set_owner = root
}
}
}
else = {
duel = {
skill = stewardship
target = scope:local_1
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
max = 50
}
desc = ep3_contract_event.0006.buy_won
pay_short_term_gold = {
target = scope:local_1
gold = major_gold_value
}
save_scope_value_as = {
name = success_reason
value = flag:buy
}
trigger_event = ep3_contract_event.0007
show_as_tooltip = {
scope:newly_created_artifact = {
set_owner = root
}
}
}
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
min = -49
}
modifier = {
exists = scope:local_2
add = scope:local_2.stewardship
}
desc = ep3_contract_event.0006.buy_lost_desc
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_contract_event.0006.buy_lost
desc = ep3_contract_event.0006.buy_lost_desc
left_icon = root
right_icon = scope:local_1
pay_short_term_gold = {
target = scope:local_1
gold = major_gold_value
}
scope:newly_created_artifact = {
set_owner = scope:local_1
}
}
}
}
}
stress_impact = {
greedy = minor_stress_impact_gain
generous = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
modifier = {
factor = 0
short_term_gold < major_gold_value
}
}
}
#intimidate them - freebooters and swords-for-hire only
option = {
name = ep3_contract_event.0006.intimidate
trigger = {
OR = {
has_realm_law = camp_purpose_brigands
has_realm_law = camp_purpose_mercenaries
}
}
reason = purpose_brigands_and_mercenaries
duel = {
skills = { intrigue prowess }
target = scope:local_1
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
max = 50
}
desc = ep3_contract_event.0006.intimidate_won
save_scope_value_as = {
name = success_reason
value = flag:intimidate
}
trigger_event = ep3_contract_event.0007
show_as_tooltip = {
scope:newly_created_artifact = {
set_owner = root
}
}
}
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
min = -49
}
modifier = {
exists = scope:local_2
add = scope:local_2.intrigue
add = scope:local_2.prowess
}
desc = ep3_contract_event.0006.intimidate_lost_desc
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_contract_event.0006.intimidate_lost
desc = ep3_contract_event.0006.intimidate_lost_desc
left_icon = root
right_icon = scope:local_1
scope:newly_created_artifact = {
set_owner = scope:local_1
}
}
}
}
stress_impact = {
compassionate = minor_stress_impact_gain
wrathful = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#hit the local library - scholars and legitimists only
option = {
name = ep3_contract_event.0006.library
trigger = {
OR = {
has_realm_law = camp_purpose_scholars
has_realm_law = camp_purpose_legitimists
}
}
reason = purpose_legitimists_and_scholars
duel = {
skill = learning
value = decent_skill_rating
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
max = 50
}
desc = ep3_contract_event.0006.library_won
save_scope_value_as = {
name = success_reason
value = flag:library
}
hidden_effect = {
destroy_artifact = scope:newly_created_artifact
}
custom_tooltip = ep3_contract_event.0006.library.tt
trigger_event = ep3_contract_event.0007
}
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep3_contract_event.0006.library_lost_desc
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_contract_event.0006.library_lost
desc = ep3_contract_event.0006.library_lost_desc
left_icon = root
hidden_effect = {
if = {
limit = {
exists = scope:newly_created_artifact
}
destroy_artifact = scope:newly_created_artifact
}
}
}
}
}
stress_impact = {
impatient = minor_stress_impact_gain
patient = minor_stress_impact_loss
stubborn = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#go on your own - wanderers and explorers only
option = {
name = ep3_contract_event.0006.explore
trigger = {
OR = {
has_realm_law = camp_purpose_wanderers
has_realm_law = camp_purpose_explorers
}
}
reason = purpose_explorers_and_wanderers
duel = {
skills = { diplomacy martial }
value = decent_skill_rating
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
max = 50
}
desc = ep3_contract_event.0006.explore_won
save_scope_value_as = {
name = success_reason
value = flag:explore
}
hidden_effect = {
destroy_artifact = scope:newly_created_artifact
}
custom_tooltip = ep3_contract_event.0006.explore.tt
trigger_event = ep3_contract_event.0007
}
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep3_contract_event.0006.explore_lost_desc
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_contract_event.0006.explore_lost
desc = ep3_contract_event.0006.explore_lost_desc
left_icon = root
hidden_effect = {
if = {
limit = {
exists = scope:newly_created_artifact
}
destroy_artifact = scope:newly_created_artifact
}
}
}
}
}
stress_impact = {
impatient = minor_stress_impact_gain
patient = minor_stress_impact_loss
stubborn = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
}
scripted_effect change_treasure_type = {
scope:newly_created_artifact = {
if = {
limit = {
OR = {
exists = scope:cupboard
exists = scope:ark_covenant
exists = scope:throne
exists = scope:necklace_artifact
exists = scope:armor_artifact
exists = scope:weapon_artifact
exists = scope:regalia_artifact
#exists = scope:box
#exists = scope:skull
#exists = scope:goblet
#exists = scope:animal_hide_size
exists = scope:tapestry
}
}
#do nothing, as they should already have the correct type
}
else_if = {
limit = {
OR = {
has_variable = ascalon
has_variable = staff_kakusandha
has_variable = zomorrodnegar
has_variable = aruval
has_variable = sword_cid
has_variable = sword_of_muhammad
has_variable = mmaagha_kamalu
has_variable = sword_attila
}
}
reforge_artifact = { type = regalia }
}
else_if = {
limit = { has_variable = iron_crown }
reforge_artifact = { type = helmet }
}
else_if = {
limit = { artifact_type = pedestal }
reforge_artifact = { type = miscellaneous }
}
set_owner = root
}
}
#Treasure Hunting Contract - event triggered if you find an artifact in previous event ep3_contract_event.0006 to decide if you want to keep the artifact for yourself or complete the contract
ep3_contract_event.0007 = {
type = character_event
title = ep3_contract_event.0007.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:success_reason = flag:castle
scope:task_contract_destination = {
has_holding_type = castle_holding
}
}
desc = ep3_contract_event.0007.desc_castle_castle
}
triggered_desc = {
trigger = {
scope:success_reason = flag:church
scope:task_contract_destination = {
has_holding_type = church_holding
}
}
desc = ep3_contract_event.0007.desc_church_church
}
triggered_desc = {
trigger = {
scope:success_reason = flag:city
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
desc = ep3_contract_event.0007.desc_city_city
}
triggered_desc = {
trigger = {
scope:success_reason = flag:buy
scope:task_contract_destination = {
has_holding_type = castle_holding
}
}
desc = ep3_contract_event.0007.desc_castle_buy
}
triggered_desc = {
trigger = {
scope:success_reason = flag:buy
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
desc = ep3_contract_event.0007.desc_city_buy
}
triggered_desc = {
trigger = {
scope:success_reason = flag:buy
scope:task_contract_destination = {
has_holding_type = church_holding
}
}
desc = ep3_contract_event.0007.desc_church_buy
}
triggered_desc = {
trigger = {
scope:success_reason = flag:intimidate
scope:task_contract_destination = {
has_holding_type = castle_holding
}
}
desc = ep3_contract_event.0007.desc_castle_intimidate
}
triggered_desc = {
trigger = {
scope:success_reason = flag:intimidate
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
desc = ep3_contract_event.0007.desc_city_intimidate
}
triggered_desc = {
trigger = {
scope:success_reason = flag:intimidate
scope:task_contract_destination = {
has_holding_type = church_holding
}
}
desc = ep3_contract_event.0007.desc_church_intimidate
}
triggered_desc = {
trigger = { scope:success_reason = flag:library }
desc = ep3_contract_event.0007.desc_library
}
triggered_desc = {
trigger = { scope:success_reason = flag:explore }
desc = ep3_contract_event.0007.desc_explore
}
}
}
theme = travel
left_portrait = {
character = root
animation = happiness
}
right_portrait = {
character = scope:local_1
trigger = {
NOR = {
scope:success_reason = flag:library
scope:success_reason = flag:explore
}
}
animation = rage
}
lower_left_portrait = {
character = scope:task_contract_employer
}
lower_right_portrait = {
trigger = {
exists = scope:local_2
NOR = {
scope:success_reason = flag:library
scope:success_reason = flag:explore
}
}
character = scope:local_2
}
#artifact you find
artifact = {
target = scope:newly_created_artifact
position = lower_center_portrait
}
override_background = {
trigger = {
OR = {
scope:success_reason = flag:library
scope:success_reason = flag:explore
}
}
reference = wilderness
}
override_background = {
trigger = {
scope:task_contract_destination = {
has_holding_type = castle_holding
}
}
reference = corridor_night
}
override_background = {
trigger = {
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
reference = market
}
override_background = {
trigger = {
scope:task_contract_destination = {
has_holding_type = church_holding
}
}
reference = temple
}
override_background = {
trigger = {
scope:task_contract_destination = {
NOR = {
has_holding_type = castle_holding
has_holding_type = city_holding
has_holding_type = church_holding
}
}
}
reference = tavern
}
immediate = {
random_courtier = {
limit = {
is_adult = yes
}
save_scope_as = follower
}
if = {
limit = {
OR = {
scope:success_reason = flag:library
scope:success_reason = flag:explore
}
}
inspiration_adventure_create_artifact_effect = {
OWNER = root
CREATOR = root
}
add_gold = major_gold_value
}
if = {
limit = {
scope:success_reason = flag:city
}
change_treasure_type = yes
scope:newly_created_artifact = {
set_owner = root
}
inspiration_adventure_create_artifact_effect = {
OWNER = scope:local_1
CREATOR = scope:local_1
}
}
}
#give it back to locals so they join you
option = {
name = ep3_contract_event.0007.castle
trigger = {
scope:success_reason = flag:castle
}
scope:newly_created_artifact = {
set_owner = scope:local_1
}
add_courtier = scope:local_1
add_courtier = scope:local_2
stress_impact = {
greedy = minor_stress_impact_gain
compassionate = minor_stress_impact_loss
}
#AI should always complete the contract
ai_chance = {
base = 0
}
}
#pay them more so they join you
option = {
name = ep3_contract_event.0007.castle_buy
trigger = {
scope:success_reason = flag:buy
scope:task_contract_destination = {
has_holding_type = city_holding
}
}
pay_short_term_gold = {
target = scope:local_2
gold = major_gold_value
}
add_courtier = scope:local_1
add_courtier = scope:local_2
stress_impact = {
greedy = minor_stress_impact_gain
compassionate = minor_stress_impact_loss
}
#AI should always complete the contract
ai_chance = {
base = 0
}
}
#Buy everything for yourself
option = {
name = ep3_contract_event.0007.city_city
trigger = {
scope:success_reason = flag:city
}
pay_short_term_gold = {
target = scope:local_1
gold = major_gold_value
}
change_treasure_type = yes
scope:newly_created_artifact = {
set_owner = scope:local_1
}
stress_impact = {
content = minor_stress_impact_gain
greedy = minor_stress_impact_loss
}
#AI should always complete the contract
ai_chance = {
base = 0
}
}
#after all, why wouldn't I take it for myself?
option = {
name = ep3_contract_event.0007.a
if = {
limit = {
NOT = { scope:success_reason = flag:city }
}
change_treasure_type = yes
}
if = {
limit = {
scope:success_reason = flag:castle
}
set_relation_rival = {
target = scope:local_1
reason = rival_stole_artifact
}
set_relation_rival = {
target = scope:local_2
reason = rival_stole_artifact
}
}
stress_impact = {
content = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
greedy = minor_stress_impact_loss
}
#AI should always complete the contract
ai_chance = {
base = 0
}
}
#give it back to task_contract_employer to complete the contract
option = {
name = ep3_contract_event.0007.b
scope:newly_created_artifact = {
set_owner = scope:task_contract_employer
}
scope:task_contract = {
complete_task_contract = success_standard
}
if = {
limit = {
scope:success_reason = flag:castle
}
set_relation_rival = {
target = scope:local_1
reason = rival_stole_artifact
}
set_relation_rival = {
target = scope:local_2
reason = rival_stole_artifact
}
}
#AI should always complete the contract
ai_chance = {
base = 10
}
}
after = {
if = {
limit = {
can_set_relation_rival_trigger = { CHARACTER = scope:local_ruler }
scope:success_reason = flag:castle
}
progress_towards_rival_effect = {
REASON = rival_stole_artifact
CHARACTER = scope:local_ruler
OPINION = default_rival_opinion
}
}
}
}
#Join war contract - joining the war
ep3_contract_event.0008 = {
type = character_event
title = ep3_contract_event.0008.t
desc = ep3_contract_event.0008.desc
theme = war
#task_contract_taker, you
left_portrait = {
character = root
animation = inspect_weapon
}
right_portrait = {
character = scope:commander
animation = personality_callous
}
#character giving you the contract
lower_right_portrait = {
character = scope:task_contract_employer
}
#character you have to fight in a war
lower_left_portrait = {
character = scope:task_contract_target
}
immediate = {
set_contract_scopes_effect = yes
scope:task_contract_employer = {
random_knight = {
save_scope_as = commander
}
}
scope:commander = {
add_character_flag = need_military_outfit
}
}
#take the contract and join the war
option = {
name = ep3_contract_event.0008.a
highlight_portrait = scope:task_contract_employer
scope:task_contract_war = {
hidden_effect = { set_called_to = root }
if = {
limit = {
is_attacker = scope:task_contract_employer
}
add_attacker = root
}
else = {
add_defender = root
}
}
custom_tooltip = join_war_contract.employer_military_strength
custom_tooltip = join_war_contract.target_military_strength
#AI should always complete the contract
ai_chance = {
base = 10
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
after = {
scope:commander = {
remove_character_flag = need_military_outfit
}
}
}
#Reclaim Artifact contract - start event
ep3_contract_event.0009 = {
type = character_event
title = ep3_contract_event.0009.t
desc = ep3_contract_event.0009.desc
theme = intrigue
#task_contract_taker, you
left_portrait = {
character = root
animation = scheme
}
#character giving you the contract
right_portrait = {
character = scope:task_contract_employer
animation = bribing
}
#character you have to steal from
lower_right_portrait = {
character = scope:task_contract_target
}
#artifact you have to steal
artifact = {
target = scope:task_contract_object
position = lower_center_portrait
}
immediate = {
set_contract_scopes_effect = yes
}
#take the contract and start scheme to steal the artifact
option = {
name = ep3_contract_event.0009.a
custom_tooltip = ep3_contract_event.0009.open_start_stealing_back_artifact
if = {
limit = {
is_ai = yes
}
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = steal_back_artifact
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_thief
AGENT_2 = agent_thief
# Speed.
AGENT_3 = agent_infiltrator
AGENT_4 = agent_infiltrator
# Secrecy.
AGENT_5 = agent_lookout
}
scope:new_scheme ?= {
set_variable = {
name = target_artifact
value = scope:task_contract_object
}
}
}
else = {
open_interaction_window = {
interaction = start_stealing_back_artifact
actor = root
recipient = scope:task_contract_target
}
}
#AI should always complete the contract
ai_chance = {
base = 10
}
}
#take the contract, but only unlock the steal artifact interaction
option = {
name = ep3_contract_event.0009.b
#AI should always complete the contract
ai_chance = {
base = 0
}
}
}
#transport contract completion event - triggered whenever you have an active transport contract and pass through a contract location
ep3_contract_event.0011 = {
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_vip } }
desc = ep3_contract_event.0011.t_vip
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_ward } }
desc = ep3_contract_event.0011.t_child
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_explorer } }
desc = ep3_contract_event.0011.t_explorer
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_artifact } }
desc = ep3_contract_event.0011.t_artifact
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_gold } }
desc = ep3_contract_event.0011.t_gold
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_animal } }
desc = ep3_contract_event.0011.t_animal
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_construction_contract } }
desc = ep3_contract_event.0011.t_construction
}
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_vip } }
desc = ep3_contract_event.0011.desc_vip
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_ward } }
desc = {
desc = ep3_contract_event.0011.desc_ward
first_valid = {
triggered_desc = {
trigger = { scope:ward_too_old ?= yes }
desc = ep3_contract_event.0011.desc_ward_too_old
}
triggered_desc = {
trigger = { scope:ward_limit ?= yes }
desc = ep3_contract_event.0011.desc_ward_limit
}
desc = ep3_contract_event.0011.desc_ward_accepted
}
}
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_explorer } }
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:task_contract.var:travel_reason = {
OR = {
flag:capitals ?= this
flag:grand_city ?= this
flag:mausoleum_at_halicarnassus ?= this
flag:lighthouse_of_alexandria ?= this
}
}
}
desc = ep3_contract_event.0011.desc_explorer_other
}
desc = ep3_contract_event.0011.desc_explorer_building
}
}
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_artifact } }
desc = ep3_contract_event.0011.desc_artifact
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_gold } }
desc = ep3_contract_event.0011.desc_gold
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_transport_animal } }
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:task_contract.var:escorted_story ?= { story_type = story_cycle_pet_dog }
scope:hates_pets ?= yes
}
desc = ep3_contract_event.0011.desc_animal_dog_hate
}
triggered_desc = {
trigger = { scope:task_contract.var:escorted_story ?= { story_type = story_cycle_pet_dog } }
desc = ep3_contract_event.0011.desc_animal_dog_love
}
triggered_desc = {
trigger = {
scope:task_contract.var:escorted_story ?= { story_type = story_cycle_pet_cat }
scope:hates_pets ?= yes
}
desc = ep3_contract_event.0011.desc_animal_cat_hate
}
triggered_desc = {
trigger = { scope:task_contract.var:escorted_story ?= { story_type = story_cycle_pet_cat } }
desc = ep3_contract_event.0011.desc_animal_cat_love
}
}
}
}
triggered_desc = {
trigger = { scope:task_contract = { has_task_contract_type = laamp_construction_contract } }
desc = ep3_contract_event.0011.desc_construction
}
}
}
theme = landless_adventurer
override_background = { reference = throne_room }
left_portrait = {
character = root
animation = war_over_win
}
right_portrait = {
trigger = { exists = scope:task_contract_target }
character = scope:task_contract_target
animation = personality_compassionate
}
lower_right_portrait = {
trigger = {
exists = scope:task_contract_employer
NOT = { scope:task_contract_target ?= scope:task_contract_employer }
}
character = scope:task_contract_employer
}
lower_left_portrait = {
trigger = {
exists = scope:task_contract_object
NOR = {
scope:task_contract_target = scope:task_contract_object
scope:task_contract_employer = scope:task_contract_object
}
}
character = scope:task_contract_object
}
artifact = {
trigger = { exists = scope:escorted_artifact }
target = scope:escorted_artifact
position = lower_center_portrait
}
immediate = {
set_contract_scopes_effect = yes
scope:task_contract = {
switch = {
trigger = has_task_contract_type
laamp_transport_vip = {
root.current_travel_plan = { remove_character = scope:task_contract_object }
scope:task_contract_object = {
remove_variable = blocked_from_leaving
visit_court_of = scope:task_contract_target
}
}
laamp_transport_ward = {
root.current_travel_plan = { remove_character = scope:task_contract_object }
if = {
limit = {
scope:task_contract_object = {
is_adult = yes
}
}
save_scope_value_as = {
name = ward_too_old
value = yes
}
}
else_if = {
limit = {
scope:task_contract_target = {
num_of_relation_ward > 1
}
}
save_scope_value_as = {
name = ward_limit
value = yes
}
}
else = {
scope:task_contract_object = {
if = {
limit = {
any_relation = {
type = guardian
}
}
random_relation = {
type = guardian
save_scope_as = old_guardian
}
remove_guardian_effect = {
GUARDIAN = scope:old_guardian
WARD = scope:task_contract_object
RETURN_WARD = no
HIDE_OPINION = no
}
}
remove_variable = blocked_from_leaving
visit_court_of = scope:task_contract_target
set_relation_guardian = scope:task_contract_target
save_scope_as = ward
scope:task_contract_target = {
save_scope_as = guardian
}
scope:task_contract_employer = {
save_scope_as = ward_liege
}
trigger_event = { on_action = on_ward_arrive_at_guardian }
}
}
scope:task_contract_object = {
progress_towards_friend_effect = {
REASON = friend_random_fallback
CHARACTER = root
OPINION = default_friend_opinion
}
}
}
laamp_transport_explorer = {
root.current_travel_plan = { remove_character = scope:task_contract_object }
scope:task_contract_object = {
remove_variable = blocked_from_leaving
save_scope_as = task_contract_target
}
}
laamp_transport_artifact = {
scope:escorted_artifact = {
set_owner = scope:task_contract_target
set_variable = {
name = ungiftable
}
}
}
laamp_transport_gold = {
root = {
pay_treasury_or_gold = {
target = scope:task_contract_target
value = scope:task_contract.var:escorted_gold
}
}
scope:task_contract_employer = {
if = {
limit = {
can_add_hook = {
target = scope:task_contract_target
type = indebted_hook
}
}
add_hook = {
target = scope:task_contract_target
type = indebted_hook
}
}
}
}
laamp_transport_animal = {
#give them the whole story cycle for pets
if = {
limit = {
scope:escorted_story = { story_type = story_cycle_pet_dog }
}
root = {
transfer_dog_story_cycle_to_effect = {
CHARACTER = scope:task_contract_target
STORY = scope:escorted_story
}
}
}
else = {
root = {
transfer_cat_story_cycle_to_effect = {
CHARACTER = scope:task_contract_target
STORY = scope:escorted_story
}
}
scope:escorted_story = {
set_variable = {
name = gifted_pet_story
value = scope:task_contract_employer
}
}
}
scope:task_contract_target = {
if = {
limit = { #"What am I supposed to do with this??"
OR = {
has_personality_malicious_trigger = yes
AND = {
scope:escorted_story = { story_type = story_cycle_pet_cat }
has_character_modifier = cat_story_allergy_modifier
}
AND = {
scope:escorted_story = { story_type = story_cycle_pet_dog }
faith = { religion_tag = islam_religion }
}
}
}
save_scope_value_as = {
name = hates_pets
value = yes
}
add_opinion = {
target = scope:task_contract_employer
modifier = dumped_animal_on_me_opinion
}
}
else = {
add_opinion = {
target = scope:task_contract_employer
modifier = grateful_opinion
opinion = 15
}
}
}
}
laamp_construction_contract = {
scope:task_contract_destination = {
county = {
add_county_modifier = {
modifier = massive_construction_efforts_modifier
years = 5
}
}
}
}
}
}
}
option = {
name = ep3_contract_event.0011.a
trigger = {
scope:task_contract = {
has_task_contract_type = laamp_construction_contract
}
}
add_character_modifier = ep3_construction_contract_modifier
custom_tooltip = ep3_contract_event.0011.construction_invalidation
show_as_tooltip = {
custom_tooltip = ep3_contract_event.0011.construction_reward
scope:task_contract = { complete_task_contract = success_critical }
}
if = {
limit = {
current_travel_plan ?= {
is_travel_with_domicile = no
}
}
current_travel_plan ?= {
abort_travel_plan = yes
}
save_scope_value_as = {
name = provision_to_gold_conversion_value
value = {
value = root.domicile.provision_cost_to_owner
add = root.domicile.provisions
}
}
if = {
limit = {
scope:provision_to_gold_conversion_value < 0
}
domicile = {
change_provisions = {
value = 0
subtract = root.domicile.provisions
}
}
add_gold = {
value = scope:provision_to_gold_conversion_value
multiply = 0.1
}
}
else = {
domicile = {
change_provisions = root.domicile.provision_cost_to_owner
}
}
}
#AI should have a small chance to move the domicile
ai_chance = {
base = 2
}
}
option = {
name = ep3_contract_event.0011.b
trigger = {
scope:task_contract = {
has_task_contract_type = laamp_transport_explorer
task_contract_employer = {
is_landed = no
}
}
}
add_courtier = scope:task_contract_object
current_travel_plan = {
add_companion = scope:task_contract_object
}
#AI should be willing to take more people, as it's probably their best bet to get them
ai_chance = {
base = 20
}
}
option = {
name = ep3_contract_event.0011.c
trigger = { scope:ward_limit ?= yes }
duel = {
skill = diplomacy
value = scope:task_contract_target.diplomacy
10 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
scope:task_contract_target = {
random_relation = {
type = ward
save_scope_as = current_ward
}
remove_guardian_effect = {
GUARDIAN = scope:task_contract_target
WARD = scope:current_ward
RETURN_WARD = yes
HIDE_OPINION = yes
}
}
scope:task_contract_object = {
remove_variable = blocked_from_leaving
visit_court_of = scope:task_contract.var:task_contract_target
set_relation_guardian = scope:task_contract.var:task_contract_target
save_scope_as = ward
scope:task_contract.var:task_contract_target = {
save_scope_as = guardian
}
scope:task_contract.var:task_contract_employer = {
save_scope_as = ward_liege
}
trigger_event = { on_action = on_ward_arrive_at_guardian }
}
save_scope_value_as = {
name = ward_limit
value = no
}
}
10 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
scope:task_contract_target = {
add_opinion = {
target = root
modifier = insulted_opinion
opinion = -20
}
}
}
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
option = {
name = {
trigger = {
any_task_contract = {
save_temporary_scope_as = temp_contract
task_contract_taker ?= {
this = root
}
root.current_travel_plan = {
any_future_path_location = {
this = scope:temp_contract.task_contract_destination
}
}
}
}
text = ep3_contract_event.0011.d_continue
}
name = {
trigger = {
always = yes
}
text = ep3_contract_event.0011.d_end
}
if = {
limit = {
scope:task_contract = {
has_task_contract_type = laamp_construction_contract
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
}
#AI should always complete the contract
ai_chance = {
base = 1
modifier = {
add = 1000
#AI should keep going if other contracts are on the travel path
any_task_contract = {
save_temporary_scope_as = temp_contract
task_contract_taker ?= {
this = root
}
root.current_travel_plan = {
any_future_path_location = {
this = scope:temp_contract.task_contract_destination
}
}
}
}
}
}
after = {
scope:task_contract = {
switch = {
trigger = has_task_contract_type
laamp_transport_vip = {
if = {
limit = {
var:task_contract_object ?= {
is_alive = no
}
}
complete_task_contract = failure_standard
}
else_if = {
limit = {
time_since_contract_taken > 360
}
complete_task_contract = success_standard
}
else = {
complete_task_contract = success_critical
}
}
laamp_transport_artifact = {
if = {
limit = {
OR = {
NOT = { exists = scope:task_contract.var:escorted_artifact }
scope:task_contract.var:escorted_artifact ?= {
artifact_durability < 1
}
}
}
complete_task_contract = transport_destroyed
}
else_if = {
limit = {
time_since_contract_taken > 360
}
complete_task_contract = success_standard
}
else = {
complete_task_contract = success_critical
}
}
laamp_transport_gold = {
complete_task_contract = success_standard
}
laamp_transport_ward = {
if = {
limit = {
OR = {
scope:ward_limit ?= yes
scope:ward_too_old ?= yes
}
}
complete_task_contract = failure_standard
}
else = {
complete_task_contract = success_standard
}
}
laamp_transport_explorer = {
if = {
limit = {
time_since_contract_taken > 360
}
complete_task_contract = success_standard
}
else = {
complete_task_contract = success_critical
}
}
laamp_transport_animal = {
complete_task_contract = success_standard
}
}
}
}
}
#transport contract invalidated - triggered whenever a transport contract is invalidated for any reason
#on_invalidation has to specify scope:task_contract_invalidation_reason
ep3_contract_event.0012 = {
type = letter_event
opening = {
triggered_desc = {
trigger = {
OR = {
scope:task_contract_invalidation_reason = flag:escortee_dead
scope:task_contract_invalidation_reason = flag:pet_dead
}
}
desc = ep3_contract_event.0012.opening_angry
}
triggered_desc = {
trigger = {
OR = {
scope:task_contract_invalidation_reason = flag:employer_dead
scope:task_contract_invalidation_reason = flag:target_dead
scope:task_contract_invalidation_reason = flag:prisoner_free
scope:task_contract_invalidation_reason = flag:not_vassal
scope:task_contract_invalidation_reason = flag:unlanded_employer_is_imprisoned
scope:task_contract_invalidation_reason = flag:faction_disbanded
}
}
desc = ep3_contract_event.0012.opening
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:task_contract_invalidation_reason = flag:employer_dead }
desc = ep3_contract_event.0012.desc_employer_dead
}
triggered_desc = {
trigger = { scope:task_contract_invalidation_reason = flag:target_dead }
desc = ep3_contract_event.0012.desc_target_dead
}
triggered_desc = {
trigger = { scope:task_contract_invalidation_reason = flag:escortee_dead }
desc = ep3_contract_event.0012.desc_escortee_dead
}
triggered_desc = {
trigger = { scope:task_contract_invalidation_reason = flag:pet_dead }
desc = ep3_contract_event.0012.desc_pet_dead
}
triggered_desc = {
trigger = { scope:task_contract_invalidation_reason = flag:prisoner_free }
desc = ep3_contract_event.0012.desc_prisoner_free
}
triggered_desc = {
trigger = { scope:task_contract_invalidation_reason = flag:not_vassal }
desc = ep3_contract_event.0012.desc_not_vassal
}
triggered_desc = {
trigger = { scope:task_contract_invalidation_reason = flag:unlanded_employer_is_imprisoned }
desc = ep3_contract_event.0012.desc_unlanded_employer_is_imprisoned
}
triggered_desc = {
trigger = { scope:task_contract_invalidation_reason = flag:faction_disbanded }
desc = ep3_contract_event.0012.desc_faction_disbanded
}
}
}
sender = scope:sender
immediate = {
if = {
limit = {
exists = current_travel_plan
NOT = { exists = scope:travel_destination }
}
current_travel_plan.final_destination_province = {
save_scope_as = travel_destination
}
}
#For those with heirs
if = {
limit = { exists = scope:employer_heir }
scope:employer_heir = { save_scope_as = sender }
}
#Or just the employer, straight up
else = {
scope:task_contract_employer = { save_scope_as = sender }
}
#Remove the treasure map
if = {
limit = {
var:invalidated_task_contract_type = flag:laamp_treasure_map_contract
}
random_character_artifact = {
limit = { has_variable = 1025_treasure_map }
hidden_effect = { destroy_artifact = this }
}
#Remove the employer from your camp
if = {
limit = {
scope:task_contract_employer = { is_courtier_of = root }
}
remove_courtier_or_guest = scope:task_contract_employer
}
#Mysterious
custom_tooltip = treasure_map_disappeared.tt
}
#stuff that would be nice to see in tooltip, but is already executed in on_invalidation
show_as_tooltip = {
if = {
limit = {
scope:task_contract_object ?= { is_alive = yes }
}
scope:task_contract_object = { return_to_court = yes }
}
}
switch = {
trigger = scope:task_contract_invalidation_reason
#employer or target died, get gold compensation
flag:employer_dead = { add_gold = task_contract_invalidated_gold_gain_value }
flag:target_dead = { add_gold = task_contract_invalidated_gold_gain_value }
#character or pet you were suppose to escort died
flag:escortee_dead = {
add_prestige = task_contract_failure_prestige_loss_full_value
scope:task_contract_employer = {
progress_towards_rival_effect = {
REASON = rival_escortee_died
CHARACTER = root
OPINION = default_rival_opinion
}
}
}
flag:pet_dead = {
add_prestige = task_contract_failure_prestige_loss_full_value
scope:task_contract_employer = {
progress_towards_rival_effect = {
REASON = rival_escortee_died
CHARACTER = root
OPINION = default_rival_opinion
}
}
}
flag:prisoner_free = { add_gold = task_contract_invalidated_gold_gain_value }
flag:unlanded_employer_is_imprisoned = {
#Nothing for you. They're unlanded.
}
flag:not_vassal = {
add_gold = task_contract_invalidated_gold_gain_value
}
flag:faction_disbanded = {
add_gold = task_contract_invalidated_gold_gain_value
}
}
}
#Let's head home
option = {
name = {
trigger = {
OR = {
scope:task_contract_invalidation_reason = flag:employer_dead
scope:task_contract_invalidation_reason = flag:target_dead
scope:task_contract_invalidation_reason = flag:prisoner_free
scope:task_contract_invalidation_reason = flag:not_vassal
scope:task_contract_invalidation_reason = flag:faction_disbanded
}
}
text = ep3_contract_event.0012.a
}
name = {
trigger = {
OR = {
scope:task_contract_invalidation_reason = flag:escortee_dead
scope:task_contract_invalidation_reason = flag:pet_dead
scope:task_contract_invalidation_reason = flag:unlanded_employer_is_imprisoned
}
}
text = ep3_contract_event.0012.b
}
return_home = yes
ai_chance = {
base = 10
}
}
#Keep going
option = {
name = ep3_contract_event.0012.c
trigger = { exists = scope:travel_destination }
ai_chance = {
base = 0
}
}
after = {
remove_variable = invalidated_task_contract_type
}
}
#Join war contract success/failure = triggered when war ends in war_on_actions
ep3_contract_event.0013 = {
type = letter_event
sender = scope:task_contract_employer
opening = {
first_valid = {
triggered_desc = {
trigger = { scope:task_contract_reward = flag:success_standard }
desc = ep3_contract_event.0013.opening_success
}
triggered_desc = {
trigger = { scope:task_contract_reward = flag:failure_standard }
desc = ep3_contract_event.0013.opening_failure
}
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:task_contract_reward = flag:success_standard }
desc = ep3_contract_event.0013.desc_success
}
triggered_desc = {
trigger = { scope:task_contract_reward = flag:failure_standard }
desc = ep3_contract_event.0013.desc_failure
}
}
}
immediate = {
#save scopes for ep3_hire_laamp_mercs_payment_value scripted value to work
save_scope_as = laamp_temp
scope:task_contract_employer = {
save_scope_as = employer
}
save_scope_value_as = {
name = war_contribution_value
value = "scope:war.war_contribution(scope:laamp_temp)"
}
}
option = {
name = ep3_contract_event.0013.a
trigger = { scope:task_contract_reward = flag:success_standard }
scope:task_contract_employer = {
pay_treasury_or_gold = {
target = scope:task_contract_taker
value = ep3_hire_laamp_mercs_payment_value
}
}
scope:laamp_temp = {
if = {
limit = {
faith != scope:task_contract.var:task_contract_target.faith
}
add_piety = {
value = "scope:war.war_contribution(scope:laamp_temp)"
divide = 100
min = minor_piety_gain
max = massive_piety_gain
}
}
}
ai_chance = {
base = 1
}
}
option = {
name = ep3_contract_event.0013.b
trigger = { scope:task_contract_reward = flag:failure_standard }
ai_chance = {
base = 1
}
}
}
#Protect Heritage - start event to help getting a title revocation rights vassal contract
ep3_contract_event.0020 = {
type = character_event
title = ep3_contract_event.0020.t
desc = ep3_contract_event.0020.desc
theme = intrigue
#contract_taker, you
left_portrait = {
character = root
animation = personality_compassionate
}
#character giving you the contract
lower_right_portrait = {
character = scope:task_contract_employer
}
#character you have to fight in a war
lower_left_portrait = {
character = scope:task_contract_target
}
immediate = {
set_contract_scopes_effect = yes
}
#use hook
option = {
name = ep3_contract_event.0020.a
trigger = {
has_hook = scope:task_contract_target
}
show_as_unavailable = {
NOT = { has_hook = scope:task_contract_target }
}
reason = hook
remove_hook = { target = scope:task_contract_target }
scope:task_contract_employer = {
vassal_contract_set_obligation_level = {
type = title_revocation_rights
level = 1
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
}
#intrigue
option = {
name = ep3_contract_event.0020.b
trigger = {
OR = {
has_realm_law = camp_purpose_wanderers
has_realm_law = camp_purpose_explorers
}
}
reason = purpose_explorers_and_wanderers
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = protect_minority_vassal_contract_intrigue_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_thug
AGENT_2 = agent_shill
AGENT_3 = agent_wrangler
# Speed.
AGENT_4 = agent_infiltrator
AGENT_5 = agent_socialite
}
scope:task_contract.scheme = {
save_scope_as = scheme
}
trigger_event = laamp_extra_contract_schemes.0001
custom_tooltip = ep3_contract_event.0020.agents_intrigue
custom_tooltip = ep3_contract_event.0020.tt
}
#martial
option = {
name = ep3_contract_event.0020.c
trigger = {
OR = {
has_realm_law = camp_purpose_brigands
has_realm_law = camp_purpose_mercenaries
}
}
reason = purpose_brigands_and_mercenaries
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = protect_minority_vassal_contract_martial_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_muscle
AGENT_2 = agent_thug
AGENT_3 = agent_bodyguard
# Speed.
AGENT_4 = agent_footpad
AGENT_5 = agent_tracker
}
scope:task_contract.scheme = {
save_scope_as = scheme
}
trigger_event = laamp_extra_contract_schemes.0001
custom_tooltip = ep3_contract_event.0020.agents_martial
custom_tooltip = ep3_contract_event.0020.tt
}
#learning
option = {
name = ep3_contract_event.0020.d
trigger = {
OR = {
has_realm_law = camp_purpose_scholars
has_realm_law = camp_purpose_legitimists
}
}
reason = purpose_legitimists_and_scholars
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = protect_minority_vassal_contract_learning_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_bailiff
AGENT_2 = agent_scribe
AGENT_3 = agent_diplomat
# Speed.
AGENT_4 = agent_theologian
AGENT_5 = agent_justiciar_speed
}
scope:task_contract.scheme = {
save_scope_as = scheme
}
trigger_event = laamp_extra_contract_schemes.0001
custom_tooltip = ep3_contract_event.0020.agents_learning
custom_tooltip = ep3_contract_event.0020.tt
}
#diplomacy - always
option = {
name = ep3_contract_event.0020.e
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = protect_minority_vassal_contract_diplomacy_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_diplomat
AGENT_2 = agent_shill
AGENT_3 = agent_scribe
# Speed.
AGENT_4 = agent_socialite
AGENT_5 = agent_herald
}
scope:task_contract.scheme = {
save_scope_as = scheme
}
trigger_event = laamp_extra_contract_schemes.0001
custom_tooltip = ep3_contract_event.0020.agents_diplomacy
custom_tooltip = ep3_contract_event.0020.tt
}
}
#Reward the Faithful - start event to help getting a religious rights vassal contract
ep3_contract_event.0021 = {
type = character_event
title = ep3_contract_event.0021.t
desc = ep3_contract_event.0021.desc
theme = intrigue
#contract_taker, you
left_portrait = {
character = root
animation = personality_compassionate
}
#character giving you the contract
right_portrait = {
character = scope:task_contract_employer
}
#character you have to fight in a war
lower_right_portrait = {
character = scope:task_contract_target
}
immediate = {
set_contract_scopes_effect = yes
}
#use hook
option = {
name = ep3_contract_event.0021.a
trigger = {
has_hook = scope:task_contract_target
}
show_as_unavailable = {
NOT = { has_hook = scope:task_contract_target }
}
reason = hook
remove_hook = { target = scope:task_contract_target }
scope:task_contract_employer = {
vassal_contract_set_obligation_level = {
type = religious_rights
level = 1
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
}
#intrigue
option = {
name = ep3_contract_event.0021.b
trigger = {
OR = {
has_realm_law = camp_purpose_wanderers
has_realm_law = camp_purpose_explorers
}
}
reason = purpose_explorers_and_wanderers
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = protect_minority_vassal_contract_intrigue_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_thug
AGENT_2 = agent_shill
AGENT_3 = agent_wrangler
# Speed.
AGENT_4 = agent_infiltrator
AGENT_5 = agent_socialite
}
scope:task_contract.scheme = {
save_scope_as = scheme
}
trigger_event = laamp_extra_contract_schemes.0001
custom_tooltip = ep3_contract_event.0021.agents_intrigue
custom_tooltip = ep3_contract_event.0021.tt
}
#martial
option = {
name = ep3_contract_event.0021.c
trigger = {
OR = {
has_realm_law = camp_purpose_brigands
has_realm_law = camp_purpose_mercenaries
}
}
reason = purpose_brigands_and_mercenaries
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = protect_minority_vassal_contract_martial_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_muscle
AGENT_2 = agent_thug
AGENT_3 = agent_bodyguard
# Speed.
AGENT_4 = agent_footpad
AGENT_5 = agent_tracker
}
scope:task_contract.scheme = {
save_scope_as = scheme
}
trigger_event = laamp_extra_contract_schemes.0001
custom_tooltip = ep3_contract_event.0021.agents_martial
custom_tooltip = ep3_contract_event.0021.tt
}
#learning
option = {
name = ep3_contract_event.0021.d
trigger = {
OR = {
has_realm_law = camp_purpose_scholars
has_realm_law = camp_purpose_legitimists
}
}
reason = purpose_legitimists_and_scholars
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = protect_minority_vassal_contract_learning_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_bailiff
AGENT_2 = agent_scribe
AGENT_3 = agent_diplomat
# Speed.
AGENT_4 = agent_theologian
AGENT_5 = agent_justiciar_speed
}
scope:task_contract.scheme = {
save_scope_as = scheme
}
trigger_event = laamp_extra_contract_schemes.0001
custom_tooltip = ep3_contract_event.0021.agents_learning
custom_tooltip = ep3_contract_event.0021.tt
}
#diplomacy - always
option = {
name = ep3_contract_event.0021.e
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = protect_minority_vassal_contract_diplomacy_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_diplomat
AGENT_2 = agent_shill
AGENT_3 = agent_scribe
# Speed.
AGENT_4 = agent_socialite
AGENT_5 = agent_herald
}
scope:task_contract.scheme = {
save_scope_as = scheme
}
trigger_event = laamp_extra_contract_schemes.0001
custom_tooltip = ep3_contract_event.0021.agents_diplomacy
custom_tooltip = ep3_contract_event.0021.tt
}
}
#Contract to scheme a Prison Break - starting event
ep3_contract_event.0030 = {
type = character_event
title = ep3_contract_event.0030.t
desc = ep3_contract_event.0030.desc
theme = intrigue
#contract_taker, you
left_portrait = {
character = root
animation = eyeroll
}
#contract_object, character to rescue from prison
right_portrait = {
character = scope:task_contract_employer
animation = bribing
}
#character giving you the contract
lower_right_portrait = {
character = scope:task_contract_object
}
#the imprisoner
lower_left_portrait = {
character = scope:task_contract_target
}
immediate = {
set_contract_scopes_effect = yes
}
#use hook
option = {
name = ep3_contract_event.0030.a
trigger = {
has_hook = scope:task_contract_target
}
show_as_unavailable = {
NOT = { has_hook = scope:task_contract_target }
}
reason = hook
remove_hook = { target = scope:task_contract_target }
scope:task_contract = {
complete_task_contract = success_standard
}
#AI should always try to complete the contract
ai_chance = {
base = 100
}
}
#prison break
option = {
name = ep3_contract_event.0030.b
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = laamp_prison_break_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_thief
AGENT_2 = agent_thug
# Speed.
AGENT_3 = agent_infiltrator
# Secrecy.
AGENT_4 = agent_lookout
AGENT_5 = agent_decoy
}
scope:task_contract.scheme = {
save_scope_as = scheme
}
custom_tooltip = ep3_contract_event.0030.agents
trigger_event = laamp_extra_contract_schemes.0011
#AI should always try to complete the contract
ai_chance = {
base = 1
}
}
#prison break
option = {
name = ep3_contract_event.0030.c
custom_tooltip = ep3_contract_event.0030.c.tt
reverse_add_opinion = {
modifier = angry_opinion
opinion = -10
target = scope:task_contract_employer
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
#Are we actually traveling towards the treasure now?
scripted_trigger 0040_traveling_towards_treasure_with_domicile_trigger = {
has_variable = ep3_laamp_decision_1000_is_excavating
current_travel_plan ?= {
is_travel_with_domicile = yes
OR = {
next_destination_province = scope:task_contract_destination
final_destination_province = scope:task_contract_destination
}
}
}
#Your Treasure Map broke!
ep3_contract_event.0040 = {
type = character_event
title = ep3_contract_event.0040.t
desc = ep3_contract_event.0040.desc
theme = travel
left_portrait = {
character = root
animation = shock
}
immediate = {
#Save scopes
random_character_task_contract = {
task_contract_type = laamp_treasure_map_contract
save_scope_as = task_contract
}
scope:task_contract = {
task_contract_employer = { save_scope_as = task_contract_employer }
var:contract_treasure_location = { save_scope_as = treasure_map_contract_destination }
}
#Remove treasure map
destroy_artifact = scope:decayed_artifact
#Don't need you anymore, go away
#move_to_pool = scope:task_contract_employer
scope:task_contract_employer = { select_and_move_to_pool_effect = yes }
}
#Back home we go
option = {
name = {
trigger = { exists = current_travel_plan }
text = ep3_contract_event.0040.a_travel
}
name = ep3_contract_event.0040.a
#Haven't paid up?
if = {
limit = { 0040_traveling_towards_treasure_with_domicile_trigger = no }
#Then back home we go
return_home = yes
}
else = {
#Keep doing what you're doing
}
ai_chance = {
base = 10
}
}
#Otherwise possibly stay in place
option = {
name = ep3_contract_event.0040.b
trigger = { 0040_traveling_towards_treasure_with_domicile_trigger = yes }
#Show 'em what happened
show_as_tooltip = {
domicile ?= { move_domicile = root.location }
}
#No point in traveling without the map
current_travel_plan ?= { abort_travel_plan = yes }
ai_chance = {
base = 2
}
}
}
#Employer died or became incapable while in your camp
ep3_contract_event.0041 = {
type = character_event
title = {
first_valid = {
#Dead
triggered_desc = {
trigger = {
scope:task_contract_employer = { is_alive = no }
}
desc = ep3_contract_event.0041.t_dead
}
#Incapable
triggered_desc = {
trigger = {
scope:task_contract_employer = { has_trait = incapable }
}
desc = ep3_contract_event.0041.t_incapable
}
}
}
desc = {
first_valid = {
#Dead
triggered_desc = {
trigger = {
scope:task_contract_employer = { is_alive = no }
}
desc = ep3_contract_event.0041.desc_dead
}
#Incapable
triggered_desc = {
trigger = {
scope:task_contract_employer = { has_trait = incapable }
}
desc = ep3_contract_event.0041.desc_incapable
}
}
desc = ep3_contract_event.0041.desc_outro
}
theme = travel
override_background = { reference = ep3_relaxing_tent }
left_portrait = {
character = root
animation = worry
}
right_portrait = {
character = scope:task_contract_employer
#Dead
triggered_animation = {
trigger = { is_alive = no }
animation = dead
}
#Incapable
animation = shiver
}
immediate = {
#Scopes are carried over from when the event triggers in the invalidation block of the laamp_treasure_map_contract
scope:task_contract_destination = { save_scope_as = travel_destination }
#Wait, what just happened?
scope:task_contract_employer = {
if = {
limit = { is_alive = no }
#Repurposing old loc strings...
save_scope_as = target
custom_tooltip = seize_realm_target_died_tt
}
else = { custom_tooltip = treasure_map_employer_is_incapable.tt }
}
#Remove the treasure map
random_character_artifact = {
limit = { has_variable = 1025_treasure_map }
save_scope_as = 0041_treasure_map
hidden_effect = { destroy_artifact = this }
}
#Very mysterious
custom_tooltip = treasure_map_disappeared.tt
#Mention that it invalidated
custom_tooltip = contract_invalidated_desc
}
#Staying. Here.
option = {
name = ep3_contract_event.0041.a
flavor = {
first_valid = {
triggered_desc = {
trigger = {
scope:task_contract_employer = { is_alive = no }
}
desc = ep3_contract_event.0041.a.flavor_dead
}
triggered_desc = {
trigger = {
scope:task_contract_employer = { has_trait = incapable }
}
desc = ep3_contract_event.0041.a.flavor_incapable
}
}
}
#No point in traveling without the map
return_home = yes
}
#Already paid for my domicile to travel. We're continuing!
option = {
name = travel_danger_events.1011.c
trigger = { 0040_traveling_towards_treasure_with_domicile_trigger = yes }
}
after = { remove_variable ?= ep3_laamp_decision_1000_is_excavating }
}
scripted_trigger 0045_artifact_will_be_reforged_trigger = {
OR = {
#Variables
has_variable = ascalon
has_variable = staff_kakusandha
has_variable = zomorrodnegar
has_variable = aruval
has_variable = sword_cid
has_variable = sword_of_muhammad
has_variable = mmaagha_kamalu
has_variable = sword_attila
has_variable = iron_crown
has_variable = crown_of_justinian
has_variable = angelica_ring
#Types
artifact_type = scepter_pedestal
artifact_type = brooch_pedestal
artifact_type = necklace_pedestal
artifact_type = pedestal
artifact_type = sculpture
artifact_type = goblet
artifact_type = jug
artifact_type = urn
}
}
#You have accepted the Treasure Map contract - the employer tags along - starting event
ep3_contract_event.0043 = {
type = character_event
title = ep3_contract_event.0043.t
desc = ep3_contract_event.0043.desc
theme = travel
left_portrait = {
character = root
triggered_animation = {
trigger = {
has_trait = gallowsbait
has_trait = greedy
}
animation = personality_dishonorable
}
animation = personality_rational
}
right_portrait = {
character = scope:task_contract_employer
animation = ecstasy
}
artifact = {
trigger = { exists = scope:0043_treasure_map }
target = scope:0043_treasure_map
position = lower_center_portrait
}
immediate = {
#Save scopes
random_character_task_contract = {
task_contract_type = laamp_treasure_map_contract
save_scope_as = task_contract
}
scope:task_contract.task_contract_employer = { save_scope_as = task_contract_employer }
show_as_tooltip = { add_courtier = scope:task_contract_employer }
scope:task_contract_employer = {
reverse_add_opinion = {
target = root
modifier = grateful_opinion
opinion = 25
}
}
#This should always exist
random_character_artifact = {
limit = { has_variable = 1025_treasure_map }
save_scope_as = 0043_treasure_map
}
}
#Do it now - open Decisions screen
option = {
name = ep3_contract_event.0043.a
custom_tooltip = ep3_contract_event.0043.a.tt
#Decisions!!
decision:treasure_map_contract_decision = {
open_view_data = {
view = decision_detail
player = root
}
}
}
#Yeah, yeah, I'll get to it...
option = {
name = ep3_contract_event.0043.b
}
}
#Pre-filter because on_arrival_event doesn't respect event triggers :scree:
ep3_contract_event.0044 = {
hidden = yes
immediate = {
if = {
limit = {
has_variable = ep3_laamp_decision_1000_is_excavating
any_character_task_contract = { task_contract_type = laamp_treasure_map_contract }
}
trigger_event = ep3_contract_event.0045
}
else = {
#Nothing. Zilch. Zip. Nada.
}
}
}
#You find the Treasure. Do you keep it?
ep3_contract_event.0045 = {
type = character_event
title = ep3_contract_event.0045.t
desc = {
first_valid = {
#Historical artifact
triggered_desc = {
trigger = { exists = scope:treasure_artifact_historical }
desc = ep3_contract_event.0045.desc_artifact_historical
}
#jewelry
triggered_desc = {
trigger = { exists = scope:treasure_artifact_jewelry }
desc = ep3_contract_event.0045.desc_artifact_jewelry
}
#Great amount of gold
triggered_desc = {
trigger = { exists = scope:treasure_gold_great }
desc = ep3_contract_event.0045.desc_gold_great
}
#Mediocre amount of gold
triggered_desc = {
trigger = { exists = scope:treasure_gold_mediocre }
desc = ep3_contract_event.0045.desc_gold_mediocre
}
#Poor amount of gold
triggered_desc = {
trigger = { exists = scope:treasure_gold_poor }
desc = ep3_contract_event.0045.desc_gold_poor
}
#Nice view - oasis
triggered_desc = {
trigger = {
exists = scope:treasure_riches_in_scenery
exists = scope:is_dry_region
}
desc = ep3_contract_event.0045.desc_riches_in_scenery_dry
}
#Nice view - spring
triggered_desc = {
trigger = {
exists = scope:treasure_riches_in_scenery
NOT = { exists = scope:is_dry_region }
}
desc = ep3_contract_event.0045.desc_riches_in_scenery
}
#Fallback
desc = ep3_contract_event.0045.desc_pillaged
}
}
theme = landless_adventurer
#Literally anything else but that adventurer tent
override_background = { reference = terrain }
#The treasure of beautiful nature
override_background = {
trigger = {
exists = scope:treasure_riches_in_scenery
NOT = { exists = scope:is_dry_region }
}
reference = ce1_legendary_spring
}
#The desert version
override_background = {
trigger = {
exists = scope:treasure_riches_in_scenery
exists = scope:is_dry_region
}
reference = ce1_legendary_oasis
}
#A cave!
override_background = {
trigger = {
OR = {
exists = scope:treasure_gold_great
exists = scope:treasure_gold_mediocre
exists = scope:treasure_gold_poor
}
}
reference = fp3_cave
}
left_portrait = {
character = root
#Nice view
triggered_animation = {
trigger = { exists = scope:treasure_riches_in_scenery }
animation = shock
}
#Poor amount of gold
triggered_animation = {
trigger = {
has_trait = greedy
exists = scope:treasure_gold_poor
}
animation = personality_cynical
}
triggered_animation = {
trigger = { exists = scope:treasure_pillaged }
animation = disapproval
}
triggered_animation = {
trigger = { has_trait = gallowsbait }
animation = personality_dishonorable
}
animation = thinking
}
artifact = {
trigger = { exists = scope:0045_display_artifact }
target = scope:0045_display_artifact
position = lower_center_portrait
}
trigger = {
has_variable = ep3_laamp_decision_1000_is_excavating
any_character_task_contract = { task_contract_type = laamp_treasure_map_contract }
}
immediate = {
#Save scopes
random_character_task_contract = {
task_contract_type = laamp_treasure_map_contract
save_scope_as = task_contract
}
scope:task_contract.task_contract_employer = { save_scope_as = task_contract_employer }
scope:task_contract.var:contract_treasure_location = { save_scope_as = excavation_location }
#This should always exist
random_character_artifact = {
limit = { has_variable = 1025_treasure_map }
save_scope_as = 0045_treasure_map
}
#What did we find?
random_list = {
#Historical artifact
1 = {
trigger = { is_ai = no }
#What artifact?
hidden_effect_new_object = {
generate_historical_artifact_based_on_location_effect = { LOCATION = scope:excavation_location }
scope:newly_created_artifact = { save_scope_as = treasure_artifact_historical }
}
create_character_memory = { type = treasure_map_memory }
scope:new_memory ?= {
set_variable = {
name = treasure_map_historical_artifact
value = scope:treasure_artifact_historical
}
set_variable = {
name = treasure_map_historical_artifact_location
value = scope:excavation_location
}
if = {
limit = {
exists = var:treasure_map_historical_artifact
exists = var:treasure_map_historical_artifact_location
}
#To prevent 'unused except in loc' errors :catto:
}
}
#Note that it has a historical artifact, for the Contract Success Reward
scope:task_contract = {
set_variable = {
name = has_unique_historical_artifact
value = scope:treasure_artifact_historical
}
}
}
#Jewelry
5 = {
#Generate jewelry
hidden_effect_new_object = {
random_pool_character = {
province = root.location
limit = { is_available_adult = yes }
save_scope_as = 0045_smith
}
if = {
limit = {
NOT = { exists = scope:0045_smith }
}
create_character = {
template = generic_peasant_character
location = root.location
dynasty = none
culture = root.location.culture
faith = root.location.faith
save_scope_as = 0045_smith
}
}
random_list = {
10 = { set_artifact_rarity_illustrious = yes }
20 = { set_artifact_rarity_famed = yes }
40 = { set_artifact_rarity_masterwork = yes }
}
random_list = {
50 = {
create_artifact_brooch_effect = {
OWNER = scope:0045_smith
SMITH = scope:0045_smith
}
}
50 = {
create_artifact_ring_effect = {
OWNER = scope:0045_smith
SMITH = scope:0045_smith
}
}
50 = {
create_artifact_necklace_effect = {
OWNER = scope:0045_smith
SMITH = scope:0045_smith
}
}
}
#Finalization
scope:newly_created_artifact ?= {
add_scaled_artifact_modifier_prestige_effect = yes
#Don't need no notification about this
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 2
}
save_scope_as = treasure_artifact_jewelry
set_owner = root
}
}
#Note that it is jewelry, for the Contract Success Reward
scope:task_contract = {
set_variable = {
name = has_jewelry_artifact
value = scope:treasure_artifact_jewelry
}
}
}
#Great amount of gold
20 = {
save_scope_as = treasure_gold_great
save_scope_value_as = {
name = 0045_gold_gained
value = {
value = major_gold_laamps_value
multiply = 2
}
}
#Note that it is Great, for the Contract Success Reward
scope:task_contract = {
set_variable = {
name = treasure_gold_great
value = scope:0045_gold_gained
}
}
}
#Mediocre amount of gold
20 = {
save_scope_as = treasure_gold_mediocre
save_scope_value_as = {
name = 0045_gold_gained
value = major_gold_laamps_value
}
#Note that it is Mediocre, for the Contract Success Reward
scope:task_contract = {
set_variable = {
name = treasure_gold_mediocre
value = scope:0045_gold_gained
}
}
}
#Poor amount of gold
30 = {
save_scope_as = treasure_gold_poor
save_scope_value_as = {
name = 0045_gold_gained
value = {
value = medium_gold_laamps_value
divide = 2
}
}
#Note that it is Poor, for the Contract Success Reward
scope:task_contract = {
set_variable = {
name = treasure_gold_poor
value = scope:0045_gold_gained
}
}
}
#Nice view
30 = {
trigger = {
NOT = { has_character_modifier = divine_springs_modifier }
}
#Pretty divine, innit
if = {
limit = {
has_trait = pilgrim
has_trait_xp = {
trait = pilgrim
value < 100
}
}
add_trait_xp = {
trait = pilgrim
value = {
integer_range = {
min = small_lifestyle_random_xp_mid
max = small_lifestyle_random_xp_high
}
}
}
}
else = {
stress_impact = {
base = medium_stress_impact_loss
zealous = minor_stress_impact_loss
}
}
save_scope_as = treasure_riches_in_scenery
create_character_memory = { type = treasure_map_memory }
scope:new_memory ?= {
set_variable = {
name = treasure_map_divine_scenery
value = scope:excavation_location
}
if = {
limit = { exists = var:treasure_map_divine_scenery }
#To prevent 'unused except in loc' errors :catto:
}
}
#Note that it is scenic, for the Contract Success Reward
scope:task_contract = {
set_variable = {
name = has_scenic_riches
value = flag:yes
}
}
}
#Someone beat you to it
20 = {
save_scope_as = treasure_pillaged
save_scope_value_as = {
name = 0045_gold_gained
value = minor_gold_laamps_value
}
#Note that it is Pillaged, for the Contract Success Reward
scope:task_contract = {
set_variable = {
name = treasure_pillaged
value = scope:0045_gold_gained
}
}
}
}
#Oasis, not spring
if = {
limit = {
location = {
OR = {
terrain = desert
terrain = desert_mountains
terrain = drylands
}
}
}
save_scope_as = is_dry_region
}
#Display the artifact
scope:treasure_artifact_historical ?= { save_scope_as = 0045_display_artifact }
scope:treasure_artifact_jewelry ?= { save_scope_as = 0045_display_artifact }
}
#Let Employer know
option = {
name = {
text = {
first_valid = {
#Historical Artifact
triggered_desc = {
trigger = { exists = scope:treasure_artifact_historical }
desc = ep3_contract_event.0045.a_artifact_historical
}
#Alright
triggered_desc = {
trigger = {
OR = {
exists = scope:treasure_artifact_jewelry
exists = scope:treasure_gold_great
exists = scope:treasure_gold_mediocre
exists = scope:treasure_riches_in_scenery
}
}
desc = ep3_contract_event.0045.a
}
#Meh
triggered_desc = {
trigger = {
OR = {
exists = scope:treasure_gold_poor
exists = scope:treasure_pillaged
}
}
desc = ep3_contract_event.0045.a_pillaged
}
}
}
}
#We don't really care if the map breaks at this point
scope:task_contract = { set_variable = 0045_used_map }
#Trigger the concluding event
trigger_event = ep3_contract_event.0050
#You're doing the right thing
stress_impact = {
base = minor_stress_impact_loss
honest = medium_stress_impact_loss
greedy = minor_stress_impact_gain
}
}
#Keep it for yourself
option = {
name = {
text = {
first_valid = {
#Historical Artifact
triggered_desc = {
trigger = { exists = scope:treasure_artifact_historical }
desc = ep3_contract_event.0045.b_artifact_historical
}
#Alright
triggered_desc = {
trigger = {
OR = {
exists = scope:treasure_artifact_jewelry
exists = scope:treasure_gold_great
exists = scope:treasure_gold_mediocre
}
}
desc = ep3_contract_event.0045.b
}
#Meh
triggered_desc = {
trigger = {
OR = {
exists = scope:treasure_gold_poor
exists = scope:treasure_pillaged
}
}
desc = ep3_contract_event.0045.b_pillaged
}
}
}
}
#... just... doesn't make sense
trigger = {
NOT = { exists = scope:treasure_riches_in_scenery }
}
flavor = {
first_valid = {
triggered_desc = {
trigger = {
scope:treasure_artifact_historical ?= { 0045_artifact_will_be_reforged_trigger = yes }
}
desc = ep3_contract_event.0045.b.flavor_reforged
}
desc = ep3_contract_event.0045.b.flavor
}
}
#Historical artifact: Change it to something useful.
if = {
limit = { exists = scope:treasure_artifact_historical }
scope:treasure_artifact_historical = {
if = {
limit = {
OR = {
has_variable = ascalon
has_variable = staff_kakusandha
has_variable = zomorrodnegar
has_variable = aruval
has_variable = sword_cid
has_variable = sword_of_muhammad
has_variable = mmaagha_kamalu
has_variable = sword_attila
artifact_type = scepter_pedestal
}
}
reforge_artifact = { type = regalia }
}
else_if = {
limit = {
OR = {
has_variable = iron_crown
has_variable = crown_of_justinian
}
}
reforge_artifact = { type = helmet }
}
else_if = {
limit = { has_variable = angelica_ring }
reforge_artifact = { type = ring }
}
else_if = {
limit = { artifact_type = brooch_pedestal }
reforge_artifact = { type = brooch }
}
else_if = {
limit = { artifact_type = necklace_pedestal }
reforge_artifact = { type = necklace }
}
else_if = {
limit = {
OR = {
artifact_type = pedestal
artifact_type = sculpture
artifact_type = goblet
artifact_type = jug
artifact_type = urn
}
}
reforge_artifact = { type = miscellaneous }
}
}
show_as_tooltip = {
scope:treasure_artifact_historical = { set_owner = root }
}
}
else_if = {
limit = { exists = scope:treasure_artifact_jewelry }
show_as_tooltip = {
scope:treasure_artifact_jewelry = { set_owner = root }
}
}
else = { add_short_term_gold = scope:0045_gold_gained }
#Get rid of the contract
scope:task_contract = { complete_task_contract = failure_standard }
#Off ye go
remove_courtier_or_guest = scope:task_contract_employer
#You stole a historical treasure
if = {
limit = { exists = scope:treasure_artifact_historical }
#Shame on you
laamp_rewards_apply_criminal_xp_effect = {
TRACK = thief
XP_MIN = gallowsbait_xp_major_gain
XP_MAX = gallowsbait_xp_massive_gain
}
stress_impact = {
base = major_stress_impact_gain
honest = minor_stress_impact_gain
greedy = minor_stress_impact_loss
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
}
}
#You stole something significant
else_if = {
limit = {
OR = {
exists = scope:treasure_artifact_jewelry
exists = scope:treasure_gold_great
}
}
#Shame on you
laamp_rewards_apply_criminal_xp_effect = {
TRACK = thief
XP_MIN = gallowsbait_xp_minor_gain
XP_MAX = gallowsbait_xp_major_gain
}
stress_impact = {
base = medium_stress_impact_gain
honest = minor_stress_impact_gain
greedy = minor_stress_impact_loss
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
}
}
#Or not
else = {
#Ehh petty theft
laamp_rewards_apply_criminal_xp_effect = {
TRACK = thief
XP_MIN = gallowsbait_xp_minor_gain
XP_MAX = gallowsbait_xp_minor_gain
}
stress_impact = {
base = minor_stress_impact_gain
honest = minor_stress_impact_gain
greedy = minor_stress_impact_loss
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
}
}
ai_chance = {
base = 0
}
}
}
#Back at the employer. Fork over the treasure
ep3_contract_event.0050 = {
type = character_event
title = ep3_contract_event.0050.t
desc = {
first_valid = {
#Historical artifact
triggered_desc = {
trigger = { exists = scope:treasure_artifact_historical }
desc = ep3_contract_event.0050.desc_artifact_historical
}
#jewelry artifact
triggered_desc = {
trigger = { exists = scope:treasure_artifact_jewelry }
desc = ep3_contract_event.0050.desc_artifact_jewelry
}
#Gold
triggered_desc = {
trigger = {
OR = {
exists = scope:treasure_gold_great
exists = scope:treasure_gold_mediocre
exists = scope:treasure_gold_poor
}
}
desc = ep3_contract_event.0050.desc_gold
}
#Scenic
triggered_desc = {
trigger = { exists = scope:treasure_riches_in_scenery }
desc = ep3_contract_event.0050.desc_scenic
}
#Pillaged
desc = ep3_contract_event.0050.desc_pillaged
}
}
theme = inspiration_complete
override_background = { reference = ep3_relaxing_tent }
left_portrait = {
character = root
triggered_animation = {
trigger = { has_trait = greedy }
animation = personality_cynical
}
animation = flirtation
}
right_portrait = {
character = scope:task_contract_employer
#Historical artifact
triggered_animation = {
trigger = { exists = scope:treasure_artifact_historical }
animation = disbelief
}
#Scenic
triggered_animation = {
trigger = { exists = scope:treasure_riches_in_scenery }
animation = wedding_happy_cry
}
#Pillaged
triggered_animation = {
trigger = { exists = scope:treasure_pillaged }
animation = sadness
}
animation = happiness
}
artifact = {
trigger = { exists = scope:0045_display_artifact }
target = scope:0045_display_artifact
position = lower_center_portrait
}
immediate = {
}
#Fork it over
option = {
name = ep3_contract_event.0050.a
scope:task_contract = { complete_task_contract = success_standard }
if = {
limit = { exists = scope:treasure_riches_in_scenery }
#Perma modifier
add_character_modifier = { modifier = divine_springs_modifier }
}
#Ya did the right thing, son
stress_impact = { honest = minor_stress_impact_loss }
ai_chance = {
base = 10
}
}
after = {
#Off ye go
remove_courtier_or_guest = scope:task_contract_employer
}
}
#To remove the variable for those who go into the travel planner but then decide not to travel to the Excavation Site
ep3_contract_event.0055 = {
hidden = yes
trigger = { has_variable = ep3_laamp_decision_1000_is_planning_excavation_trip }
immediate = {
remove_variable ?= ep3_laamp_decision_1000_is_planning_excavation_trip
#Is it our active contract?
random_character_task_contract = {
limit = { has_variable = contract_treasure_location }
save_scope_as = task_contract
}
#Are we going to the destination?
if = {
limit = {
any_character_active_contract = { task_contract_type = laamp_treasure_map_contract }
current_travel_plan ?= {
any_future_path_location = { this = scope:task_contract.var:contract_treasure_location }
}
}
set_variable = ep3_laamp_decision_1000_is_excavating
}
}
}
#Help Claimant start a war contract
ep3_contract_event.0060 = {
type = character_event
title = ep3_contract_event.0060.t
desc = ep3_contract_event.0060.desc
theme = war
#task_contract_taker, you
left_portrait = {
character = root
animation = personality_bold
}
#commander, an envoy from employer
right_portrait = {
character = scope:commander
animation = storyteller
}
#character giving you the contract
lower_right_portrait = {
character = scope:task_contract_employer
}
#character you have to fight in a war
lower_left_portrait = {
character = scope:task_contract_target
}
immediate = {
set_contract_scopes_effect = yes
scope:task_contract_employer = {
random_knight = {
save_scope_as = commander
}
}
}
#take the contract and start the claim war
option = {
name = ep3_contract_event.0060.a
scope:task_contract_employer = {
start_war = {
cb = claim_cb
target = scope:task_contract_target
claimant = scope:task_contract_employer
target_title = scope:task_contract.var:task_contract_title
}
#needs a custom tooltip as the war doesn't exist yet
custom_tooltip = ep3_contract_event.0060.join_war
random_character_war = {
limit = {
using_cb = claim_cb
primary_attacker = scope:task_contract_employer
primary_defender = scope:task_contract_target
}
save_scope_as = task_contract_war
}
}
scope:task_contract = {
set_variable = {
name = task_contract_war
value = scope:task_contract_war
}
}
scope:task_contract_war ?= {
hidden_effect = { set_called_to = root }
add_attacker = root
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
#Join Faction - intro
ep3_contract_event.0070 = {
type = character_event
title = ep3_contract_event.0070.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:task_contract_faction = {
faction_is_type = nation_fracturing_faction
}
}
desc = ep3_contract_event.0070.desc_nation_fracturing_faction
}
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:task_contract_faction = {
faction_is_type = liberty_faction
}
}
desc = ep3_contract_event.0070.desc_liberty_faction
}
triggered_desc = {
trigger = {
scope:task_contract_faction = {
faction_is_type = independence_faction
}
}
desc = ep3_contract_event.0070.desc_independence_faction
}
triggered_desc = {
trigger = {
scope:task_contract_faction = {
faction_is_type = claimant_faction
}
}
desc = ep3_contract_event.0070.desc_claimant_faction
}
desc = ep3_contract_event.0070.desc_fallback_faction
}
first_valid = {
triggered_desc = {
trigger = {
scope:task_contract_employer = {
vassal_contract_has_flag = obligation_high_taxes
}
}
desc = ep3_contract_event.0070.desc_liege_taxes
}
triggered_desc = {
trigger = {
scope:task_contract_employer = {
vassal_contract_has_flag = obligation_high_levies
}
}
desc = ep3_contract_event.0070.desc_liege_levies
}
triggered_desc = {
trigger = {
scope:task_contract_target.culture != scope:task_contract_employer.culture
}
desc = ep3_contract_event.0070.desc_liege_culture
}
triggered_desc = {
trigger = {
scope:task_contract_target.faith != scope:task_contract_employer.faith
}
desc = ep3_contract_event.0070.desc_liege_faith
}
desc = ep3_contract_event.0070.desc_liege_fallback
}
}
}
desc = ep3_contract_event.0070.desc_outro
}
theme = war
#task_contract_taker, you
left_portrait = {
character = root
animation = inspect_weapon
}
#commander, an envoy from employer
right_portrait = {
character = scope:commander
animation = storyteller
}
#character giving you the contract
lower_right_portrait = {
character = scope:task_contract_employer
}
#character you have to fight in a war
lower_left_portrait = {
character = scope:task_contract_target
}
immediate = {
set_contract_scopes_effect = yes
scope:task_contract_employer = {
random_knight = {
save_scope_as = commander
}
}
scope:task_contract_target = {
random_held_title = {
title_tier < kingdom
limit = {
trigger_if = {
limit = {
root.prestige_level > 3
}
tier >= tier_duchy
}
tier >= tier_county
this != scope:task_contract_target.primary_title
this != scope:task_contract_target.primary_title.title_capital_county
}
weight = {
base = 1
modifier = {
add = 100
root = {
has_claim_on = prev
}
}
}
save_scope_as = promised_title
}
}
scope:task_contract.var:task_contract_faction = {
save_scope_as = task_contract_faction
}
}
#take the contract and start the claim war, if they promise you land afterwards
option = {
name = ep3_contract_event.0070.a
trigger = {
custom_description = {
text = adventurer_not_famous_trigger_tt
value = 3
prestige_level >= 3
}
exists = scope:promised_title
}
show_as_unavailable = {
exists = scope:promised_title
}
join_faction_forced = {
faction = scope:task_contract.var:task_contract_faction
forced_by = scope:task_contract.task_contract_employer
years = 1
}
# Give me land
scope:task_contract = {
set_variable = {
name = task_contract_title
value = scope:promised_title
}
}
show_as_tooltip = {
custom_tooltip = task_contract_tab_success
create_title_and_vassal_change = {
type = granted
save_scope_as = title_change_vassal
}
scope:promised_title = {
change_title_holder = {
holder = scope:task_contract.task_contract_taker
change = scope:title_change_vassal
take_baronies = no
}
}
resolve_title_and_vassal_change = scope:title_change_vassal
}
open_view = {
view = factions_window
player = root
}
#AI should always try to complete the contract
ai_chance = {
base = 20
modifier = {
add = 1000
has_claim_on = scope:promised_title
}
modifier = {
add = 20
has_realm_law = camp_purpose_legitimists
}
}
}
#take the contract and start the claim war
option = {
name = ep3_contract_event.0070.b
join_faction_forced = {
faction = scope:task_contract.var:task_contract_faction
forced_by = scope:task_contract.task_contract_employer
years = 1
}
open_view = {
view = factions_window
player = root
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
set_variable = {
name = suppress_invalidation_event
value = yes
}
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
### Help out in a council task contract
scripted_effect set_council_scopes_effect = {
scope:task_contract = {
var:task_contract_councillor = {
save_scope_as = task_contract_councillor
}
var:task_contract_councillor_liege = {
save_scope_as = task_contract_councillor_liege
}
}
}
## Court Chaplain
# Fabricate claim - intro
ep3_contract_event.0080 = {
type = character_event
title = ep3_contract_event.0080.t
desc = ep3_contract_event.0080.desc
theme = faith
left_portrait = {
character = root
animation = interested_left
}
right_portrait = {
character = scope:task_contract_councillor
animation = storyteller
}
lower_right_portrait = {
character = scope:task_contract_councillor_liege
}
trigger = {
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
}
#Open intetactin to fabricate claim
option = {
name = ep3_contract_event.0080.a
custom_tooltip = ep3_contract_event.0080.open_start_generate_claim_interaction
open_interaction_window = {
interaction = start_generate_claim_interaction
actor = root
recipient = scope:task_contract_target
}
if = {
limit = {
is_ai = yes
}
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = generate_claim
TARGET_TYPE = target_title
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_scribe
AGENT_2 = agent_diplomat
# Speed.
AGENT_3 = agent_justiciar
AGENT_4 = agent_socialite
# Secrecy.
AGENT_5 = agent_decoy
}
}
ai_chance = {
base = 100
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
# Fight Faith conversion - intro
ep3_contract_event.0082 = {
type = character_event
title = ep3_contract_event.0082.t
desc = ep3_contract_event.0082.desc
theme = faith
left_portrait = {
character = root
animation = menacing
}
lower_left_portrait = {
character = scope:task_contract_councillor_liege
}
lower_right_portrait = {
character = scope:task_contract_employer
}
trigger = {
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
}
#help at the location
option = {
name = ep3_contract_event.0082.a
custom_tooltip = ep3_contract_event.0082.to_destination
if = {
limit = {
location = scope:task_contract_destination
}
trigger_event = ep3_contract_event.0083
}
else = {
start_travel_plan = {
destination = scope:task_contract_destination
on_arrival_destinations = all
on_arrival_event = ep3_contract_event.0083
}
}
ai_chance = {
base = 100
}
}
#talk to the liege
option = {
name = ep3_contract_event.0082.b
custom_tooltip = ep3_contract_event.0082.to_liege
if = {
limit = {
location = scope:task_contract_councillor_liege.capital_province
}
trigger_event = ep3_contract_event.0084
}
else = {
start_travel_plan = {
destination = scope:task_contract_councillor_liege.capital_province
on_arrival_destinations = all
on_arrival_event = ep3_contract_event.0084
}
}
ai_chance = {
base = 100
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
scripted_effect protect_county_from_conversion_effect = {
scope:task_contract_councillor_liege = {
set_variable = {
name = hold_court_8120_religion_block
value = scope:task_contract_destination.faith
years = 15
}
add_character_modifier = {
modifier = hold_court_8120_tolerance_modifier
years = 10
}
}
scope:task_contract_destination.county = {
add_county_modifier = {
modifier = hold_court_8120_stopped_modifier
years = 15
}
}
scope:task_contract_councillor = {
start_default_task = yes
}
}
# Fight Faith conversion - deal with it at location
ep3_contract_event.0083 = {
type = character_event
title = ep3_contract_event.0083.t
desc = ep3_contract_event.0083.desc
theme = faith
override_background = {
reference = temple_scope
}
override_effect_2d = {
reference = smoke
}
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:task_contract_employer
animation = rage
}
lower_left_portrait = {
character = scope:task_contract_councillor
}
lower_right_portrait = {
character = scope:task_contract_councillor_liege
}
trigger = {
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
}
#capture the chaplain
option = {
name = ep3_contract_event.0083.a
duel = {
skill = intrigue
target = scope:task_contract_councillor
25 = {
desc = ep3_contract_event.0083.a_win
send_interface_toast = {
title = ep3_contract_event.0083.a_win
left_icon = root
right_icon = scope:task_contract_employer
prisoner_of_war_capture_effect = {
TARGET = scope:task_contract_councillor
IMPRISONER = root
}
scope:task_contract_councillor_liege = {
add_opinion = {
modifier = fp3_wrongful_imprisonment_opinion
opinion = -30
target = root
}
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
}
25 = {
desc = ep3_contract_event.0083.a_lose
send_interface_toast = {
title = ep3_contract_event.0083.a_lose
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract = {
complete_task_contract = failure_standard
}
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
}
}
stress_impact = {
callous = minor_stress_impact_loss
just = minor_stress_impact_loss
vengeful = minor_stress_impact_loss
lazy = minor_stress_impact_gain
calm = minor_stress_impact_gain
}
ai_chance = {
base = 100
}
}
#force it through
option = {
name = ep3_contract_event.0083.b
duel = {
skills = { martial prowess }
target = scope:task_contract_councillor
25 = {
desc = ep3_contract_event.0083.b_win
send_interface_toast = {
title = ep3_contract_event.0083.b_win
left_icon = root
right_icon = scope:task_contract_employer
protect_county_from_conversion_effect = yes
scope:task_contract_councillor_liege = {
add_opinion = {
modifier = fp2_questioned_my_faith_opinion
target = root
}
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
}
25 = {
desc = ep3_contract_event.0083.b_lose
send_interface_toast = {
title = ep3_contract_event.0083.b_lose
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract = {
complete_task_contract = failure_standard
}
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
}
}
stress_impact = {
wrathful = minor_stress_impact_loss
craven = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
OR = {
highest_skill = martial
prowess > scope:task_contract_councillor.prowess
}
}
}
}
#talk it through
option = {
name = ep3_contract_event.0083.c
duel = {
skills = { diplomacy learning }
target = scope:task_contract_councillor
25 = {
desc = ep3_contract_event.0083.c_win
send_interface_toast = {
title = ep3_contract_event.0083.c_win
left_icon = root
right_icon = scope:task_contract_employer
protect_county_from_conversion_effect = yes
scope:task_contract_councillor_liege = {
add_opinion = {
modifier = fp2_questioned_my_faith_opinion
target = root
}
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
}
25 = {
desc = ep3_contract_event.0083.c_lose
send_interface_toast = {
title = ep3_contract_event.0083.c_lose
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract = {
complete_task_contract = failure_standard
}
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
}
}
stress_impact = {
gregarious = minor_stress_impact_loss
zealous = minor_stress_impact_loss
shy = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
OR = {
highest_skill = diplomacy
highest_skill = learning
}
}
}
}
#come with me
option = {
name = ep3_contract_event.0083.d
scope:task_contract = {
complete_task_contract = failure_standard
}
if = {
limit = {
scope:task_contract_employer = {
is_landed = yes
}
}
random_list = {
110 = {
modifier = {
add = scope:task_contract_employer.ai_rationality
}
hidden_effect = {
scope:task_contract_employer = {
depose = yes
if = {
limit = {
any_traveling_family_member = { }
}
every_traveling_family_member = {
save_temporary_scope_as = family_to_move
root = { add_courtier = scope:family_to_move }
}
}
}
}
add_courtier = scope:task_contract_employer
reverse_add_opinion = {
modifier = helped_me_in_time_of_need
target = scope:task_contract_employer
}
}
110 = {
modifier = {
add = scope:task_contract_employer.ai_honor
}
reverse_add_opinion = {
modifier = mocked_me_in_time_of_need
target = scope:task_contract_employer
}
}
}
}
else = {
add_courtier = scope:task_contract_employer
reverse_add_opinion = {
modifier = helped_me_in_time_of_need
target = scope:task_contract_employer
}
hidden_effect = {
if = {
limit = {
any_traveling_family_member = { }
}
every_traveling_family_member = {
save_temporary_scope_as = family_to_move
root = { add_courtier = scope:family_to_move }
}
}
}
}
stress_impact = {
compassionate = minor_stress_impact_loss
just = minor_stress_impact_gain
zealous = minor_stress_impact_gain
}
ai_chance = {
base = 0
modifier = {
add = 10
scope:task_contract_employer = {
is_landed = no
}
}
}
}
}
# Fight Faith conversion - deal with it at liege
ep3_contract_event.0084 = {
type = character_event
title = ep3_contract_event.0084.t
desc = ep3_contract_event.0084.desc
theme = faith
override_background = {
reference = throne_room
}
left_portrait = {
character = root
animation = debating
}
right_portrait = {
character = scope:task_contract_councillor_liege
animation = thinking
}
lower_left_portrait = {
character = scope:task_contract_employer
}
lower_right_portrait = {
character = scope:task_contract_councillor
}
trigger = {
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
}
#suggest new management
option = {
name = ep3_contract_event.0084.a
duel = {
skills = { intrigue prowess }
target = scope:task_contract_target
0 = {
desc = ep3_contract_event.0084.a_win_rights
compare_modifier = {
value = scope:duel_value
multiplier = 1
}
modifier = {
factor = root.prestige_level
}
send_interface_toast = {
title = ep3_contract_event.0084.a_win_rights
left_icon = root
right_icon = scope:task_contract_employer
create_title_and_vassal_change = {
type = granted
save_scope_as = title_change_vassal
}
scope:task_contract.var:task_contract_destination.county = {
change_title_holder = {
holder = scope:task_contract_employer
change = scope:title_change_vassal
take_baronies = no
}
}
resolve_title_and_vassal_change = scope:title_change_vassal
scope:task_contract_employer = {
custom_tooltip = ep3_contract_event.0084.a_win_rights.tt
if = {
limit = {
is_vassal_of = scope:task_contract_target
}
vassal_contract_set_obligation_level = {
type = religious_rights
level = 1
}
}
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
}
25 = {
desc = ep3_contract_event.0084.a_win
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
send_interface_toast = {
title = ep3_contract_event.0084.a_win
left_icon = root
right_icon = scope:task_contract_employer
create_title_and_vassal_change = {
type = granted
save_scope_as = title_change_vassal
}
scope:task_contract.var:task_contract_destination.county = {
change_title_holder = {
holder = scope:task_contract_employer
change = scope:title_change_vassal
take_baronies = no
}
}
resolve_title_and_vassal_change = scope:title_change_vassal
}
scope:task_contract = {
complete_task_contract = success_standard
}
}
25 = {
desc = ep3_contract_event.0084.a_lost
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
send_interface_toast = {
title = ep3_contract_event.0084.a_lost
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract = {
complete_task_contract = failure_standard
}
scope:task_contract_councillor_liege = {
add_opinion = {
modifier = fp2_questioned_my_faith_opinion
opinion = -30
target = root
}
}
}
}
}
stress_impact = {
ambitious = minor_stress_impact_loss
impatient = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
craven = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
OR = {
highest_skill = intrigue
prowess > scope:task_contract_target.prowess
}
}
}
}
#talk it through
option = {
name = ep3_contract_event.0084.b
duel = {
skills = { diplomacy learning }
target = scope:task_contract_target
25 = {
desc = ep3_contract_event.0084.b_win
send_interface_toast = {
title = ep3_contract_event.0084.b_win
left_icon = root
right_icon = scope:task_contract_employer
protect_county_from_conversion_effect = yes
}
scope:task_contract = {
complete_task_contract = success_standard
}
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
}
25 = {
desc = ep3_contract_event.0084.b_lost
scope:task_contract = {
complete_task_contract = failure_standard
}
send_interface_toast = {
title = ep3_contract_event.0084.b_lost
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract_councillor_liege = {
add_opinion = {
modifier = fp2_questioned_my_faith_opinion
opinion = -30
target = root
}
}
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
}
}
stress_impact = {
gregarious = minor_stress_impact_loss
zealous = minor_stress_impact_loss
shy = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
OR = {
highest_skill = diplomacy
highest_skill = learning
}
}
}
}
}
# Help Faith conversion - intro
ep3_contract_event.0085 = {
type = character_event
title = ep3_contract_event.0085.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:task_contract_councillor = {
has_personality_malicious_trigger = yes
}
}
desc = ep3_contract_event.0085.desc_bad
}
desc = ep3_contract_event.0085.desc_good
}
}
theme = faith
left_portrait = {
character = root
triggered_animation = {
trigger = {
scope:task_contract_councillor = {
has_personality_malicious_trigger = yes
}
}
animation = stunned
}
animation = prayer
}
right_portrait = {
character = scope:task_contract_councillor
animation = storyteller
}
lower_right_portrait = {
character = scope:task_contract_councillor_liege
}
trigger = {
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
}
#you condemn the evil chaplain methods
option = {
name = ep3_contract_event.0085.a
trigger = {
scope:task_contract_councillor = {
has_personality_malicious_trigger = yes
}
}
duel = {
skills = { prowess diplomacy }
target = scope:task_contract_councillor
0 = {
desc = ep3_contract_event.0085.a_win_critical
compare_modifier = {
value = scope:duel_value
multiplier = 1
}
modifier = {
factor = root.prestige_level
}
send_interface_toast = {
title = ep3_contract_event.0085.a_win_critical
left_icon = root
right_icon = scope:task_contract_employer
prisoner_of_war_capture_effect = {
TARGET = scope:task_contract_councillor
IMPRISONER = root
}
scope:task_contract_councillor_liege = {
add_opinion = {
modifier = fp3_wrongful_imprisonment_opinion
opinion = -30
target = root
}
}
}
scope:task_contract = {
complete_task_contract = failure_standard
}
}
25 = {
desc = ep3_contract_event.0085.a_win
send_interface_toast = {
title = ep3_contract_event.0085.a_win
left_icon = root
right_icon = scope:task_contract_employer
protect_county_from_conversion_effect = yes
scope:task_contract = {
complete_task_contract = failure_standard
}
scope:task_contract_councillor_liege = {
add_opinion = {
modifier = fp3_wrongful_imprisonment_opinion
opinion = -30
target = root
}
}
}
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
}
25 = {
desc = ep3_contract_event.0085.a_lose
send_interface_toast = {
title = ep3_contract_event.0085.a_lose
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract = {
complete_task_contract = failure_standard
}
scope:task_contract_councillor_liege = {
add_opinion = {
modifier = fp3_wrongful_imprisonment_opinion
opinion = -30
target = root
}
}
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
}
}
stress_impact = {
honest = minor_stress_impact_loss
zealous = minor_stress_impact_loss
compassionate = minor_stress_impact_loss
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
OR = {
highest_skill = diplomacy
prowess > scope:task_contract_councillor.prowess
}
}
}
}
#you agree with the evil chaplain methods
option = {
name = ep3_contract_event.0085.b
trigger = {
scope:task_contract_councillor = {
has_personality_malicious_trigger = yes
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
stress_impact = {
honest = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
sadistic = major_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 100
OR = {
highest_skill = diplomacy
prowess > scope:task_contract_councillor.prowess
}
}
}
}
#you tell a story about the good gods
option = {
name = ep3_contract_event.0085.c
trigger = {
scope:task_contract_councillor = {
has_personality_malicious_trigger = no
}
}
duel = {
skill = learning
value = high_skill_rating
25 = {
desc = ep3_contract_event.0085.c_win
send_interface_toast = {
title = ep3_contract_event.0085.c_win
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract = {
complete_task_contract = success_standard
}
}
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
}
25 = {
desc = ep3_contract_event.0085.c_lose
send_interface_toast = {
title = ep3_contract_event.0085.a_lose
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract = {
complete_task_contract = failure_standard
}
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
}
}
stress_impact = {
gregarious = minor_stress_impact_loss
zealous = minor_stress_impact_loss
compassionate = minor_stress_impact_loss
shy = minor_stress_impact_gain
cynical = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
highest_skill = learning
}
}
}
#you tell a story about the evil gods
option = {
name = ep3_contract_event.0085.d
trigger = {
scope:task_contract_councillor = {
has_personality_malicious_trigger = no
}
}
duel = {
skill = intrigue
value = high_skill_rating
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
desc = ep3_contract_event.0085.d_win
send_interface_toast = {
title = ep3_contract_event.0085.d_win
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract = {
complete_task_contract = success_standard
}
}
}
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
desc = ep3_contract_event.0085.d_lose
send_interface_toast = {
title = ep3_contract_event.0085.d_lose
left_icon = root
right_icon = scope:task_contract_employer
scope:task_contract = {
complete_task_contract = failure_standard
}
}
}
}
stress_impact = {
gregarious = minor_stress_impact_loss
zealous = minor_stress_impact_gain
shy = minor_stress_impact_gain
cynical = minor_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 100
highest_skill = intrigue
}
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
## Marshal
# train commanders - intro
ep3_contract_event.0090 = {
type = character_event
title = ep3_contract_event.0090.t
desc = ep3_contract_event.0090.desc
theme = landless_adventurer
#task_contract_taker, you
left_portrait = {
character = root
animation = inspect_weapon
}
#marshal
right_portrait = {
character = scope:task_contract_councillor
animation = storyteller
}
#marshal's liege
lower_right_portrait = {
character = scope:task_contract_councillor_liege
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
}
option = {
name = ep3_contract_event.0090.a
custom_tooltip = ep3_contract_event.0090.opens_task_contract_train_knight_interaction
open_interaction_window = {
interaction = task_contract_train_knight_interaction
actor = root
recipient = scope:task_contract_employer
}
if = {
limit = {
is_ai = yes
}
run_interaction = {
interaction = task_contract_train_knight_interaction
actor = root
recipient = scope:task_contract_employer
execute_threshold = decline
}
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
scripted_effect count_knights_trained_effect = {
scope:task_contract = {
if = {
limit = {
$RESULT$ = yes
}
change_variable = {
name = knights_trained
add = 1
}
if = {
limit = {
NOT = {
scope:task_contract = {
has_variable_list = knights_to_train
any_in_list = {
variable = knights_to_train
is_alive = yes
is_knight = yes
}
}
}
}
scope:task_contract = {
if = {
limit = {
scope:task_contract.var:knights_trained >= scope:task_contract.var:knights_limit
}
complete_task_contract = success_critical
}
else_if = {
limit = {
scope:task_contract.var:knights_trained >= scope:task_contract.var:knights_failed
}
complete_task_contract = success_standard
}
else = {
complete_task_contract = failure_standard
}
}
}
}
if = {
limit = {
$RESULT$ = no
}
change_variable = {
name = knights_failed
add = 1
}
if = {
limit = {
NOT = {
scope:task_contract = {
has_variable_list = knights_to_train
any_in_list = {
variable = knights_to_train
is_alive = yes
is_knight = yes
}
}
}
}
scope:task_contract = {
if = {
limit = {
NOT = { scope:task_contract.var:knights_trained = 0 }
scope:task_contract.var:knights_trained >= scope:task_contract.var:knights_failed
}
complete_task_contract = success_standard
}
else = {
complete_task_contract = failure_standard
}
}
}
}
}
}
# train commanders - interaction event
ep3_contract_event.0091 = {
type = character_event
title = ep3_contract_event.0091.t
desc = {
desc = ep3_contract_event.0091.desc
first_valid = {
triggered_desc = {
trigger = { scope:helper = root }
desc = {
desc = ep3_contract_event.0091.desc_me
first_valid = {
triggered_desc = {
trigger = {root.prowess < high_skill_rating }
desc = ep3_contract_event.0091.desc_me_high_prowess
}
desc = ep3_contract_event.0091.desc_me_low_prowess
}
}
}
desc = {
desc = ep3_contract_event.0091.desc_helper
first_valid = {
triggered_desc = {
trigger = {scope:helper.prowess < high_skill_rating }
desc = ep3_contract_event.0091.desc_high_prowess
}
desc = ep3_contract_event.0091.desc_low_prowess
}
}
}
desc = ep3_contract_event.0091.desc_outro
}
theme = war
left_portrait = {
character = root
triggered_animation = {
trigger = {
scope:helper = root
root.prowess < high_skill_rating
}
animation = random_weapon_yield
}
triggered_animation = {
trigger = {
scope:helper = root
root.prowess >= high_skill_rating
}
animation = inspect_weapon
}
triggered_animation = {
trigger = {
scope:helper != root
scope:helper.prowess < high_skill_rating
}
animation = stunned
}
triggered_animation = {
trigger = {
scope:helper != root
scope:helper.prowess >= high_skill_rating
}
animation = disappointed
}
}
right_portrait = {
character = scope:knight
triggered_animation = {
trigger = {
scope:helper = root
root.prowess < high_skill_rating
}
animation = random_weapon_celebrate
}
triggered_animation = {
trigger = {
scope:helper = root
root.prowess >= high_skill_rating
}
animation = random_weapon_yield
}
triggered_animation = {
trigger = {
scope:helper != root
scope:helper.prowess < high_skill_rating
}
animation = random_weapon_celebrate
}
triggered_animation = {
trigger = {
scope:helper != root
scope:helper.prowess >= high_skill_rating
}
animation = random_weapon_yield
}
}
lower_left_portrait = {
trigger = { scope:helper != root }
character = scope:helper
}
lower_right_portrait = {
character = scope:task_contract_councillor
}
lower_center_portrait = {
character = scope:task_contract_councillor_liege
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
# search for anyone that could help you train them
random_court_position_holder = {
type = second_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = master_of_arms_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = light_cavalry_captain_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = camelry_captain_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = elephantry_captain_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = heavy_cavalry_captain_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = horse_archer_captain_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = archer_captain_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = heavy_infantry_captain_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = light_infantry_captain_camp_officer
add_to_list = helpers_list
}
random_court_position_holder = {
type = pike_captain_camp_officer
add_to_list = helpers_list
}
random_in_list = {
list = helpers_list
save_scope_as = helper
}
if = {
limit = {
exists = scope:helper
}
scope:helper = {
every_character_trait = {
limit = {
has_trait_category = commander
}
scope:task_contract = {
add_to_variable_list = {
name = takers_commander_traits
target = prev
}
}
}
}
}
else = {
save_scope_as = helper
}
scope:task_contract = {
random_in_list = {
variable = takers_commander_traits
save_scope_as = trait_to_teach
}
}
scope:helper = {
set_signature_weapon_effect = yes
}
scope:knight = {
set_signature_weapon_effect = yes
}
scope:task_contract = {
remove_list_variable = {
name = knights_to_train
target = scope:knight
}
}
}
# steal the knight
option = {
name = ep3_contract_event.0091.a
trigger = { scope:knight = { is_landed = no } }
duel = {
skill = diplomacy
target = scope:knight
25 = {
desc = ep3_contract_event.0091_won_recruit
modifier = {
add = root.prestige_level
factor = 5
}
send_interface_toast = {
title = ep3_contract_event.0091_won_recruit
left_icon = root
right_icon = scope:knight
add_courtier = scope:knight
domicile = {
change_provisions = {
value = scope:knight.prowess
multiply = -4
}
}
pay_short_term_gold = {
target = scope:task_contract_employer
gold = {
value = scope:knight.prowess
multiply = 5
}
}
}
count_knights_trained_effect = { RESULT = no }
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
}
25 = {
desc = ep3_contract_event.0091_lost_recruit
send_interface_toast = {
title = ep3_contract_event.0091_lost_recruit
left_icon = root
right_icon = scope:knight
}
count_knights_trained_effect = { RESULT = no }
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
}
}
stress_impact = {
impatient = minor_stress_impact_loss
just = minor_stress_impact_gain
honest = minor_stress_impact_gain
callous = minor_stress_impact_loss
deceitful = minor_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 100
highest_skill = diplomacy
}
}
}
# teach them a trait you know
option = {
name = ep3_contract_event.0091.b
trigger = {
exists = scope:trait_to_teach
scope:knight = {
NOT = { has_trait = scope:trait_to_teach }
}
}
duel = {
skill = martial
target = scope:knight
25 = {
desc = ep3_contract_event.0091_won_trait
modifier = {
add = root.learning
}
send_interface_toast = {
title = ep3_contract_event.0091_won_trait
left_icon = root
right_icon = scope:knight
scope:knight = {
add_trait = scope:trait_to_teach
}
}
count_knights_trained_effect = { RESULT = yes }
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
}
25 = {
desc = ep3_contract_event.0091_lost
send_interface_toast = {
title = ep3_contract_event.0091_lost
left_icon = root
right_icon = scope:knight
}
count_knights_trained_effect = { RESULT = no }
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
}
}
stress_impact = {
brave = minor_stress_impact_loss
craven = minor_stress_impact_gain
humble = minor_stress_impact_gain
arrogant = minor_stress_impact_loss
stubborn = minor_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 100
highest_skill = martial
}
}
}
# let helper teach them some prowess
option = {
name = ep3_contract_event.0091.c
trigger = {
exists = scope:helper
scope:helper != root
}
scope:helper = {
duel = {
skill = prowess
target = scope:knight
25 = {
desc = ep3_contract_event.0091_won_helper
send_interface_toast = {
title = ep3_contract_event.0091_won_helper
left_icon = root
right_icon = scope:knight
scope:knight = {
add_prowess_skill = {
value = scope:helper.prowess
subtract = scope:knight.prowess
divide = 4
add = {
value = scope:knight.ai_boldness
divide = 10
}
add = {
value = scope:helper.ai_boldness
divide = 10
}
min = 2
max = 5
}
force_character_skill_recalculation = yes
}
}
count_knights_trained_effect = { RESULT = yes }
compare_modifier = {
value = scope:duel_value
multiplier = 1
}
}
25 = {
desc = ep3_contract_event.0091_lost
count_knights_trained_effect = { RESULT = no }
send_interface_toast = {
title = ep3_contract_event.0091_lost
left_icon = root
right_icon = scope:knight
}
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
}
}
}
stress_impact = {
arrogant = minor_stress_impact_gain
ambitious = minor_stress_impact_gain
humble = minor_stress_impact_loss
shy = minor_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 100
scope:helper.prowess > scope:knight.prowess
}
}
}
# teach them some prowess yourself
option = {
name = ep3_contract_event.0091.d
duel = {
skill = prowess
target = scope:knight
50 = {
desc = ep3_contract_event.0091_won
send_interface_toast = {
title = ep3_contract_event.0091_won
left_icon = root
right_icon = scope:knight
scope:knight = {
add_prowess_skill = {
value = root.prowess
subtract = scope:knight.prowess
divide = 4
add = {
value = scope:knight.ai_boldness
divide = 10
}
add = {
value = root.ai_boldness
divide = 10
}
min = 1
max = 4
}
force_character_skill_recalculation = yes
}
}
count_knights_trained_effect = { RESULT = yes }
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
modifier = {
add = {
value = scope:knight.ai_energy
divide = -10
}
}
modifier = {
add = {
value = root.ai_energy
divide = -10
}
}
}
50 = {
desc = ep3_contract_event.0091_lost
send_interface_toast = {
title = ep3_contract_event.0091_lost
left_icon = root
right_icon = scope:knight
}
count_knights_trained_effect = { RESULT = no }
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
modifier = {
add = {
value = scope:knight.ai_energy
divide = 10
}
}
modifier = {
add = {
value = root.ai_energy
divide = 10
}
}
}
}
stress_impact = {
arrogant = minor_stress_impact_loss
ambitious = minor_stress_impact_loss
humble = minor_stress_impact_gain
shy = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
prowess > scope:knight.prowess
}
}
}
after = {
hidden_effect = {
if = {
limit = {
exists = scope:trait_to_teach
}
scope:task_contract = {
remove_list_variable = {
name = takers_commander_traits
target = scope:trait_to_teach
}
}
}
if = {
limit = {
scope:task_contract = {
has_variable_list = knights_to_train
any_in_list = {
variable = knights_to_train
is_alive = yes
is_knight = yes
}
}
}
if = {
limit = {
is_ai = yes
}
#save new knight for the ai, as they can't use the interaction to do it
ordered_in_list = {
variable = knights_to_train
order_by = {
value = prowess
multiply = -1
}
save_scope_as = knight
}
#run the event directly
root = {
trigger_event = {
id = ep3_contract_event.0091
days = 1
}
}
}
#open the interaction for human players
else = {
open_interaction_window = {
interaction = task_contract_train_knight_interaction
actor = root
recipient = scope:task_contract_employer
}
}
}
}
}
}
scripted_effect set_corruption_reason_effect = {
scope:corrupt_province.county = {
switch = {
trigger = has_county_modifier
county_corruption_inefficient_tax_collection_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:taxes
}
}
county_corruption_deserting_levies_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:riots
}
}
county_corruption_smuggling_ring_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:bandits
}
}
county_corruption_bandits_rampant_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:bandits
}
}
county_corruption_inefficient_census_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:taxes
}
}
county_corruption_lack_of_sheriffs_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:bandits
}
}
county_corruption_lack_of_courts_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:bandits
}
}
county_corruption_thieves_guild_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:bandits
}
}
county_corruption_unsafe_highways_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:bandits
}
}
county_corruption_uncooperative_guilds_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:taxes
}
}
county_corruption_lackluster_administration_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:taxes
}
}
small_investment_in_revolt_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:riots
}
}
medium_investment_in_revolt_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:riots
}
}
high_investment_in_revolt_modifier = {
save_scope_value_as = {
name = corruption_reason
value = flag:riots
}
}
}
#fallback if the county have no modifier
if = {
limit = {
NOT = { exists = scope:corruption_reason }
}
save_scope_value_as = {
name = corruption_reason
value = flag:low_control
}
}
}
}
# increase control - intro
ep3_contract_event.0092 = {
type = character_event
title = ep3_contract_event.0092.t
desc = {
desc = ep3_contract_event.0092.desc
first_valid = {
triggered_desc = {
trigger = { scope:corruption_reason = flag:taxes }
desc = ep3_contract_event.0092.desc_taxes
}
triggered_desc = {
trigger = { scope:corruption_reason = flag:bandits }
desc = ep3_contract_event.0092.desc_bandits
}
triggered_desc = {
trigger = { scope:corruption_reason = flag:riots }
desc = ep3_contract_event.0092.desc_riots
}
triggered_desc = {
trigger = { scope:corruption_reason = flag:low_control }
desc = ep3_contract_event.0092.desc_low_control
}
}
}
theme = landless_adventurer
#task_contract_taker, you
left_portrait = {
character = root
animation = disbelief
}
#marshal
right_portrait = {
character = scope:task_contract_councillor
animation = shame
}
#marshal's liege
lower_right_portrait = {
character = scope:task_contract_councillor_liege
}
widget = {
gui = "event_window_widget_peasant_leader"
container = "custom_widgets_container"
}
immediate = {
ep3_peasant_leader_widget_setup_effect = yes
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
#saving scope for custom localization and corruption reason
scope:task_contract_destination = {
save_scope_as = corrupt_province
}
set_corruption_reason_effect = yes
}
#just travel there
option = {
name = ep3_contract_event.0092.a
#trigger the event immediately if you are already there
if = {
limit = {
scope:task_contract_destination = root.location
}
trigger_event = ep3_contract_event.0093
}
#otherwise, tirgger a travel plan
else = {
custom_tooltip = ep3_contract_event.0092.a_tt
start_travel_plan = {
destination = scope:task_contract_destination
on_arrival_event = ep3_contract_event.0093
on_arrival_destinations = all_but_last
can_cancel_planning = no
}
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#move your camp there
option = {
name = ep3_contract_event.0092.b
trigger = {
NOR = {
scope:task_contract_destination = root.domicile.domicile_location
scope:task_contract_destination = root.location
}
}
custom_tooltip = ep3_contract_event.0092.b_tt
custom_tooltip = ep3_contract_event.0001.with_domicile.tt
start_travel_plan = {
destination = scope:task_contract_destination
on_arrival_event = ep3_contract_event.0093
on_arrival_destinations = all
travel_with_domicile = yes
return_trip = no
can_cancel_planning = no
}
#AI shouldn't move camps in events
ai_chance = {
base = 0
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
after = {
ep3_peasant_leader_widget_clear_effect = yes
}
}
# increase control - arrival
ep3_contract_event.0093 = {
type = character_event
title = ep3_contract_event.0093.t
desc = {
desc = ep3_contract_event.0093.desc
first_valid = {
triggered_desc = {
trigger = { scope:corruption_reason = flag:taxes }
desc = ep3_contract_event.0093.desc_taxes
}
triggered_desc = {
trigger = { scope:corruption_reason = flag:bandits }
desc = ep3_contract_event.0093.desc_bandits
}
triggered_desc = {
trigger = { scope:corruption_reason = flag:riots }
desc = ep3_contract_event.0093.desc_riots
}
triggered_desc = {
trigger = { scope:corruption_reason = flag:low_control }
desc = ep3_contract_event.0093.desc_low_control
}
}
}
theme = landless_adventurer
override_background = {
reference = terrain_travel
}
#task_contract_taker, you
left_portrait = {
character = root
triggered_animation = {
trigger = {
scope:task_contract.var:control <= scope:task_contract.var:support
scope:corruption_reason = flag:taxes
}
animation = personality_compassionate
}
triggered_animation = {
trigger = {
scope:task_contract.var:control <= scope:task_contract.var:support
scope:corruption_reason = flag:bandits
}
animation = shock
}
triggered_animation = {
trigger = {
scope:task_contract.var:control <= scope:task_contract.var:support
scope:corruption_reason = flag:riots
}
animation = interested_left
}
triggered_animation = {
trigger = {
scope:task_contract.var:control <= scope:task_contract.var:support
scope:corruption_reason = flag:low_control
}
animation = shame
}
triggered_animation = {
trigger = {
scope:task_contract.var:control > scope:task_contract.var:support
scope:corruption_reason = flag:taxes
}
animation = dismissal
}
triggered_animation = {
trigger = {
scope:task_contract.var:control > scope:task_contract.var:support
scope:corruption_reason = flag:bandits
}
animation = disbelief
}
triggered_animation = {
trigger = {
scope:task_contract.var:control > scope:task_contract.var:support
scope:corruption_reason = flag:riots
}
animation = disappointed
}
triggered_animation = {
trigger = {
scope:task_contract.var:control > scope:task_contract.var:support
scope:corruption_reason = flag:low_control
}
animation = eyeroll
}
}
#peasant spokeperson
right_portrait = {
character = scope:corrupt_province_peasant
animation = beg
}
#marshal
lower_left_portrait = {
character = scope:task_contract_councillor
}
#marshal's liege
lower_right_portrait = {
character = scope:task_contract_councillor_liege
}
widget = {
gui = "event_window_widget_peasant_leader"
container = "custom_widgets_container"
}
cooldown = { days = 1 }
trigger = {
any_character_active_contract = {
has_task_contract_type = laamp_help_increase_control_contract
}
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
ep3_peasant_leader_widget_setup_effect = yes
if = {
limit = {
NOT = { exists = scope:corrupt_province }
}
location = {
save_scope_as = corrupt_province
}
}
#remove the visited county from the list of corrupt counties, so you don't have to visit it anymore
scope:task_contract = {
remove_list_variable = {
name = corrupt_counties
target = scope:corrupt_province.county
}
}
#find a local peasant
random_pool_character = {
province = scope:corrupt_province
limit = {
is_available_healthy_ai_adult = yes
faith = scope:corrupt_province.county.faith
culture = scope:corrupt_province.county.culture
}
save_scope_as = corrupt_province_peasant
}
if = {
limit = {
NOT = { exists = scope:corrupt_province_peasant }
}
create_character = {
location = scope:corrupt_province
template = peasant_character
gender_female_chance = 50
faith = scope:corrupt_province.county.faith
culture = scope:corrupt_province.county.culture
save_scope_as = corrupt_province_peasant
}
}
#add them to a list, they will become army leaders if a war breaks out
scope:task_contract = {
add_to_variable_list = {
name = met_peasant_leaders
target = scope:corrupt_province_peasant
}
}
#set flag with reason for localization
if = {
limit = {
NOT = { exists = scope:corruption_reason }
}
set_corruption_reason_effect = yes
}
}
#help the marshal
option = {
name = ep3_contract_event.0093.a
duel = {
skill = martial
value = high_skill_rating
25 = {
desc = ep3_contract_event.0093.a_win
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
add_dread = 5
scope:corrupt_province.county = {
add_county_modifier = {
modifier = marshal_task_increase_control_increased_opinion_modifier
years = 5
}
}
}
25 = {
desc = ep3_contract_event.0093.a_lose
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
scope:corrupt_province.county = {
add_county_modifier = {
modifier = marshal_task_military_presence_modifier
years = 5
}
}
if = {
limit = {
any_maa_regiment = { }
}
random_maa_regiment = {
change_maa_troops_count = {
value = maa_current_troops_count
multiply = laamp_base_contract_schemes_1301_maa_damage_moderate_value
}
}
}
else_if = {
limit = {
any_courtier = {
is_adult = yes
NOR = {
is_close_family_of = root
is_spouse_of = root
}
}
}
ordered_courtier = {
order_by = martial
limit = {
is_adult = yes
NOR = {
is_close_family_of = root
is_spouse_of = root
}
}
scope:corrupt_province.province_owner = {
add_courtier = prev
}
}
}
else = {
pay_short_term_gold = {
target = scope:corrupt_province.province_owner
gold = root.minor_gold_value
}
domicile = {
change_provisions = {
integer_range = {
min = miniscule_provisions_value
max = minor_provisions_value
}
}
}
}
}
}
if = {
limit = {
scope:task_contract.var:num_of_corrupt_counties = 1
scope:task_contract.var:control = 0
scope:task_contract.var:support = 0
}
custom_tooltip = ep3_contract_event.0094_success
scope:task_contract = {
complete_task_contract = success_critical
}
}
ep3_increase_peasant_control_effect = yes
stress_impact = {
compassionate = minor_stress_impact_gain
calm = minor_stress_impact_gain
just = minor_stress_impact_gain
impatient = minor_stress_impact_loss
wrathful = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
#side with peasants
option = {
name = ep3_contract_event.0093.b
every_courtier = {
limit = {
is_lowborn = yes
NOT = {
has_opinion_modifier = {
modifier = sided_with_peasants_opinion
target = root
}
}
}
custom = every_lowborn_follower
add_opinion = {
modifier = sided_with_peasants_opinion
target = root
years = 3
}
}
if = {
limit = {
scope:task_contract.var:num_of_corrupt_counties = 1
scope:task_contract.var:control = 0
scope:task_contract.var:support = 0
}
custom_tooltip = ep3_contract_event.0094_fail
show_as_tooltip = {
scope:task_contract = {
complete_task_contract = failure_standard
}
}
trigger_event = {
id = ep3_contract_event.0095
delayed = yes
}
}
ep3_increase_peasant_support_effect = yes
stress_impact = {
compassionate = minor_stress_impact_loss
fickle = minor_stress_impact_loss
just = minor_stress_impact_loss
wrathful = minor_stress_impact_gain
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
after = {
ep3_peasant_leader_widget_clear_effect = yes
#check if there are more corrupt counties to visit
if = {
limit = {
scope:task_contract = {
has_variable_list = corrupt_counties
variable_list_size = {
name = corrupt_counties
value >= 1
}
}
}
#follow up event to keep going
trigger_event = {
id = ep3_contract_event.0094
delayed = yes
}
}
#else complete the contract
else = {
if = {
limit = {
scope:task_contract.var:control > scope:task_contract.var:support
NAND = {
scope:task_contract.var:control = 0
scope:task_contract.var:support = 0
}
}
custom_tooltip = ep3_contract_event.0094_success
scope:task_contract = {
if = {
limit = {
scope:task_contract.var:control = scope:task_contract.var:num_of_corrupt_counties
}
complete_task_contract = success_critical
}
else = {
complete_task_contract = success_standard
}
}
}
else_if = {
limit = {
scope:task_contract.var:control <= scope:task_contract.var:support
NAND = {
scope:task_contract.var:control = 0
scope:task_contract.var:support = 0
}
}
custom_tooltip = ep3_contract_event.0094_fail
show_as_tooltip = {
scope:task_contract = {
complete_task_contract = failure_standard
}
}
trigger_event = {
id = ep3_contract_event.0095
delayed = yes
}
}
}
}
}
# increase control - keep going
ep3_contract_event.0094 = {
type = character_event
title = ep3_contract_event.0094.t
desc = {
desc = ep3_contract_event.0094.desc
first_valid = {
triggered_desc = {
trigger = { scope:corruption_reason = flag:taxes }
desc = ep3_contract_event.0094.desc_taxes
}
triggered_desc = {
trigger = { scope:corruption_reason = flag:bandits }
desc = ep3_contract_event.0094.desc_bandits
}
triggered_desc = {
trigger = { scope:corruption_reason = flag:riots }
desc = ep3_contract_event.0094.desc_riots
}
triggered_desc = {
trigger = { scope:corruption_reason = flag:low_control }
desc = ep3_contract_event.0094.desc_low_control
}
}
}
theme = landless_adventurer
#task_contract_taker, you
left_portrait = {
character = root
triggered_animation = {
trigger = {
scope:task_contract.var:control <= scope:task_contract.var:support
scope:corruption_reason = flag:taxes
}
animation = personality_rational
}
triggered_animation = {
trigger = {
scope:task_contract.var:control <= scope:task_contract.var:support
scope:corruption_reason = flag:bandits
}
animation = worry
}
triggered_animation = {
trigger = {
scope:task_contract.var:control <= scope:task_contract.var:support
scope:corruption_reason = flag:riots
}
animation = personality_honorable
}
triggered_animation = {
trigger = {
scope:task_contract.var:control <= scope:task_contract.var:support
scope:corruption_reason = flag:low_control
}
animation = stunned
}
triggered_animation = {
trigger = {
scope:task_contract.var:control > scope:task_contract.var:support
scope:corruption_reason = flag:taxes
}
animation = personality_greedy
}
triggered_animation = {
trigger = {
scope:task_contract.var:control > scope:task_contract.var:support
scope:corruption_reason = flag:bandits
}
animation = schadenfreude
}
triggered_animation = {
trigger = {
scope:task_contract.var:control > scope:task_contract.var:support
scope:corruption_reason = flag:riots
}
animation = eyeroll
}
triggered_animation = {
trigger = {
scope:task_contract.var:control > scope:task_contract.var:support
scope:corruption_reason = flag:low_control
}
animation = boredom
}
}
#marshal
right_portrait = {
character = scope:task_contract_councillor
animation = debating
}
#marshal's liege
lower_right_portrait = {
character = scope:task_contract_councillor_liege
}
widget = {
gui = "event_window_widget_peasant_leader"
container = "custom_widgets_container"
}
immediate = {
if = {
limit = {
NOT = { has_variable = contract_094_travel_fallback_true }
}
ep3_peasant_leader_widget_setup_effect = yes
scope:task_contract = {
#set a county from the corrupt counties list as the corrupt county to visit next
random_in_list = {
variable = corrupt_counties
title_province = {
save_scope_as = corrupt_province
}
}
#update the destination variable for proper tooltips and descriptions in other UIs
set_variable = {
name = task_contract_destination
value = scope:corrupt_province
}
}
set_corruption_reason_effect = yes
}
else = {
remove_variable = contract_094_travel_fallback_true
}
}
#travel without camp
option = {
name = ep3_contract_event.0094.a
hidden_effect = {
current_travel_plan ?= {
abort_travel_plan = yes
}
start_travel_plan = {
destination = scope:corrupt_province
on_arrival_event = ep3_contract_event.0093
on_arrival_destinations = all_but_last
on_travel_planner_cancel_on_action = ep3_contract_094_travel_fallback
can_cancel_planning = no
}
}
custom_tooltip = ep3_contract_event.0094.travel_without_domicile
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
# travel with camp - only if you traveled with it here
option = {
name = ep3_contract_event.0094.b
trigger = {
domicile.domicile_location = root.location
}
hidden_effect = {
current_travel_plan ?= {
abort_travel_plan = yes
}
start_travel_plan = {
destination = scope:corrupt_province
on_arrival_event = ep3_contract_event.0093
on_arrival_destinations = all
travel_with_domicile = yes
return_trip = no
can_cancel_planning = no
}
}
custom_tooltip = ep3_contract_event.0094.travel_with_domicile
custom_tooltip = ep3_contract_event.0001.with_domicile.tt
#AI shouldn't move their camp in events
ai_chance = {
base = 0
}
}
# I had enough, fail contract
option = {
name = ep3_contract_event.0094.c
trigger = {
scope:task_contract.var:control <= scope:task_contract.var:support
}
flavor = ep3_contract_event.0094_fail
show_as_tooltip = {
scope:task_contract = {
complete_task_contract = failure_standard
}
}
trigger_event = ep3_contract_event.0095
stress_impact = {
ambitious = major_stress_impact_gain
lazy = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
# I had enough, succeed contract
option = {
name = ep3_contract_event.0094.c
trigger = {
scope:task_contract.var:control > scope:task_contract.var:support
}
flavor = ep3_contract_event.0094_success
scope:task_contract = {
if = {
limit = {
scope:task_contract.var:control = scope:task_contract.var:num_of_corrupt_counties
}
complete_task_contract = success_critical
}
else = {
complete_task_contract = success_standard
}
}
return_home = yes
stress_impact = {
ambitious = minor_stress_impact_gain
lazy = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
after = {
ep3_peasant_leader_widget_clear_effect = yes
}
}
# increase control - follow up
ep3_contract_event.0095 = {
type = character_event
title = ep3_contract_event.0095.t
desc = ep3_contract_event.0095.desc
theme = landless_adventurer
#task_contract_taker, you
left_portrait = {
character = root
animation = schadenfreude
}
#marshal
right_portrait = {
character = scope:task_contract_councillor
animation = rage
}
#marshal's liege
lower_right_portrait = {
character = scope:task_contract_councillor_liege
}
widget = {
gui = "event_window_widget_peasant_leader"
container = "custom_widgets_container"
}
cooldown = { days = 1 }
immediate = {
# transfer the list of supported counties from contract to root, as the contract will be destroyed after this event, so that you will have access to the ep3_laamp_peasant_war cb, even if you didn't choose war in this event
scope:task_contract = {
every_in_list = {
variable = supported_counties
root = {
add_to_variable_list = {
name = war_supported_counties_list
target = prev
}
}
}
every_in_list = {
variable = met_peasant_leaders
root = {
add_to_variable_list = {
name = war_met_peasant_leaders_list
target = prev
}
}
}
}
scope:task_contract_taker = {
ep3_peasant_leader_widget_setup_effect = yes
}
}
#lead an independence peasant war
option = {
name = ep3_contract_event.0095.a
#start a freedom war!
start_war = {
cb = ep3_laamp_peasant_war
target = scope:task_contract_councillor_liege.top_liege
}
#try to capture the marshal, as they standing right next to you
duel = {
skills = { prowess intrigue }
target = scope:task_contract_councillor
25 = {
desc = ep3_contract_event.0095.a_win
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
prisoner_of_war_capture_effect = {
TARGET = scope:task_contract_councillor
IMPRISONER = root
}
scope:task_contract_councillor_liege = {
add_opinion = {
modifier = fp3_wrongful_imprisonment_opinion
opinion = -30
target = root
}
}
}
25 = {
desc = ep3_contract_event.0095.a_lose
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
scope:task_contract_councillor = {
add_opinion = {
target = root
modifier = attempted_imprisonment_opinion
}
}
}
}
#fail the contract, obivously
scope:task_contract = {
complete_task_contract = failure_standard
}
return_home = yes
stress_impact = {
craven = minor_stress_impact_gain
lazy = minor_stress_impact_gain
brave = minor_stress_impact_loss
compassionate = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
}
ai_chance = {
base = 20
}
}
# they are on their own, for now
option = {
name = ep3_contract_event.0095.b
scope:task_contract = {
every_in_list = {
variable = supported_counties
custom = laamp_peasant_revolt_every_county
random_list = {
1 = {
add_county_modifier = small_investment_in_revolt_modifier
}
1 = {
add_county_modifier = medium_investment_in_revolt_modifier
}
1 = {
add_county_modifier = high_investment_in_revolt_modifier
}
}
}
}
#this also fails the contract
scope:task_contract = {
complete_task_contract = failure_standard
}
return_home = yes
stress_impact = {
craven = minor_stress_impact_loss
lazy = minor_stress_impact_loss
brave = minor_stress_impact_gain
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
# try to weasel out of it
option = {
name = ep3_contract_event.0095.c
duel = {
skills = { diplomacy intrigue }
target = scope:task_contract_councillor
1 = {
desc = ep3_contract_event.0095.c_win
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
scope:task_contract = {
complete_task_contract = success_standard
}
}
25 = {
desc = ep3_contract_event.0095.c_tie
scope:task_contract = {
invalidate_contract = yes
}
}
25 = {
desc = ep3_contract_event.0095.c_lose
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
scope:task_contract = {
complete_task_contract = failure_standard
}
}
}
return_home = yes
stress_impact = {
honest = minor_stress_impact_gain
brave = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
deceitful = minor_stress_impact_loss
cynical = minor_stress_impact_loss
}
#AI should always try to complete the contract
ai_chance = {
base = 20
}
}
after = {
ep3_peasant_leader_widget_clear_effect = yes
}
}
## Spymaster
#Contract to scheme find secrets - starting event
ep3_contract_event.0100 = {
type = character_event
title = ep3_contract_event.0100.t
desc = ep3_contract_event.0100.desc
theme = intrigue
#task_contract_taker, you
left_portrait = {
character = root
animation = stunned
}
#spymaster
right_portrait = {
character = scope:task_contract_councillor
animation = scheme
}
#spymaster's liege
lower_right_portrait = {
character = scope:task_contract_councillor_liege
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
}
#start scheme to find secrets
option = {
name = ep3_contract_event.0030.b
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = laamp_help_find_secrets_scheme
TARGET_TYPE = target_character
TARGET_SCOPE = scope:task_contract_target
TASK_CONTRACT = scope:task_contract
# Success.
AGENT_1 = agent_diplomat
AGENT_2 = agent_shill
AGENT_3 = agent_gabbler
# Speed.
AGENT_4 = agent_theologian
# Secrecy.
AGENT_5 = agent_justiciar
}
#AI should always try to complete the contract
ai_chance = {
base = 1
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
# Boost Legitimacy - intro
ep3_contract_event.0510 = {
type = character_event
title = ep3_contract_event.0510.t
desc = ep3_contract_event.0510.desc
theme = diplomacy
override_background = {
reference = alley_day
}
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:peasant
animation = debating
}
lower_right_portrait = {
character = scope:task_contract_employer
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
create_character = {
template = generic_peasant_character
location = this.location
faith = location.faith
culture = location.culture
random_traits = yes
trait = peasant_leader
save_scope_as = peasant
}
location = {
save_scope_as = location
}
}
#You attempt to debate the local
option = {
name = ep3_contract_event.0510.a
duel = {
skills = { diplomacy learning }
target = scope:peasant
50 = { #You win the debate
desc = ep3_contract_event.0510.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 5
scope:task_contract = {
complete_task_contract = success_standard
}
add_character_flag = contract_success_flag
trigger_event = ep3_contract_event.0520
}
40 = { #You are unconvincing
desc = ep3_contract_event.0510.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
scope:task_contract = {
complete_task_contract = failure_standard
}
add_character_flag = contract_failure_flag
trigger_event = ep3_contract_event.0520
}
10 = { #You actively damage your employer in the eyes of his subjects
desc = ep3_contract_event.0510.a.critfailure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 1
scope:task_contract = {
complete_task_contract = failure_critical
}
add_character_flag = contract_crit_failure_flag
trigger_event = ep3_contract_event.0520
}
}
stress_impact = {
honest = minor_stress_impact_loss
arrogant = minor_stress_impact_loss
compassionate = minor_stress_impact_loss
sadistic = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
OR = {
highest_skill = diplomacy
learning > scope:peasant.learning
}
}
}
}
#Threaten the local
option = {
name = ep3_contract_event.0510.b
duel = {
skills = { diplomacy prowess }
target = scope:peasant
30 = { #You win the 'debate'
desc = ep3_contract_event.0510.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 3
scope:task_contract = {
complete_task_contract = success_standard
}
add_character_flag = contract_success_flag
trigger_event = ep3_contract_event.0520
}
50 = { #You are unconvincing
desc = ep3_contract_event.0510.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
scope:task_contract = {
complete_task_contract = failure_standard
}
add_character_flag = contract_failure_flag
trigger_event = ep3_contract_event.0520
}
20 = { #You actively damage your employer in the eyes of his subjects
desc = ep3_contract_event.0510.b.critfailure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 1
scope:peasant = {
create_faction = {
type = peasant_faction
target = scope:task_contract_employer
}
}
scope:task_contract = {
complete_task_contract = failure_critical
}
add_character_flag = contract_crit_failure_flag
trigger_event = ep3_contract_event.0520
}
}
stress_impact = {
honest = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
sadistic = major_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 100
highest_skill_including_prowess = prowess
}
}
}
#Pay him off to support your cause
option = {
name = ep3_contract_event.0510.c
pay_short_term_gold = {
target = scope:peasant
gold = minor_gold_value
}
random_list = {
75 = {
modifier = {
add = 15
scope:peasant = {
OR = {
has_trait = greedy
has_trait = arbitrary
}
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
add_character_flag = contract_success_flag
trigger_event = ep3_contract_event.0520
}
25 = {
modifier = {
add = 25
scope:peasant = {
OR = {
has_trait = stubborn
has_trait = ambitious
}
}
}
scope:task_contract = {
complete_task_contract = failure_standard
}
add_character_flag = contract_failure_flag
trigger_event = ep3_contract_event.0520
}
}
stress_impact = {
gregarious = minor_stress_impact_loss
zealous = minor_stress_impact_loss
compassionate = minor_stress_impact_loss
shy = minor_stress_impact_gain
cynical = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
gold > 100
}
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
# Boost Legitimacy - resolution
ep3_contract_event.0520 = {
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = { has_character_flag = contract_success_flag }
desc = ep3_contract_event.0520.t.success
}
triggered_desc = {
trigger = { has_character_flag = contract_failure_flag }
desc = ep3_contract_event.0520.t.failure
}
triggered_desc = {
trigger = { has_character_flag = contract_crit_failure_flag }
desc = ep3_contract_event.0520.t.critfailure
}
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { has_character_flag = contract_success_flag }
desc = ep3_contract_event.0520.desc.success
}
triggered_desc = {
trigger = { has_character_flag = contract_failure_flag }
desc = ep3_contract_event.0520.desc.failure
}
triggered_desc = {
trigger = { has_character_flag = contract_crit_failure_flag }
desc = ep3_contract_event.0520.desc.critfailure
}
}
}
theme = diplomacy
left_portrait = {
character = root
triggered_animation = {
trigger = {
has_character_flag = contract_success_flag
}
animation = personality_honorable
}
animation = stress
}
right_portrait = {
character = scope:task_contract_employer
triggered_animation = {
trigger = {
has_character_flag = contract_success_flag
}
animation = ecstasy
}
animation = anger
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
location = {
save_scope_as = location
}
show_as_tooltip = {
if = {
limit = {
has_character_flag = contract_success_flag
}
scope:task_contract = {
complete_task_contract = success_standard
}
}
else_if = {
limit = {
has_character_flag = contract_failure_flag
}
scope:task_contract = {
complete_task_contract = failure_standard
}
}
else = {
scope:task_contract = {
complete_task_contract = failure_critical
}
}
}
}
option = {
name = ep3_contract_event.0520.a
trigger = {
has_character_flag = contract_success_flag
}
stress_impact = {
base = miniscule_stress_impact_loss
}
ai_chance = {
base = 10
}
}
option = {
name = ep3_contract_event.0520.b
trigger = {
NOT = {
has_character_flag = contract_success_flag
}
}
stress_impact = {
base = miniscule_stress_impact_gain
}
ai_chance = {
base = 10
}
}
after = {
remove_character_flag = contract_crit_success_flag
remove_character_flag = contract_success_flag
remove_character_flag = contract_failure_flag
remove_character_flag = contract_crit_failure_flag
}
}
# Turbulent Priest - intro
ep3_contract_event.0550 = {
type = character_event
title = ep3_contract_event.0550.t
desc = ep3_contract_event.0550.desc
theme = martial
override_background = {
reference = alley_night
}
left_portrait = {
character = root
animation = lantern
}
right_portrait = {
character = scope:messenger
outfit_tags = { travel_cloak }
animation = scheme
hide_info = yes
}
lower_right_portrait = {
character = scope:task_contract_employer
}
immediate = {
set_contract_scopes_effect = yes
set_council_scopes_effect = yes
location = {
save_scope_as = location
}
scope:task_contract_employer = {
random_councillor = { #Has a councillor who they hate
limit = {
is_ai = yes
reverse_opinion = {
target = scope:task_contract_employer
value <= high_negative_opinion
}
}
save_scope_as = councillor
}
}
if = {
limit = {
any_pool_character = {
province = root.location
is_physically_able_ai_adult = yes
has_no_particular_noble_roots_trigger = yes
age >= 25
age <= 75
}
}
random_pool_character = {
province = root.location
limit = {
is_physically_able_ai_adult = yes
has_no_particular_noble_roots_trigger = yes
age >= 25
age <= 75
}
save_scope_as = messenger
}
}
else = {
create_character = {
template = generic_peasant_character
location = this.location
faith = location.faith
culture = location.culture
random_traits = yes
save_scope_as = messenger
}
}
}
#Open the letter
option = {
name = ep3_contract_event.0550.a
custom_tooltip = ep3_contract_event.0550.a.tt
trigger_event = ep3_contract_event.0555
stress_impact = {
honest = miniscule_stress_impact_gain
deceitful = miniscule_stress_impact_loss
craven = miniscule_stress_impact_gain
brave = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
# Turbulent Priest - Letter
ep3_contract_event.0555 = {
type = character_event
window = anonymous_letter_event
title = debug.0002.t
desc = ep3_contract_event.0555.desc
theme = martial
#Okie doke
option = {
name = ep3_contract_event.0555.a
trigger_event = {
id = ep3_contract_event.0560
days = 1
}
stress_impact = {
honest = miniscule_stress_impact_gain
deceitful = miniscule_stress_impact_loss
craven = miniscule_stress_impact_gain
brave = miniscule_stress_impact_loss
}
ai_chance = {
base = 100
}
}
}
# Turbulent Priest - decision
ep3_contract_event.0560 = {
type = character_event
title = ep3_contract_event.0560.t
desc = ep3_contract_event.0560.desc
theme = martial
override_background = {
reference = alley_night
}
left_portrait = {
character = root
animation = hunting_knife_start
}
right_portrait = {
character = scope:councillor
animation = drink_goblet
}
immediate = {
set_contract_scopes_effect = yes
location = {
save_scope_as = location
}
scope:task_contract_employer = {
random_sub_realm_barony = { #Save a place for the exile to go
limit = {
this != root.capital_province
}
save_scope_as = exile_barony
}
}
}
option = { #Slaughter them
name = ep3_contract_event.0560.a
duel = {
skills = { prowess martial }
target = scope:councillor
30 = { #You break in and kill everyone inside
desc = ep3_contract_event.0560.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 3
add_character_flag = contract_success_flag
custom_tooltip = ep3_contract_event.0560.contractsuccess
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
scope:councillor = { death = { death_reason = death_murder } }
}
50 = { #You break in, kill the target, but suffer wounds
desc = ep3_contract_event.0560.a.neutral
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
increase_wounds_no_death_effect = { REASON = fight }
add_character_flag = contract_success_flag
custom_tooltip = ep3_contract_event.0560.contractsuccess
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
scope:councillor = { death = { killer = root death_reason = death_duel } }
}
30 = { #You fail to even kill the target
desc = ep3_contract_event.0560.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 3
increase_wounds_no_death_effect = { REASON = fight }
add_character_flag = contract_crit_failure_flag
custom_tooltip = ep3_contract_event.0560.contractfailure
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
}
10 = { #You are killed!
desc = ep3_contract_event.0560.a.critfailure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 1
death = { killer = scope:councillor death_reason = death_duel }
}
}
stress_impact = {
brave = miniscule_stress_impact_loss
craven = minor_stress_impact_gain
impatient = miniscule_stress_impact_loss
patient = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
highest_skill_including_prowess = prowess
}
}
}
option = { #Knife him in the loo
name = ep3_contract_event.0560.b
duel = {
skills = { prowess intrigue }
target = scope:councillor
40 = { #It works perfectly
desc = ep3_contract_event.0560.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 4
add_character_flag = contract_success_flag
custom_tooltip = ep3_contract_event.0560.contractcritsuccess
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
scope:councillor = { death = { death_reason = death_murder } }
}
40 = { #There is a scuffle, and people notice as you escape
desc = ep3_contract_event.0560.b.neutral
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 4
add_character_flag = contract_success_flag
custom_tooltip = ep3_contract_event.0560.contractsuccess
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
scope:councillor = { death = { killer = root death_reason = death_murder_known } }
}
20 = { #He doesn't even go to the toilet
desc = ep3_contract_event.0560.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 2
increase_wounds_no_death_effect = { REASON = fight }
add_character_flag = contract_failure_flag
custom_tooltip = ep3_contract_event.0560.contractcritfailure
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
}
}
stress_impact = {
sadistic = minor_stress_impact_loss
compassionate = medium_stress_impact_gain
impatient = minor_stress_impact_gain
patient = miniscule_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 50
highest_skill = intrigue
}
}
}
option = { #Poison his drink
name = ep3_contract_event.0560.c
duel = {
skill = intrigue
value = very_high_skill_rating
20 = { #It works perfectly
desc = ep3_contract_event.0560.c.critsuccess
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 2
add_character_flag = contract_crit_success_flag
custom_tooltip = ep3_contract_event.0560.contractcritsuccess
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
}
50 = { #By the time they realise it was you, he is already dead
desc = ep3_contract_event.0560.c.success
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
add_character_flag = contract_success_flag
custom_tooltip = ep3_contract_event.0560.contractsuccess
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
scope:councillor = { death = { killer = root death_reason = death_poison } }
}
50 = { #It merely makes him sick
desc = ep3_contract_event.0560.c.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
add_character_flag = contract_failure_flag
custom_tooltip = ep3_contract_event.0560.contractfailure
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
scope:councillor = { contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = no } }
}
20 = { #He sees you spiking the drink
desc = ep3_contract_event.0560.c.critfailure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 2
add_character_flag = contract_crit_failure_flag
custom_tooltip = ep3_contract_event.0560.contractcritfailure
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
}
}
stress_impact = {
brave = minor_stress_impact_gain
craven = miniscule_stress_impact_loss
deceitful = miniscule_stress_impact_loss
honest = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
highest_skill = intrigue
}
}
}
option = { #Lady Boyle 'em
name = ep3_contract_event.0560.d
duel = {
skills = { intrigue learning }
target = scope:councillor
25 = { #It works perfectly
desc = ep3_contract_event.0560.d.critsuccess
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 2
add_character_flag = contract_crit_success_flag
custom_tooltip = ep3_contract_event.0560.contractcritsuccess
scope:task_contract_employer = {
fire_councillor = scope:councillor
}
scope:councillor = {
if = {
limit = {
is_landed = no
}
banish = yes
}
else = {
banish = yes
create_title_and_vassal_change = {
type = revoked
save_scope_as = change
add_claim_on_loss = yes
}
create_landless_adventurer_title_effect = {
REASON = flag:exile
FLAVOR_CHAR = root
}
}
}
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
}
50 = { #You have to knock him out before abduction
desc = ep3_contract_event.0560.d.success
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
add_character_flag = contract_success_flag
custom_tooltip = ep3_contract_event.0560.contractsuccess
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
scope:task_contract_employer = {
fire_councillor = scope:councillor
}
scope:councillor = {
increase_wounds_no_death_effect = { REASON = fight }
if = {
limit = {
is_landed = no
}
banish = yes
}
else = {
banish = yes
create_title_and_vassal_change = {
type = revoked
save_scope_as = change
add_claim_on_loss = yes
}
create_landless_adventurer_title_effect = {
REASON = flag:exile
FLAVOR_CHAR = root
}
}
}
}
35 = { #He escapes from your clutches
desc = ep3_contract_event.0560.d.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 3
add_character_flag = contract_crit_failure_flag
custom_tooltip = ep3_contract_event.0560.contractcritfailure
trigger_event = {
id = ep3_contract_event.0565
days = { 1 2 }
}
}
}
stress_impact = {
brave = minor_stress_impact_gain
craven = miniscule_stress_impact_loss
sadistic = medium_stress_impact_gain
compassionate = minor_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 25
highest_skill = intrigue
}
modifier = {
add = 100
highest_skill = learning
}
}
}
}
# Turbulent Priest - resolution
ep3_contract_event.0565 = {
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = { has_character_flag = contract_crit_success_flag }
desc = ep3_contract_event.0565.t.critsuccess
}
triggered_desc = {
trigger = { has_character_flag = contract_success_flag }
desc = ep3_contract_event.0565.t.success
}
triggered_desc = {
trigger = { has_character_flag = contract_failure_flag }
desc = ep3_contract_event.0565.t.failure
}
triggered_desc = {
trigger = { has_character_flag = contract_crit_failure_flag }
desc = ep3_contract_event.0565.t.critfailure
}
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { has_character_flag = contract_crit_success_flag }
desc = ep3_contract_event.0565.desc.critsuccess
}
triggered_desc = {
trigger = { has_character_flag = contract_success_flag }
desc = ep3_contract_event.0565.desc.success
}
triggered_desc = {
trigger = { has_character_flag = contract_failure_flag }
desc = ep3_contract_event.0565.desc.failure
}
triggered_desc = {
trigger = { has_character_flag = contract_crit_failure_flag }
desc = ep3_contract_event.0565.desc.critfailure
}
}
}
theme = martial
override_background = {
reference = ep2_travel_bridge
}
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_character_flag = contract_success_flag
has_character_flag = contract_crit_success_flag
}
}
animation = steward
}
outfit_tags = { nightgown }
animation = stress
}
right_portrait = {
trigger = {
OR = {
has_character_flag = contract_success_flag
has_character_flag = contract_crit_success_flag
}
}
character = scope:messenger
animation = jockey_idle
outfit_tags = { travel_cloak }
hide_info = yes
camera = camera_event_horse_right
}
lower_center_portrait = {
character = scope:councillor
}
immediate = {
set_contract_scopes_effect = yes
if = {
limit = {
any_pool_character = {
province = root.location
is_physically_able_ai_adult = yes
has_no_particular_noble_roots_trigger = yes
age >= 25
age <= 75
}
}
random_pool_character = {
province = root.location
limit = {
is_physically_able_ai_adult = yes
has_no_particular_noble_roots_trigger = yes
age >= 25
age <= 75
}
save_scope_as = messenger
}
}
else = {
create_character = {
template = generic_peasant_character
location = this.location
faith = location.faith
culture = location.culture
random_traits = yes
save_scope_as = messenger
}
}
if = {
limit = {
has_character_flag = contract_crit_success_flag
}
scope:task_contract = {
complete_task_contract = success_critical
}
}
else_if = {
limit = {
has_character_flag = contract_success_flag
}
scope:task_contract = {
complete_task_contract = success_standard
}
}
else_if = {
limit = {
has_character_flag = contract_failure_flag
}
scope:task_contract = {
complete_task_contract = failure_standard
}
}
else = {
scope:task_contract = {
complete_task_contract = failure_critical
}
}
}
option = {
name = ep3_contract_event.0565.a
trigger = {
OR = {
has_character_flag = contract_crit_success_flag
has_character_flag = contract_success_flag
}
}
stress_impact = {
base = miniscule_stress_impact_loss
}
ai_chance = {
base = 10
}
}
option = {
name = ep3_contract_event.0565.b
trigger = {
NOR = {
has_character_flag = contract_crit_success_flag
has_character_flag = contract_success_flag
}
}
stress_impact = {
base = miniscule_stress_impact_gain
}
ai_chance = {
base = 10
}
}
after = {
remove_character_flag = contract_crit_success_flag
remove_character_flag = contract_success_flag
remove_character_flag = contract_failure_flag
remove_character_flag = contract_crit_failure_flag
}
}
# Rescue Wanderer - Intro
ep3_contract_event.0570 = {
type = character_event
title = ep3_contract_event.0570.t
desc = ep3_contract_event.0570.desc
theme = intrigue
override_background = {
reference = dungeon
}
left_portrait = {
character = root
animation = inspect_weapon
}
right_portrait = {
character = scope:task_contract_employer
animation = prisondungeon
}
lower_right_portrait = {
character = scope:prisonguard
}
immediate = {
set_contract_scopes_effect = yes
save_scope_as = root_for_loc
create_character = {
template = mercenary
location = this.location
faith = location.faith
culture = location.culture
gender_female_chance = root_soldier_female_chance
random_traits = yes
save_scope_as = prisonguard
}
location = {
save_scope_as = location
}
save_scope_value_as = {
name = lockpick_range
value = {
integer_range = {
min = 1
max = 10
}
}
}
}
#Duel the guard to get them out
option = {
name = ep3_contract_event.0570.a
trigger = {
can_start_single_combat_trigger = yes
}
add_internal_flag = dangerous
custom_tooltip = ep3_contract_event.0570.a.tt
configure_start_single_combat_effect = {
SC_INITIATOR = root
SC_ATTACKER = root
SC_DEFENDER = scope:prisonguard
FATALITY = always
FIXED = no
LOCALE = terrain_scope
OUTPUT_EVENT = ep3_contract_event.0571
INVALIDATION_EVENT = single_combat.1006
}
stress_impact = {
brave = minor_stress_impact_loss
craven = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
sadistic = minor_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 50
highest_skill_including_prowess = prowess
}
}
}
#Make a distraction
option = {
name = ep3_contract_event.0570.b
duel = {
skill = intrigue
value = decent_skill_rating
50 = { #The distraction works
desc = ep3_contract_event.0570.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractsuccess
add_character_flag = contract_success_flag
trigger_event = {
id = ep3_contract_event.0575
days = 1
}
}
50 = { #It doesn't work and you have to escape
desc = ep3_contract_event.0570.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractfailure
add_character_flag = contract_failure_flag
random = {
chance = 30
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_contract_event.0570.b.failure.tt
desc = ep3_contract_event.0570.b.failure.tt
left_icon = root
right_icon = scope:prisonguard
increase_wounds_no_death_effect = { REASON = fight }
}
}
trigger_event = {
id = ep3_contract_event.0575
days = 1
}
}
}
stress_impact = {
deceitful = miniscule_stress_impact_loss
honest = miniscule_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 100
highest_skill = intrigue
}
}
}
#Try to pick the lock
option = {
name = ep3_contract_event.0570.c
random_list = {
35 = {
modifier = {
add = 20
has_trait = gallowsbait
}
modifier = {
add = 20
has_trait_xp = {
trait = gallowsbait
track = thief
value >= 25
}
}
modifier = {
add = 20
has_trait_xp = {
trait = gallowsbait
track = thief
value >= 75
}
}
add_character_flag = contract_success_flag
custom_tooltip = ep3_contract_event.0560.contractsuccess
trigger_event = {
id = ep3_contract_event.0575
days = 1
}
}
65 = {
modifier = {
add = scope:lockpick_range
}
add_character_flag = contract_failure_flag
custom_tooltip = ep3_contract_event.0560.contractfailure
trigger_event = {
id = ep3_contract_event.0575
days = 1
}
}
}
stress_impact = {
patient = minor_stress_impact_loss
impatient = medium_stress_impact_loss
}
ai_chance = {
base = 25
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
#Add relevant flags
ep3_contract_event.0571 = {
hidden = yes
immediate = {
add_character_flag = contract_duel_success_flag
add_character_flag = contract_success_flag
trigger_event = {
id = ep3_contract_event.0575
days = 1
}
}
}
# Rescue Wanderer - resolution
ep3_contract_event.0575 = {
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = { has_character_flag = contract_success_flag }
desc = ep3_contract_event.0575.t.success
}
triggered_desc = {
trigger = { has_character_flag = contract_failure_flag }
desc = ep3_contract_event.0575.t.failure
}
}
}
desc = {
triggered_desc = {
trigger = { has_character_flag = contract_duel_success_flag }
desc = ep3_contract_event.0575.desc.duel
}
first_valid = {
triggered_desc = {
trigger = { has_character_flag = contract_success_flag }
desc = ep3_contract_event.0575.desc.success
}
triggered_desc = {
trigger = { has_character_flag = contract_failure_flag }
desc = ep3_contract_event.0575.desc.failure
}
}
}
theme = intrigue
override_background = {
reference = alley_day
}
left_portrait = {
character = root
triggered_animation = {
trigger = {
NOT = {
has_character_flag = contract_failure_flag
}
}
animation = personality_honorable
}
animation = stress
}
right_portrait = {
trigger = {
root = {
has_character_flag = contract_success_flag
}
}
character = scope:task_contract_employer
animation = ecstasy
}
artifact = {
trigger = { exists = scope:newly_created_artifact }
target = scope:newly_created_artifact
position = lower_center_portrait
}
immediate = {
set_contract_scopes_effect = yes
hidden_effect = {
scope:task_contract_employer.primary_title = {
save_scope_as = title
}
destroy_title = scope:title
}
add_courtier = scope:task_contract_employer
if = {
limit = {
has_character_flag = contract_failure_flag
}
scope:task_contract = {
complete_task_contract = failure_standard
}
}
else = {
scope:task_contract = {
complete_task_contract = success_standard
}
}
if = {
limit = {
has_character_flag = contract_duel_success_flag
}
add_gold = { 15 40 }
hidden_effect = {
random_dummy_gender_effect = yes
create_artifact_brooch_effect = {
OWNER = scope:dummy_gender
SMITH = scope:dummy_gender
}
scope:newly_created_artifact = {
add_artifact_modifier = artifact_negate_prowess_penalty_add_3_modifier
add_artifact_modifier = artifact_monthly_prestige_2_modifier
add_artifact_modifier = artifact_dynasty_opinion_1_modifier
set_artifact_rarity = masterwork
set_artifact_name = ep3_pilfered_brooch
add_artifact_history = {
type = stolen
actor = scope:prisonguard
recipient = root
}
}
}
}
}
option = {
name = ep3_contract_event.0575.a
trigger = {
NOT = {
has_character_flag = contract_failure_flag
}
}
stress_impact = {
base = miniscule_stress_impact_loss
}
ai_chance = {
base = 10
}
}
option = {
name = ep3_contract_event.0575.b
trigger = {
has_character_flag = contract_failure_flag
}
ai_chance = {
base = 10
}
}
after = {
remove_character_flag = contract_success_flag
remove_character_flag = contract_failure_flag
remove_character_flag = contract_duel_success_flag
}
}
# Find Secret - Intro
ep3_contract_event.0580 = {
type = character_event
title = ep3_contract_event.0580.t
desc = ep3_contract_event.0580.desc
theme = intrigue
override_background = {
reference = temple
}
left_portrait = {
character = root
animation = eavesdrop
}
right_portrait = {
character = scope:secret_haver
animation = paranoia
}
lower_center_portrait = {
character = scope:task_contract_employer
}
immediate = {
set_contract_scopes_effect = yes
scope:task_contract_employer = {
if = {
limit = {
any_vassal = {
any_secret = {
count > 0
NOT = { is_known_by = scope:task_contract_employer }
}
}
}
random_vassal = {
limit = {
any_secret = {
count > 0
NOT = { is_known_by = scope:task_contract_employer }
}
}
save_scope_as = secret_haver
random_secret = {
limit = {
NOT = { is_known_by = scope:task_contract_employer }
}
save_scope_as = secret
}
}
}
else_if = {
limit = {
any_courtier_or_guest = {
any_secret = {
count > 0
NOT = { is_known_by = scope:task_contract_employer }
}
}
}
random_courtier_or_guest = {
limit = {
any_secret = {
count > 0
NOT = { is_known_by = scope:task_contract_employer }
}
}
save_scope_as = secret_haver
random_secret = {
limit = {
NOT = { is_known_by = scope:task_contract_employer }
}
save_scope_as = secret
}
}
}
else = {
random_courtier_or_guest = {
limit = {
is_available_adult = yes
}
save_scope_as = secret_haver
give_random_likely_secret_effect = yes
random_secret = {
limit = {
NOT = { is_known_by = scope:task_contract_employer }
}
save_scope_as = secret
}
}
}
if = {
limit = {
NOT = {
exists = scope:secret_haver
}
}
create_character = {
employer = scope:task_contract_employer
template = pool_repopulate_stewardship
faith = scope:task_contract_employer.faith
culture = scope:task_contract_employer.culture
save_scope_as = secret_haver
}
scope:secret_haver = {
give_random_likely_secret_effect = yes
random_secret = {
save_scope_as = secret
}
}
}
}
}
#Investigate
option = {
name = ep3_contract_event.0580.a
duel = {
skill = intrigue
value = decent_skill_rating
50 = { #You learn their secret
desc = ep3_contract_event.0580.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractsuccess
add_character_flag = contract_success_flag
scope:secret = {
reveal_to_without_events_effect = {
CHARACTER = root
}
}
trigger_event = {
id = ep3_contract_event.0585
days = 1
}
}
50 = { #Turns out they don't have one...?
desc = ep3_contract_event.0580.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractfailure
add_character_flag = contract_failure_flag
trigger_event = {
id = ep3_contract_event.0585
days = 1
}
}
}
stress_impact = {
patient = miniscule_stress_impact_loss
impatient = minor_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 20
highest_skill = intrigue
intrigue >= decent_skill_rating
}
modifier = {
add = 70
highest_skill = intrigue
intrigue >= 16
}
}
}
#Try to lie about it
option = {
name = ep3_contract_event.0580.b
duel = {
skills = { diplomacy intrigue }
target = scope:task_contract_employer
50 = { #Your lie works
desc = ep3_contract_event.0580.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractsuccess
add_character_flag = contract_success_flag
add_character_flag = lied_about_secret_flag
trigger_event = {
id = ep3_contract_event.0585
days = 1
}
}
50 = { #They know you're lying
desc = ep3_contract_event.0580.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractfailure
add_character_flag = contract_failure_flag
trigger_event = {
id = ep3_contract_event.0585
days = 1
}
}
}
stress_impact = {
deceitful = minor_stress_impact_loss
honest = medium_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 90
diplomacy >= scope:task_contract_employer.diplomacy
intrigue >= scope:task_contract_employer.intrigue
}
}
}
#Threaten them
option = {
name = ep3_contract_event.0580.c
flavor = ep3_contract_event.0580.c.tt
if = {
limit = {
scope:task_contract_employer = {
NOT = {
any_secret = { }
}
}
}
duel = {
skill = prowess
target = scope:secret_haver
50 = { #Your intimidation works
desc = ep3_contract_event.0580.c.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
modifier = {
dread > 25
add = 10
}
modifier = {
dread > 50
add = 10
}
modifier = {
dread > 75
add = 10
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractsuccess
add_character_flag = contract_success_flag
scope:secret = {
reveal_to_without_events_effect = {
CHARACTER = root
}
}
trigger_event = {
id = ep3_contract_event.0585
days = 1
}
}
50 = { #They aren't impressed
desc = ep3_contract_event.0580.c.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractfailure
add_character_flag = contract_failure_flag
trigger_event = {
id = ep3_contract_event.0585
days = 1
}
}
}
}
else = {
duel = {
skill = prowess
target = scope:secret_haver
10 = { #Your intimidation works
desc = ep3_contract_event.0580.c.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 1
custom_tooltip = ep3_contract_event.0560.contractsuccess
add_character_flag = contract_success_flag
scope:secret = {
reveal_to_without_events_effect = {
CHARACTER = root
}
}
trigger_event = {
id = ep3_contract_event.0585
days = 1
}
}
80 = { #They try to cut a deal...
desc = ep3_contract_event.0580.c.neutral
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 10
hidden_effect = { #For a decent reward
scope:secret_haver = {
add_gold = { 50 100 }
}
}
custom_tooltip = ep3_contract_event.0580.c.neutral.tt
trigger_event = {
id = ep3_contract_event.0581
days = 1
}
}
10 = { #They aren't impressed
desc = ep3_contract_event.0580.c.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 1
custom_tooltip = ep3_contract_event.0560.contractfailure
add_character_flag = contract_failure_flag
trigger_event = {
id = ep3_contract_event.0585
days = 1
}
}
}
}
stress_impact = {
brave = miniscule_stress_impact_loss
craven = miniscule_stress_impact_gain
}
ai_chance = {
base = 0
modifier = {
add = 100
prowess > {
value = scope:secret_haver.prowess
add = 3
}
}
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
# Find Secret - Secret Haver Deal Proposal
ep3_contract_event.0581 = {
type = character_event
title = ep3_contract_event.0581.t
desc = ep3_contract_event.0581.desc
theme = intrigue
override_background = {
reference = temple
}
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:secret_haver
animation = scheme
}
lower_center_portrait = {
character = scope:task_contract_employer
}
immediate = {
set_contract_scopes_effect = yes
scope:task_contract_employer = {
random_secret = {
save_scope_as = employer_secret
}
}
hidden_effect = {
scope:secret_haver = {
random_dummy_gender_effect = yes
create_artifact_ring_effect = {
OWNER = scope:dummy_gender
SMITH = scope:dummy_gender
}
}
}
}
#Turn down the deal
option = {
name = ep3_contract_event.0581.a
custom_tooltip = ep3_contract_event.0560.contractsuccess
add_character_flag = contract_success_flag
scope:secret = {
reveal_to_without_events_effect = {
CHARACTER = root
}
}
trigger_event = {
id = ep3_contract_event.0585
days = 1
}
stress_impact = {
honest = miniscule_stress_impact_loss
deceitful = minor_stress_impact_gain
}
ai_chance = {
base = 10
}
}
#Leave with his rewards
option = {
name = ep3_contract_event.0581.b
scope:secret_haver = {
pay_short_term_gold = {
target = root
gold = scope:secret_haver.gold
}
}
scope:newly_created_artifact = {
set_owner = root
}
scope:employer_secret = {
reveal_to_without_events_effect = {
CHARACTER = root
}
}
custom_tooltip = ep3_contract_event.0560.contractfailure
scope:task_contract = {
complete_task_contract = failure_standard
}
stress_impact = {
arbitrary = minor_stress_impact_loss
just = medium_stress_impact_gain
}
ai_chance = {
base = 10
}
}
}
# Find Secret - Resolution
ep3_contract_event.0585 = {
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = { has_character_flag = contract_success_flag }
desc = ep3_contract_event.0585.t.success
}
triggered_desc = {
trigger = { has_character_flag = contract_failure_flag }
desc = ep3_contract_event.0585.t.failure
}
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { has_character_flag = lied_about_secret_flag }
desc = ep3_contract_event.0585.desc.liedsuccessfully
}
triggered_desc = {
trigger = { has_character_flag = contract_success_flag }
desc = ep3_contract_event.0585.desc.success
}
triggered_desc = {
trigger = { has_character_flag = contract_failure_flag }
desc = ep3_contract_event.0585.desc.failure
}
}
}
theme = intrigue
override_background = {
reference = council_chamber
}
left_portrait = {
character = root
triggered_animation = {
trigger = {
NOT = {
has_character_flag = contract_failure_flag
}
}
animation = steward
}
animation = stress
}
right_portrait = {
character = scope:task_contract_employer
triggered_animation = {
trigger = {
root = {
has_character_flag = contract_success_flag
}
}
animation = ecstasy
}
animation = anger
}
immediate = {
set_contract_scopes_effect = yes
if = {
limit = {
has_character_flag = contract_failure_flag
}
scope:task_contract = {
complete_task_contract = failure_standard
}
}
else = {
scope:task_contract = {
complete_task_contract = success_standard
}
}
}
option = {
name = ep3_contract_event.0585.a
trigger = {
NOT = {
has_character_flag = contract_failure_flag
}
}
if = {
limit = {
NOT = {
has_character_flag = lied_about_secret_flag
}
}
scope:secret = {
reveal_to_without_events_effect = {
CHARACTER = scope:task_contract_employer
}
}
}
else = {
hidden_effect = {
scope:secret_haver = {
random_list = {
1 = { add_secret = { type = secret_cannibal } }
1 = { add_secret = { type = secret_witch } }
1 = { add_secret = { type = secret_non_believer } }
}
}
}
scope:secret_haver = {
random_secret = {
limit = {
this != scope:secret
}
reveal_to_without_events_effect = {
CHARACTER = scope:task_contract_employer
}
}
}
}
stress_impact = {
base = miniscule_stress_impact_loss
}
ai_chance = {
base = 10
}
}
option = {
name = ep3_contract_event.0585.b
trigger = {
has_character_flag = contract_failure_flag
}
ai_chance = {
base = 10
}
}
after = {
remove_character_flag = contract_success_flag
remove_character_flag = contract_failure_flag
remove_character_flag = lied_about_secret_flag
}
}
# Eliminate Heir - Intro
ep3_contract_event.0590 = {
type = character_event
title = ep3_contract_event.0590.t
desc = ep3_contract_event.0590.desc
theme = intrigue
override_background = {
reference = alley_night
}
left_portrait = {
character = root
animation = spymaster
}
right_portrait = {
character = scope:heir
animation = paranoia
}
lower_center_portrait = {
character = scope:task_contract_employer
}
immediate = {
set_contract_scopes_effect = yes
scope:task_contract_employer = {
random_heir = {
limit = {
is_primary_heir_of = scope:task_contract_employer
reverse_opinion = {
target = scope:task_contract_employer
value <= high_negative_opinion
}
age > 16 #No murderin' babies
}
save_scope_as = heir
}
}
location = {
save_scope_as = location
}
}
#A knife in the dark...
option = {
name = ep3_contract_event.0590.a
duel = {
skill = prowess
target = scope:heir
50 = { #Stabby stab
desc = ep3_contract_event.0590.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractsuccess
scope:heir = {
death = {
death_reason = death_disappearance
killer = root
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
}
50 = { #They get away, oh no
desc = ep3_contract_event.0590.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractfailure
add_character_flag = contract_failure_flag
scope:heir = {
add_character_modifier = {
modifier = watchful_modifier
years = 5
}
}
scope:task_contract_employer = {
add_character_modifier = {
modifier = ep3_under_suspicion_modifier
years = 5
}
}
trigger_event = {
id = ep3_contract_event.0595
days = 1
}
}
}
stress_impact = {
sadistic = miniscule_stress_impact_loss
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 10
modifier = {
add = 50
highest_skill_including_prowess = prowess
}
}
}
#Maybe just bonk 'em on the head and drag them away somewhere?
option = {
name = ep3_contract_event.0590.b
duel = {
skills = { prowess intrigue }
value = decent_skill_rating
50 = { #Get bonked, nerd
desc = ep3_contract_event.0590.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractsuccess
add_character_flag = contract_success_flag
add_character_flag = knockedout_flag
trigger_event = {
id = ep3_contract_event.0591
days = 1
}
}
50 = { #They get away
desc = ep3_contract_event.0590.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractfailure
add_character_flag = contract_failure_flag
trigger_event = {
id = ep3_contract_event.0595
days = 1
}
}
10 = { #You, uh, bonk a lil hard
desc = ep3_contract_event.0590.b.fatalbonk
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 1
custom_tooltip = ep3_contract_event.0560.contractsuccess
add_character_flag = contract_success_flag
scope:heir = {
death = {
death_reason = death_disappearance
killer = root
}
}
add_stress = minor_stress_gain
scope:task_contract = {
complete_task_contract = success_standard
}
}
}
stress_impact = {
sadistic = medium_stress_impact_gain
compassionate = miniscule_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 50
highest_skill = intrigue
}
}
}
#Try to explain
option = {
name = ep3_contract_event.0590.c
duel = {
skill = diplomacy
target = scope:heir
50 = { #You persuade them to leave
desc = ep3_contract_event.0590.c.success
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 5
custom_tooltip = ep3_contract_event.0560.contractsuccess
add_character_flag = contract_success_flag
add_character_flag = camewillingly_flag
scope:secret = {
reveal_to_without_events_effect = {
CHARACTER = root
}
}
trigger_event = {
id = ep3_contract_event.0591
days = 1
}
}
50 = { #They refuse to go
desc = ep3_contract_event.0590.c.failure
compare_modifier = {
value = scope:duel_value
multiplier = 2.5
min = -49
}
min = 5
hidden_effect = { #For a decent reward
scope:secret_haver = {
add_gold = { 50 100 }
}
}
custom_tooltip = ep3_contract_event.0560.contractfailure
trigger_event = {
id = ep3_contract_event.0595
days = 1
}
}
10 = { #You let slip who put you up to this
desc = ep3_contract_event.0590.c.critfailure
compare_modifier = {
value = scope:duel_value
multiplier = -2.5
min = -49
}
min = 1
custom_tooltip = ep3_contract_event.0560.contractfailure
add_character_flag = contract_failure_flag
scope:heir = {
set_relation_rival = {
target = scope:task_contract_employer
reason = rival_historical
}
}
trigger_event = {
id = ep3_contract_event.0595
days = 1
}
}
}
stress_impact = {
sadistic = major_stress_impact_gain
callous = medium_stress_impact_gain
compassionate = medium_stress_impact_loss
}
ai_chance = {
base = 10
modifier = {
add = 100
highest_skill = diplomacy
}
}
}
#invalidate the contract
option = {
name = ep3_contract_event.0001.invalidate
scope:task_contract = {
invalidate_contract = yes
}
#AI should always try to complete the contract
ai_chance = {
base = 0
}
}
}
# Eliminate Heir - Transition Event
ep3_contract_event.0591 = {
type = character_event
title = ep3_contract_event.0591.t
desc = {
first_valid = {
triggered_desc = {
trigger = { has_character_flag = knockedout_flag }
desc = ep3_contract_event.0591.desc.knockedout
}
triggered_desc = {
trigger = { has_character_flag = camewillingly_flag }
desc = ep3_contract_event.0591.desc.camewillingly
}
}
}
theme = intrigue
override_background = {
reference = terrain_scope
}
left_portrait = {
character = root
animation = personality_honorable
}
right_portrait = {
character = scope:heir
animation = thinking
}
lower_center_portrait = {
character = scope:task_contract_employer
}
immediate = {
set_contract_scopes_effect = yes
scope:task_contract_employer = {
random_sub_realm_barony = {
limit = {
exists = holder
}
save_scope_as = random_barony
}
}
scope:heir = {
add_trait = gallivanter
}
}
#Best of luck!
option = {
name = ep3_contract_event.0591.a
scope:heir = {
add_hook = {
target = root
type = favor_hook
}
start_travel_plan = {
destination = scope:random_barony
}
}
scope:task_contract = {
complete_task_contract = success_standard
}
ai_chance = {
base = 10
}
}
}
# Eliminate Heir - Resolution
ep3_contract_event.0595 = {
type = character_event
title = ep3_contract_event.0595.t
desc = ep3_contract_event.0595.desc
theme = intrigue
override_background = {
reference = council_chamber
}
left_portrait = {
character = root
animation = stress
}
right_portrait = {
character = scope:task_contract_employer
animation = anger
}
immediate = {
set_contract_scopes_effect = yes
scope:task_contract = {
complete_task_contract = failure_standard
}
}
option = {
name = ep3_contract_event.0595.a
stress_impact = {
base = miniscule_stress_impact_gain
}
ai_chance = {
base = 10
}
}
after = {
remove_character_flag = contract_success_flag
remove_character_flag = contract_failure_flag
}
}