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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,196 @@
namespace = fp3_clan
### EVENT LIST ####################################################################
## 3000 - 3000 Ravaged Tulips by Hugo Cortell
###################################################################################
###################################
# Ravaged Tulips
# By Hugo Cortell
###################################
scripted_trigger is_bad_tulip_stealing_child = {
age > 4 # Baby no steal flower
is_adult = no
is_available = yes
any_close_or_extended_family_member = {
is_available_ai_adult = yes
house = root.house
this != root
}
}
fp3_clan.3000 = {
type = character_event
title = fp3_clan.3000.t
desc = fp3_clan.3000.desc
theme = mental_break
override_background = { reference = garden }
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:fp3_clan_3000_bad_child
animation = war_over_win
}
cooldown = { years = 5 }
weight_multiplier = { # Greatly lower chances if you have no garden
base = 0.4
modifier = {
add = 0.6
capital_province = { has_building_or_higher = royal_garden_01 }
}
}
trigger = {
has_fp3_dlc_trigger = yes
is_landed_or_landless_administrative = yes
culture = { has_cultural_parameter = can_appoint_court_gardener }
house = { any_house_member = { is_bad_tulip_stealing_child = yes } }
}
immediate = {
capital_province = { save_scope_as = fp3_clan_3000_loc_loc } # the loc-ation for loc-alization usage
house = {
random_house_member = {
limit = { is_bad_tulip_stealing_child = yes }
save_scope_as = fp3_clan_3000_bad_child
random_close_or_extended_family_member = {
limit = { this != root }
save_scope_as = fp3_clan_3000_random_family_member
}
}
}
}
option = { # You can keep them, and I'll pay to plant new ones
name = fp3_clan.3000.a
stress_impact = {
wrathful = minor_stress_impact_gain
vengeful = minor_stress_impact_gain
arrogant = minor_stress_impact_gain
}
scope:fp3_clan_3000_random_family_member = {
add_opinion = {
target = root
modifier = kindness_opinion
opinion = 20
}
}
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:fp3_clan_3000_random_family_member
VALUE = minor_unity_gain
DESC = clan_unity_generic_increased_fallback.desc
REVERSE_NON_HOUSE_TARGET = no
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_compassion = 1
ai_sociability = 1
}
}
}
option = { # GIVE THEM BACK YOU BUGGER
name = fp3_clan.3000.b
stress_impact = {
compassionate = minor_stress_impact_gain
patient = minor_stress_impact_gain
content = minor_stress_impact_gain
}
scope:fp3_clan_3000_random_family_member = {
add_opinion = {
target = root
modifier = scolded_my_child_opinion # Not exact, but close
}
}
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:fp3_clan_3000_random_family_member
VALUE = minor_unity_loss
DESC = clan_unity_generic_decreased_fallback.desc
REVERSE_NON_HOUSE_TARGET = no
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1
ai_greed = 1
}
}
}
option = { # Alright, time to work the fields, kid
name = fp3_clan.3000.c
flavor = fp3_clan.3000.c.flavor
trigger = { has_trait = lifestyle_gardener }
stress_impact = { lazy = minor_stress_impact_loss }
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:fp3_clan_3000_random_family_member
VALUE = minor_unity_gain
DESC = clan_unity_generic_increased_fallback.desc
REVERSE_NON_HOUSE_TARGET = no
}
scope:fp3_clan_3000_random_family_member = {
add_opinion = {
target = root
modifier = kindness_opinion
opinion = 10
}
}
if = { # In the very rare case that the child already knows about plants and stuff
limit = { scope:fp3_clan_3000_bad_child = { has_trait = lifestyle_gardener } }
add_opinion = {
target = root
modifier = fp3_taught_me_gardening_opinion
}
}
else = {
random = {
chance = {
value = 25
add = {
value = learning
multiply = 2
}
}
send_interface_toast = {
type = event_toast_effect_good
title = vassal.2001.t
left_icon = ROOT
right_icon = scope:fp3_clan_3000_bad_child
scope:fp3_clan_3000_bad_child = { add_trait = lifestyle_gardener }
}
scope:fp3_clan_3000_bad_child = {
add_opinion = {
target = root
modifier = fp3_taught_me_gardening_opinion
}
}
}
}
ai_chance = { base = 1000 }
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,727 @@
namespace = fp3_clan
########EVENT INDEX############
#fp3_clan.8015 - Scandalous Scion
#fp3_clan.8016 - Hammam Havoc
#fp3_clan_8017 - A Questionable Position
####################
###################################
# Scandalous Scion
# By Ola Jentzsch
###################################
scripted_trigger fp3_scandalous_scion_trigger = {
NOT = { liege ?= root }
is_available_ai_adult = yes
is_landed = no
age < 45
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root }
ai_sociability > low_negative_ai_value
ai_compassion < low_positive_ai_value
NOR = {
is_child_of = root
this = root
}
any_parent = {
is_available_ai_adult = yes
NOT = { is_close_family_of = root }
}
}
fp3_clan.8015 = {
type = character_event
title = fp3_clan.8015.t
desc = fp3_clan.8015.desc
theme = martial
left_portrait = {
character = scope:scandalous_scion
animation = dismissal
triggered_animation = {
trigger = {
OR = {
has_trait = craven
has_trait = shy
ai_boldness <= low_positive_ai_value
}
}
animation = shame
}
outfit_tags = {
military_outfit
}
}
right_portrait = {
character = scope:concerned_parent
animation = stress
}
lower_left_portrait = root
override_background = { reference = throne_room }
trigger = {
has_fp3_dlc_trigger = yes
is_landed = yes
government_has_flag = government_is_clan
is_available_adult = yes
is_house_head = yes
#culture = { has_cultural_tradition = tradition_futuwaa }
house = {
any_house_member = {
fp3_scandalous_scion_trigger = yes
}
}
}
cooldown = { years = 10 }
immediate = {
house = {
random_house_member = {
limit = {
fp3_scandalous_scion_trigger = yes
}
save_scope_as = scandalous_scion
random_parent = {
limit = {
is_available_ai_adult = yes
NOT = { is_close_family_of = root }
}
save_scope_as = concerned_parent
}
}
}
}
option = {
name = fp3_clan.8015.a
add_courtier = scope:scandalous_scion
scope:scandalous_scion = {
add_character_modifier = {
modifier = fp3_better_company_modifier
years = 10
}
}
scope:concerned_parent = {
add_opinion = {
target = root
opinion = 25
modifier = fp3_grateful_for_discretion_opinion
}
}
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:scandalous_scion
VALUE = minor_unity_gain
DESC = clan_unity_scandalous_scion_desc
REVERSE_NON_HOUSE_TARGET = no
}
stress_impact = {
paranoid = minor_stress_impact_gain
shy = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = 0.5
ai_greed = -0.5
ai_sociability = 1
}
}
}
option = {
name = fp3_clan.8015.b
scope:concerned_parent = {
add_opinion = {
target = root
opinion = -20
modifier = disappointed_opinion
}
}
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:scandalous_scion
VALUE = minor_unity_loss
DESC = clan_unity_scandalous_scion_ignored_problem_desc
REVERSE_NON_HOUSE_TARGET = no
}
stress_impact = {
generous = minor_stress_impact_gain
trusting = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.5
ai_greed = -0.5
ai_sociability = -1
}
}
}
}
###################################
# Hammam Havoc
# By Ola Jentzsch
###################################
scripted_trigger fp3_scandalous_traits_trigger = {
OR = {
has_trait = deviant
has_trait = drunkard
has_trait = rakish
has_trait = hashishiyah
}
}
scripted_trigger fp3_suitable_for_islamic_bathhouse_events_trigger = {
OR = { #checking for adherence to Islamic / Zoroastrian gender norms
AND = {
root = { is_male = yes }
is_male = yes
}
AND = {
root = { is_female = yes }
is_female = yes
}
}
}
fp3_clan.8016 = {
type = character_event
title = fp3_clan.8016.t
desc = {
desc = fp3_clan.8016.opening_desc
first_valid = {
triggered_desc = {
trigger = {
scope:scandalous_clan_member = {
has_trait = deviant
}
}
desc = fp3_clan.8016.deviant_desc
}
triggered_desc = {
trigger = {
scope:scandalous_clan_member = {
has_trait = drunkard
}
}
desc = fp3_clan.8016.drunkard_desc
}
triggered_desc = {
trigger = {
scope:scandalous_clan_member = {
has_trait = rakish
}
}
desc = fp3_clan.8016.rakish_desc
}
triggered_desc = {
trigger = {
scope:scandalous_clan_member = {
has_trait = hashishiyah
}
}
desc = fp3_clan.8016.hashishiyah_desc
}
}
desc = fp3_clan.8016.ending_desc
}
theme = faith
left_portrait = {
character = root
animation = disbelief
triggered_animation = {
trigger = {
OR = {
has_trait = craven
has_trait = shy
has_trait = paranoid
stress > medium_stress
}
}
animation = worry
}
}
right_portrait = {
character = scope:chaplain
animation = eyeroll
}
lower_left_portrait = scope:scandalous_clan_member
override_background = { reference = bath_house }
override_effect_2d = {
reference = smoke
}
trigger = {
has_fp3_dlc_trigger = yes
is_available_adult = yes
is_dynast = yes
government_has_flag = government_is_clan
faith = {
OR = {
has_doctrine_parameter = deviancy_illegal
has_doctrine_parameter = deviancy_shunned
}
}
house = {
any_house_unity_member = {
this != root
is_available_ai_adult = yes
fp3_scandalous_traits_trigger = yes
fp3_suitable_for_islamic_bathhouse_events_trigger = yes
}
}
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = {
is_available_healthy_ai_adult = yes
fp3_scandalous_traits_trigger = no
fp3_suitable_for_islamic_bathhouse_events_trigger = yes
}
}
cooldown = { years = 10 }
immediate = {
house = {
random_house_unity_member = {
limit = {
this != root
is_available_ai_adult = yes
fp3_scandalous_traits_trigger = yes
fp3_suitable_for_islamic_bathhouse_events_trigger = yes
}
save_scope_as = scandalous_clan_member
}
}
cp:councillor_court_chaplain = { save_scope_as = chaplain }
hidden_effect = {
scope:scandalous_clan_member = {
set_location = { location = root.location }
}
}
add_character_flag = is_naked
scope:chaplain = {
add_character_flag = is_naked
}
}
option = {
name = fp3_clan.8016.a
add_piety = medium_piety_gain
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:scandalous_clan_member
VALUE = minor_unity_loss
DESC = clan_unity_denouncement.desc
REVERSE_NON_HOUSE_TARGET = no
}
scope:scandalous_clan_member = {
denounce_effect = { ACTOR = root RECIPIENT = scope:scandalous_clan_member }
}
scope:chaplain = {
add_opinion = {
target = root
opinion = 20
modifier = pleased_opinion
}
}
stress_impact = {
forgiving = minor_stress_impact_gain
compassionate = minor_stress_impact_gain
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_compassion = -0.9
ai_vengefulness = 0.5
ai_zeal = 1
}
}
}
option = {
name = fp3_clan.8016.b
scope:chaplain = {
add_opinion = {
target = root
opinion = -20
modifier = disappointed_opinion
}
}
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:scandalous_clan_member
VALUE = minor_unity_gain
DESC = clan_unity_denouncement_refusal.desc
REVERSE_NON_HOUSE_TARGET = no
}
stress_impact = {
zealous = medium_stress_impact_gain
trusting = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_zeal = -0.5
ai_rationality = 0.8
ai_sociability = 0.5
}
}
}
after = {
remove_character_flag = is_naked
scope:chaplain = {
remove_character_flag = is_naked
}
}
}
###################################
# A Questionable Position
# By Ola Jentzsch
###################################
#Tax collector acting as muhtasib
fp3_clan.8017 = {
type = character_event
title = fp3_clan.8017.t
desc = {
desc = fp3_clan.8017.opening_desc
first_valid = {
triggered_desc = {
trigger = {
scope:tax_collector = {
OR = {
has_trait = diligent
has_trait = zealous
has_trait = chaste
has_trait = just
has_trait = ambitious
ai_zeal >= medium_positive_ai_value
}
}
}
desc = fp3_clan.8017.overly_eager.desc
}
triggered_desc = {
trigger = {
scope:tax_collector = {
OR = {
has_trait = drunkard
has_trait = greedy
has_trait = deceitful
has_trait = arbitrary
AND = {
ai_greed >= medium_positive_ai_value
ai_honor < low_positive_ai_value
}
}
}
}
desc = fp3_clan.8017.corrupt.desc
}
triggered_desc = {
trigger = {
scope:tax_collector = {
NOT = { ai_compassion >= low_positive_ai_value }
OR = {
has_trait = sadistic
has_trait = wrathful
has_trait = callous
ai_vengefulness >= medium_positive_ai_value
}
}
}
desc = fp3_clan.8017.cruel.desc
}
desc = fp3_clan.8017.generic.desc
}
desc = fp3_clan.8017.ending.desc
}
theme = realm
left_portrait = {
character = root
animation = disapproval
triggered_animation = {
trigger = {
OR = {
has_trait = generous
has_trait = compassionate
stress > low_stress
}
}
animation = worry
}
}
right_portrait = {
character = scope:unclan_taxpayer
animation = stress
}
lower_left_portrait = scope:tax_collector
trigger = {
has_fp3_dlc_trigger = yes
is_available_adult = yes
government_has_flag = government_is_clan
has_religion = religion:islam_religion
any_tax_collector = {
is_in_same_clan_as_trigger = { CHARACTER = root }
has_religion = religion:islam_religion
any_tax_collector_vassal = {
NOT = {
is_in_same_clan_as_trigger = { CHARACTER = root }
}
is_landed = yes
}
}
}
immediate = {
random_tax_collector = {
limit = {
is_in_same_clan_as_trigger = { CHARACTER = root }
has_religion = religion:islam_religion
any_tax_collector_vassal = {
NOT = {
is_in_same_clan_as_trigger = { CHARACTER = root }
}
}
}
random_tax_collector_vassal = {
limit = {
NOT = {
is_in_same_clan_as_trigger = { CHARACTER = root }
}
is_landed = yes
}
save_scope_as = unclan_taxpayer
}
save_scope_as = tax_collector
}
}
option = {
name = fp3_clan.8017.a
flavor = fp3_clan_protect_kinsman_flavor
if = {
limit = {
root != house.house_head
}
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:tax_collector
VALUE = minor_unity_gain
DESC = clan_unity_protected_muhtasib_position.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else = {
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:tax_collector
VALUE = medium_unity_gain
DESC = clan_unity_protected_muhtasib_position.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
scope:unclan_taxpayer = {
add_opinion = {
target = root
opinion = -20
modifier = frustrated_opinion
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
zealous = medium_stress_impact_loss
}
ai_chance = {
base = 50
modifier = {
factor = 2
has_trait = zealous
}
modifier = {
factor = 0
OR = {
has_trait = just
has_trait = compassionate
}
}
}
}
option = {
name = fp3_clan.8017.b
flavor = fp3_clan_accuse_accuser_flavor
trigger = {
scope:unclan_taxpayer = { num_sinful_traits = { value > 0 target = root.faith } }
}
add_dread = minor_dread_gain
scope:unclan_taxpayer = {
add_opinion = {
target = root
opinion = -30
modifier = shamed_me_opinion
}
}
stress_impact = {
wrathful = medium_stress_impact_loss
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
factor = 2
has_trait = zealous
}
modifier = {
factor = 0
OR = {
has_trait = trusting
has_trait = compassionate
}
}
}
}
option = {
name = fp3_clan.8017.c
if = {
limit = {
root != house.house_head
}
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:tax_collector
VALUE = minor_unity_loss
DESC = clan_unity_fired_from_muhtasib_position.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else = {
add_clan_unity_interaction_effect = {
CHARACTER = root
TARGET = scope:tax_collector
VALUE = medium_unity_loss
DESC = clan_unity_fired_from_muhtasib_position.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
if = {
limit = {
NOT = {
has_hook_of_type = {
target = scope:unclan_taxpayer
type = favor_hook
}
}
}
add_hook = {
target = scope:unclan_taxpayer
type = favor_hook
}
}
stress_impact = {
trusting = medium_stress_impact_loss
arrogant = minor_stress_impact_gain
callous = minor_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = -0.9
ai_rationality = 0.9
ai_sociability = 0.5
}
}
}
option = {
name = fp3_clan.8017.d
#Low effect opt out that is only needed if the taxpayer is not intimidated because of their sins
trigger = {
scope:unclan_taxpayer = { num_sinful_traits = { value = 0 target = root.faith } }
}
scope:unclan_taxpayer = {
add_opinion = {
target = root
opinion = -10
modifier = disappointed_opinion
}
}
stress_impact = {
trusting = major_stress_impact_gain
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
}
ai_chance = {
base = 50
ai_value_modifier = {
ai_vengefulness = 0.4
ai_greed = 0.6
ai_compassion = -0.5
}
}
}
}

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,153 @@
namespace = fp3_story_cycle_seljuks_invasion_events
### RISE OF THE SELJUKS #############################################
## 0001 Leader and Story Cycle Creation by Maxence Voleau
## 0002 The First Settlers by Hugo Cortell
#####################################################################
###################################
# Setup: we create the leader and start the story cycle
# By Maxence Voleau
###################################
fp3_story_cycle_seljuks_invasion_events.0001 = {
scope = none
hidden = yes
immediate = {
spawn_seljuk_character_effect = yes
scope:lead_seljuk = {
create_story = story_seljuk_invasion
}
}
}
###################################
# The First Settlers
# By Hugo Cortell
###################################
fp3_story_cycle_seljuks_invasion_events.0002 = {
type = character_event
title = fp3_story_cycle_seljuks_invasion_events.0001.t
desc = {
desc = fp3_story_cycle_seljuks_invasion_events.0001.desc
first_valid = {
triggered_desc = {
trigger = { highest_held_title_tier > tier_duchy }
desc = fp3_story_cycle_seljuks_invasion_events.0001.desc_vassal
}
desc = fp3_story_cycle_seljuks_invasion_events.0001.desc_independent
}
}
theme = realm
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:lead_seljuk
animation = personality_honorable
}
immediate = {
save_scope_as = seljuk_victim
random_sub_realm_county = {
limit = {
any_neighboring_county = {
exists = holder
holder.top_liege != scope:seljuk_victim
}
de_jure_liege = scope:fp3_seljuk_settle_target
}
alternative_limit = {
any_neighboring_county = {
exists = holder
holder.top_liege != scope:seljuk_victim
}
any_neighboring_county = { de_jure_liege = scope:fp3_seljuk_settle_target }
}
alternative_limit = {
any_neighboring_county = {
exists = holder
holder.top_liege != scope:seljuk_victim
}
}
random_county_province = {
limit = {
this != scope:fp3_seljuk_settle_target.title_capital_county.title_province
}
save_scope_as = spawn_location
}
}
save_scope_value_as = {
name = victim_strength_modifier
value = {
value = current_military_strength
divide = 10000
add = 1.25
}
}
scope:lead_seljuk = {
#move to the army spawn location, so it's less confusing when you want to see where they are
set_location = scope:spawn_location
var:seljuk_birthplace = { save_scope_as = seljuk_birthplace }
}
}
option = { # Yes - Serve me well!
name = fp3_story_cycle_seljuks_invasion_events.0001.a_liege
fp3_story_cycle_seljuks_invasion_events_grant_seljuks_land_effect = yes
scope:lead_seljuk = {
add_trait = loyal
culture = {
change_cultural_acceptance = {
target = scope:seljuk_victim.culture
value = 30
desc = STEWARD_PROMOTE_CULTURE_ALLOWED_NOMAD_SETTLEMENT
}
}
}
create_seljuk_army_at_peace_effect = yes
debug_log = "Seljuk got the land and were vassalized"
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -0.5
ai_compassion = 0.2
ai_greed = -0.5
ai_energy = -0.5
ai_rationality = 0.3
ai_sociability = 0.3
}
}
}
option = { # No - To war with you!
name = fp3_story_cycle_seljuks_invasion_events.0001.b
# Start war
scope:lead_seljuk = {
start_war = {
casus_belli = fp3_seljuk_invasion_cb
target = root
target_title = scope:fp3_seljuk_settle_target
}
random_character_war = { save_scope_as = war }
}
create_seljuk_army_effect = yes
debug_log = "Seljuk have to win a war"
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.5
ai_energy = 0.5
ai_vengefulness = 0.5
}
}
}
}

