unfucking the mod

This commit is contained in:
trashmasteruni 2026-01-06 14:25:21 +01:00
parent cbe3fbcda2
commit d887392b56
1167 changed files with 26982 additions and 13 deletions

View file

@ -0,0 +1,696 @@
namespace = ep3_admin_events
# Event to notify you that your liege has changed government and is no longer admin
ep3_admin_events.0001 = {
type = character_event
title = ep3_admin_events.0001.t
desc = {
desc = ep3_admin_events.0001.intro # Fallback
first_valid = {
triggered_desc = {
trigger = { exists = scope:tribal_gov }
desc = ep3_admin_events.0001.tribal
}
triggered_desc = {
trigger = { exists = scope:feudal_gov }
desc = ep3_admin_events.0001.feudal
}
triggered_desc = {
trigger = { exists = scope:clan_gov }
desc = ep3_admin_events.0001.clan
}
desc = ep3_admin_events.0001.fallback
}
}
theme = administrative
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = stubborn
has_trait = paranoid
}
}
animation = worry
}
animation = thinking
}
right_portrait = {
character = scope:scribe
animation = chancellor
}
lower_right_portrait = scope:liege
trigger = {
is_landed = yes
}
immediate = {
liege = {
save_scope_as = liege
switch = {
trigger = government_has_flag
government_is_tribal = {
save_scope_as = tribal_gov
}
government_is_feudal = {
save_scope_as = feudal_gov
}
government_is_clan = {
save_scope_as = clan_gov
}
}
if = {
limit = {
NOR = {
exists = scope:tribal_gov
exists = scope:feudal_gov
exists = scope:clan_gov
}
}
save_scope_as = feudal_gov
}
if = {
limit = {
exists = cp:councillor_chancellor
cp:councillor_chancellor = { is_available_healthy_ai_adult = yes }
}
cp:councillor_chancellor = { save_scope_as = scribe }
}
else_if = {
limit = {
any_courtier = { is_available_healthy_ai_adult = yes }
}
ordered_courtier = {
limit = {
is_available_healthy_ai_adult = yes
}
order_by = diplomacy
save_scope_as = scribe
}
}
else = {
create_character = {
location = root.capital_province
template = diplomacy_foreign_affairs_focus_friend_template
faith = scope:liege.capital_county.faith
culture = scope:liege.capital_county.culture
save_scope_as = scribe
}
}
}
scope:scribe = {
assign_quirk_effect = yes
}
admin_change_government_effect = yes
}
option = { # I love change
name = ep3_admin_events.0001.a
add_character_modifier = {
modifier = ep3_admin_change_love
years = 15
}
stress_impact = {
lazy = medium_stress_impact_loss
craven = medium_stress_impact_gain
stubborn = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
diligent = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = craven
has_trait = stubborn
has_trait = paranoid
has_trait = diligent
}
}
modifier = {
factor = 2
has_trait = lazy
}
}
}
option = { # I hate this
name = ep3_admin_events.0001.b
add_character_modifier = {
modifier = ep3_admin_change_hate
years = 15
}
stress_impact = {
diligent = medium_stress_impact_loss
brave = medium_stress_impact_gain
lazy = medium_stress_impact_gain
trusting = medium_stress_impact_gain
fickle = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0
OR = {
has_trait = brave
has_trait = lazy
has_trait = trusting
has_trait = fickle
}
}
modifier = {
factor = 2
has_trait = diligent
}
}
}
option = { # I don't care
name = ep3_admin_events.0001.c
ai_chance = {
base = 200
}
}
}
ep3_admin_events.0002 = {
type = character_event
title = ep3_admin_events.0002.t
desc = {
first_valid = {
triggered_desc = { # Liege
trigger = { scope:previous_governor ?= root.liege }
desc = ep3_admin_events.0002.liege
}
triggered_desc = { # Same house died
trigger = {
scope:previous_governor ?= {
is_alive = no
house = root.house
}
}
desc = ep3_admin_events.0002.house_dead
}
triggered_desc = { # Same house fired
trigger = {
scope:previous_governor ?= {
is_alive = yes
house = root.house
}
}
desc = ep3_admin_events.0002.house_alive
}
triggered_desc = { # Diff house died
trigger = {
scope:previous_governor ?= { is_alive = no }
}
desc = ep3_admin_events.0002.dead
}
triggered_desc = { # Diff house fired
trigger = {
scope:previous_governor ?= { is_alive = yes }
}
desc = ep3_admin_events.0002.alive
}
desc = ep3_admin_events.0002.new
}
first_valid = {
triggered_desc = { # Same house
trigger = { scope:previous_governor.house ?= root.house }
desc = ep3_admin_events.0002.house
}
}
#desc = double_line_break
first_valid = {
triggered_desc = {
trigger = { exists = scope:appointment_succession }
desc = ep3_admin_events.0002.appointment_succession
}
triggered_desc = {
trigger = { exists = scope:appointment }
desc = ep3_admin_events.0002.appointment
}
triggered_desc = {
trigger = { exists = scope:conquest }
desc = ep3_admin_events.0002.conquest
}
}
desc = ep3_admin_events.0002.desc
}
theme = administrative
left_portrait = {
character = root
animation = chancellor
}
lower_center_portrait = scope:previous_governor
lower_right_portrait = {
character = root.liege
trigger = {
root.liege != scope:previous_governor
}
}
cooldown = { days = 1 }
trigger = {
this != top_liege
any_held_title = {
tier = root.highest_held_title_tier
is_landless_type_title = no
is_noble_family_title = no
}
NOT = { has_character_flag = successful_governorship_elevation }
}
immediate = {
play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Byzantine_Flavor/ep3_mx_sting_byzantineflavor_become_governor"
ordered_held_title = {
limit = {
tier = root.highest_held_title_tier
is_landless_type_title = no
is_noble_family_title = no
}
save_scope_as = governor_title
previous_holder ?= { save_scope_as = previous_governor }
if = {
limit = {
recent_history = { type = appointment_succession days = 1 }
}
save_scope_as = appointment_succession
}
else_if = {
limit = {
recent_history = { type = appointment days = 1 }
}
save_scope_as = appointment
}
else_if = {
limit = {
recent_history = { type = conquest days = 1 }
}
save_scope_as = conquest
}
}
}
option = {
name = ep3_admin_events.0002.prosperity
trigger = {
is_landed = yes
government_has_flag = government_has_merit
}
flavor = building_buildings_give_merit_tt
custom_tooltip = ep3_admin_events.0002.tt
add_character_modifier = {
modifier = tgp_diligent_governor_modifier
years = 3
}
stress_impact = {
lazy = medium_stress_impact_gain
diligent = miniscule_stress_impact_loss
}
ai_chance = {
base = 0
}
}
option = {
name = ep3_admin_events.0002.inspection
trigger = {
is_landed = yes
government_has_flag = government_has_merit
any_held_title = {
tier = tier_county
is_landless_type_title = no
count >= 1
}
}
flavor = inspections_give_merit_tt
custom_tooltip = ep3_admin_events.0002.tt
custom_tooltip = ep3_admin_events.0002.tt_inspection
add_character_flag = free_inspection
stress_impact = {
lazy = medium_stress_impact_gain
diligent = miniscule_stress_impact_loss
}
ai_chance = {
base = 0
}
}
option = {
name = ep3_admin_events.0002.a
custom_tooltip = ep3_admin_events.0002.tt
stress_impact = {
base = miniscule_stress_impact_loss
}
}
after = {
if = {
limit = {
is_ai = yes
}
domicile ?= {
move_domicile = root.capital_province
}
}
}
}
# Your admin liege changed government, and you have to do so as well
ep3_admin_events.0003 = {
hidden = yes
trigger = {
government_allows = administrative
}
immediate = {
# Let's evaluate and see which event you should get
if = { # If you are still landed and remain a vassal
limit = {
is_landed = yes
liege != root
}
trigger_event = ep3_admin_events.0001
}
else_if = { # You are still landed and become independent
limit = {
is_landed = yes
liege = root
}
trigger_event = ep3_admin_events.0005
}
else_if = { # You became unlanded - Let's go on an adventure!
limit = { # Assuming you are a player
is_landed = no
}
trigger_event = ep3_admin_events.0004
}
}
}
# Event to make admin into adventurers
ep3_admin_events.0004 = {
type = character_event
title = ep3_admin_events.0004.t
desc = {
desc = ep3_admin_events.0004.desc
first_valid = {
triggered_desc = {
trigger = {
exists = scope:reacting_spouse
scope:reacting_spouse = {
OR = {
has_trait = gluttonous
has_trait = greedy
}
}
}
desc = ep3_admin_events.0004.desc_spouse_very_upset
}
triggered_desc = {
trigger = { exists = scope:reacting_spouse }
desc = ep3_admin_events.0004.desc_spouse_upset
}
}
}
theme = landless_adventurer
override_background = { reference = estate }
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = eccentric
has_trait = brave
}
}
#animation = delirium
animation = disappointed
}
animation = disbelief
}
right_portrait = {
character = scope:reacting_spouse
triggered_animation = {
trigger = {
OR = {
has_trait = gluttonous
has_trait = greedy
}
}
animation = crying
}
animation = worry
}
immediate = {
if = { # Destroy your noble family title if you have one
limit = {
any_held_title = {
is_noble_family_title = yes
}
}
every_held_title = {
limit = {
is_noble_family_title = yes
}
save_temporary_scope_as = family_title
prev = { destroy_title = scope:family_title }
}
}
if = { # Become an adventurer
limit = { is_ai = no }
create_landless_adventurer_title_effect = {
REASON = flag:runaway_allowed
FLAVOR_CHAR = root
}
hidden_effect = {
contract_passive_spawn_effect = {
SPAWN_CONTRACTS = 5
}
}
}
if = { # If you are married, let's save your spouse as a scope for some added flavor
limit = {
is_married = yes
any_spouse = {
employer = root
}
}
random_spouse = {
limit = { employer = root }
save_scope_as = reacting_spouse
}
}
}
option = {
name = {
trigger = {
exists = scope:reacting_spouse
scope:reacting_spouse = {
OR = {
has_trait = gluttonous
has_trait = greedy
}
}
}
text = ep3_admin_events.0004.a
}
name = {
trigger = {
exists = scope:reacting_spouse
scope:reacting_spouse = {
NOR = {
has_trait = gluttonous
has_trait = greedy
}
}
}
text = ep3_admin_events.0004.b
}
name = {
trigger = {
NOT = { exists = scope:reacting_spouse }
}
text = ep3_admin_events.0004.c
}
}
}
# Notification event that you became independent
ep3_admin_events.0005 = {
type = character_event
title = ep3_admin_events.0005.t
desc = {
desc = ep3_admin_events.0005.intro
first_valid = {
triggered_desc = {
trigger = { exists = scope:still_admin }
desc = ep3_admin_events.0005.desc_still_admin
}
desc = ep3_admin_events.0005.desc_lost_admin
}
}
theme = administrative
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = fickle
has_trait = lazy
has_trait = paranoid
}
}
animation = stress
}
animation = interested
}
right_portrait = {
character = scope:messenger
animation = chancellor
}
lower_right_portrait = scope:gov_liege
immediate = {
# Let's find a character to bring us these news
if = {
limit = {
exists = cp:councillor_chancellor
cp:councillor_chancellor = { is_available_healthy_ai_adult = yes }
}
cp:councillor_chancellor = { save_scope_as = messenger }
}
else_if = {
limit = {
any_courtier = { is_available_healthy_ai_adult = yes }
}
ordered_courtier = {
limit = {
is_available_healthy_ai_adult = yes
}
order_by = diplomacy
save_scope_as = messenger
}
}
else = {
create_character = {
location = root.capital_province
template = diplomacy_foreign_affairs_focus_friend_template
faith = root.capital_county.faith
culture = root.capital_county.culture
save_scope_as = messenger
}
}
# Show this to make it clear to the player that you became independent
show_as_tooltip = {
create_title_and_vassal_change = {
type = independency
save_scope_as = change
add_claim_on_loss = no
}
becomes_independent = { change = scope:change }
resolve_title_and_vassal_change = scope:change
}
if = { # You are allowed to keep admin as your government
limit = {
highest_held_title_tier >= tier_kingdom
culture ?= { has_cultural_parameter = can_adopt_administrative_government_as_kingdom_tier }
}
save_scope_as = still_admin
}
else = { # You change your government
admin_change_government_effect = yes
}
}
option = {
name = ep3_admin_events.0005.a
# We handle everything in the immediate
}
}
# Reception Hall domicile upgrade provides legitimacy
# We put it in a delayed event to make sure that we can notify the player of the effect, so they can see it
ep3_admin_events.0010 = {
hidden = yes
immediate = {
save_scope_as = legitimacy_gainer
# We first send the notification of the legitimacy being granted
house = {
every_house_member = {
limit = { is_ai = no }
send_interface_message = {
type = event_toast_effect_good
title = ep3_dynasty_legacy_gain_legitimacy_effect_title
left_icon = root
right_icon = root.primary_title
show_as_tooltip = {
scope:legitimacy_gainer = { add_legitimacy = house.var:ep3_legacy_legitimacy_counter }
}
}
}
}
# Then we add the actual legitimacy
add_legitimacy = house.var:ep3_legacy_legitimacy_counter
# Finally, let's reset the counter according to building level
house = {
if = {
limit = {
house_head.domicile ?= { has_domicile_parameter = reception_hall_legitimacy_loss_04 }
}
change_variable = {
name = ep3_legacy_legitimacy_counter
multiply = 0.75
}
}
else_if = {
limit = {
house_head.domicile ?= { has_domicile_parameter = reception_hall_legitimacy_loss_03 }
}
change_variable = {
name = ep3_legacy_legitimacy_counter
multiply = 0.5
}
}
else_if = {
limit = {
house_head.domicile ?= { has_domicile_parameter = reception_hall_legitimacy_loss_02 }
}
change_variable = {
name = ep3_legacy_legitimacy_counter
multiply = 0.25
}
}
else_if = {
limit = {
house_head.domicile ?= { has_domicile_parameter = reception_hall_legitimacy_loss_01 }
}
change_variable = {
name = ep3_legacy_legitimacy_counter
multiply = 0
}
}
}
}
}

View file

@ -0,0 +1,332 @@
namespace = ep3_akolouthos_events
# Varangian-eligible courtier gains Varangian or Varangian gains Loyal
ep3_akolouthos_events.1000 = {
hidden = yes
trigger = {
OR = {
# A varangian who isn't loyal
any_courtier = {
has_trait = varangian
NOT = { has_trait = loyal }
}
#An eligible Varangian who doesn't have the trait
any_courtier = {
NOT = { has_trait = varangian }
ep3_varangian_trigger = yes
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 1
any_court_position_holder = {
type = bodyguard_court_position
NOT = { has_trait = varangian }
ep3_varangian_trigger = yes
}
}
modifier = {
add = 1
any_court_position_holder = {
type = bodyguard_court_position
NOT = { has_trait = loyal }
has_trait = varangian
}
}
modifier = {
add = 1
any_court_position_holder = {
type = akolouthos_court_position
NOT = { has_trait = varangian }
ep3_varangian_trigger = yes
}
}
}
immediate = {
random_court_position_holder = {
type = akolouthos_court_position
save_scope_as = akolouthos
}
#Most important that Varangian Akolouthos becomes Varangian
if = {
limit = {
any_court_position_holder = {
type = akolouthos_court_position
NOT = { has_trait = varangian }
ep3_varangian_trigger = yes
}
}
random_court_position_holder = {
type = akolouthos_court_position
limit = {
NOT = { has_trait = varangian }
ep3_varangian_trigger = yes
}
save_scope_as = trait_getter
}
ep3_send_akolouthos_message_varangian = yes
}
#Second-most important: Varangian bodyguard becomes Varangian
else_if = {
limit = {
any_court_position_holder = {
type = bodyguard_court_position
NOT = { has_trait = varangian }
ep3_varangian_trigger = yes
}
}
random_court_position_holder = {
type = bodyguard_court_position
limit = {
NOT = { has_trait = varangian }
ep3_varangian_trigger = yes
}
save_scope_as = trait_getter
}
ep3_send_akolouthos_message_varangian = yes
}
#Then either add loyal to a Varangian bodyguard or to Akolouthos
else_if = {
limit = {
OR = {
any_court_position_holder = {
type = bodyguard_court_position
has_trait = varangian
NOT = { has_trait = loyal }
}
any_court_position_holder = {
type = akolouthos_court_position
has_trait = varangian
NOT = { has_trait = loyal }
}
}
}
random_list = {
#Add loyal to a Varangian bodyguard
10 = {
trigger = {
any_court_position_holder = {
type = bodyguard_court_position
has_trait = varangian
NOT = { has_trait = loyal }
}
}
random_court_position_holder = {
type = bodyguard_court_position
limit = {
has_trait = varangian
NOT = { has_trait = loyal }
}
save_scope_as = trait_getter
}
ep3_send_akolouthos_message_loyal = yes
}
#Add loyal to a Varangian akolouthos
10 = {
trigger = {
any_court_position_holder = {
type = akolouthos_court_position
has_trait = varangian
NOT = { has_trait = loyal }
}
}
random_court_position_holder = {
type = akolouthos_court_position
limit = {
has_trait = varangian
NOT = { has_trait = loyal }
}
save_scope_as = trait_getter
}
ep3_send_akolouthos_message_loyal = yes
}
}
}
#Add Varangian to some non-Varangian Varangian
else_if = {
limit = {
any_courtier = {
NOT = { has_trait = varangian }
ep3_varangian_trigger = yes
}
}
random_courtier = {
limit = {
NOT = { has_trait = varangian }
ep3_varangian_trigger = yes
}
save_scope_as = trait_getter
}
ep3_send_akolouthos_message_varangian = yes
}
#Add loyal to some non-bodyguard Varangian
else = {
random_courtier = {
limit = {
has_trait = varangian
NOT = { has_trait = loyal }
}
save_scope_as = trait_getter
}
ep3_send_akolouthos_message_loyal = yes
}
}
}
# Akolouthos recruits Varangian
ep3_akolouthos_events.1001 = {
hidden = yes
trigger = {
#Don't really need this if root is swarming in Varangians already
NOT = {
any_courtier_or_guest = {
count >= 8
ep3_varangian_trigger = yes
}
}
}
weight_multiplier = {
base = 1
#Weigh up chances if Varangians are needed to fill posts
modifier = {
add = 1
NOT = {
any_courtier_or_guest = {
count >= 3
ep3_varangian_trigger = yes
}
}
}
}
immediate = {
random_court_position_holder = {
type = akolouthos_court_position
save_scope_as = akolouthos
}
#Find a candidate in the local pool
if = {
limit = {
is_landed = yes
any_pool_character = {
province = root.capital_province
ep3_varangian_trigger = yes
prowess > low_skill_rating
}
}
random_pool_character = {
province = root.capital_province
limit = {
ep3_varangian_trigger = yes
prowess > low_skill_rating
}
save_scope_as = new_varangian
}
scope:new_varangian = {
if = {
limit = {
NOT = { has_trait = varangian }
}
hidden_effect = {
add_trait = varangian
}
}
}
}
#Find a candidate in pools of akolouthos's culture
else_if = {
limit = {
scope:akolouthos = {
ep3_varangian_trigger = yes
}
exists = scope:akolouthos.culture.culture_head
scope:akolouthos.culture.culture_head = {
is_landed = yes
}
any_pool_character = {
province = scope:akolouthos.culture.culture_head.capital_province
ep3_varangian_trigger = yes
prowess >= low_skill_rating
}
}
scope:akolouthos.culture.culture_head = {
save_scope_as = akolouthos_culture_head
}
random_pool_character = {
province = scope:akolouthos_culture_head.capital_province
limit = {
ep3_varangian_trigger = yes
prowess > low_skill_rating
}
save_scope_as = new_varangian
}
scope:new_varangian = {
if = {
limit = {
NOT = { has_trait = varangian }
}
hidden_effect = {
add_trait = varangian
}
}
}
}
#Create a candidate
else_if = {
limit = {
scope:akolouthos = {
ep3_varangian_trigger = yes
}
}
create_character = {
template = varangian_template
location = root.location
culture = scope:akolouthos.culture
faith = scope:akolouthos.faith
dynasty = none
save_scope_as = new_varangian
}
}
else_if = {
limit = {
current_date < 990
}
#Norse
create_character = {
template = varangian_template
location = root.location
culture = culture:norse
faith = root.faith
dynasty = none
save_scope_as = new_varangian
}
}
else = {
#Anglo-Saxon
create_character = {
template = varangian_template
location = root.location
culture = culture:anglo_saxon
faith = root.faith
dynasty = none
save_scope_as = new_varangian
}
}
send_interface_message = {
type = event_martial_good_with_text
title = ep3_akolouthos_events.1001
desc = ep3_akolouthos_events.1001_notification_tooltip
tooltip = akolouthos_effect_tooltip
left_icon = scope:new_varangian
right_icon = scope:akolouthos
add_courtier = scope:new_varangian
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,173 @@
########################
# EP3 Councillors Events
########################
namespace = ep3_councillor_event
# Spouse increases your Influence
ep3_councillor_event.0001 = {
hidden = yes
cooldown = { years = 10 }
trigger = {
valid_spouse_councillor_trigger = yes
government_allows = administrative
}
weight_multiplier = {
base = 1
councillor_spouse_limited_skill_rating_modifier = {
SKILL = intrigue
SCALE = 1
SKILL_RATING = spouse_skill_rating_1
}
}
immediate = {
cp:councillor_spouse = {
save_scope_as = councillor
}
send_interface_message = {
type = msg_spouse_task_good
title = ep3_councillor_event.0001.t
desc = {
triggered_desc = {
trigger = {
scope:councillor = { diplomacy < average_skill_level }
}
desc = spouse_task_diplomacy_good_unskilled_notification_tooltip
}
triggered_desc = {
trigger = {
scope:councillor = { diplomacy >= average_skill_level }
}
desc = spouse_task_diplomacy_good_skilled_notification_tooltip
}
}
right_icon = scope:councillor
change_influence = {
if = {
limit = {
scope:councillor = {
culture = { has_cultural_tradition = tradition_ep3_palace_politics }
}
}
add = medium_influence_gain
}
else = {
add = minor_influence_gain
}
}
}
}
}
# Spouse increases your candidate score for a title if you are in to inherit
ep3_councillor_event.0002 = {
hidden = yes
cooldown = { years = 10 }
trigger = {
valid_spouse_councillor_trigger = yes
government_allows = administrative
top_liege = {
any_sub_realm_title = {
tier >= tier_duchy
is_noble_family_title = no
holder = { government_allows = administrative }
any_title_heir = {
prev = { # For getting the correct title
place_in_line_of_succession = {
target = prev # And again for going back and getting the correct character
value <= 3
}
}
this = root
}
}
}
}
weight_multiplier = {
base = 1
councillor_spouse_limited_skill_rating_modifier = {
SKILL = diplomacy
SCALE = 1
SKILL_RATING = spouse_skill_rating_1
}
}
immediate = {
cp:councillor_spouse = {
save_scope_as = councillor
}
top_liege = {
random_sub_realm_title = {
limit = {
tier >= tier_duchy
is_noble_family_title = no
holder = { government_allows = administrative }
any_title_heir = {
prev = {
place_in_line_of_succession = {
target = prev
value <= 3
}
}
this = root
}
}
save_scope_as = target_title
}
}
save_scope_value_as = {
name = improved_candidate_score
value = {
if = {
limit = {
scope:councillor = {
culture = { has_cultural_tradition = tradition_ep3_palace_politics }
}
}
add = 15
}
else = {
add = 10
}
}
}
send_interface_message = {
type = msg_spouse_task_good
title = ep3_councillor_event.0002.t
desc = {
triggered_desc = {
trigger = {
scope:councillor = { diplomacy < average_skill_level }
}
desc = spouse_task_diplomacy_good_unskilled_notification_tooltip
}
triggered_desc = {
trigger = {
scope:councillor = { diplomacy >= average_skill_level }
}
desc = spouse_task_diplomacy_good_skilled_notification_tooltip
}
}
right_icon = scope:councillor
left_icon = scope:target_title
custom_tooltip = ep3_councillor_event.0002.desc
scope:target_title = {
change_appointment_investment = {
target = root
value = scope:improved_candidate_score
}
}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
namespace = ep3_frankokratia_events

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,328 @@
namespace = ep3_laamp_flavor_oltner
scripted_trigger suitable_pool_marriage_trigger = {
save_temporary_scope_as = pool_marriage_target
is_physically_able_adult = yes
allowed_to_marry_character_gender_trigger = { CHARACTER = $FOLLOWER_TARGET$ }
$FOLLOWER_TARGET$ ?= { allowed_to_marry_character_gender_trigger = { CHARACTER = prev } }
are_characters_sensible_lovers_trigger = { INSTIGATING_LOVER = $FOLLOWER_TARGET$ TARGET_OF_LOVE = scope:pool_marriage_target }
is_married = no
can_marry_trigger = yes
is_concubine = no
NOT = {
exists = betrothed
}
has_no_particular_noble_roots_trigger = yes
}
scripted_trigger suitable_follower_marriage_character_trigger = {
is_physically_able_adult = yes
this != root
is_married = no
can_marry_trigger = yes
is_concubine = no
age <= 50
health >= fine_health
NOR = {
house = root.house
is_close_family_of = root
exists = betrothed
has_relation_rival = root
}
save_temporary_scope_as = entourage_member
any_pool_character = {
province = root.location
age <= 40
health >= fine_health
suitable_pool_marriage_trigger = { FOLLOWER_TARGET = scope:entourage_member }
}
}
# A Follower's Heart
ep3_laamp_flavor_oltner.0001 = {
type = character_event
title = ep3_laamp_flavor_oltner.3001.t
desc = ep3_laamp_flavor_oltner.3001.desc
theme = marriage
override_background = { reference = market_scope }
left_portrait = {
character = scope:entourage_to_marry_2
animation = beg
camera = camera_event_very_left
}
right_portrait = {
character = scope:marriage_material
animation = dismissal
camera = camera_event_right_pointing_left
}
cooldown = { years = 10 }
trigger = {
has_government = landless_adventurer_government
location = {
has_holding = yes
}
any_courtier = {
suitable_follower_marriage_character_trigger = yes
}
}
immediate = {
save_scope_as = root_char
random_courtier = {
limit = {
suitable_follower_marriage_character_trigger = yes
}
save_scope_as = entourage_to_marry_2
}
random_pool_character = {
province = root.location
limit = {
suitable_pool_marriage_trigger = { FOLLOWER_TARGET = scope:entourage_to_marry_2 }
}
save_scope_as = marriage_material
}
location.county.title_province = { save_scope_as = background_market_scope }
}
option = { # Tell them to pay it themselves
name = ep3_laamp_flavor_oltner.0001.a
trigger = {
scope:entourage_to_marry_2.gold >= {
add = scope:marriage_material.sum_of_all_skills_and_prowess_value
}
}
scope:entourage_to_marry_2 = {
remove_short_term_gold = {
add = scope:marriage_material.sum_of_all_skills_value
add = scope:marriage_material.prowess
}
}
add_courtier = scope:marriage_material
scope:entourage_to_marry_2 = {
if = {
limit = {
is_female = yes
is_lowborn = no
scope:marriage_material = {
is_lowborn = yes
}
}
marry_matrilineal = scope:marriage_material
}
else_if = {
limit = {
is_male = yes
is_lowborn = yes
scope:marriage_material = {
is_lowborn = no
}
}
marry_matrilineal = scope:marriage_material
}
else = {
marry = scope:marriage_material
}
}
ai_chance = {
base = 100
}
}
option = { # Pay the dowry
name = ep3_laamp_flavor_oltner.0001.b
stress_impact = {
generous = massive_stress_impact_loss
greedy = medium_stress_impact_gain
}
remove_short_term_gold = {
add = scope:marriage_material.sum_of_all_skills_and_prowess_value
}
add_courtier = scope:marriage_material
scope:entourage_to_marry_2 = {
if = {
limit = {
is_female = yes
is_lowborn = no
scope:marriage_material = {
is_lowborn = yes
}
}
marry_matrilineal = scope:marriage_material
}
else_if = {
limit = {
is_male = yes
is_lowborn = yes
scope:marriage_material = {
is_lowborn = no
}
}
marry_matrilineal = scope:marriage_material
}
else = {
marry = scope:marriage_material
}
progress_towards_friend_effect = {
CHARACTER = root
OPINION = 0
REASON = friend_helped_me_marry
}
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 50
}
}
scope:marriage_material = { save_scope_as = relationship_reason_involved_character }
clear_saved_scope = relationship_reason_involved_character
ai_chance = {
base = 10
modifier = {
factor = 0
OR = {
has_trait = greedy
gold <= {
add = scope:marriage_material.sum_of_all_skills_and_prowess_value
multiply = 2
}
}
}
}
}
option = { # Convince them to run away with you
name = ep3_laamp_flavor_oltner.0001.c
skill = intrigue
stress_impact = {
generous = medium_stress_impact_gain
}
duel = {
skill = intrigue
value = high_skill_rating
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep3_laamp_flavor_oltner.0001.c.success
send_interface_toast = {
title = ep3_laamp_flavor_oltner.0001.c.success
left_icon = scope:entourage_to_marry_2
right_icon = scope:marriage_material
add_courtier = scope:marriage_material
scope:entourage_to_marry_2 = {
if = {
limit = {
is_female = yes
is_lowborn = no
scope:marriage_material = {
is_lowborn = yes
}
}
marry_matrilineal = scope:marriage_material
}
else_if = {
limit = {
is_male = yes
is_lowborn = yes
scope:marriage_material = {
is_lowborn = no
}
}
marry_matrilineal = scope:marriage_material
}
else = {
marry = scope:marriage_material
}
progress_towards_friend_effect = {
CHARACTER = root
OPINION = 0
REASON = friend_helped_me_marry
}
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 50
}
}
scope:marriage_material = { save_scope_as = relationship_reason_involved_character }
clear_saved_scope = relationship_reason_involved_character
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep3_laamp_flavor_oltner.0001.c.failure
send_interface_toast = {
title = ep3_laamp_flavor_oltner.0001.c.failure
left_icon = scope:entourage_to_marry_2
right_icon = scope:marriage_material
scope:entourage_to_marry_2 = {
add_stress = medium_stress_gain
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -30
}
}
}
}
}
ai_chance = {
base = 10
modifier = {
factor = 0
has_trait = generous
}
}
}
option = { # Ignore your follower
name = ep3_laamp_flavor_oltner.0001.d
stress_impact = {
compassionate = medium_stress_impact_gain
generous = medium_stress_impact_gain
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
chaste = minor_stress_impact_loss
shy = minor_stress_impact_loss
}
scope:entourage_to_marry_2 = {
add_opinion = {
target = root
modifier = heartbroken_opinion
opinion = -30
}
}
ai_chance = {
base = 10
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = generous
}
}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,521 @@
namespace = ep3_roman_restoration
#######################################
###
### EP3 RESTORE ROME STORY CYCLE EVENTS
### by Chad Uhl
###
### 0100 Justinian's Dream
### 0101-0109 Rome Reformed Notifications
### 0300-0590 Post-Restoration Difficulties
###
#######################################
# Justinian's Dream
# Event fired on story cycle setup informing the player that they can form the roman empire
ep3_roman_restoration.0001 = {
type = character_event
title = ep3_roman_restoration.0001.t
desc = ep3_roman_restoration.0001.desc
theme = emperor
override_background = {
trigger = { capital_county = title:c_byzantion }
reference = ep3_constantinople
}
left_portrait = {
character = root
animation = emotion_thinking_scepter
}
trigger = {
NOT = { has_global_variable = flag_restored_roman_empire }
}
option = {
name = ep3_roman_restoration.0001.a
custom_tooltip = ep3_roman_restoration.0001.a.tt
decision:restore_roman_empire_decision = {
open_view_data = {
view = decision_detail
player = root
}
}
}
}
# Should I LARP or nah?
ep3_roman_restoration.0100 = {
type = character_event
window = fullscreen_event
title = ep3_roman_restoration.0100.t
desc = ep3_roman_restoration.0100.desc
theme = emperor
override_background = { reference = ep3_fullscreen_restore_rome }
immediate = {
save_scope_as = scoped_emperor
}
option = { # LARP (Hard Mode)
name = ep3_roman_restoration.0100.a
custom_tooltip = ep3_roman_restoration.hard_mode
custom_tooltip = ep3_roman_restoration.end_hard_mode
custom_tooltip = ep3_roman_restoration.invasion_cb
every_held_title = {
limit = {
is_head_of_faith = yes
}
root = {
destroy_title = prev
}
}
set_character_faith = faith:hellenic_pagan
primary_title = { set_state_faith = faith:hellenic_pagan }
every_held_title = {
custom = custom.every_held_county
title_tier = county
set_county_faith = faith:hellenic_pagan
}
every_vassal = {
custom = custom.every_vassal
limit = {
NOT = {
any_held_title = {
is_head_of_faith = yes # you cannot convert the Ecumenical Patriarch, sorry
}
}
}
custom_tooltip = {
text = may_choose_to_convert_hellenic_desc
run_interaction = { # We use the same interaction as when creating a new faith to keep a consistent behaviour, since that is essentially what you're doing here
interaction = ask_for_conversion_interaction
actor = root
recipient = this
execute_threshold = accept
}
}
}
custom_tooltip = {
text = ep3_roman_restoration.household_gods_tenet
set_global_variable = household_gods_tenet_unlocked
}
custom_tooltip = {
text = uses_custom_caesar_flavourization_tt
set_variable = uses_custom_caesar_flavourization
}
if = {
limit = {
any_owned_story = { type = ep3_story_cycle_restoring_rome }
}
random_owned_story = {
type = ep3_story_cycle_restoring_rome
set_variable = roman_empire_hard_mode
}
}
}
option = { # Roleplay option (become Hellenic without Hard Mode)
name = ep3_roman_restoration.0100.c
custom_tooltip = ep3_roman_restoration.easy_mode
every_held_title = {
limit = {
is_head_of_faith = yes
}
root = {
destroy_title = prev
}
}
set_character_faith = faith:hellenic_pagan
primary_title = { set_state_faith = faith:hellenic_pagan }
every_held_title = {
custom = custom.every_held_county
title_tier = county
set_county_faith = faith:hellenic_pagan
}
every_vassal = {
custom = custom.every_vassal
limit = {
NOT = {
any_held_title = {
is_head_of_faith = yes # you cannot convert the Ecumenical Patriarch, sorry
}
}
}
custom_tooltip = {
text = may_choose_to_convert_hellenic_desc
run_interaction = { # We use the same interaction as when creating a new faith to keep a consistent behaviour, since that is essentially what you're doing here
interaction = ask_for_conversion_interaction
actor = root
recipient = this
execute_threshold = accept
}
}
}
custom_tooltip = {
text = ep3_roman_restoration.household_gods_tenet
set_global_variable = household_gods_tenet_unlocked
}
custom_tooltip = {
text = uses_custom_caesar_flavourization_tt
set_variable = uses_custom_caesar_flavourization
}
}
option = { # Easy Mode
name = ep3_roman_restoration.0100.b
custom_tooltip = ep3_roman_restoration.easy_mode
}
after = {
create_roman_empire_scripted_effect = yes
set_nickname_effect = { NICKNAME = nick_the_glorious }
# Send narrative fluff to other players (if any).
every_player = {
limit = { this != root }
trigger_event = ep3_roman_restoration.0101
}
}
}
# Some chucklefuck restored Rome
ep3_roman_restoration.0101 = {
type = character_event
window = fullscreen_event
title = roman_restoration.0002.t
desc = {
desc = ep3_roman_restoration.0101.intro
first_valid = {
triggered_desc = {
trigger = { scope:scoped_emperor.primary_title.state_faith ?= faith:hellenic_pagan }
desc = ep3_roman_restoration.0101.hellenic
}
triggered_desc = {
trigger = { scope:scoped_emperor.primary_title.state_faith ?= faith:orthodox }
desc = ep3_roman_restoration.0101.orthodox
}
desc = ep3_roman_restoration.0101.fallback
}
desc = ep3_roman_restoration.0101.outro
}
theme = emperor
override_background = { reference = ep3_fullscreen_restore_rome }
immediate = {
#Same-faith non-empire tier rulers are over-awed.
if = {
limit = { faith = scope:scoped_emperor.primary_title.state_faith }
play_music_cue = "mx_cue_epic_sacral_moment"
}
#Otherwise, this is a tacit statement of imperial threat.
else = { play_music_cue = "mx_cue_combat_2" }
}
option = {
name = ep3_roman_restoration.0101.a
}
}
#######################################
### POST-ROME DIFFICULTIES
# Your inefficient governor messed up, causing mass loss in popular opinion. Can you fix it?
ep3_roman_restoration.0300 = {
type = character_event
title = ep3_roman_restoration.0300.t
desc = ep3_roman_restoration.0300.desc
theme = emperor
left_portrait = {
character = root
animation = anger
}
right_portrait = {
character = scope:inefficient_governor
animation = shock
}
cooldown = { years = 20 }
immediate = {
ordered_vassal = {
limit = {
is_governor = yes
is_ai = yes
}
order_by = { # Mostly sort by governor efficiency
value = governor_efficiency
multiply = -10
# Prefer governors with a larger realm size for more difficulty
add = sub_realm_size
}
save_scope_as = inefficient_governor
}
custom_tooltip = ep3_roman_restoration.0300.efficiency
}
option = { # Stewardship Challenge
name = ep3_roman_restoration.0300.a
duel = {
skill = stewardship
value = excellent_skill_level
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
type = event_toast_effect_good
title = ep3_roman_restoration.0300.a.success
left_icon = scope:inefficient_governor
right_icon = scope:inefficient_governor.primary_title
scope:inefficient_governor = {
every_sub_realm_county = {
custom = ep3_roman_restoration.0300.every_sub_realm_county
add_county_modifier = {
modifier = restore_rome_recuperated_county_opinion_modifier
years = 10
}
}
}
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_roman_restoration.0300.a.failure
left_icon = scope:inefficient_governor
right_icon = scope:inefficient_governor.primary_title
scope:inefficient_governor = {
every_sub_realm_county = {
custom = ep3_roman_restoration.0300.every_sub_realm_county
add_county_modifier = {
modifier = restore_rome_devastated_county_opinion_modifier
years = 10
}
}
}
}
}
}
}
option = { # Fire the Governor
name = ep3_roman_restoration.0300.b
change_influence = massive_influence_loss
save_scope_as = actor
scope:inefficient_governor = {
save_scope_as = recipient
primary_title = { save_scope_as = landed_title }
}
save_scope_value_as = {
name = hook
value = no
}
scope:inefficient_governor = {
every_sub_realm_county = {
custom = ep3_roman_restoration.0300.every_sub_realm_county
add_county_modifier = {
modifier = restore_rome_recuperated_county_opinion_modifier
years = 10
}
}
force_step_down_landed_titles = yes
}
}
option = { # Opt-Out
name = ep3_roman_restoration.0300.c
scope:inefficient_governor = {
every_sub_realm_county = {
custom = ep3_roman_restoration.0300.every_sub_realm_county
add_county_modifier = {
modifier = restore_rome_lowered_county_opinion_modifier
years = 10
}
}
}
stress_impact = {
base = medium_stress_impact_loss
lazy = minor_stress_impact_loss
diligent = medium_stress_impact_gain
ambitious = minor_stress_impact_gain
}
}
}
# Every 10-30 years, a random kingdom will raid you
ep3_roman_restoration.0500 = {
type = character_event
title = ep3_roman_restoration.0500.t
desc = ep3_roman_restoration.0500.desc
theme = emperor
left_portrait = {
character = root
animation = emotion_thinking_scepter
}
right_portrait = {
character = scope:marshal
animation = inspect_weapon
}
lower_center_portrait = scope:target_kingdom
cooldown = { years = { 10 30 } }
trigger = {
exists = cp:councillor_marshal
any_neighboring_top_liege_realm_owner = {
is_ai = yes
is_at_war = no
primary_title = { tier >= tier_kingdom }
NOR = {
is_allied_to = root
any_truce_target = { this = root }
has_relation_friend = root
has_relation_lover = root
}
any_top_realm_border_county = {
any_neighboring_county = {
holder.top_liege = root
NOT = {
title_province = { has_province_modifier = recently_looted_modifier }
}
}
}
}
}
immediate = {
cp:councillor_marshal = { save_scope_as = marshal }
ordered_neighboring_top_liege_realm_owner = {
limit = {
is_ai = yes
is_at_war = no
primary_title = { tier >= tier_kingdom }
any_top_realm_border_county = {
any_neighboring_county = {
holder.top_liege = root
NOT = {
title_province = { has_province_modifier = recently_looted_modifier }
}
}
}
}
order_by = {
value = 1
add = { # inverted opinion since we're looking for ppl who hate you
value = "opinion(root)"
multiply = -1
}
if = {
limit = { can_raid_trigger = yes }
add = 50
}
}
save_scope_as = target_kingdom
}
scope:target_kingdom = {
random_top_realm_border_county = {
limit = {
any_neighboring_county = {
holder.top_liege = root
NOT = {
title_province = { has_province_modifier = recently_looted_modifier }
}
}
}
random_neighboring_county = {
limit = {
holder.top_liege = root
NOT = {
title_province = { has_province_modifier = recently_looted_modifier }
}
}
save_scope_as = target_county
}
}
}
}
option = {
name = ep3_roman_restoration.0500.a
}
after = {
scope:target_kingdom = {
start_war = {
cb = ep3_roman_empire_border_war
target = root
target_title = scope:target_county
}
}
}
}
# Special Bubonic Plague Spawns - Commented out and disabled because this is not very fun
#ep3_roman_restoration.0510 = {
# hidden = yes
#
# immediate = {
# random_realm_county = {
# limit = { exists = holder }
# holder = { save_scope_as = target_holder }
# save_scope_as = infected_county
# title_province = {
# save_scope_as = target_province
# create_epidemic_outbreak = {
# type = bubonic_plague
# intensity = major
# save_scope_as = epidemic
# }
# }
# }
# trigger_event = epidemic_events.1100
# }
#}
# Mongol Invasion Spawns
ep3_roman_restoration.0520 = {
scope = none
hidden = yes
trigger = {
NOR = {
has_global_variable = mongols_have_appeared
any_player = {
THIS = culture:mongol.culture_head
realm_size >= 100
}
}
}
immediate = {
set_global_variable = {
name = mongols_have_appeared
value = yes
}
debug_log = "Mongols appeared!"
debug_log_date = yes
spawn_temujin_character_effect = yes
scope:temujin = {
save_scope_as = story_owner
create_story = story_mongol_invasion
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,528 @@
namespace = ep3_travel_events
##################################################
# EP3 Travel Events
# by James Beaumont
#
# 8000-8009 To Belong Somewhere
scripted_trigger ep3_travel_8000_valid_prince = {
is_courtier_of = $PARENT$
is_adult = yes
age <= 25
is_married = no
could_marry_character_trigger = { CHARACTER = $CHILD$ }
save_temporary_scope_as = temp_prospective_prince
matching_gender_and_sexuality_trigger = {
CHARACTER_1 = scope:temp_prospective_prince
CHARACTER_2 = $CHILD$
}
trait_compatibility = {
target = $CHILD$
value >= medium_positive_trait_compatibility
}
}
scripted_effect ep3_travel_8000_a = {
scope:prince_parent = { add_courtier = scope:romantic_child }
marry_on_realm_law = {
SPOUSE_1 = scope:prospective_prince
SPOUSE_2 = scope:romantic_child
}
}
# To Belong Somewhere
# Young adult child falls in love and wants to stop travelling with you
ep3_travel_events.8000 = {
type = character_event
title = ep3_travel_events.8000.t
desc = {
desc = ep3_travel_events.8000.desc.intro
first_valid = {
triggered_desc = {
trigger = {
scope:romantic_child = {
ai_boldness >= medium_positive_ai_value
}
}
desc = ep3_travel_events.8000.desc.mid2.bold_child
}
desc = ep3_travel_events.8000.desc.mid2.timid_child
}
first_valid = {
triggered_desc = {
trigger = {
OR = {
has_relation_rival = scope:romantic_child
opinion = {
target = scope:romantic_child
value = low_negative_opinion
}
}
}
desc = ep3_travel_events.8000.outro.dislikes_child
}
desc = ep3_travel_events.8000.outro
}
}
theme = travel
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
has_trait = family_first
has_trait = diligent
has_trait = stubborn
}
}
animation = anger
}
triggered_animation = {
trigger = {
OR = {
has_trait = compassionate
has_trait = gallant
}
}
animation = wedding_happy_cry
}
animation = worry
}
right_portrait = {
character = scope:romantic_child
triggered_animation = {
trigger = {
ai_boldness >= medium_positive_ai_value
}
animation = beg
}
triggered_animation = {
trigger = {
ai_boldness < medium_positive_ai_value
}
animation = sadness
}
}
lower_right_portrait = {
character = scope:prospective_prince
}
cooldown = { years = 75 }
trigger = {
has_government = landless_adventurer_government
is_available_travelling = yes
is_location_valid_for_travel_event_on_land = yes
root.location.county.holder = { save_temporary_scope_as = temp_prince_parent }
any_child = {
is_courtier_of = root
is_adult = yes
age <= 25 # An adult but still young
save_temporary_scope_as = temp_child
scope:temp_prince_parent = {
any_child = {
ep3_travel_8000_valid_prince = {
PARENT = scope:temp_prince_parent
CHILD = scope:temp_child
}
}
}
}
}
immediate = {
save_scope_as = laamp
location = {
save_scope_as = location
county.holder = { save_scope_as = prince_parent }
}
random_child = {
limit = {
is_courtier_of = root
is_adult = yes
age <= 25
save_temporary_scope_as = temp_child
scope:prince_parent = {
any_child = {
ep3_travel_8000_valid_prince = {
PARENT = scope:prince_parent
CHILD = scope:temp_child
}
}
}
}
save_scope_as = romantic_child
scope:prince_parent = {
random_child = {
limit = {
ep3_travel_8000_valid_prince = {
PARENT = scope:prince_parent
CHILD = scope:romantic_child
}
}
save_scope_as = prospective_prince
}
}
}
scope:romantic_child = {
set_relation_soulmate = {
target = scope:prospective_prince
reason = soulmate_laamp_adventure
}
}
}
# Goodbye Susan
option = {
name = ep3_travel_events.8000.a
show_as_tooltip = {
ep3_travel_8000_a = yes
}
hidden_effect = {
scope:prince_parent = {
trigger_event = {
id = ep3_travel_events.8001
days = 1
}
}
}
scope:romantic_child = {
progress_towards_friend_effect = {
CHARACTER = root
OPINION = 50
REASON = friend_let_me_go
}
}
stress_impact = {
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
family_first = minor_stress_impact_gain
diligent = minor_stress_impact_gain
stubborn = minor_stress_impact_gain
content = minor_stress_impact_loss
compassionate = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = -1.5
ai_compassion = 1.5
}
}
}
# Convince the young prince/princess to come with you!
option = {
name = ep3_travel_events.8000.b
trigger = {
scope:prince_parent = { is_ai = yes }
has_trait = eccentric
}
add_courtier = scope:prospective_prince
marry_spouse_1_dominant = {
SPOUSE_1 = scope:romantic_child
SPOUSE_2 = scope:prospective_prince
}
scope:prince_parent = {
progress_towards_rival_effect = {
CHARACTER = root
OPINION = -50
REASON = rival_laamp_stole_my_child
}
}
scope:romantic_child = {
progress_towards_friend_effect = {
CHARACTER = root
OPINION = 50
REASON = friend_let_me_go
}
}
stress_impact = {
content = minor_stress_impact_gain
honest = minor_stress_impact_gain
gallant = minor_stress_impact_gain
compassionate = minor_stress_impact_loss
deceitful = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = -1.5
ai_vengefulness = 1.5
ai_compassion = 1.5
}
}
}
# Come along now child
option = {
name = ep3_travel_events.8000.c
if = {
limit = {
scope:romantic_child = {
ai_boldness >= medium_positive_ai_value
}
}
reverse_add_opinion = {
target = scope:romantic_child
modifier = hate_opinion
opinion = -25
}
}
else = {
reverse_add_opinion = {
target = scope:romantic_child
modifier = disappointed_opinion
opinion = -10
}
}
stress_impact = {
content = minor_stress_impact_gain
honest = minor_stress_impact_gain
gallant = minor_stress_impact_gain
compassionate = minor_stress_impact_loss
deceitful = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 1.5
ai_vengefulness = 1.5
ai_compassion = -1.5
}
}
}
}
# Roots of My Own
# Holder response
ep3_travel_events.8001 = {
type = character_event
title = ep3_travel_events.8001.t
desc = ep3_travel_events.8001.desc
theme = family
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
has_trait = family_first
has_trait = diligent
has_trait = stubborn
}
}
animation = anger
}
triggered_animation = {
trigger = {
OR = {
has_trait = compassionate
has_trait = gallant
}
}
animation = wedding_happy_cry
}
animation = worry
}
right_portrait = {
character = scope:prospective_prince
animation = beg
}
lower_right_portrait = {
character = scope:romantic_child
}
immediate = {
show_as_tooltip = {
scope:romantic_child = {
set_relation_soulmate = {
target = scope:prospective_prince
reason = soulmate_laamp_adventure
}
}
}
}
# A fine match!
option = {
name = ep3_travel_events.8001.a
ep3_travel_8000_a = yes
stress_impact = {
callous = minor_stress_impact_gain
sadistic = minor_stress_impact_gain
family_first = minor_stress_impact_gain
diligent = minor_stress_impact_gain
stubborn = minor_stress_impact_gain
content = minor_stress_impact_loss
compassionate = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = -1.5
ai_compassion = 1.5
}
}
}
# I forbid this wedding!
option = {
name = ep3_travel_events.8001.b
if = {
limit = {
scope:prospective_prince = {
ai_boldness >= medium_positive_ai_value
}
}
reverse_add_opinion = {
target = scope:prospective_prince
modifier = hate_opinion
opinion = -25
}
}
else = {
reverse_add_opinion = {
target = scope:prospective_prince
modifier = disappointed_opinion
opinion = -10
}
}
hidden_effect = {
scope:laamp = {
trigger_event = {
id = ep3_travel_events.8002
days = 1
}
}
}
stress_impact = {
content = minor_stress_impact_gain
honest = minor_stress_impact_gain
gallant = minor_stress_impact_gain
compassionate = minor_stress_impact_loss
deceitful = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_rationality = 1.5
ai_vengefulness = 1.5
ai_compassion = -1.5
}
}
}
}
# In Another Time
# Laamp notification
ep3_travel_events.8002 = {
type = character_event
title = ep3_travel_events.8002.t
desc = ep3_travel_events.8002.desc
theme = family
left_portrait = {
character = root
animation = disappointed
}
right_portrait = {
character = scope:romantic_child
animation = grief
}
# I'm sorry my dear
option = {
name = ep3_travel_events.8002.a
reverse_add_opinion = {
target = scope:romantic_child
modifier = love_opinion
opinion = 25
}
}
}
# Won't Be Missed
# Do some graverobbing?
ep3_travel_events.8010 = {
type = character_event
title = ep3_travel_events.8010.t
desc = ep3_travel_events.8010.desc
theme = travel
left_portrait = {
character = root
animation = survey
}
override_background = { reference = ce1_catacombs }
cooldown = { years = 15 }
trigger = {
is_landless_ruler = yes
is_available_travelling = yes
location = { has_holding = no }
is_location_valid_for_travel_event_on_land = yes
}
immediate = {
location = { save_scope_as = location }
}
# Oh boy, goodies!
option = {
name = ep3_travel_events.8010.a
duel = {
skill = intrigue
value = medium_skill_rating
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
send_interface_toast = {
title = ep3_travel_events.8010.a.win
left_icon = root
add_gold = medium_gold_value
}
}
25 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 5
send_interface_toast = {
title = ep3_travel_events.8010.a.lose
left_icon = root
reverse_add_opinion = {
target = location.county.holder
modifier = graverobber_opinion
years = 20
}
}
}
}
stress_impact = {
eccentric = medium_stress_impact_gain
lazy = minor_stress_impact_gain
ambitious = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1.5
ai_rationality = 1.5
ai_greed = 1.5
}
}
}
# I'm not risking that!
option = {
name = ep3_travel_events.8010.b
stress_impact = {
content = minor_stress_impact_loss
ambitious = minor_stress_impact_gain
}
add_piety = miniscule_piety_gain
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = -1.5
ai_rationality = -1.5
ai_greed = -1.5
}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,267 @@
namespace = ep3_yearly
scripted_effect transfer_warhorse_story_effect = {
$OWNER$ = {
random_owned_story = {
type = story_cycle_martial_lifestyle_warhorse
make_story_owner = $TARGET$
}
}
$TARGET$ = {
add_character_modifier = { modifier = horse_story_modifier }
add_character_flag = had_warhorse_story
set_variable = {
name = warhorse_modifier_level
value = $OWNER$.var:warhorse_modifier_level
}
}
$OWNER$ = {
hidden_effect = {
remove_character_modifier = horse_story_modifier
remove_variable = warhorse_modifier_level
}
}
}
# Jealous of another governor with the Warhorse event chain
ep3_yearly.1010 = {
type = character_event
title = ep3_yearly.1010.t
desc = {
desc = ep3_yearly.1010.intro
triggered_desc = {
trigger = { culture = culture:greek }
desc = ep3_yearly.1010.greek_flavor
}
desc = ep3_yearly.1010.outro
}
theme = administrative
override_background = { reference = courtyard }
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:horse_owner
animation = jockey_walk
camera = camera_event_horse_right
}
lower_left_portrait = cp:councillor_spymaster
trigger = {
is_ai = no
is_governor = yes
NOT = { owns_story_of_type = story_cycle_martial_lifestyle_warhorse }
liege = {
any_vassal = {
this != root
is_available_ai_adult = yes
is_governor = yes
any_owned_story = {
type = story_cycle_martial_lifestyle_warhorse
exists = var:horse_gender
exists = var:story_cycle_horse_name
}
}
}
}
immediate = {
liege = {
random_vassal = {
limit = {
this != root
is_available_ai_adult = yes
owns_story_of_type = story_cycle_martial_lifestyle_warhorse
}
save_scope_as = horse_owner
}
}
cp:councillor_spymaster ?= { save_scope_as = spymaster }
}
option = { # Offer to buy the horse
name = ep3_yearly.1010.a
show_as_unavailable = {
gold >= 75
}
random_list = {
50 = {
show_chance = no
desc = ep3_yearly.1010.a.tt.success
send_interface_toast = {
type = event_toast_effect_good
title = ep3_yearly.1010.a.tt.success
left_icon = root
right_icon = scope:horse_owner
remove_short_term_gold = major_gold_value
custom_tooltip = ep3_yearly.1010.tt
transfer_warhorse_story_effect = {
OWNER = scope:horse_owner
TARGET = root
}
}
}
50 = {
show_chance = no
desc = ep3_yearly.1010.a.tt.failure
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_yearly.1010.a.tt.failure
left_icon = root
right_icon = scope:horse_owner
change_influence = medium_influence_loss
add_prestige = medium_prestige_loss
}
}
}
}
option = { # Convince the governor that you deserve the horse because of your influence
name = ep3_yearly.1010.b
change_influence = massive_influence_loss
if = {
limit = { influence_level >= 3 }
transfer_warhorse_story_effect = {
OWNER = scope:horse_owner
TARGET = root
}
}
else = {
duel = {
skill = diplomacy
value = high_skill_rating
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep3_yearly.1010.b.tt.success
send_interface_toast = {
type = event_toast_effect_good
title = ep3_yearly.1010.b.tt.success
left_icon = root
right_icon = scope:horse_owner
custom_tooltip = ep3_yearly.1010.tt
transfer_warhorse_story_effect = {
OWNER = scope:horse_owner
TARGET = root
}
add_diplomacy_lifestyle_xp = medium_lifestyle_xp
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep3_yearly.1010.b.tt.failure
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_yearly.1010.b.tt.failure
left_icon = root
right_icon = scope:horse_owner
}
}
}
}
}
option = { # Ask your spymaster to steal the horse for you
trigger = { exists = cp:councillor_spymaster }
name = ep3_yearly.1010.c
flavor = ep3_yearly.1010.c.flavor
cp:councillor_spymaster = {
duel = {
skill = intrigue
value = scope:horse_owner.intrigue
40 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
desc = ep3_yearly.1010.c.tt.success
root = {
send_interface_toast = {
type = event_toast_effect_good
title = ep3_yearly.1010.c.tt.success
left_icon = root
right_icon = scope:horse_owner
custom_tooltip = ep3_yearly.1010.tt
transfer_warhorse_story_effect = {
OWNER = scope:horse_owner
TARGET = root
}
add_intrigue_lifestyle_xp = medium_lifestyle_xp
}
}
}
60 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
desc = ep3_yearly.1010.c.tt.failure
root = {
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_yearly.1010.c.tt.failure
left_icon = root
right_icon = scope:horse_owner
progress_towards_rival_effect = {
REASON = rival_lands_stolen
CHARACTER = scope:horse_owner
OPINION = default_rival_opinion
}
}
}
}
}
}
}
option = { # If I can't have it, neither can you
name = ep3_yearly.1010.d
flavor = ep3_yearly.1010.d.tt
random_list = {
50 = {
desc = ep3_yearly.1010.d.success
send_interface_toast = {
type = event_toast_effect_good
title = ep3_yearly.1010.d.success
custom_tooltip = ep3_yearly.1010.d.dead_horse
scope:horse_owner = {
random_owned_story = {
type = story_cycle_martial_lifestyle_warhorse
end_story = yes
}
}
}
}
50 = {
desc = ep3_yearly.1010.d.failure
send_interface_toast = {
type = event_toast_effect_bad
title = ep3_yearly.1010.d.failure
custom_tooltip = ep3_yearly.1010.d.dead_horse
scope:horse_owner = {
random_owned_story = {
type = story_cycle_martial_lifestyle_warhorse
end_story = yes
}
}
progress_towards_rival_effect = {
REASON = rival_lands_stolen
CHARACTER = scope:horse_owner
OPINION = default_rival_opinion
}
}
}
}
}
}

View file

@ -0,0 +1,9 @@
namespace = ep3_yearly
ep3_yearly.3000 = {
hidden = yes
immediate = {
ep3_ai_castration_effect = yes
}
}