View file

@ -0,0 +1,726 @@
namespace = fp3_story_cycle_zanj_rebellion_events
### Ali Ibn Muhammad and Zanj Rebellion Setup
fp3_story_cycle_zanj_rebellion_events.0001 = {
scope = none
hidden = yes
immediate = {
spawn_zanj_leader_character_effect = yes
scope:zanj_leader = {
save_scope_as = story_owner
create_story = story_zanj_rebellion
give_nickname = nick_albaghid
}
title:c_basra.holder = {
add_visiting_courtier = scope:zanj_leader
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0002
}
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0005
days = { 60 120 }
}
}
}
}
### Ali Ibn Muhammad riling up locals in Basra
fp3_story_cycle_zanj_rebellion_events.0002 = {
type = character_event
theme = intrigue
override_background = { reference = wilderness_wetlands }
title = fp3_story_cycle_zanj_rebellion_events.0002.t
desc = fp3_story_cycle_zanj_rebellion_events.0002.desc
left_portrait = {
character = root
animation = marshal
}
right_portrait = {
character = scope:zanj_leader
animation = scheme
}
immediate = {
scope:zanj_leader = {
save_scope_as = outspoken_rebel
}
}
#Try to arrest Ali
option = {
name = fp3_story_cycle_zanj_rebellion_events.0002.a
duel = {
skill = intrigue
target = scope:outspoken_rebel
50 = {
# You arrest Ali Ibn Muhammad
desc = fp3_story_cycle_zanj_rebellion_events.0002.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = fp3_story_cycle_zanj_rebellion_events.0002.a.success
left_icon = root
right_icon = scope:outspoken_rebel
rightfully_imprison_character_effect = {
TARGET = scope:outspoken_rebel
IMPRISONER = root
}
}
inherit_zanj_rebellion_effect = yes
}
50 = {
# Ali Ibn Muhammad escapes
desc = fp3_story_cycle_zanj_rebellion_events.0002.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = fp3_story_cycle_zanj_rebellion_events.0002.a.failure
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
custom_tooltip = fp3_story_cycle_zanj_rebellion_leaves_for_baghdad
left_icon = root
right_icon = scope:outspoken_rebel
}
hidden_effect = {
scope:zanj_leader = {
change_variable = {
name = zanj_rebellion_strength_score
add = 4
}
}
title:c_baghdad.holder = {
hidden_effect = {
title:c_baghdad.holder = {
add_visiting_courtier = scope:outspoken_rebel
}
}
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0003
days = { 30 60 }
}
}
}
}
}
root = {
progress_towards_rival_effect = {
REASON = fp3_zanj_rebellion_opressed_me
CHARACTER = scope:outspoken_rebel
OPINION = default_rival_opinion
}
}
stress_impact = {
paranoid = medium_stress_impact_loss
just = minor_stress_impact_loss
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
trusting = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = trusting
has_trait = forgiving
has_trait = compassionate
}
}
}
}
#Ignore Ali
option = {
name = fp3_story_cycle_zanj_rebellion_events.0002.c
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
scope:zanj_leader = {
change_variable = {
name = zanj_rebellion_strength_score
add = 2
}
}
custom_tooltip = fp3_story_cycle_zanj_rebellion_leaves_for_baghdad
hidden_effect = {
title:c_baghdad.holder = {
add_visiting_courtier = scope:outspoken_rebel
}
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0003
days = { 30 60 }
}
}
stress_impact = {
paranoid = medium_stress_impact_gain
just = minor_stress_impact_gain
callous = minor_stress_impact_gain
sadistic = medium_stress_impact_gain
trusting = medium_stress_impact_loss
forgiving = medium_stress_impact_loss
compassionate = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = paranoid
has_trait = just
has_trait = callous
has_trait = sadistic
}
}
}
}
}
### Setup to find correct scope for event 0004 and check if Ali is dead or imprisoned
fp3_story_cycle_zanj_rebellion_events.0003 = {
scope = none
hidden = yes
immediate = {
if ={
#check if Ali is still alive and not in prison and is not an inheritor of the rebellion
limit = {
scope:zanj_leader = {
AND = {
is_alive = yes
is_imprisoned = no
NOT = { has_character_flag = new_zanj_leader }
}
}
}
title:c_baghdad.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0004
}
}
}
}
}
### Ali Ibn Muhammad claims divinity
fp3_story_cycle_zanj_rebellion_events.0004 = {
type = character_event
theme = faith
title = fp3_story_cycle_zanj_rebellion_events.0004.t
desc = fp3_story_cycle_zanj_rebellion_events.0004.desc
left_portrait = {
character = root
animation = dismissal
}
right_portrait = {
character = scope:zanj_leader
animation = personality_zealous
}
#Contest Ali Ibn Muhammad's claims
option = {
name = fp3_story_cycle_zanj_rebellion_events.0004.a
duel = {
skill = learning
target = scope:zanj_leader
50 = {
# You disprove Ali's claims
desc = fp3_story_cycle_zanj_rebellion_events.0004.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = fp3_story_cycle_zanj_rebellion_events.0004.a.success
add_piety = medium_piety_gain
add_prestige = minor_prestige_gain
left_icon = root
right_icon = scope:zanj_leader
}
}
50 = {
# Ali Ibn Muhammad validates his claims
desc = fp3_story_cycle_zanj_rebellion_events.0004.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
send_interface_toast = {
title = fp3_story_cycle_zanj_rebellion_events.0004.a.failure
left_icon = root
right_icon = scope:zanj_leader
scope:zanj_leader = {
add_trait = sayyid
add_pressed_claim = title:e_arabia
change_variable = {
name = zanj_rebellion_strength_score
add = 4
}
}
}
}
}
root = {
progress_towards_rival_effect = {
REASON = fp3_zanj_rebellion_opressed_me
CHARACTER = scope:zanj_leader
OPINION = default_rival_opinion
}
}
stress_impact = {
paranoid = minor_stress_impact_loss
just = minor_stress_impact_loss
zealous = medium_stress_impact_loss
trusting = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = cynical
has_trait = trusting
has_trait = forgiving
}
}
}
}
#Ignore Ali
option = {
name = fp3_story_cycle_zanj_rebellion_events.0004.b
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
scope:zanj_leader = {
add_trait = sayyid
add_pressed_claim = title:e_arabia
change_variable = {
name = zanj_rebellion_strength_score
add = 2
}
}
stress_impact = {
paranoid = minor_stress_impact_gain
just = minor_stress_impact_gain
zealous = medium_stress_impact_gain
trusting = minor_stress_impact_loss
forgiving = medium_stress_impact_loss
cynical = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = paranoid
has_trait = just
has_trait = zealous
}
}
}
}
}
### Setup event to find the correct scope and check if Ali or the current Zanj Leader is dead or imprisoned
fp3_story_cycle_zanj_rebellion_events.0005 = {
scope = none
hidden = yes
immediate = {
if = {
limit = {
scope:zanj_leader = {
OR = {
is_imprisoned = yes
is_alive = no
is_landed = yes
}
}
}
inherit_zanj_rebellion_effect = yes
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0006
}
}
}
}
### A Zanj Steps Forth
fp3_story_cycle_zanj_rebellion_events.0006 = {
type = character_event
theme = corruption
title = fp3_story_cycle_zanj_rebellion_events.0006.t
desc = {
desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.a
triggered_desc = {
trigger = { scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader } } }
desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.b
}
desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.c
}
left_portrait = {
character = root
animation = eyeroll
}
right_portrait = {
character = scope:outspoken_rebel
animation = worry
}
lower_left_portrait = {
trigger = { scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader } } }
character = scope:zanj_leader
}
immediate = {
if = {
limit = { scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader } } }
spawn_zanj_representative_character_effect = yes
scope:zanj_representative = { save_scope_as = outspoken_rebel }
}
else = {
scope:zanj_leader = { save_scope_as = outspoken_rebel }
}
}
#Give Basra to the Zanj
option = {
name = fp3_story_cycle_zanj_rebellion_events.0006.a
create_title_and_vassal_change = {
type = independency
save_scope_as = change
add_claim_on_loss = no
}
title:c_basra = {
set_county_culture = culture:east_bantu
set_county_faith = faith:azariqa
}
show_as_tooltip = { # UI/UX
title:c_basra = {
change_title_holder = {
holder = scope:outspoken_rebel
change = scope:change
}
}
}
scope:outspoken_rebel = {
becomes_independent = {
change = scope:change
}
add_truce_both_ways = {
character = root
years = 10
name = fp3_landed_zanj_reason
}
}
if = {
limit = {
NOT = { title:c_basra.holder = root }
}
add_tyranny = 30
set_relation_rival = {
reason = fp3_rival_gave_title_away
target = title:c_basra.holder
}
}
hidden_effect = {
title:c_basra = {
change_title_holder = {
holder = scope:outspoken_rebel
change = scope:change
}
every_de_jure_county = {
change_title_holder = {
holder = scope:outspoken_rebel
change = scope:change
}
}
}
scope:zanj_leader = {
random_owned_story = {
type = story_zanj_rebellion
end_story = yes
}
}
}
resolve_title_and_vassal_change = scope:change
stress_impact = {
compassionate = medium_stress_impact_loss
just = minor_stress_impact_loss
forgiving = minor_stress_impact_loss
generous = medium_stress_impact_loss
content = medium_stress_impact_loss
callous = medium_stress_impact_gain
sadistic = major_stress_impact_gain
ambitious = medium_stress_impact_gain
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = callous
has_trait = sadistic
has_trait = ambitious
has_trait = greedy
}
}
}
}
#Make minor concessions to the Zanj
option = {
name = fp3_story_cycle_zanj_rebellion_events.0006.b
scope:zanj_leader = {
change_variable = {
name = zanj_rebellion_strength_score
add = 3
}
}
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
hidden_effect = {
title:c_basra.holder = {
if = {
limit = { scope:zanj_leader != scope:outspoken_rebel}
add_visiting_courtier = scope:zanj_leader
}
add_visiting_courtier = scope:outspoken_rebel
}
}
if = {
limit = {
NOT = { title:c_basra.holder = root }
}
progress_towards_rival_effect = {
REASON = fp3_zanj_rebellion_interfered_with_my_workers
CHARACTER = title:c_basra.holder
OPINION = default_rival_opinion
}
}
title:c_basra = {
add_county_modifier = {
modifier = fp3_zanj_rebellion_work_concessions_modifier
years = 5
}
}
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0007
days = { 30 60 }
}
stress_impact = {
compassionate = minor_stress_impact_loss
just = minor_stress_impact_loss
forgiving = minor_stress_impact_loss
generous = minor_stress_impact_loss
content = minor_stress_impact_loss
callous = minor_stress_impact_gain
sadistic = medium_stress_impact_gain
ambitious = minor_stress_impact_gain
greedy = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = callous
has_trait = sadistic
has_trait = ambitious
has_trait = greedy
}
}
}
}
#Ignore the Zanj
option = {
name = fp3_story_cycle_zanj_rebellion_events.0006.c
scope:zanj_leader = {
change_variable = {
name = zanj_rebellion_strength_score
add = 5
}
}
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
hidden_effect = {
title:c_basra.holder = {
add_visiting_courtier = scope:zanj_leader
add_visiting_courtier = scope:zanj_representative
}
}
if = {
limit = {
NOT = { title:c_basra.holder = root }
}
progress_towards_friend_effect = {
REASON = fp3_rival_stayed_out_of_my_business
CHARACTER = title:c_basra.holder
OPINION = default_friend_opinion
}
}
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0007
days = { 30 60 }
}
stress_impact = {
compassionate = minor_stress_impact_gain
just = minor_stress_impact_gain
forgiving = minor_stress_impact_gain
generous = minor_stress_impact_gain
content = minor_stress_impact_gain
callous = minor_stress_impact_loss
sadistic = medium_stress_impact_loss
ambitious = minor_stress_impact_loss
greedy = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = compassionate
has_trait = just
has_trait = forgiving
has_trait = generous
}
}
}
}
}
fp3_story_cycle_zanj_rebellion_events.0007 = {
scope = none
hidden = yes
immediate = {
if = {
limit = {
scope:zanj_leader = {
OR = {
is_imprisoned = yes
is_alive = no
is_landed = yes
}
}
}
inherit_zanj_rebellion_effect = yes
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0008
}
}
}
}
### The Zanj Rebellion
fp3_story_cycle_zanj_rebellion_events.0008 = {
type = character_event
theme = battle
override_background = { reference = wilderness_wetlands }
title = fp3_story_cycle_zanj_rebellion_events.0008.t
desc = {
desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.a
triggered_desc = {
trigger = {
scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader}}
}
desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.b
}
triggered_desc = {
trigger = {
scope:zanj_leader = { has_character_flag = new_zanj_leader }
}
desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.c
}
desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.d
}
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:zanj_leader
animation = celebrate_sword
}
immediate = {
scope:zanj_leader = {
give_nickname = nick_chief_of_the_zanj
hidden_effect = {
random_owned_story = {
type = story_zanj_rebellion
end_story = yes
}
}
}
hidden_effect = {
fp3_start_zanj_rebellion_effect = {
TARGET_COUNTY = title:c_basra
REBEL_LEADER = scope:zanj_leader
}
create_zanj_courtier_effect = {
EMPLOYER = scope:zanj_leader
LOCATION = scope:zanj_leader.location
}
create_zanj_courtier_effect = {
EMPLOYER = scope:zanj_leader
LOCATION = scope:zanj_leader.location
}
create_zanj_courtier_effect = {
EMPLOYER = scope:zanj_leader
LOCATION = scope:zanj_leader.location
}
create_zanj_courtier_effect = {
EMPLOYER = scope:zanj_leader
LOCATION = scope:zanj_leader.location
}
}
}
option = {
name = fp3_story_cycle_zanj_rebellion_events.0008.a
}
}

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,286 @@
namespace = fp3_h_yearly
###################################
# You have pissed off your ulema and you're a drunkard
# By Hugo Cortell
# Rewritten by Henrik Lohmander
###################################
fp3_h_yearly.0001 = {
type = character_event
title = fp3_h_yearly.0001.t
desc = {
triggered_desc = {
trigger = { always = yes }
desc = fp3_h_yearly.0001.desc.main
}
}
theme = feast_activity
override_background = { reference = throne_room }
left_portrait = {
character = root
animation = drink_goblet
}
right_portrait = {
character = scope:ulema_member
animation = disapproval
}
cooldown = { years = 10 }
weight_multiplier = {
base = 1
modifier = {
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = { has_trait = drunkard }
factor = 0.4
}
modifier = {
any_character_struggle = {
is_struggle_type = persian_struggle
}
add = 0.5
}
modifier = {
has_trait = fp3_struggle_supporter
add = -0.5
}
modifier = {
has_trait = fp3_struggle_detractor
add = 0.5
}
}
trigger = {
has_fp3_dlc_trigger = yes
has_trait = drunkard
NOT = { has_character_modifier = ulema_displeased_drinking }
exists = cp:councillor_court_chaplain
NOT = {
has_hook = cp:councillor_court_chaplain
}
cp:councillor_court_chaplain = {
is_ai = yes
faith = { trait_is_sin = drunkard }
trigger_if = {
limit = { exists = house }
house != root.house
}
NOT = {
has_trait = lifestyle_mystic
}
OR = {
opinion = { # They will not do this unless they have reason to dislike you
target = root
value < -25
}
has_relation_rival = root
}
}
}
immediate = {
cp:councillor_court_chaplain = { save_scope_as = ulema_member }
save_scope_as = actor
scope:ulema_member = { save_scope_as = recipient }
}
option = { #Deflection (They are a drunkard too) Look who is talking!
name = fp3_h_yearly.0001.a
trigger = { scope:ulema_member = { has_trait = drunkard } }
#No duel, this deflection always succeeds.
stress_impact = {
craven = minor_stress_gain
deceitful = minor_stress_loss
callous = minor_stress_loss
}
add_prestige = medium_prestige_gain
reverse_add_opinion = {
target = scope:ulema_member
modifier = ignored_concerns
}
}
option = { #Deflection - Argue that drinking is healthy to the human spirit
name = fp3_h_yearly.0001.b
trigger = {
OR = {
has_trait = scholar
has_trait = theologian
has_trait = whole_of_body
has_trait = lifestyle_physician
has_trait = lifestyle_poet
faith = { trait_is_virtue = drunkard }
}
}
reverse_add_opinion = {
target = scope:ulema_member
modifier = ignored_concerns
}
duel = {
desc = fp3_h_yearly.0001.b.desc
skill = learning
target = scope:annoying_clergy
35 = { #Success
desc = fp3_h_yearly.0001.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
type = event_toast_effect_good
title = fp3_h_yearly.0001.b.success
left_icon = root
add_prestige = minor_prestige_gain
}
}
65 = {
desc = fp3_h_yearly.0001.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = fp3_h_yearly.0001.b.failure
left_icon = root
add_piety = medium_piety_loss
add_character_modifier = {
modifier = ulema_displeased_drinking
years = 10
}
}
}
}
stress_impact = {
honest = minor_stress_gain
humble = minor_stress_gain
callous = minor_stress_loss
deceitful = minor_stress_loss
}
}
option = { # You do not get to speak to me in this way!
name = fp3_h_yearly.0001.e
add_dread = medium_dread_gain
imprison_court_chaplain_consequences_effect = yes
imprison_character_effect = {
TARGET = scope:recipient
IMPRISONER = scope:actor
}
stress_impact = {
just = medium_stress_gain
zealous = medium_stress_gain
deceitful = minor_stress_loss
callous = minor_stress_loss
}
}
option = { #Bribery - Offer a generous donation
name = fp3_h_yearly.0001.c
trigger = { NOT = { scope:ulema_member = { has_trait = drunkard } } } #If you can deflect we don't show this option
custom_tooltip = fp3_h_yearly.0001.c.tt
pay_short_term_gold = {
target = scope:ulema_member
gold = medium_gold_value
}
random_list = {
75 = {
modifier = {
scope:ulema_member = {
has_trait = greedy
}
factor = 2
}
modifier = {
scope:ulema_member = {
has_trait = deceitful
}
factor = 2
}
modifier = {
scope:ulema_member = {
has_trait = ambitious
}
factor = 2
}
desc = fp3_h_yearly.0001.c.success
send_interface_toast = {
title = fp3_h_yearly.0001.c.success
left_icon = root
add_prestige = minor_prestige_gain
}
}
25 = {
modifier = {
scope:ulema_member = {
has_trait = zealous
}
factor = 2
}
modifier = {
scope:ulema_member = {
has_trait = honest
}
factor = 2
}
modifier = {
scope:ulema_member = {
has_trait = just
}
factor = 2
}
desc = fp3_h_yearly.0001.c.failure
send_interface_toast = {
title = fp3_h_yearly.0001.c.failure
left_icon = root
add_piety = medium_piety_loss
add_character_modifier = {
modifier = ulema_displeased_drinking
years = 10
}
reverse_add_opinion = {
target = scope:ulema_member
modifier = ignored_concerns
}
}
}
}
stress_impact = {
just = medium_stress_gain
greedy = minor_stress_gain
honest = minor_stress_gain
callous = minor_stress_loss
deceitful = minor_stress_loss
}
}
option = { # There is nothing I can do!
name = fp3_h_yearly.0001.d
add_piety = minor_piety_loss
add_character_modifier = {
modifier = ulema_displeased_drinking
years = 5
}
stress_impact = {
arrogant = minor_stress_gain
deceitful = minor_stress_gain
drunkard = minor_stress_gain
honest = minor_stress_loss
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,824 @@
namespace = fp3_yearly
scripted_trigger not_steppe_nomad_trigger = {
culture = {
NOR = {
has_cultural_pillar = heritage_mongolic
has_cultural_pillar = heritage_turkic
has_cultural_tradition = tradition_horse_lords
}
}
}
scripted_trigger suitable_nomad_settling_province_trigger = {
has_holding_type = castle_holding
barony = {
is_under_holy_order_lease = no
#is_capital_barony = no
}
}
fp3_yearly.8888 = { #Nomads story cycle
type = character_event
title = fp3_yearly.8888.t
desc = fp3_yearly.8888.desc
theme = vassal
left_portrait = {
character = scope:upset_vassal
animation = anger
}
right_portrait = {
character = root
animation = personality_rational
triggered_animation = {
trigger = {
diplomacy >= decent_skill_rating
}
animation = personality_honorable
}
}
lower_left_portrait = {
character = scope:possibly_capable_marshal
}
lower_right_portrait = {
character = scope:turkic_leader
}
trigger = {
#standard checks
has_fp3_dlc_trigger = yes
root.capital_province = { geographical_region = world_persian_empire }
is_available_at_peace_adult = yes
#event fluff triggers
not_steppe_nomad_trigger = yes
NOT = { has_character_flag = had_turkic_tribe_story } #since this event starts the story
exists = cp:councillor_marshal
cp:councillor_marshal = {
NOT = { has_trait = craven }
is_ai = yes
}
any_vassal = {
not_steppe_nomad_trigger = yes
is_ai = yes
NOT = {
this = root.cp:councillor_marshal
}
any_held_county = {
any_county_province = {
geographical_region = dlc_fp3_eastern_persian_frontier_regions
NOT = { terrain = steppe }
}
}
}
any_held_county = { any_county_province = { suitable_nomad_settling_province_trigger = yes } }
}
cooldown = { years = 50 }
immediate = {
random_vassal = {
limit = {
not_steppe_nomad_trigger = yes
is_ai = yes
NOT = {
this = root.cp:councillor_marshal
}
any_held_county = {
any_county_province = {
geographical_region = dlc_fp3_eastern_persian_frontier_regions
NOT = { terrain = steppe }
}
}
}
save_scope_as = upset_vassal
random_held_county = {
limit = {
any_county_province = {
geographical_region = dlc_fp3_eastern_persian_frontier_regions
NOT = { terrain = steppe }
}
}
save_scope_as = nomads_county
}
}
random_held_county = {
limit = {
any_county_province = { suitable_nomad_settling_province_trigger = yes }
}
save_scope_as = nomads_new_county #for use in the claim the former_master might get
}
scope:nomads_new_county = {
random_county_province = {
limit = { suitable_nomad_settling_province_trigger = yes }
barony = { save_scope_as = nomads_barony }
}
}
cp:councillor_marshal = { save_scope_as = possibly_capable_marshal }
scope:nomads_county = {
add_county_modifier = {
modifier = fp3_nomad_friction_county_modifier
years = 50
}
}
create_character = {
location = root.capital_province
template = fp3_turko-mongol_leader
save_scope_as = turkic_leader
}
}
option = {
name = fp3_yearly.8888.a
duel = {
skill = diplomacy
value = average_skill_rating
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
root = {
custom_tooltip = fp3_treating_with_turks.success.tt
trigger_event = {
id = fp3_yearly.8889
days = { 2 3 }
}
}
}
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
custom_tooltip = fp3_treating_with_turks.failure.tt
send_interface_toast = {
title = fp3_treating_with_turks_toast.failure
left_icon = root
}
}
}
scope:upset_vassal = {
if = {
limit = {
OR = { #if he's diplomatically minded, he'll appreciate this
has_trait = forgiving
has_trait = trusting
has_trait = compassionate
has_diplomacy_lifestyle_trait_trigger = yes
}
}
add_opinion = {
target = root
opinion = 20
modifier = respect_opinion
}
}
else = {
add_opinion = { #but otherwise, they're not on board
target = root
opinion = -10
modifier = fp3_treats_with_barbarians_opinion
}
}
}
scope:possibly_capable_marshal = {
add_opinion = {
target = root
opinion = -10
modifier = disappointed_opinion
}
}
stress_impact = {
craven = medium_stress_impact_gain
lazy = medium_stress_impact_gain
shy = medium_stress_impact_gain
gregarious = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
ai_boldness = 1
ai_compassion = 0.5
}
}
}
option = {
name = fp3_yearly.8888.b
scope:upset_vassal = {
add_opinion = {
target = root
opinion = 20
modifier = grateful_opinion
}
}
scope:possibly_capable_marshal = {
add_opinion = {
target = root
opinion = 10
modifier = trusted_me_opinion
}
}
scope:possibly_capable_marshal = {
duel = {
skill = martial
value = average_skill_rating
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
root = {
custom_tooltip = fp3_fighting_turks.success.tt
trigger_event = {
id = fp3_yearly.8890
days = { 2 3 }
}
}
}
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
root = {
custom_tooltip = fp3_fighting_turks.failure.tt
send_interface_toast = {
title = fp3_fighting_turks_toast.failure
left_icon = scope:possibly_capable_marshal
}
}
}
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1
ai_vengefulness = 0.5
}
}
}
option = { #Ignore the issue
name = fp3_yearly.8888.c
scope:upset_vassal = {
add_opinion = {
target = root
opinion = -20
modifier = angry_opinion
}
}
scope:possibly_capable_marshal = {
add_opinion = {
target = root
opinion = -10
modifier = disappointed_opinion
}
}
stress_impact = {
ambitious = minor_stress_impact_gain
diligent = minor_stress_impact_gain
just = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -1
}
}
}
}
fp3_yearly.8889 = { #Nomads story cycle
type = character_event
title = fp3_yearly.8889.t
desc = fp3_yearly.8889.desc
theme = vassal
left_portrait = {
character = scope:turkic_leader
animation = disapproval
}
right_portrait = {
character = root
animation = drink_goblet
triggered_animation = {
trigger = {
diplomacy >= decent_skill_rating
NOR = {
has_trait = callous
has_trait = wrathful
has_trait = vengeful
}
}
animation = personality_compassionate
}
}
lower_left_portrait = {
character = scope:upset_vassal
}
override_background = { reference = wilderness }
trigger = {
#standard checks
is_available_adult = yes
#event not breaking sanity triggers
exists = scope:upset_vassal
scope:upset_vassal = { is_alive = yes }
exists = scope:turkic_leader
scope:turkic_leader = { is_alive = yes }
exists = scope:nomads_county
exists = scope:nomads_new_county
}
option = {
name = fp3_yearly.8889.a
if = {
limit = {
scope:upset_vassal = {
NOT = {
has_relation_rival = root
has_relation_nemesis = root
}
}
}
root = {
progress_towards_rival_effect = {
CHARACTER = scope:upset_vassal
REASON = rival_let_hostile_nomads_roam_free
OPINION = -20
}
}
}
else = {
scope:upset_vassal = {
add_opinion = {
target = root
opinion = -40
modifier = hate_opinion
}
}
}
add_courtier = scope:turkic_leader
spawn_army = {
men_at_arms = {
type = horse_archers
stacks = 1
}
location = root.capital_province
war_keep_on_attacker_victory = yes
uses_supply = yes
inheritable = no
save_scope_as = horsemen_army
name = turkic_tribal_event_troops
}
#This is needed to make the story cycle able to pick up the scopes
set_variable = {
name = turkic_leader
value = scope:turkic_leader
}
set_variable = {
name = upset_vassal
value = scope:upset_vassal
}
set_variable = {
name = nomads_county
value = scope:nomads_county
}
set_variable = {
name = nomads_new_county
value = scope:nomads_new_county
}
create_story = turkic_tribe_story
stress_impact = {
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.4
ai_boldness = 0.7
ai_vengefulness = 0.3
}
}
}
option = {
name = fp3_yearly.8889.b
scope:upset_vassal = {
add_opinion = {
target = root
opinion = -10
modifier = disappointed_opinion
}
}
add_courtier = scope:turkic_leader
spawn_army = {
men_at_arms = {
type = horse_archers
stacks = 1
}
location = root.capital_province
war_keep_on_attacker_victory = yes
uses_supply = yes
inheritable = no
save_scope_as = horsemen_army
name = turkic_tribal_event_troops
}
#This is needed to make the story cycle able to pick up the scopes
set_variable = {
name = turkic_leader
value = scope:turkic_leader
}
set_variable = {
name = upset_vassal
value = scope:upset_vassal
}
set_variable = {
name = nomads_county
value = scope:nomads_county
}
set_variable = {
name = nomads_new_county
value = scope:nomads_new_county
}
create_story = turkic_tribe_story
scope:nomads_county = {
remove_county_modifier = fp3_nomad_friction_county_modifier
}
scope:nomads_new_county = {
add_county_modifier = {
modifier = fp3_nomad_friction_county_modifier
years = 30
}
}
stress_impact = {
generous = medium_stress_impact_loss
content = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.6
ai_boldness = 1
ai_compassion = 0.2
}
}
}
option = { #no deal
name = fp3_yearly.8889.c
scope:upset_vassal = {
add_opinion = {
target = root
opinion = 20
modifier = pleased_opinion
}
}
stress_impact = {
ambitious = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.5
ai_vengefulness = 0.5
}
}
}
}
fp3_yearly.8890 = { #Nomads story cycle
type = character_event
title = fp3_yearly.8890.t
desc = {
desc = fp3_yearly.8890.desc_beginning
first_valid = {
triggered_desc = {
trigger = {
scope:upset_vassal = {
AND = {
ai_compassion < medium_positive_ai_value
ai_vengefulness > medium_positive_ai_value
}
}
}
desc = fp3_yearly.8890_brutal_demands
}
desc = fp3_yearly.8890_nonbrutal_demands
}
desc = fp3_yearly.8890.desc_ending
}
theme = vassal
left_portrait = {
character = scope:turkic_leader
animation = prisonhouse
}
right_portrait = {
character = root
animation = personality_rational
triggered_animation = {
trigger = {
diplomacy < high_skill_rating
NOR = {
has_trait = compassionate
has_trait = forgiving
has_trait = just
}
}
animation = personality_callous
}
}
lower_left_portrait = {
character = scope:upset_vassal
}
lower_right_portrait = {
character = scope:possibly_capable_marshal
}
trigger = {
#standard checks
is_available_adult = yes
#event not breaking sanity triggers
exists = scope:upset_vassal
scope:upset_vassal = { is_alive = yes }
exists = scope:turkic_leader
scope:turkic_leader = { is_alive = yes }
exists = scope:nomads_county
exists = scope:nomads_new_county
}
option = {
name = fp3_yearly.8890.a
scope:upset_vassal = {
add_opinion = {
target = root
opinion = -15
modifier = fp3_suspicious_motives_opinion
}
}
add_courtier = scope:turkic_leader
add_hook = {
type = indebted_hook
target = scope:turkic_leader
}
spawn_army = {
men_at_arms = {
type = horse_archers
stacks = 1
}
location = root.capital_province
war_keep_on_attacker_victory = yes
uses_supply = yes
inheritable = no
save_scope_as = horsemen_army
name = turkic_tribal_event_troops
}
#This is needed to make the story cycle able to pick up the scopes
set_variable = {
name = turkic_leader
value = scope:turkic_leader
}
set_variable = {
name = upset_vassal
value = scope:upset_vassal
}
set_variable = {
name = nomads_county
value = scope:nomads_county
}
set_variable = {
name = nomads_new_county
value = scope:nomads_new_county
}
create_story = turkic_tribe_story
scope:nomads_county = {
remove_county_modifier = fp3_nomad_friction_county_modifier
}
scope:nomads_new_county = {
add_county_modifier = {
modifier = fp3_nomad_friction_county_modifier
years = 30
}
}
stress_impact = {
content = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_rationality = 0.5
}
}
}
option = { #execute the nomad leader
name = fp3_yearly.8890.b
add_dread = medium_dread_gain
scope:upset_vassal = {
if = {
limit = {
AND = { #if they're cruel, he'll enjoy this
ai_compassion < 0
ai_vengefulness > medium_positive_ai_value
}
}
add_opinion = {
target = root
opinion = 30
modifier = fp3_very_very_pleased_opinion
}
}
else = {
add_opinion = { #but otherwise, they're not on board
target = root
opinion = -10
modifier = fp3_went_too_far_opinion
}
}
}
scope:turkic_leader = {
death = {
death_reason = death_execution
killer = root
}
}
random_list = {
50 = {
send_interface_toast = {
title = nomad_friction_gone.tt
left_icon = root
scope:nomads_county = { remove_county_modifier = fp3_nomad_friction_county_modifier }
}
}
50 = {
send_interface_toast = {
title = nomad_friction_active.tt
left_icon = root
scope:nomads_county = {
add_county_modifier = {
modifier = fp3_vengeful_nomads_county_modifier
years = 10
}
}
}
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
arbitrary = medium_stress_impact_loss
sadistic = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_compassion = -1
}
}
}
option = {
name = fp3_yearly.8890.c
add_dread = minor_dread_gain
scope:turkic_leader = {
hard_imprison_character_effect = {
TARGET = this
IMPRISONER = root
}
}
scope:upset_vassal = {
add_opinion = {
target = root
opinion = 20
modifier = pleased_opinion
}
}
random = {
chance = 75
send_interface_toast = {
title = nomad_friction_gone.tt
left_icon = root
scope:nomads_county = { remove_county_modifier = fp3_nomad_friction_county_modifier }
}
}
stress_impact = {
compassionate = minor_stress_impact_gain
just = minor_stress_impact_gain
arbitrary = minor_stress_impact_loss
cynical = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_rationality = 1
ai_compassion = -0.5
}
}
}
}