From df20792e75c6e9c7936de39a0486c607b563460c Mon Sep 17 00:00:00 2001 From: Magpie490 Date: Tue, 3 Jun 2025 19:22:41 +0100 Subject: [PATCH] fix? --- common/governments/00_government_types.txt | 1 - .../00_administrative_effects.txt | 2 +- .../07_dlc_ep3_scripted_effects.txt | 13494 ++++++++++++++++ .../00_available_for_events_triggers.txt | 1 + .../00_diarchy_scripted_triggers.txt | 1 + 5 files changed, 13497 insertions(+), 2 deletions(-) create mode 100644 common/scripted_effects/07_dlc_ep3_scripted_effects.txt diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index e64358ea..a95e8d89 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -277,7 +277,6 @@ administrative_government = { legitimacy = yes use_as_base_on_landed = yes use_as_base_on_rank_up = yes - inherit_from_dynastic_government = no sticky_government = yes } diff --git a/common/scripted_effects/00_administrative_effects.txt b/common/scripted_effects/00_administrative_effects.txt index 10f18600..bc521383 100644 --- a/common/scripted_effects/00_administrative_effects.txt +++ b/common/scripted_effects/00_administrative_effects.txt @@ -34,7 +34,7 @@ change_to_administrative_effect = { primary_title.tier >= tier_duchy liege = { is_independent_ruler = yes - government_allows = administrative + government_has_flag = government_is_administrative } house.house_head = { NOT = { diff --git a/common/scripted_effects/07_dlc_ep3_scripted_effects.txt b/common/scripted_effects/07_dlc_ep3_scripted_effects.txt new file mode 100644 index 00000000..cbf44291 --- /dev/null +++ b/common/scripted_effects/07_dlc_ep3_scripted_effects.txt @@ -0,0 +1,13494 @@ +################################################## +# Laamps +################################################## + +create_landless_adventurer_title_history_effect = { + # TODO_CD_EP3: currently causes errors for history titles + #set_destroy_on_gain_same_tier = yes + #set_delete_on_destroy = yes + holder ?= { + if = { + limit = { + NOT = { has_realm_law = landless_adventurer_succession_law } + } + add_realm_law = landless_adventurer_succession_law + } + } +} + +create_landless_adventurer_title_effect = { + save_scope_as = new_landless_adventurer + if = { + limit = { + exists = house + } + house = { save_scope_as = new_landless_adventurer_house } + } + if = { + limit = { + exists = location + } + location = { save_scope_as = new_landless_adventurer_location } + } + save_scope_value_as = { + name = adventurer_creation_reason + value = $REASON$ + } + $FLAVOR_CHAR$ = { save_scope_as = adventurer_flavor_char } + hidden_effect = { + random_list = { + 10 = { + create_adventurer_title = { + name = adventurer_name_001 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + trigger = { + exists = scope:new_landless_adventurer_house + } + create_adventurer_title = { + name = adventurer_name_002 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + create_adventurer_title = { + name = adventurer_name_003 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + create_adventurer_title = { + name = adventurer_name_004 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + trigger = { + NOT = { + scope:new_landless_adventurer.culture = culture:kurdish + } + } + create_adventurer_title = { + name = adventurer_name_005 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + create_adventurer_title = { + name = adventurer_name_006 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + create_adventurer_title = { + name = adventurer_name_007 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + trigger = { + exists = scope:new_landless_adventurer_house + } + create_adventurer_title = { + name = adventurer_name_008 + holder = scope:new_landless_adventurer + save_scope_as = new_title + } + } + 10 = { + create_adventurer_title = { + name = adventurer_name_009 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + exists = scope:new_landless_adventurer_location + } + create_adventurer_title = { + name = adventurer_name_010 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + exists = scope:new_landless_adventurer_location + } + create_adventurer_title = { + name = adventurer_name_011 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + exists = scope:new_landless_adventurer_location + } + create_adventurer_title = { + name = adventurer_name_012 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + scope:new_landless_adventurer.ai_zeal > 0 + } + create_adventurer_title = { + name = adventurer_name_013 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + scope:new_landless_adventurer.ai_zeal > 0 + } + create_adventurer_title = { + name = adventurer_name_014 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + scope:new_landless_adventurer.ai_zeal > 0 + } + create_adventurer_title = { + name = adventurer_name_015 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + OR = { + has_martial_lifestyle_trait_trigger = yes + ai_boldness >= medium_positive_ai_value + has_trait = education_martial_prowess_1 + has_trait = education_martial_prowess_2 + has_trait = education_martial_prowess_3 + has_trait = education_martial_prowess_4 + has_education_martial_trigger = yes + } + } + create_adventurer_title = { + name = adventurer_name_016 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + OR = { + has_martial_lifestyle_trait_trigger = yes + has_trait = lifestyle_blademaster + has_trait = education_martial_prowess_1 + has_trait = education_martial_prowess_2 + has_trait = education_martial_prowess_3 + has_trait = education_martial_prowess_4 + has_education_martial_trigger = yes + } + } + create_adventurer_title = { + name = adventurer_name_017 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + scope:new_landless_adventurer.ai_zeal > medium_negative_ai_value + scope:new_landless_adventurer.ai_boldness >= 0 + NOT = { + scope:new_landless_adventurer = { + faith.religion = religion:west_african_bori_religion + } + } + } + create_adventurer_title = { + name = adventurer_name_018 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + scope:new_landless_adventurer.ai_zeal > medium_negative_ai_value + scope:new_landless_adventurer.ai_greed >= 0 + NOT = { + scope:new_landless_adventurer = { + faith.religion = religion:west_african_bori_religion + } + } + } + create_adventurer_title = { + name = adventurer_name_019 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + scope:new_landless_adventurer.ai_zeal > medium_negative_ai_value + scope:new_landless_adventurer.ai_compassion >= 0 + NOT = { + scope:new_landless_adventurer = { + faith.religion = religion:west_african_bori_religion + } + } + } + create_adventurer_title = { + name = adventurer_name_020 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + exists = scope:new_landless_adventurer_location.county + } + scope:new_landless_adventurer_location.county = { + save_scope_as = new_landless_adventurer_county + } + create_adventurer_title = { + name = adventurer_name_021 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + create_adventurer_title = { + name = adventurer_name_022 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + trigger = { + exists = scope:new_landless_adventurer_house + } + create_adventurer_title = { + name = adventurer_name_023 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + trigger = { + scope:new_landless_adventurer.ai_zeal > medium_negative_ai_value + scope:new_landless_adventurer.ai_rationality >= 0 + #Many names using Allah already + NOT = { + scope:new_landless_adventurer = { + faith.religion = religion:islam_religion + } + } + } + create_adventurer_title = { + name = adventurer_name_024 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 7 = { + trigger = { + scope:new_landless_adventurer.ai_zeal < low_negative_ai_value + scope:new_landless_adventurer.ai_compassion < medium_negative_ai_value + } + create_adventurer_title = { + name = adventurer_name_025 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + 10 = { + create_adventurer_title = { + name = adventurer_name_0026 + holder = scope:new_landless_adventurer + save_scope_as = new_title + } + } + 5 = { + trigger = { + exists = scope:new_landless_adventurer.culture + OR = { + has_martial_lifestyle_trait_trigger = yes + ai_boldness >= medium_positive_ai_value + has_trait = education_martial_prowess_1 + has_trait = education_martial_prowess_2 + has_trait = education_martial_prowess_3 + has_trait = education_martial_prowess_4 + has_education_martial_trigger = yes + } + } + create_adventurer_title = { + name = adventurer_name_0027 + holder = scope:new_landless_adventurer + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + } + } + + scope:new_title ?= { + create_landless_adventurer_title_history_effect = yes + set_variable = { + name = adventurer_creation_reason + value = scope:adventurer_creation_reason + } + set_variable = { + name = adventurer_flavor_char + value = scope:adventurer_flavor_char + } + } + + scope:new_title = { save_scope_as = new_landless_adventurer_title } + scope:new_landless_adventurer = { + if = { + limit = { + NOT = { has_government = landless_adventurer_government } + } + change_government = landless_adventurer_government + } + if = { + limit = { + NOT = { has_realm_law = landless_adventurer_succession_law } + } + add_realm_law = landless_adventurer_succession_law + } + if = { + limit = { + has_realm_law = crown_authority_0 + } + remove_realm_law = crown_authority_0 + } + domicile = { change_provisions = starting_provisions_value } + } + every_player = { + limit = { + NOR = { + root ?= this + this = scope:new_landless_adventurer + } + OR = { + # Either they're important to us. + is_close_or_extended_family_of = scope:new_landless_adventurer + is_consort_of = scope:new_landless_adventurer + has_important_relationship_with_character_trigger = { CHARACTER = scope:new_landless_adventurer } + # Or they're just close enough. + AND = { + capital_province = { "squared_distance(scope:new_landless_adventurer.location)" <= squared_distance_medium } + OR = { + top_liege = root.top_liege + any_neighboring_and_across_water_top_liege_realm_owner = { this = root.top_liege } + } + } + } + } + send_interface_message = { + type = msg_landless_adventurer_nearby + title = nearby_landless_adventurer_created_message_title + left_icon = scope:new_landless_adventurer + right_icon = scope:adventurer_flavor_char + switch = { + trigger = scope:adventurer_creation_reason + flag:conquest = { custom_tooltip = nearby_landless_adventurer_created_message_conquest_tt } + flag:deposition = { custom_tooltip = nearby_landless_adventurer_created_message_deposition_tt } + flag:succession = { custom_tooltip = nearby_landless_adventurer_created_message_succession_tt } + flag:exile = { custom_tooltip = nearby_landless_adventurer_created_message_exile_tt } + flag:voluntary = { custom_tooltip = nearby_landless_adventurer_created_message_voluntary_tt } + flag:revocation = { custom_tooltip = nearby_landless_adventurer_created_message_revocation_tt } + flag:runaway_allowed = { custom_tooltip = nearby_landless_adventurer_created_message_runaway_allowed_tt } + flag:runaway_forbidden = { custom_tooltip = nearby_landless_adventurer_created_message_runaway_forbidden_tt } + flag:wanderer = { custom_tooltip = nearby_landless_adventurer_created_message_wanderer_tt } + fallback = { custom_tooltip = nearby_landless_adventurer_created_message_fallback_tt } + } + } + } + } + custom_tooltip = laamp_become_adventurer_tt + if = { + limit = { + OR = { + scope:adventurer_creation_reason = flag:deposition + scope:adventurer_creation_reason = flag:conquest + scope:adventurer_creation_reason = flag:exile + NOT = { this = $FLAVOR_CHAR$ } + } + } + add_opinion = { + target = $FLAVOR_CHAR$ + modifier = demanded_eviction_opinion + } + remove_laamp_from_exiled_county_automatically_effect = { + PROVINCE = scope:new_landless_adventurer.location + LAAMP = scope:new_landless_adventurer + } + save_scope_value_as = { + name = expelled + value = yes + } + } + hidden_effect = { + if = { + limit = { + scope:new_landless_adventurer = { + is_ai = no + } + NOT = { exists = scope:expelled } + } + populate_location_with_contracts_effect = { + AREA_CHAR = scope:new_landless_adventurer + AMOUNT = 3 + } + } + scope:new_landless_adventurer = { + every_councillor = { + if = { + limit = { + NOR = { + has_council_position = councillor_court_chaplain + has_council_position = councillor_spouse + } + } + scope:new_landless_adventurer = { + fire_councillor = prev + } + remove_opinion = { + modifier = fired_from_council_opinion + target = scope:new_landless_adventurer + } + } + else_if = { + limit = { + NOR = { + is_close_or_extended_family_of = scope:new_landless_adventurer + has_relation_lover = scope:new_landless_adventurer + has_relation_friend = scope:new_landless_adventurer + is_consort_of = scope:new_landless_adventurer + has_council_position = councillor_spouse + } + } + death = { + death_reason = death_vanished + } + } + } + every_courtier = { + limit = { + NOR = { + is_close_or_extended_family_of = scope:new_landless_adventurer + has_relation_lover = scope:new_landless_adventurer + has_relation_friend = scope:new_landless_adventurer + is_consort_of = scope:new_landless_adventurer + } + } + move_to_pool = yes + } + # Give us a couple of starting chars if we're almost completely bereft. + if = { + limit = { + any_courtier = { count <= 2 } + } + trigger_event = { + id = ep3_laamps.1001 + weeks = { 2 6 } + } + } + } + trigger_event = { id = misc.0001 days = 1 } + local_arbitration_boon_change_purpose_effect = yes + } + add_to_global_variable_list = { + name = laamps_tally + target = scope:new_landless_adventurer.primary_title + } + set_variable = flavourise_camp_purpose_wanderers +} + +destroy_landless_title_no_dlc_effect = { + if = { + limit = { + NOT = { has_dlc_feature = roads_to_power } + game_start_date = $DATE$ + } + holder = { destroy_title = prev } + } +} + +set_landless_government_effect = { + if = { + limit = { + has_dlc_feature = roads_to_power + } + change_government = landless_adventurer_government + } +} + +disburse_knight_errant_decision_rewards_effect = { + add_trait = knight_errant + house = { + add_house_modifier = { + modifier = ep3_knight_of_the_swan_house_modifier + } + } + custom_tooltip = knight_errant_decision_armor_tt + if = { + limit = { has_dlc_feature = legends } + create_swan_knight_legend_seed_effect = yes + } + if = { + limit = { has_character_modifier = bandit_king_modifier } + remove_character_modifier = bandit_king_modifier + } +} + +laamp_game_over_option_effect = { + add_internal_flag = dangerous + custom_tooltip = laamp_game_over_tt + if = { + limit = { exists = scope:new_landless_adventurer_title } + hidden_effect = { destroy_title = scope:new_landless_adventurer_title } + } +} + +destroy_laamp_effect = { + $ADVENTURER$ = { + save_scope_as = the_adventurer + # If we weren't an adventurer before, make us one. + if = { + limit = { + NOT = { has_trait = adventurer } + } + add_trait = adventurer + } + hidden_effect = { + every_courtier = { + set_variable = { + name = former_camp_leader + value = scope:the_adventurer + } + add_trait = adventurer_follower + } + } + custom_tooltip = { + text = destroy_laamp_effect.tt.domicile_liquidated + laamp_clear_domicile_buildings_effect = yes + } + # Contacts have opinions™ about you. + ## Be they good. + every_contact = { + limit = { + opinion = { + target = scope:the_adventurer + value >= 1 + } + } + custom = custom.every_contact_with_positive_opinion + add_opinion = { + target = scope:the_adventurer + modifier = pleased_former_contact_opinion + opinion = 30 + } + hidden_effect = { + if = { + limit = { + can_set_relation_potential_friend_trigger = { CHARACTER = scope:the_adventurer } + } + set_relation_potential_friend = scope:the_adventurer + } + } + } + ## Or bad. + every_contact = { + limit = { + opinion = { + target = scope:the_adventurer + value < 1 + } + } + # And neutral but _eh_. + custom = custom.every_contact_with_negative_opinion + add_opinion = { + target = scope:the_adventurer + modifier = frustrated_former_contact_opinion + opinion = -30 + } + hidden_effect = { + if = { + limit = { + can_set_relation_potential_rival_trigger = { CHARACTER = scope:the_adventurer } + } + set_relation_potential_rival = scope:the_adventurer + } + } + } + # Destroy your main title. + every_held_title = { + limit = { has_variable = adventurer_creation_reason } + save_scope_as = landless_adventurer_title + scope:the_adventurer = { destroy_title = scope:landless_adventurer_title } + } + # Ironically, we only want to use this effect if you're _not_ admin — it'll reset you nicely to the best government for you, but if you're admin, you should stay admin. + if = { + limit = { + NOR = { + government_has_flag = government_is_administrative + government_has_flag = government_is_nomadic + } + } + admin_government_reset_effect = yes + } + # Clean up story no-movement flags. + remove_character_flag = laamp_stay_same_kingdom + } +} + +create_landless_adventurer_title_tooltip_effect = { + show_as_tooltip = { + custom_tooltip = laamp_become_adventurer_tt + if = { + limit = { exists = scope:new_landless_adventurer_title} + show_as_tooltip = { get_title = scope:new_landless_adventurer_title } + } + } +} + +find_playable_relatives_effect = { + if = { + limit = { + any_close_family_member = { playable_relative_trigger = yes } + } + ordered_close_family_member = { + limit = { playable_relative_trigger = yes } + order_by = highest_held_title_tier + max = 3 + check_range_bounds = no + if = { + limit = { exists = scope:alt_2 } + save_scope_as = alt_3 + } + else_if = { + limit = { exists = scope:alt_1 } + save_scope_as = alt_2 + } + else = { save_scope_as = alt_1 } + } + } +} + +laamp_switch_playable_character_effect = { + set_player_character = $NEW_CHARACTER$ + hidden_effect = { + if = { + limit = { exists = scope:new_landless_adventurer_title } + destroy_title = scope:new_landless_adventurer_title + } + } +} + +ep3_become_landed_save_liege_effect = { + $TITLE_GIVER$ = { save_scope_as = ruler } + save_scope_value_as = { + name = override_independence_logic + value = $ALWAYS_INDEPENDENT$ + } + if = { + limit = { scope:override_independence_logic = yes } + # Do nothing, we're just here to block subsequent checks. + } + else_if = { + limit = { + scope:ruler = { is_independent_ruler = no } + any_in_list = { + list = $TITLE_LIST$ + tier = scope:ruler.highest_held_title_tier + } + NOT = { + any_in_list = { + list = $TITLE_LIST$ + tier > scope:ruler.highest_held_title_tier + } + } + } + scope:ruler.liege = { save_scope_as = new_liege } + } + else_if = { + limit = { + NOT = { + any_in_list = { + list = $TITLE_LIST$ + tier >= scope:ruler.highest_held_title_tier + } + } + } + scope:ruler = { save_scope_as = new_liege } + } +} + +ep3_become_landed_transfer_no_ennobled_modifier_effect = { + destroy_laamp_effect = { ADVENTURER = $TITLE_RECEIVER$ } + $TITLE_RECEIVER$ = { + set_variable = { + name = ascended_throne_reason + value = $REASON$ + weeks = 1 + } + } + create_title_and_vassal_change = { + type = $TYPE$ + add_claim_on_loss = yes + save_scope_as = title_change + } + ordered_in_list = { + list = $TITLE_LIST$ + limit = { + is_landless_type_title = no + is_noble_family_title = no + } + order_by = tier + save_scope_as = new_primary_title + } + ordered_in_list = { + list = $TITLE_LIST$ + limit = { + exists = holder + is_landless_type_title = no + is_noble_family_title = no + } + holder = { + save_scope_as = old_holder + switch = { + trigger = government_has_flag + government_is_administrative = { + save_scope_value_as = { name = old_government value = flag:admin } + } + government_is_clan = { + save_scope_value_as = { name = old_government value = flag:clan } + } + government_is_tribal = { + save_scope_value_as = { name = old_government value = flag:tribal } + } + government_is_nomadic = { + save_scope_value_as = { name = old_government value = flag:nomad } + } + } + } + } + every_in_list = { + list = $TITLE_LIST$ + limit = { + is_leased_out = no + is_landless_type_title = no + is_head_of_faith = no + } + change_title_holder_include_vassals = { + holder = $TITLE_RECEIVER$ + change = scope:title_change + take_baronies = no + } + } + ordered_in_list = { + list = $TITLE_LIST$ + order_by = tier + save_scope_as = new_primary_title + } + resolve_title_and_vassal_change = scope:title_change + # Change liege + create_title_and_vassal_change = { + type = $TYPE$ + add_claim_on_loss = yes + save_scope_as = title_change2 + } + if = { + limit = { exists = scope:new_liege } + $TITLE_RECEIVER$ = { + change_liege = { + liege = scope:new_liege + change = scope:title_change2 + } + } + } + resolve_title_and_vassal_change = scope:title_change2 + $TITLE_RECEIVER$ = { + # Change our government according to the government of our liege. + ## Nomad. + if = { + limit = { + OR = { + government_has_flag = government_is_nomadic + scope:new_liege ?= { government_has_flag = government_is_nomadic } + scope:old_government ?= flag:nomad + scope:new_capital.capital_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + } + change_government = nomad_government + } + ## Administrative. + else_if = { + limit = { + OR = { + scope:new_liege ?= { government_has_flag = government_is_administrative } + scope:old_government ?= flag:admin + } + } + change_government = administrative_government + } + ## Clan. + else_if = { + limit = { + ep3_is_clan_inclined_trigger = yes + OR = { + scope:new_liege ?= { government_has_flag = government_is_clan } + scope:old_government ?= flag:clan + } + } + change_government = clan_government + } + ## Tribal. + else_if = { + limit = { + OR = { + scope:new_liege ?= { government_has_flag = government_is_tribal } + scope:old_government ?= flag:tribal + } + } + change_government = tribal_government + } + ## Else feudal. + else = { change_government = feudal_government } + } +} + +ep3_become_landed_transfer_effect = { + $TITLE_RECEIVER$ = { + if = { + limit = { character:90028 ?= this } + custom_tooltip = ep3_story_cycle_harrying.3053.b.tt + add_character_flag = hereward_settled_flag + } + set_variable = { + name = ascended_throne_reason + value = $REASON$ + weeks = 1 + } + save_scope_value_as = { + name = ascended_throne_value + value = $REASON$ + } + } + create_title_and_vassal_change = { + type = $TYPE$ + add_claim_on_loss = yes + save_scope_as = title_change + } + scope:target.holder ?= { + save_scope_as = old_holder + switch = { + trigger = government_has_flag + government_is_administrative = { + save_scope_value_as = { name = old_government value = flag:admin } + } + government_is_clan = { + save_scope_value_as = { name = old_government value = flag:clan } + } + government_is_tribal = { + save_scope_value_as = { name = old_government value = flag:tribal } + } + government_is_nomadic = { + save_scope_value_as = { name = old_government value = flag:nomad } + } + } + } + every_in_list = { + list = $TITLE_LIST$ + limit = { + is_leased_out = no + is_landless_type_title = no + is_head_of_faith = no + tier >= tier_county + } + change_title_holder_include_vassals = { + holder = $TITLE_RECEIVER$ + change = scope:title_change + take_baronies = no + } + } + ordered_in_list = { + list = $TITLE_LIST$ + order_by = tier + save_scope_as = new_primary_title + } + if = { + limit = { + NOT = { exists = scope:new_capital } + } + ordered_in_list = { + list = $TITLE_LIST$ + limit = { tier = tier_county } + order_by = development_level + save_scope_as = new_capital + } + } + if = { + limit = { has_character_flag = special_laamp_char } + resolve_title_and_vassal_change = scope:title_change + # Then we resolve vassalage separately, so that we can lock in tiers. + create_title_and_vassal_change = { + type = $TYPE$ + add_claim_on_loss = yes + save_scope_as = title_change + } + } + if = { + limit = { + exists = scope:new_liege + trigger_if = { + limit = { + exists = scope:ascended_throne_value + } + NOT = { scope:ascended_throne_value = flag:conquest } + } + } + $TITLE_RECEIVER$ = { + change_liege = { + liege = scope:new_liege + change = scope:title_change + } + } + } + else_if = { + limit = { is_independent_ruler = no } + becomes_independent = { change = scope:title_change } + } + resolve_title_and_vassal_change = scope:title_change + $TITLE_RECEIVER$ = { + # Change our government according to the government of our liege. + ## Nomad. + if = { + limit = { + OR = { + government_has_flag = government_is_nomadic + scope:new_liege ?= { government_has_flag = government_is_nomadic } + scope:old_government ?= flag:nomad + scope:new_capital.title_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + } + change_government = nomad_government + } + ## Administrative. + else_if = { + limit = { + scope:new_primary_title = { tier > tier_duchy } + OR = { + scope:new_liege ?= { government_has_flag = government_is_administrative } + scope:old_government ?= flag:admin + } + } + change_government = administrative_government + } + ## Clan. + else_if = { + limit = { + OR = { + scope:new_liege ?= { government_has_flag = government_is_clan } + scope:old_government ?= flag:clan + AND = { + ep3_is_clan_inclined_trigger = yes + is_independent_ruler = yes + } + } + } + change_government = clan_government + } + ## Tribal. + else_if = { + limit = { + OR = { + scope:new_liege ?= { government_has_flag = government_is_tribal } + scope:old_government ?= flag:tribal + } + } + change_government = tribal_government + } + ## Else feudal. + else = { change_government = feudal_government } + if = { + limit = { + calc_true_if = { + amount = 3 + prestige_level <= 3 + scope:new_capital.culture ?= { + NOR = { + $TITLE_RECEIVER$.culture ?= this + $TITLE_RECEIVER$.primary_spouse.culture ?= this + $TITLE_RECEIVER$.primary_heir.culture ?= this + } + } + scope:new_capital.faith != faith + } + } + custom_tooltip = ep3_ennobled_adventurer_modifier_reason_3 + add_character_modifier = { + modifier = ep3_ennobled_adventurer_modifier_3 + years = 30 + } + custom_tooltip = ep3_ennobled_adventurer_modifier_rules + } + else_if = { + limit = { + calc_true_if = { + amount = 2 + prestige_level <= 3 + scope:new_capital.culture ?= { + NOR = { + $TITLE_RECEIVER$.culture ?= this + $TITLE_RECEIVER$.primary_spouse.culture ?= this + $TITLE_RECEIVER$.primary_heir.culture ?= this + } + } + scope:new_capital.faith != faith + } + } + custom_tooltip = ep3_ennobled_adventurer_modifier_reason_2 + add_character_modifier = { + modifier = ep3_ennobled_adventurer_modifier_2 + years = 20 + } + custom_tooltip = ep3_ennobled_adventurer_modifier_rules + } + else_if = { + limit = { + calc_true_if = { + amount = 1 + prestige_level <= 3 + scope:new_capital.culture ?= { + NOR = { + $TITLE_RECEIVER$.culture ?= this + $TITLE_RECEIVER$.primary_spouse.culture ?= this + $TITLE_RECEIVER$.primary_heir.culture ?= this + } + } + scope:new_capital.faith != faith + } + } + custom_tooltip = ep3_ennobled_adventurer_modifier_reason_1 + add_character_modifier = { + modifier = ep3_ennobled_adventurer_modifier_1 + years = 10 + } + custom_tooltip = ep3_ennobled_adventurer_modifier_rules + } + } + destroy_laamp_effect = { ADVENTURER = $TITLE_RECEIVER$ } +} + +ep3_become_landed_cleanup_effect = { + if = { + limit = { + exists = scope:supporter + highest_held_title_tier < scope:supporter.highest_held_title_tier + } + create_title_and_vassal_change = { + type = swear_fealty + save_scope_as = change + add_claim_on_loss = no + } + change_liege = { + liege = scope:supporter + change = scope:change + } + resolve_title_and_vassal_change = scope:change + # Message for nearby rulers + create_landed_ruler_message_effect = { + LANDED = scope:attacker + FLAVOR_CHAR = scope:supporter + FLAVOR_TITLE = scope:attacker.primary_title + REASON = flag:conquest_support + } + } + else = { + if = { + limit = { + is_independent_ruler = no + NOT = { exists = scope:new_liege } + } + create_title_and_vassal_change = { + type = conquest + save_scope_as = change + add_claim_on_loss = no + } + becomes_independent = { change = scope:change } + resolve_title_and_vassal_change = scope:change + } + # Message for nearby rulers + create_landed_ruler_message_effect = { + LANDED = scope:attacker + FLAVOR_CHAR = scope:defender + FLAVOR_TITLE = scope:attacker.primary_title + REASON = flag:conquest + } + } +} + +ep3_become_landed_warning_effect = { + $TITLE$ = { save_scope_as = title } + $TITLE_RECEIVER$ = { custom_tooltip = seize_realm_warning } +} + +purchase_land_interaction_effect = { + # scope:actor = adventurer + # scope:recipient = seller + # purchased_titles = titles + + hidden_effect = { + scope:actor = { + if = { + limit = { character:90028 ?= this } + add_character_flag = hereward_settled_flag + } + if = { + limit = { + NOT = { has_trait = adventurer } + } + add_trait = adventurer + } + every_courtier = { + set_variable = { + name = former_camp_leader + value = scope:actor + } + add_trait = adventurer_follower + } + } + } + + # Determine hierarchy + ep3_become_landed_save_liege_effect = { + TITLE_GIVER = scope:recipient + ALWAYS_INDEPENDENT = no + TITLE_LIST = purchased_titles + } + # Purchase land specific + scope:actor = { + show_as_tooltip = { + pay_short_term_gold = { + gold = scope:purchase_land_cost + target = scope:recipient + } + } + } + # Resolve title, liege, government changes + ep3_become_landed_transfer_effect = { + TITLE_RECEIVER = scope:actor + TITLE_LIST = purchased_titles + TYPE = granted + REASON = flag:purchased + } + # Extra purchase land specific + scope:actor = { + stress_impact = { + greedy = minor_stress_impact_gain + lazy = minor_stress_impact_loss + } + } + # Effects on land giver + scope:recipient = { add_legitimacy = scope:purchase_land_legitimacy_cost } + # Messages for nearby players + create_landed_ruler_message_effect = { + LANDED = scope:actor + FLAVOR_CHAR = scope:recipient + FLAVOR_TITLE = scope:target + REASON = flag:purchased + } + # Hook + if = { + limit = { scope:offer_hook = yes } + scope:recipient = { + add_hook = { + type = obligation_hook + target = scope:actor + } + } + } +} + +purchase_land_interaction_shortened_effect = { + scope:actor = { + if = { + limit = { character:90028 ?= this } + custom_tooltip = ep3_story_cycle_harrying.3053.b.tt + add_character_flag = hereward_settled_flag + } + show_as_tooltip = { + pay_short_term_gold = { + gold = scope:purchase_land_cost + target = scope:recipient + } + } + hidden_effect = { + scope:recipient = { add_gold = scope:purchase_land_cost } + } + } + scope:actor = { + stress_impact = { + humble = minor_stress_impact_gain + lazy = minor_stress_impact_loss + } + if = { + limit = { + scope:target.tier = tier_duchy + } + custom_tooltip = purchase_land_interaction_shortened_effect_duchy_desc + } + else = { + custom_tooltip = purchase_land_interaction_shortened_effect_county_desc + } + if = { + limit = { + scope:target.tier = tier_duchy + } + scope:target.title_capital_county = { + save_scope_as = new_primary_title + } + } + else = { + scope:target = { + save_scope_as = new_primary_title + } + } + if = { + limit = { + calc_true_if = { + amount = 3 + prestige_level <= 3 + OR = { + scope:new_primary_title.culture != culture + primary_spouse ?= { + culture != scope:new_primary_title.culture + } + primary_heir ?= { + culture != scope:new_primary_title.culture + } + } + scope:new_primary_title.faith != faith + } + } + custom_tooltip = ep3_ennobled_adventurer_modifier_reason_3 + add_character_modifier = { + modifier = ep3_ennobled_adventurer_modifier_3 + years = 30 + } + custom_tooltip = ep3_ennobled_adventurer_modifier_rules + } + else_if = { + limit = { + calc_true_if = { + amount = 2 + prestige_level <= 3 + OR = { + scope:new_primary_title.culture != culture + primary_spouse ?= { + culture != scope:new_primary_title.culture + } + primary_heir ?= { + culture != scope:new_primary_title.culture + } + } + scope:new_primary_title.faith != faith + + } + } + custom_tooltip = ep3_ennobled_adventurer_modifier_reason_2 + add_character_modifier = { + modifier = ep3_ennobled_adventurer_modifier_2 + years = 20 + } + custom_tooltip = ep3_ennobled_adventurer_modifier_rules + } + else_if = { + limit = { + calc_true_if = { + amount = 1 + prestige_level <= 3 + OR = { + scope:new_primary_title.culture != culture + primary_spouse ?= { + culture != scope:new_primary_title.culture + } + primary_heir ?= { + culture != scope:new_primary_title.culture + } + } + scope:new_primary_title.faith != faith + + } + } + custom_tooltip = ep3_ennobled_adventurer_modifier_reason_1 + add_character_modifier = { + modifier = ep3_ennobled_adventurer_modifier_1 + years = 10 + } + custom_tooltip = ep3_ennobled_adventurer_modifier_rules + } + + } +} + +procure_estate_interaction_effect = { + if = { + limit = { + scope:piety_option = yes + } + if = { + limit = { + faith = { + NOT = { + this = scope:recipient.faith + } + } + } + set_character_faith = scope:recipient.faith + add_character_flag = { + flag = procure_estate_conversion + months = 1 + } + } + scope:recipient = { + add_piety = { + value = procure_estate_interaction_cost_base_piety + multiply = 0.5 + } + } + } + else_if = { + limit = { + scope:gold_option = yes + } + show_as_tooltip = { + pay_short_term_gold = { + target = scope:recipient + gold = procure_estate_interaction_cost_base_gold + } + } + hidden_effect = { + scope:recipient = { add_gold = procure_estate_interaction_cost_base_gold } + } + } + else_if = { + limit = { + scope:hook = yes + } + } + else = { + scope:recipient = { + add_prestige = { + value = procure_estate_interaction_cost_base_prestige + multiply = 0.25 + } + } + } + scope:recipient = { + change_influence = medium_influence_loss + add_hook = { + target = scope:actor + type = favor_hook + } + } + #Scope:actor becomes ladmin + scope:actor = { + if = { + limit = { + scope:actor.house ?= { + any_house_member = { + any_held_title = { + is_noble_family_title = yes + } + top_liege = { + this = scope:recipient.top_liege + } + } + } + } + found_cadet_house_decision_effect = { + CHARACTER = scope:actor + PRESTIGE = major_prestige_gain + } + } + # Note our courtiers so that they don't escape. + every_courtier = { add_to_list = courtiers_list } + # Change liege + destroy_laamp_effect = { ADVENTURER = scope:actor } + hidden_effect = { + scope:recipient.top_liege = { + add_courtier = scope:actor + return_to_court = yes + } + } + create_noble_family_effect = yes + hidden_effect = { + # Return any escaped courtiers. + every_in_list = { + list = courtiers_list + scope:actor = { add_courtier = prev } + } + # And boot any new autogenned arrivals. + every_courtier = { + limit = { + is_lowborn = yes + NOR = { + is_in_list = courtiers_list + is_close_or_extended_family_of = scope:actor + is_consort_of = scope:actor + has_important_relationship_trigger = { CHARACTER = scope:actor } + } + } + silent_disappearance_effect = yes + } + } + create_title_and_vassal_change = { + type = swear_fealty + add_claim_on_loss = no + save_scope_as = title_change + } + change_liege = { + liege = scope:recipient.top_liege + change = scope:title_change + } + resolve_title_and_vassal_change = scope:title_change + change_government = administrative_government + hidden_effect = { + if = { + limit = { + NOT = { + domicile.domicile_location = { + this = scope:recipient.capital_province + } + } + } + domicile = { + move_domicile = scope:recipient.capital_province + } + } + } + add_character_modifier = { + modifier = ep3_administrative_outsider_modifier + years = 15 + } + } + scope:recipient.top_liege = { + if = { + limit = { + is_ai = no + } + send_interface_message = { + type = msg_landless_adventurer_nearby + title = procure_estate_message_title + left_icon = scope:actor + right_icon = scope:recipient + custom_tooltip = procure_estate_message_tt + } + } + every_vassal_or_below = { + limit = { + is_ai = no + } + send_interface_message = { + type = msg_landless_adventurer_nearby + title = procure_estate_message_title + left_icon = scope:actor + right_icon = scope:recipient + custom_tooltip = procure_estate_message_tt + } + } + } +} + +negotiate_settlement_interaction_effect = { + # scope:actor = offerer + # scope:recipient = adventurer + # offered_titles = titles + + hidden_effect = { + scope:recipient = { + if = { + limit = { + NOT = { has_trait = adventurer } + } + add_trait = adventurer + } + every_courtier = { + set_variable = { + name = former_camp_leader + value = scope:recipient + } + add_trait = adventurer_follower + } + } + } + + # Determine hierarchy + ep3_become_landed_save_liege_effect = { + TITLE_GIVER = scope:actor + ALWAYS_INDEPENDENT = no + TITLE_LIST = offered_titles + } + # Negotiate settlement specific + scope:recipient = { + # End relevant wars + every_character_war = { + limit = { + OR = { + primary_attacker = scope:recipient + primary_defender = scope:recipient + } + } + end_war = white_peace + } + # Remove from relevant wars + every_character_war = { + limit = { + NOR = { + primary_attacker = scope:recipient + primary_defender = scope:recipient + } + any_war_defender = { + OR = { + this = scope:actor + this.top_liege = scope:actor.top_liege + } + } + } + remove_participant = scope:recipient + } + } + # Resolve title, liege, government changes + ep3_become_landed_transfer_effect = { + TITLE_RECEIVER = scope:recipient + TITLE_LIST = offered_titles + TYPE = granted + REASON = flag:negotiated + } + # Effects on land giver + scope:actor = { + add_legitimacy = scope:negotiate_settlement_legitimacy_cost + stress_impact = { + greedy = minor_stress_impact_gain + vengeful = minor_stress_impact_gain + } + } + # Messages for nearby players + create_landed_ruler_message_effect = { + LANDED = scope:recipient + FLAVOR_CHAR = scope:actor + FLAVOR_TITLE = scope:new_primary_title + REASON = flag:negotiated + } + # And, just in case it's failed, make sure that we've vassalised our new friend. + hidden_effect = { + if = { + limit = { + scope:recipient = { + highest_held_title_tier < scope:actor.highest_held_title_tier + is_independent_ruler = yes + } + } + create_title_and_vassal_change = { + type = swear_fealty + save_scope_as = change + } + scope:recipient = { + change_liege = { + liege = scope:actor + change = scope:change + } + } + resolve_title_and_vassal_change = scope:change + } + } +} + +create_landed_ruler_message_effect = { + hidden_effect = { + $LANDED$ = { save_scope_as = landed } + $FLAVOR_CHAR$ = { save_scope_as = landed_flavor_char } + $FLAVOR_TITLE$ = { save_scope_as = landed_flavor_title } + save_scope_value_as = { + name = landed_creation_reason + value = $REASON$ + } + every_player = { + limit = { + NOR = { + this = scope:landed + this = scope:landed_flavor_char + } + top_liege = scope:landed.top_liege + } + send_interface_message = { + type = msg_landless_adventurer_nearby + title = nearby_landed_ruler_created_message_title + left_icon = scope:landed + right_icon = scope:landed_flavor_char + switch = { + trigger = scope:landed_creation_reason + flag:purchased = { custom_tooltip = nearby_landed_ruler_created_message_purchased_tt } + flag:negotiated = { custom_tooltip = nearby_landed_ruler_created_message_negotiated_tt } + flag:conquest_supporter = { custom_tooltip = nearby_landed_ruler_created_message_conquest_support_tt } + flag:conquest = { custom_tooltip = nearby_landed_ruler_created_message_conquest_tt } + flag:seize_realm = { custom_tooltip = nearby_landed_ruler_created_message_seize_realm_tt } + flag:culture_champion = { custom_tooltip = nearby_landed_ruler_created_message_culture_champion_tt } + fallback = { custom_tooltip = nearby_landed_ruler_created_message_fallback_tt } + } + } + } + } +} + +conquest_supporter_memory_variable_effect = { + set_variable = { + name = ascended_throne_reason + value = flag:conquest_supporter + weeks = 1 + } + set_variable = { + name = ascended_throne_extra + value = scope:supporter + weeks = 1 + } +} + +ep3_laamp_supporter_invalidated_effect = { + if = { + limit = { exists = var:adventurer_invasion_supporter } + save_scope_as = adventurer + var:adventurer_invasion_supporter ?= { save_scope_as = supporter } + var:adventurer_invasion_target ?= { save_scope_as = target } + } + else_if = { + limit = { exists = var:adventurer_invasion_supportee } + var:adventurer_invasion_supportee ?= { save_scope_as = adventurer } + var:adventurer_invasion_target ?= { save_scope_as = target } + save_scope_as = supporter + } + if = { + limit = { + exists = scope:adventurer + exists = scope:supporter + exists = scope:target + } + scope:adventurer ?= { + send_interface_message = { + type = event_landless_adventurer_neutral + title = ep3_laamp_sponsor_invalidated_title + left_icon = scope:supporter + right_icon = scope:target + remove_variable = adventurer_invasion_supporter + remove_variable = adventurer_invasion_target + custom_tooltip = ep3_laamp_sponsor_invalidated_adventurer + } + } + scope:supporter ?= { + send_interface_message = { + type = event_landless_adventurer_neutral + title = ep3_laamp_sponsor_invalidated_title + left_icon = scope:attacker + right_icon = scope:target + remove_variable = adventurer_invasion_supportee + remove_variable = adventurer_invasion_target + custom_tooltip = ep3_laamp_sponsor_invalidated_supporter + if = { + limit = { exists = var:adventurer_invasion_join_war } + set_variable = { + name = adventurer_invasion_join_war + value = scope:actor + years = 5 + } + } + if = { + limit = { exists = var:adventurer_invasion_request_soldiers } + set_variable = { + name = adventurer_invasion_request_soldiers + value = scope:actor + years = 5 + } + } + } + } + } +} + +ep3_laamp_support_variable_cleanup_effect = { + if = { + limit = { exists = var:adventurer_invasion_supporter } + save_scope_as = adventurer + var:adventurer_invasion_supporter ?= { save_scope_as = supporter } + var:adventurer_invasion_target ?= { save_scope_as = target } + } + else_if = { + limit = { exists = var:adventurer_invasion_supportee } + var:adventurer_invasion_supportee ?= { save_scope_as = adventurer } + var:adventurer_invasion_target ?= { save_scope_as = target } + save_scope_as = supporter + } + scope:adventurer ?= { + remove_variable = adventurer_invasion_supporter + remove_variable = adventurer_invasion_target + } + scope:supporter ?= { + remove_variable = adventurer_invasion_supportee + remove_variable = adventurer_invasion_target + } +} + +seize_realm_scheme_success_effect = { + # scope:target = ruler + # scope:owner = adventurer + + hidden_effect = { + scope:owner = { + if = { + limit = { + NOT = { has_trait = adventurer } + } + add_trait = adventurer + } + every_courtier = { + set_variable = { + name = former_camp_leader + value = scope:owner + } + add_trait = adventurer_follower + } + } + } + + scope:target = { + save_scope_as = background_dungeon_scope + save_scope_as = background_courtyard_scope + save_scope_as = background_throne_room_scope + every_held_title = { + limit = { + is_leased_out = no + is_landless_type_title = no + is_head_of_faith = no + } + add_to_list = seized_titles + } + ordered_in_list = { + list = seized_titles + order_by = tier + save_scope_as = realm_title + } + } + # Determine independent vassals + adventurer_realm_destabilisation_list_effect = { + TITLE_GIVER = scope:target + TITLE_RECEIVER = scope:owner + TITLE = scope:target.primary_title + } + # Determine hierarchy + ep3_become_landed_save_liege_effect = { + TITLE_GIVER = scope:target + ALWAYS_INDEPENDENT = no + TITLE_LIST = seized_titles + } + # Resolve title, liege, government changes + ep3_become_landed_transfer_effect = { + TITLE_RECEIVER = scope:owner + TITLE_LIST = seized_titles + TYPE = usurped + REASON = flag:seize_realm + } + # Old ruler's fate + if = { + limit = { exists = scope:death } + scope:target = { + death = { death_reason = death_fight } + } + } + else_if = { + limit = { exists = scope:imprison } + scope:target = { add_character_flag = was_abducted_block_notification_event } + rightfully_imprison_character_less_verbose_effect = { + TARGET = scope:target + IMPRISONER = scope:owner + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:owner + TARGET = scope:target + VALUE = medium_unity_loss + DESC = clan_unity_seize_realm_attempted.desc + REVERSE_NON_HOUSE_TARGET = no + } + successful_seize_realm_opinion_effect = { + VICTIM = scope:target + PLOTTER = scope:owner + } + # Vassals break away + adventurer_realm_destabilisation_transfer_effect = { + TITLE_RECEIVER = scope:owner + TITLE_GIVER = scope:target + TITLE = scope:realm_title + TITLE_LIST = seized_titles + } + # Messages for nearby players + create_landed_ruler_message_effect = { + LANDED = scope:owner + FLAVOR_CHAR = scope:target + FLAVOR_TITLE = scope:realm_title + REASON = flag:seize_realm + } + scope:owner = { + create_character_memory = { + type = seized_realm_memory + participants = { deposed = scope:target } + } + ordered_memory = { + limit = { has_memory_type = seized_realm_memory } + order_by = memory_creation_date + if = { + limit = { + NOT = { exists = var:realm } + } + set_variable = { + name = realm + value = scope:realm_title + } + } + } + } + scope:target = { + create_character_memory = { + type = realm_seized_memory + participants = { deposer = scope:owner } + } + ordered_memory = { + limit = { has_memory_type = realm_seized_memory } + order_by = memory_creation_date + if = { + limit = { + NOT = { exists = var:realm } + } + set_variable = { + name = realm + value = scope:realm_title + } + } + } + } +} + +seize_realm_scheme_failure_effect = { + scope:scheme = { end_scheme = yes } + #Add Watchful Modifier to the target + scope:target = { + save_scope_as = background_dungeon_scope + save_scope_as = background_courtyard_scope + save_scope_as = background_throne_room_scope + ordered_held_title = { + limit = { + is_leased_out = no + is_landless_type_title = no + is_head_of_faith = no + } + order_by = tier + save_scope_as = realm_title + } + show_as_tooltip = { + add_character_modifier = { + modifier = watchful_modifier + days = watchful_modifier_duration + } + } + } + # Old ruler's fate + if = { + limit = { exists = scope:death } + scope:owner = { + death = { death_reason = death_fight } + } + } + else = { + scope:owner = { + create_character_memory = { + type = seized_realm_failed_memory + participants = { deposed = scope:target } + } + ordered_memory = { + limit = { has_memory_type = seized_realm_failed_memory } + order_by = memory_creation_date + if = { + limit = { + NOT = { exists = var:realm } + } + set_variable = { + name = realm + value = scope:realm_title + } + } + } + } + if = { + limit = { exists = scope:imprison } + scope:owner = { add_character_flag = was_abducted_block_notification_event } + rightfully_imprison_character_less_verbose_effect = { + TARGET = scope:owner + IMPRISONER = scope:target + } + hidden_effect = { change_prison_type = dungeon } + } + } + attempted_seize_realm_opinion_effect = { + VICTIM = scope:target + PLOTTER = scope:owner + } + # If we're a clan this affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:owner + TARGET = scope:target + VALUE = medium_unity_loss + DESC = clan_unity_seize_realm_attempted.desc + REVERSE_NON_HOUSE_TARGET = no + } + scope:target = { + create_character_memory = { + type = realm_seized_failed_memory + participants = { deposer = scope:owner } + } + ordered_memory = { + limit = { has_memory_type = realm_seized_failed_memory } + order_by = memory_creation_date + if = { + limit = { + NOT = { exists = var:realm } + } + set_variable = { + name = realm + value = scope:realm_title + } + } + } + } +} + +successful_seize_realm_opinion_effect = { + $VICTIM$ = { + if = { + limit = { is_alive = yes } + add_opinion = { + target = $PLOTTER$ + modifier = seized_my_realm_crime + } + set_relation_rival = { + target = scope:owner + reason = rival_seized_realm_reason + } + } + every_spouse = { + limit = { + NOR = { + this = $PLOTTER$ + is_spouse_of = $PLOTTER$ + is_close_family_of = $PLOTTER$ + } + } + add_to_temporary_list = close_family_seize_realm_opinion_list + } + every_close_family_member = { + limit = { + NOR = { + this = $PLOTTER$ + is_spouse_of = $PLOTTER$ + is_close_family_of = $PLOTTER$ + } + } + add_to_temporary_list = close_family_seize_realm_opinion_list + } + every_in_list = { + list = close_family_seize_realm_opinion_list + custom = all_close_family_and_spouses + add_opinion = { + target = $PLOTTER$ + modifier = seized_close_family_realm_crime + } + } + } +} + +attempted_seize_realm_opinion_effect = { + $VICTIM$ = { + if = { + limit = { is_alive = yes } + add_opinion = { + target = $PLOTTER$ + modifier = attempted_to_seize_my_realm_crime + } + } + every_spouse = { + limit = { NOT = { this = $PLOTTER$ } } + add_to_temporary_list = close_family_seize_realm_opinion_list + } + every_close_family_member = { + limit = { NOT = { this = $PLOTTER$ } } + add_to_temporary_list = close_family_seize_realm_opinion_list + } + + if = { + limit = { + any_in_list = { list = close_family_seize_realm_opinion_list } + } + every_in_list = { + list = close_family_seize_realm_opinion_list + custom = all_close_family_and_spouses + add_opinion = { + target = $PLOTTER$ + modifier = attempted_to_seize_realm_close_family_crime + } + } + } + + } +} + +adventurer_realm_destabilisation_list_effect = { + $TITLE_RECEIVER$ = { save_scope_as = adventurer } + $TITLE$ = { save_scope_as = title } + $TITLE_GIVER$ = { + save_scope_as = ruler + # Determine vassal sentiment - calculated before ruler change + hidden_effect = { + every_vassal = { + limit = { + highest_held_title_tier >= tier_county + save_temporary_scope_as = vassal_temp + # Only vassals who will not *still* be de jure vassals of the title loser via other titles + trigger_if = { + limit = { + $TITLE_GIVER$ = { + any_held_title = { + tier >= scope:title.tier + NOT = { this = scope:title } + } + } + } + any_held_title = { + target_is_de_jure_liege_or_above = scope:title + } + } + trigger_if = { + limit = { + government_has_flag = government_is_administrative + } + scope:title = { + OR = { + AND = { + scope:ruler.primary_title.tier = tier_kingdom + tier < tier_kingdom + } + tier < tier_empire + } + } + } + } + # Calculate how likely are they to not become your vassal + random = { + chance = 0 + ### FAITH/CULTURE + modifier = { # Cultural acceptance differences + add = { + value = "culture.cultural_acceptance(scope:adventurer.culture)" + subtract = 100 + abs = yes + divide = 5 + } + culture = { + this != scope:adventurer.culture + cultural_acceptance = { + target = scope:adventurer.culture + value < 50 + } + OR = { + this = scope:ruler.culture + "cultural_acceptance(scope:ruler.culture)" > "cultural_acceptance(scope:adventurer.culture)" + } + } + } + modifier = { # Zealous of other faiths more likely + add = { + value = ai_zeal + multiply = 0.15 + multiply = "scope:vassal_temp.faith.faith_hostility_level(scope:adventurer.faith)" + max = 25 + } + ai_zeal > low_positive_zeal + faith = { + this != scope:adventurer.faith + "faith_hostility_level(scope:adventurer.faith)" > 0 + } + } + modifier = { # Theocatic Vassals of different faith more likely + factor = 2 + has_government = theocracy_government + faith != scope:adventurer.faith + } + ### DISTANCE + modifier = { # Distant vassals more likely + add = { + value = 0 + add = scope:distance + if = { + limit = { scope:distance >= squared_distance_medium } + add = scope:distance + multiply = 0.0001 + } + max = 25 + } + "capital_county.squared_distance(scope:ruler.capital_county)" >= squared_distance_medium + capital_county = { + save_temporary_scope_value_as = { + name = distance + value = "squared_distance(scope:ruler.capital_county)" + } + } + } + ### PERSONALITY + ai_value_modifier = { + ai_boldness = 0.15 + ai_energy = 0.15 + ai_greed = 0.15 + ai_honor = -0.15 + } + ### OPINION + opinion_modifier = { # More likely if dislikes adventurer + opinion_target = scope:adventurer + multiplier = -0.25 + } + opinion_modifier = { # More likely if liked old ruler + opinion_target = scope:ruler + multiplier = 0.1 + } + ### STRENGTH + modifier = { # Small vassals less likely + add = -15 + tier_difference = { + target = scope:ruler + value <= -2 + } + } + modifier = { + add = -25 + realm_size < tiny_realm_size + } + modifier = { # Powerful vassals more likely + factor = 1.25 + is_powerful_vassal = yes + } + modifier = { # Powerful vassals more likely + add = { + value = highest_held_title_tier + multiply = 5 + } + } + ### RELEVANCE + modifier = { # Fringe vassals more likely + factor = 1.25 + any_sub_realm_county = { + any_neighboring_county = { holder.top_liege != scope:ruler } + } + } + modifier = { # Core vassals less likely + factor = 0.75 + scope:ruler.capital_county.kingdom = { + any_de_jure_county = { this = scope:vassal_temp.capital_county } + } + } + ### FAMILY + modifier = { # Relatives of deposed more likely + factor = 1.1 + is_close_family_of = scope:ruler + NOT = { is_close_family_of = scope:adventurer } + } + modifier = { # Dynasts of deposed more likely + factor = 1.1 + dynasty ?= { + this = scope:ruler.dynasty + NOT = { this = scope:adventurer.dynasty } + } + } + modifier = { # Relatives of adventurer less likely + factor = 0.75 + is_close_family_of = scope:adventurer + NOT = { is_close_family_of = scope:ruler } + } + modifier = { # Dynasts of adventurer less likely + factor = 0.75 + dynasty ?= { + this = scope:adventurer.dynasty + NOT = { this = scope:ruler.dynasty } + } + } + ### HOOKS + modifier = { + factor = 0 + scope:adventurer = { has_hook = scope:vassal_temp } + } + modifier = { + factor = 2 + scope:ruler = { has_hook = scope:vassal_temp } + } + ### TIER + modifier = { + factor = 1.5 + scope:ruler.primary_title.tier = tier_empire + } + modifier = { + factor = 1.25 + scope:ruler.primary_title.tier = tier_kingdom + } + max = 95 + add_to_list = independent_vassals + } + } + # Save heirs for claimant wars + scope:title = { + every_title_heir = { + limit = { + save_temporary_scope_as = heir_temp + scope:title = { + place_in_line_of_succession = { + target = scope:heir_temp + value <= 5 + } + } + } + add_to_list = heirs + } + } + } + } +} + +adventurer_realm_destabilisation_civil_war_effect = { + $TITLE_GIVER$ = { save_scope_as = ruler } + $TITLE_RECEIVER$ = { save_scope_as = adventurer } + $TITLE$ = { save_scope_as = title } + if = { + limit = { + any_in_list = { list = independent_vassals } + } + scope:ruler = { + if = { + limit = { is_alive = yes } + save_scope_as = claimant + } + else_if = { + limit = { + any_in_list = { list = heirs } + } + random_in_list = { + list = heirs + limit = { has_strong_claim_on = scope:realm } + alternative_limit = { has_weak_claim_on = scope:realm } + weight = { + base = 1 + modifier = { add = age } + } + save_scope_as = claimant + } + } + else_if = { + limit = { + scope:title = { + any_claimant = { + NOT = { this = scope:adventurer } + } + } + } + scope:title = { + random_claimant = { + limit = { has_strong_claim_on = scope:realm } + alternative_limit = { has_weak_claim_on = scope:realm } + weight = { + base = 1 + modifier = { add = age } + } + save_scope_as = claimant + } + } + } + else = { + ordered_in_list = { + list = independent_vassals + order_by = max_military_strength + save_scope_as = claimant + } + } + } + # Vassals Breakaway + ordered_in_list = { + list = independent_vassals + limit = { + can_create_faction = { + type = claimant_faction + target = scope:adventurer + } + } + order_by = max_military_strength + save_scope_as = revolt_leader + create_faction = { + type = claimant_faction + target = scope:adventurer + } + joined_faction = { + save_scope_as = faction + set_special_character = scope:claimant + set_special_title = scope:realm + } + } + every_in_list = { + list = independent_vassals + limit = { + NOT = { this = scope:revolt_leader } + can_join_faction = scope:faction + } + join_faction = scope:faction + } + scope:faction = { + faction_start_war = { title = scope:realm } + } + } +} + +adventurer_realm_destabilisation_transfer_effect = { + $TITLE_RECEIVER$ = { save_scope_as = adventurer } + $TITLE_GIVER$ = { save_scope_as = ruler } + $TITLE$ = { save_scope_as = title } + if = { + limit = { + any_in_list = { list = independent_vassals } + } + # Vassals Breakaway + create_title_and_vassal_change = { + type = independency + add_claim_on_loss = yes + save_scope_as = change + } + hidden_effect = { + every_in_list = { + list = independent_vassals + save_temporary_scope_as = vassal_temp + if = { + limit = { + scope:adventurer = { is_independent_ruler = yes } + scope:ruler = { + NOT = { + any_held_title = { + NOT = { this = scope:title } + any_in_de_jure_hierarchy = { this = scope:vassal_temp.primary_title } + } + } + } + } + becomes_independent = { change = scope:change } + } + else_if = { + limit = { + scope:ruler = { + NOT = { + any_held_title = { + NOT = { this = scope:title } + any_in_de_jure_hierarchy = { this = scope:vassal_temp.primary_title } + } + } + } + } + change_liege = { + liege = scope:adventurer.liege + change = scope:change + } + } + add_opinion = { + modifier = seized_lieges_realm_crime + target = scope:adventurer + } + } + } + resolve_title_and_vassal_change = scope:change + } + create_title_and_vassal_change = { + type = conquest + add_claim_on_loss = yes + save_scope_as = change + } + hidden_effect = { + every_in_list = { + list = $TITLE_LIST$ + limit = { tier >= tier_county } + custom_tooltip = CONQUEST_CB_TITLE + every_in_de_jure_hierarchy = { + continue = { tier >= tier_duchy } + limit = { + tier >= tier_county + holder ?= { + OR = { + this = scope:ruler + target_is_liege_or_above = scope:ruler + } + } + } + save_temporary_scope_as = title_temp + if = { + limit = { + NOT = { holder = scope:adventurer } + OR = { + holder = scope:ruler + holder.highest_held_title_tier >= scope:title.tier + scope:adventurer = { has_claim_on = scope:title_temp } + } + } + add_to_temporary_list = titles_taken + } + else = { + holder = { + if = { + limit = { + liege = scope:ruler + NOT = { is_in_list = independent_vassals } + } + add_to_temporary_list = vassals_taken + } + } + } + } + } + } + hidden_effect = { + every_in_list = { + list = vassals_taken + change_liege = { + liege = scope:adventurer + change = scope:change + } + } + } + resolve_title_and_vassal_change = scope:change +} + +player_adventurer_contract_generation_on_domicile_moved_effect = { + if = { + limit = { player_adventurer_sufficient_distance_for_contract_spawn_trigger = yes } + save_temporary_scope_as = char_temp + if = { # Explorers + limit = { has_realm_law = camp_purpose_explorers } + populate_task_contracts_for_area = { + location = scope:char_temp.location + amount = 1 + group = { laamp_contracts_transport_group } + } + } + else_if = { # Mercenaries + limit = { has_realm_law = camp_purpose_mercenaries } + populate_task_contracts_for_area = { + location = scope:char_temp.location + amount = 1 + group = { laamp_contracts_war_group } + } + ordered_independent_ruler = { + limit = { + in_diplomatic_range = scope:char_temp + scope:char_temp = { + can_create_task_contract = { + type_name = laamp_join_war_contract + employer = prev + } + } + } + order_by = { + value = 0 + subtract = "capital_county.squared_distance(scope:char_temp.domicile.domicile_location)" + } + ordered_character_war = { + limit = { + ep3_adventurer_mercenary_war_trigger = { + EMPLOYER = prev + LAAMP = scope:char_temp + } + } + order_by = war_total_participants_current_strength_value + primary_defender ?= { save_scope_as = defender } + primary_attacker ?= { save_scope_as = attacker } + save_scope_as = war + scope:char_temp = { + spawn_join_war_contracts_effect = { + WAR = scope:war + LAAMP = scope:char_temp + ATTACKER = scope:attacker + DEFENDER = scope:defender + } + } + } + } + debug_log = "WAR_1" + debug_log_scopes = yes + } + populate_location_with_contracts_effect = { + AREA_CHAR = scope:char_temp + AMOUNT = 3 + } + # Log that we visited this place. + add_to_variable_list = { + name = laamp_recently_visited_kingdoms + target = scope:kingdom_temp + years = 5 + } + } +} + +player_adventurer_contract_generation_on_wait_in_place_effect = { + if = { + limit = { player_adventurer_sufficient_distance_for_contract_spawn_trigger = yes } + # Track where we are. + set_variable = { + name = contract_passive_spawn_location + value = location.kingdom + } + # Reset the tally. + set_variable = { + name = contract_passive_spawn_tally + value = 0 + } + # Queue up an additional contract. + trigger_event = { + id = ep3_laamps.9981 + months = { 4 6 } + } + } +} + +contract_passive_spawn_effect = { + #count how many contracts you already have + every_character_task_contract = { + add_to_list = num_of_contracts_before + } + # G'is a contract. + populate_location_with_contracts_effect = { + AREA_CHAR = root + AMOUNT = $SPAWN_CONTRACTS$ + } + #count them again to see if the effect above spawned something + every_character_task_contract = { + add_to_list = num_of_contracts_after + } + set_local_variable = { + name = current_value + value = list_size:num_of_contracts_before + } + # Make sure we don't get too many of them just sitting in one place. + while = { + limit = { + local_var:current_value < list_size:num_of_contracts_after + } + increment_variable_effect = { + VAR = contract_passive_spawn_tally + VAL = 1 + } + change_local_variable = { + name = current_value + add = 1 + } + } +} + +#spawns a valid task contract for a landless adventurer +# root = landless adventurer +# TASK_CONTRACT_TYPE = type name of a task contract you want to spawn +# SPAWN_POINT = where you want the task contract to appear on the map +laamp_spawn_valid_task_contract = { + $SPAWN_POINT$ = { + save_scope_as = spawn_location + } + random_ruler = { + limit = { + root = { + can_create_task_contract = { + type_name = $TASK_CONTRACT_TYPE$ + employer = prev + } + } + } + save_scope_as = employer + } + create_task_contract = { + task_contract_type = $TASK_CONTRACT_TYPE$ + task_contract_tier = scope:employer.task_contract_tier_value + location = scope:spawn_location + task_contract_employer = scope:employer + } +} + +points_of_interest_tracker_effect = { + if = { + limit = { + government_has_flag = government_is_landless_adventurer + location = { + save_temporary_scope_as = province_temp + OR = { + # Building flags + has_any_point_of_interest_flag = yes + # Capitals + AND = { + province_owner.top_liege.capital_province ?= this + province_owner.top_liege ?= { highest_held_title_tier >= tier_kingdom } + } + # Grand Cities + this = province:4828 #Baghdad + this = province:2575 #Rome + this = province:496 #Constantinople + # Points of interest + this = province:747 # Halikarnassos + this = province:6053 # Alexandria + # Legend stuff + any_legend = { + legend_owner.capital_province ?= scope:province_temp + OR = { + legend_quality = illustrious + legend_quality = mythical + } + } + } + } + } + if = { + limit = { + NOT = { + has_variable = poi_visited + } + } + set_variable = { + name = poi_visited + value = 1 + } + } + else = { + change_variable = { + name = poi_visited + add = 1 + } + } + } +} + +zealous_missionary_conversion_effect = { + if = { + limit = { + exists = location.barony.holder + government_has_flag = government_is_landless_adventurer + has_character_flag = zealous_missionary_timer + location.county ?= { hasan_evangelize_province_trigger = yes } + } + trigger_event = ep3_laamp_decision_event.1103 + } +} + +war_contracts_completed_tracker_effect = { + if = { + limit = { + government_has_flag = government_is_landless_adventurer + has_variable = war_contract_tracker + } + change_variable = { + name = war_contract_tracker + add = 1 + } + } + else_if = { + limit = { + government_has_flag = government_is_landless_adventurer + } + set_variable = { + name = war_contract_tracker + value = 1 + } + } +} + +bandit_king_maa_spawn_effect = { + + save_scope_as = bandit_king + if = { + limit = { + has_character_modifier = bandit_king_modifier + } + set_variable = { + name = maa_number + value = 1 + } + if = { + limit = { + scope:extra_reward ?= flag:yes + } + change_variable = { + name = maa_number + add = 2 + } + } + if = { + limit = { + calc_true_if = { + amount >= 4 + has_trait_xp = { + trait = gallowsbait + track = bandit + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = marauder + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = poacher + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = thief + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = trickster + value >= 60 + } + } + } + change_variable = { + name = maa_number + add = 2 + } + } + else_if = { + limit = { + calc_true_if = { + amount >= 2 + has_trait_xp = { + trait = gallowsbait + track = bandit + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = marauder + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = poacher + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = thief + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = trickster + value >= 60 + } + } + } + change_variable = { + name = maa_number + add = 1 + } + } + else_if = { + limit = { + OR = { + has_trait_xp = { + trait = gallowsbait + track = bandit + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = marauder + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = poacher + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = thief + value >= 60 + } + has_trait_xp = { + trait = gallowsbait + track = trickster + value >= 60 + } + } + } + change_variable = { + name = maa_number + add = 1 + } + } + custom_tooltip = bandit_king_maa_spawn_effect_desc #otherwise the tooltip looks crazy + hidden_effect = { + random_list = { + 1 = { + spawn_army = { + men_at_arms = { + type = maa_poachers + stacks = var:maa_number + } + inheritable = no + uses_supply = yes + location = scope:bandit_king.location + name = ep3_poachers_army + } + spawn_army = { + men_at_arms = { + type = maa_thieves + stacks = var:maa_number + } + inheritable = no + uses_supply = yes + location = scope:bandit_king.location + name = ep3_bandits_army + } + } + 1 = { + spawn_army = { + men_at_arms = { + type = maa_bandits + stacks = var:maa_number + } + inheritable = no + uses_supply = yes + location = scope:bandit_king.location + name = ep3_bandits_army + } + spawn_army = { + men_at_arms = { + type = maa_thieves + stacks = var:maa_number + } + inheritable = no + uses_supply = yes + location = scope:bandit_king.location + name = ep3_bandits_army + } + } + } + } + } +} + +absolve_crusaders_of_gallowsbait_effect = { + if = { + limit = { + has_trait_xp = { + trait = gallowsbait + track = bandit + value >= 1 + } + } + add_trait_xp = { + trait = gallowsbait + track = bandit + value = crusader_absolution_xp_removed_per_track_value + } + } + if = { + limit = { + has_trait_xp = { + trait = gallowsbait + track = trickster + value >= 1 + } + } + add_trait_xp = { + trait = gallowsbait + track = trickster + value = crusader_absolution_xp_removed_per_track_value + } + } + if = { + limit = { + has_trait_xp = { + trait = gallowsbait + track = thief + value >= 1 + } + } + add_trait_xp = { + trait = gallowsbait + track = thief + value = crusader_absolution_xp_removed_per_track_value + } + } + if = { + limit = { + has_trait_xp = { + trait = gallowsbait + track = poacher + value >= 1 + } + } + add_trait_xp = { + trait = gallowsbait + track = poacher + value = crusader_absolution_xp_removed_per_track_value + } + } + if = { + limit = { + has_trait_xp = { + trait = gallowsbait + track = marauder + value >= 1 + } + } + add_trait_xp = { + trait = gallowsbait + track = marauder + value = crusader_absolution_xp_removed_per_track_value + } + } + if = { + limit = { + has_trait_xp = { + trait = gallowsbait + track = bandit + value <= crusader_absolution_min_xp_to_remove_trait_value + } + has_trait_xp = { + trait = gallowsbait + track = trickster + value <= crusader_absolution_min_xp_to_remove_trait_value + } + has_trait_xp = { + trait = gallowsbait + track = thief + value <= crusader_absolution_min_xp_to_remove_trait_value + } + has_trait_xp = { + trait = gallowsbait + track = poacher + value <= crusader_absolution_min_xp_to_remove_trait_value + } + has_trait_xp = { + trait = gallowsbait + track = marauder + value <= crusader_absolution_min_xp_to_remove_trait_value + } + } + remove_trait = gallowsbait + } +} + +temporarily_lock_visit_settlement_effect = { + set_variable = { + name = ep3_laamp_decision_1000_is_visiting + days = visit_settlement_lock_days + } +} + +################################################## +# Admin Government +################################################## + +torture_grants_influence_effect = { + if = { + limit = { + domicile ?= { has_domicile_parameter = estate_torture_grants_influence } + } + change_influence = medium_influence_gain + } +} + +create_noble_family_effect = { + debug_log = create_noble_family_title + + save_scope_as = new_noble_family_holder + hidden_effect = { # NF can only be held by house heads + if = { # Start by checking that we are not the house head already + limit = { + house ?= { + house_head != scope:new_noble_family_holder + } + } + if = { # If not, let's see if it would be reasonable to become house head... + limit = { + house ?= { + house_head ?= { + top_liege = scope:new_noble_family_holder.top_liege + OR = { + is_ruler = no + primary_title = { + tier <= tier_county + } + } + is_ai = yes # Don't steal house head from a player + } + } + } + house = { set_house_head = scope:new_noble_family_holder } + } + else = { # ... Otherwise, we create a cadet branch + create_cadet_branch = yes + } + } + } + give_noble_family_title = { + name = noble_family_name + article = DEFAULT_TITLE_NAME_ARTICLE + save_scope_as = new_title + } + scope:new_title = { + holder = { + save_scope_as = noble_family_head + } + set_coa = scope:noble_family_head.house + } + custom_description = { + text = create_noble_family_tt + } + + #Notifications + top_liege ?= { + every_vassal = { + limit = { + is_ai = no + NOT = { this = scope:new_noble_family_holder } + } + trigger_event = { + id = ep3_emperor_yearly.2410 + days = 1 + } + } + } + + debug_log_scopes = yes +} + +increase_governance_effect = { + # VALUE - The amount of XP added to the Governor trait/increased chance to gain the Governor trait + save_scope_value_as = { + name = governor_xp_gain + value = { + value = $VALUE$ + if = { + limit = { + exists = scope:task_contract + } + multiply = governance_task_contract_tier_value + + if = { + limit = { + $VALUE$ > 0 + domicile ?= { has_domicile_parameter = estate_governor_trait_xp_bonus_for_contracts } + } + multiply = { + value = 1 + add = estate_governance_contract_bonus_value + } + } + } + } + } + if = { # First, let's make sure you are a governor in an Admin realm + limit = { + government_has_flag = government_is_administrative + is_landed = yes + } + # Double-check if you have the governor trait - If not, let's make sure you get it + if = { + limit = { + NOT = { has_trait = governor } + } + add_trait = governor + } + # If you have the trait, let's increase your XP for it + else_if = { + limit = { + has_trait = governor + } + add_trait_xp = { + trait = governor + value = scope:governor_xp_gain + } + } + } +} + +spawn_governance_contract_effect = { + save_scope_as = governor + # Select the Contract Tier (somewhat randomized, based on your experience as a governor) + random_list = { + 30 = { + save_scope_value_as = { + name = governance_task_contract_tier + value = define:NTaskContract|LOW_TASK_CONTRACT_TIER + } + } + 20 = { + save_scope_value_as = { + name = governance_task_contract_tier + value = define:NTaskContract|MEDIUM_TASK_CONTRACT_TIER + } + + modifier = { + add = 10 + has_trait = governor + } + modifier = { + add = 10 + has_trait = governor + has_trait_xp = { + trait = governor + value >= 40 + } + } + } + 10 = { + save_scope_value_as = { + name = governance_task_contract_tier + value = define:NTaskContract|HIGH_TASK_CONTRACT_TIER + } + + modifier = { + add = 10 + has_trait = governor + } + modifier = { + add = 10 + has_trait = governor + has_trait_xp = { + trait = governor + value >= 40 + } + } + modifier = { + add = 20 + has_trait = governor + has_trait_xp = { + trait = governor + value >= 80 + } + } + } + } + + # Select which contract to create + random_list = { + 10 = { # Overdue Taxes + trigger = { + NOT = { has_character_flag = task_contract_cooldown_overdue_taxes } + any_sub_realm_county = { + any_county_province = { + has_holding = yes + NOT = { this = scope:governor.capital_province } + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_county_province = { + has_holding = yes + NOT = { this = scope:governor.capital_province } + } + } + random_county_province = { + limit = { + has_holding = yes + NOT = { this = scope:governor.capital_province } + } + save_scope_as = target_province + } + } + + create_task_contract = { + task_contract_type = overdue_taxes + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_overdue_taxes + years = 10 + } + } + 10 = { # Hoarding Mayor + trigger = { + NOT = { has_character_flag = task_contract_cooldown_hoarding_mayor } + any_sub_realm_county = { + any_county_province = { + has_holding_type = city_holding + province_owner = { + NOT = { this = scope:governor } + gold >= 500 # Mayor needs to have a lot of gold + } + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_county_province = { + has_holding_type = city_holding + province_owner = { + NOT = { this = scope:governor } + gold >= 500 # Mayor needs to have a lot of gold + } + } + } + random_county_province = { + limit = { + has_holding_type = city_holding + province_owner = { + NOT = { this = scope:governor } + gold >= 500 # Mayor needs to have a lot of gold + } + } + save_scope_as = target_province + } + } + + create_task_contract = { + task_contract_type = hoarding_mayor + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + task_contract_employer = scope:target_province.province_owner + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_hoarding_mayor + years = 10 + } + } + 10 = { # Bountiful Harvest + trigger = { + NOT = { has_character_flag = task_contract_cooldown_bountiful_harvest } + } + + # Select a suitable location + capital_province = { + save_scope_as = target_province + } + + create_task_contract = { + task_contract_type = bountiful_harvest + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_bountiful_harvest + years = 10 + } + + modifier = { # Increased chance if there is fertile terrain types present + factor = 1.5 + any_sub_realm_county = { + any_county_province = { + OR = { + terrain = farmlands + terrain = floodplains + } + } + } + } + modifier = { # Reduced chance if there is only rough terrain present + factor = 0.5 + NOT = { + any_sub_realm_county = { + any_county_province = { + OR = { + terrain = farmlands + terrain = floodplains + terrain = plains + terrain = drylands + terrain = oasis + terrain = forest + } + } + } + } + } + } + 10 = { # Rampant Bandits + trigger = { + NOT = { has_character_flag = task_contract_cooldown_rampant_bandits } + any_sub_realm_county = { + any_county_province = { + NOT = { this = county.holder.capital_province } + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_county_province = { + NOT = { this = county.holder.capital_province } + } + } + weight = { + base = 1 + modifier = { # Prioritize counties with low control + add = { + value = 100 + subtract = county_control + } + county_control < 100 + } + } + add_county_modifier = { + modifier = ep3_governance_rampant_bandits + years = 40 + } + random_county_province = { + limit = { + NOT = { this = county.holder.capital_province } + } + weight = { + base = 1 + modifier = { # Empty baronies make for better hiding spots + add = 15 + has_holding = no + } + modifier = { # You can harass cities easier than castles or temples + add = 4 + has_holding_type = city_holding + } + modifier = { # You can harass temples easier than castles + add = 2 + has_holding_type = church_holding + } + } + save_scope_as = target_province + } + } + + create_task_contract = { + task_contract_type = rampant_bandits + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_rampant_bandits + years = 10 + } + + modifier = { # Significantly reduce the chance if there is no county with reduced control + factor = 0.1 + NOT = { + any_sub_realm_county = { county_control <= 90 } + } + } + modifier = { # Increased chance if there are multiple counties with low control + factor = 1.5 + any_sub_realm_county = { + percent >= 0.25 + county_control <= 75 + } + } + modifier = { # Increased it more if control is even lower + factor = 2 + any_sub_realm_county = { + percent >= 0.5 + county_control <= 50 + } + } + } + 10 = { # Discontent Soldiers + trigger = { + NOT = { has_character_flag = task_contract_cooldown_discontent_soldiers } + any_maa_regiment = { + is_title_maa_regiment = yes + is_raised = no + count >= 2 + } + any_neighboring_and_across_water_realm_same_rank_owner = { + liege = root.liege + } + } + + # Select a suitable location + capital_province = { + save_scope_as = target_province + } + + create_task_contract = { + task_contract_type = discontent_soldiers + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_discontent_soldiers + years = 10 + } + } + 10 = { # Inept Mayor + trigger = { + NOT = { has_character_flag = task_contract_cooldown_inept_mayor } + any_sub_realm_county = { + any_county_province = { + has_holding_type = city_holding + province_owner = { + NOT = { this = scope:governor } + stewardship <= mediocre_skill_rating + } + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_county_province = { + has_holding_type = city_holding + province_owner = { + NOT = { this = scope:governor } + stewardship <= mediocre_skill_rating + } + } + } + random_county_province = { + limit = { + has_holding_type = city_holding + province_owner = { + NOT = { this = scope:governor } + stewardship <= mediocre_skill_rating + } + } + save_scope_as = target_province + } + add_county_modifier = { + modifier = ep3_mismanaged_administration_modifier + years = 10 + } + } + + create_task_contract = { + task_contract_type = inept_mayor + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + task_contract_employer = scope:target_province.province_owner + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_inept_mayor + years = 10 + } + } + 10 = { # Provincial Investment + trigger = { + NOT = { has_character_flag = task_contract_cooldown_prov_investment } + scope:governance_task_contract_tier = define:NTaskContract|HIGH_TASK_CONTRACT_TIER + } + + # Select a suitable location + capital_province = { + save_scope_as = target_province + } + + create_task_contract = { + task_contract_type = prov_investment + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_prov_investment + years = 10 + } + modifier = { + has_trait = education_stewardship + add = 10 + } + } + 10 = { # Raiding Peasants + trigger = { + NOT = { has_character_flag = task_contract_cooldown_raiding_peasants } + any_sub_realm_county = { + any_neighboring_county = { + holder = { + top_liege = { + NOT = { this = scope:governor.top_liege } + } + } + } + any_county_province = { + has_holding = yes + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_neighboring_county = { + holder = { + top_liege = { + NOT = { this = scope:governor.top_liege } + } + } + } + any_county_province = { + has_holding = yes + } + } + random_county_province = { + limit = { + has_holding = yes + } + save_scope_as = target_province + } + } + + create_task_contract = { + task_contract_type = raiding_peasants + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_raiding_peasants + years = 10 + } + } + 10 = { # Wild Predators + trigger = { + NOT = { has_character_flag = task_contract_cooldown_wild_predators } + any_sub_realm_county = { + any_county_province = { + OR = { + has_building_or_higher = hunting_grounds_01 + has_building_or_higher = royal_forest_01 + terrain = forest + terrain = jungle + } + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_county_province = { + OR = { + has_building_or_higher = hunting_grounds_01 + has_building_or_higher = royal_forest_01 + terrain = forest + terrain = jungle + } + } + } + add_county_modifier = { + modifier = ep3_wild_predators_modifier + years = 10 + } + random_county_province = { + limit = { + OR = { + has_building_or_higher = hunting_grounds_01 + has_building_or_higher = royal_forest_01 + } + } + alternative_limit = { + OR = { + terrain = forest + terrain = jungle + } + } + save_scope_as = target_province + } + } + + create_task_contract = { + task_contract_type = wild_predators + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_wild_predators + years = 10 + } + } + 10 = { # Evil Presence + trigger = { + NOT = { has_character_flag = task_contract_cooldown_evil_presence } + scope:governance_task_contract_tier = define:NTaskContract|LOW_TASK_CONTRACT_TIER + any_sub_realm_county = { + faith.religion = religion:christianity_religion + any_county_province = { + has_holding = yes + province_owner != scope:governor + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + faith.religion = religion:christianity_religion + any_county_province = { + has_holding = yes + province_owner != scope:governor + } + } + random_county_province = { + limit = { + has_holding = yes + province_owner != scope:governor + } + save_scope_as = target_province + } + } + + create_task_contract = { + task_contract_type = evil_presence + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_evil_presence + years = 10 + } + } + 10 = { # Miraculous Healing + trigger = { + NOT = { has_character_flag = task_contract_cooldown_miraculous_healing } + } + + # Select a suitable location + capital_province = { + save_scope_as = target_province + } + + create_task_contract = { + task_contract_type = miraculous_healing + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_miraculous_healing + years = 10 + } + } + 10 = { # Buried Treasure + trigger = { + NOT = { has_character_flag = task_contract_cooldown_buried_treasure } + any_sub_realm_county = { + any_county_province = { + has_holding = yes + province_owner != scope:governor + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_county_province = { + has_holding = yes + province_owner != scope:governor + } + } + random_county_province = { + limit = { + has_holding = yes + province_owner != scope:governor + } + save_scope_as = target_province + } + } + + create_task_contract = { + task_contract_type = buried_treasure + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_buried_treasure + years = 10 + } + } + 10 = { # Public Land + trigger = { + NOT = { has_character_flag = task_contract_cooldown_public_land } + any_sub_realm_county = { + any_county_province = { + any_province_domicile = { + owner = scope:governor + is_domicile_type = estate + } + } + } + OR = { + any_sub_realm_county = { + any_county_province = { + has_holding = yes + province_owner != scope:governor + has_holding_type = castle_holding + } + } + any_sub_realm_county = { + any_county_province = { + any_province_domicile = { + is_domicile_type = estate + owner = { + NOT = { this = scope:governor } + is_ai = yes + is_alive = yes + } + } + } + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_county_province = { + any_province_domicile = { + is_domicile_type = estate + owner = { + NOT = { this = scope:governor } + is_ai = yes + is_alive = yes + } + } + } + } + random_county_province = { + limit = { + any_province_domicile = { + is_domicile_type = estate + owner = { + NOT = { this = scope:governor } + is_ai = yes + is_alive = yes + } + } + + } + save_scope_as = target_province + } + scope:target_province ?= { + random_province_domicile = { + limit = { + is_domicile_type = estate + owner = { + NOT = { this = scope:governor } + is_ai = yes + is_alive = yes + } + } + owner = { save_scope_as = employer } + } + } + } + if = { + limit = { + NOT = { exists = scope:target_province } + } + random_sub_realm_county = { + limit = { + any_county_province = { + has_holding = yes + province_owner != scope:governor + has_holding_type = castle_holding + } + } + random_county_province = { + limit = { + has_holding = yes + province_owner != scope:governor + has_holding_type = castle_holding + } + save_scope_as = target_province + province_owner = { save_scope_as = employer } + } + } + } + + create_task_contract = { + task_contract_type = public_land + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + task_contract_employer = scope:employer + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_public_land + years = 10 + } + } + 10 = { # Mad Prophet + trigger = { + NOT = { has_character_flag = task_contract_cooldown_mad_prophet } + any_sub_realm_county = { + any_county_province = { + has_holding = yes + province_owner != scope:governor + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_county_province = { + has_holding = yes + province_owner != scope:governor + } + } + random_county_province = { + limit = { + has_holding = yes + province_owner != scope:governor + } + save_scope_as = target_province + } + } + + create_task_contract = { + task_contract_type = mad_prophet + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_mad_prophet + years = 10 + } + } + 10 = { # Titles for Sale + trigger = { + NOT = { has_character_flag = task_contract_cooldown_titles_sale } + faith = { + NOR = { + has_doctrine = doctrine_theocracy_lay_clergy + has_doctrine = doctrine_temporal_head + } + } + } + + # Select a suitable location + capital_province = { + save_scope_as = target_province + } + + create_task_contract = { + task_contract_type = titles_sale + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_titles_sale + years = 10 + } + } + 10 = { # Hungry Times + trigger = { + NOT = { has_character_flag = task_contract_cooldown_hungry_times } + any_sub_realm_county = { + any_county_province = { + has_holding = yes + province_owner != scope:governor + has_variable = epidemic_cooldown_general + } + } + } + + # Select a suitable location + random_sub_realm_county = { + limit = { + any_county_province = { + has_holding = yes + province_owner != scope:governor + has_variable = epidemic_cooldown_general + } + } + random_county_province = { + limit = { + has_holding = yes + province_owner != scope:governor + has_variable = epidemic_cooldown_general + } + save_scope_as = target_province + } + } + + create_task_contract = { + task_contract_type = hungry_times + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_hungry_times + years = 15 #epidemic_cooldown_general lasts 15 years, and we don't want this to trigger twice in a row for the same place + } + } + 10 = { # Wartime Measures + trigger = { + NOT = { has_character_flag = task_contract_cooldown_wartime_measures } + liege = { is_at_war = yes } + is_at_war = no + OR = { + vassal_contract_has_flag = admin_theme_frontier + vassal_contract_has_flag = admin_theme_military + } + } + + # Select a suitable location + capital_province = { + save_scope_as = target_province + } + + create_task_contract = { + task_contract_type = wartime_measures + task_contract_tier = scope:governance_task_contract_tier + location = scope:target_province + save_scope_as = new_governance_issue + } + add_character_flag = { + flag = task_contract_cooldown_wartime_measures + years = 10 + } + } + } + + play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Byzantine_Flavor/ep3_mx_sting_byzantineflavor_become_governor" + + if = { + limit = { exists = scope:target_province } + if = { + limit = { + NOT = { has_character_flag = admin_governance_frequency_cooldown } + } + add_character_flag = { flag = admin_governance_frequency_cooldown years = 6 } + } + send_interface_message = { + type = msg_governance_contracts + title = msg_governance_contract_appear.t + desc = msg_governance_contract_appear.desc + right_icon = scope:target_province.county + } + } + if = { + limit = { + is_ai = yes + exists = scope:new_governance_issue + } + accept_task_contract = scope:new_governance_issue + } +} + +generate_governance_outcome_effect = { + # INFO: We use this effect to randomize the options you get when doing a governor contract. + # $OPTIONS$ is the number of options the event has - Never use less than four, and try to have six if possible. + + # Unlock a bonus option if you have enough exp in the Governor trait - We do this here (and not in the option) to avoid blocking the option due to exp decay (if game is unpaused). + if = { + limit = { + has_trait = governor + has_trait_xp = { + trait = governor + value >= 50 + } + } + save_scope_as = governance_option_a + } + + # Check if you have the Governor trait + if = { + limit = { # If you have the trait with at least rank 1, we generate an extra option. + has_trait = governor + has_trait_xp = { + trait = governor + value >= 25 + } + } + save_scope_value_as = { name = governance_number_of_options value = 3 } + } + else = { # Otherwise, you only get two base options. + save_scope_value_as = { name = governance_number_of_options value = 2 } + } + + # Generate the options + set_local_variable = { + name = current_value + value = 0 + } + while = { + limit = { + local_var:current_value < scope:governance_number_of_options + } + random_list = { + # There is no option A, as A should be unlocked for having the Governor trait at rank 2 (which is done in the corresponding event) + 20 = { + trigger = { + NOT = { exists = scope:governance_option_b } + } + save_scope_value_as = { + name = governance_option_b + value = yes + } + change_local_variable = { + name = current_value + add = 1 + } + } + 20 = { + trigger = { + NOT = { exists = scope:governance_option_c } + } + save_scope_value_as = { + name = governance_option_c + value = yes + } + change_local_variable = { + name = current_value + add = 1 + } + } + 20 = { + trigger = { + NOT = { exists = scope:governance_option_d } + } + save_scope_value_as = { + name = governance_option_d + value = yes + } + change_local_variable = { + name = current_value + add = 1 + } + } + 20 = { + trigger = { + NOT = { exists = scope:governance_option_e } + $OPTIONS$ >= 5 + } + save_scope_value_as = { + name = governance_option_e + value = yes + } + change_local_variable = { + name = current_value + add = 1 + } + } + 20 = { + trigger = { + NOT = { exists = scope:governance_option_f } + $OPTIONS$ >= 6 + } + save_scope_value_as = { + name = governance_option_f + value = yes + } + change_local_variable = { + name = current_value + add = 1 + } + } + } + } +} + +remove_other_eparch_modifiers_effect = { + hidden_effect = { # No need to show this + # Let's check for the county opinion modifier first + scope:liege ?= { + # We check and scope to all counties to make sure we remove any stray modifiers in case the capital is moved, etc. + if = { + limit = { + any_realm_county = { + any_county_province = { + has_province_modifier = ep3_eparch_county_opinion_modifier + } + } + } + every_realm_county = { + limit = { + any_county_province = { + has_province_modifier = ep3_eparch_county_opinion_modifier + } + } + every_county_province = { + limit = { + has_province_modifier = ep3_eparch_county_opinion_modifier + } + remove_province_modifier = ep3_eparch_county_opinion_modifier + } + } + } + } + + # Next is the troop modifier + scope:liege ?= { + # We check and scope to all counties to make sure we remove any stray modifiers in case the capital is moved, etc. + if = { + limit = { + any_realm_county = { + any_county_province = { + has_province_modifier = ep3_eparch_troops_modifier + } + } + } + every_realm_county = { + limit = { + any_county_province = { + has_province_modifier = ep3_eparch_troops_modifier + } + } + every_county_province = { + limit = { + has_province_modifier = ep3_eparch_troops_modifier + } + remove_province_modifier = ep3_eparch_troops_modifier + } + } + } + } + + # Next is the county control modifier + scope:liege ?= { + # We check and scope to all counties to make sure we remove any stray modifiers in case the capital is moved, etc. + if = { + limit = { + any_realm_county = { + any_county_province = { + has_province_modifier = ep3_eparch_control_modifier + } + } + } + every_realm_county = { + limit = { + any_county_province = { + has_province_modifier = ep3_eparch_control_modifier + } + } + every_county_province = { + limit = { + has_province_modifier = ep3_eparch_control_modifier + } + remove_province_modifier = ep3_eparch_control_modifier + } + } + } + } + + # And finally, the development modifier + scope:liege ?= { + # We check and scope to all counties to make sure we remove any stray modifiers in case the capital is moved, etc. + if = { + limit = { + any_realm_county = { + any_county_province = { + has_province_modifier = ep3_eparch_development_modifier + } + } + } + every_realm_county = { + limit = { + any_county_province = { + has_province_modifier = ep3_eparch_development_modifier + } + } + every_county_province = { + limit = { + has_province_modifier = ep3_eparch_development_modifier + } + remove_province_modifier = ep3_eparch_development_modifier + } + } + } + } + } +} + +eparch_neglecting_duty_effect = { + custom_tooltip = { + text = eparch_neglecting_duty_warning_tt + + # We check if you have neglected duties in the past + if = { + limit = { + exists = var:eparch_neglecting_duty + } + # If you have, let's first increase the variable + change_variable = { name = eparch_neglecting_duty add = 5 } + + # Then check if the liege notices and decide to take action + random = { + chance = { + # Base value - Increases with each neglecting action + value = var:eparch_neglecting_duty + + # Add the difference in intrigue skill + add = { + value = liege.intrigue + subtract = intrigue + } + + # Add the difference in influence level + add = { + value = liege.influence_level + subtract = influence_level + multiply = 5 + } + + # Lower the chance if you belong to a powerful or dominant family + if = { + limit = { + house ?= { is_powerful_family = yes } + } + subtract = 10 + } + if = { + limit = { + house ?= { is_dominant_family = yes } + } + subtract = 20 + } + + min = 5 + max = 90 + } + + # The liege have noticed - We reduce the variable slightly as a result (but never below 0) + if = { + limit = { + exists = var:eparch_neglecting_duty + var:eparch_neglecting_duty >= 20 + } + change_variable = { name = eparch_neglecting_duty subtract = 20 } + } + else = { + set_variable = { name = eparch_neglecting_duty value = 0 } + } + + liege = { + trigger_event = { id = ep3_eparch_event.9000 days = { 10 90 } } + } + } + } + else = { # If you haven't, we'll set the variable and give you a free pass (you only get it for your very first time though) + set_variable = { name = eparch_neglecting_duty value = 0 } + } + } +} + +add_influence_attacker_victory_effect = { + scope:attacker = { + if = { + limit = { government_has_flag = government_has_influence } + change_influence = major_influence_gain + } + } +} + +add_influence_attacker_defeat_effect = { + scope:defender = { + if = { + limit = { government_has_flag = government_has_influence } + change_influence = medium_influence_gain + } + } +} + +admin_change_government_effect = { + # Make sure you only use this effect on characters you are sure should change government! Since we don't do any extended triggers here. + # For a consistent behaviour, this effect is based on "convert_whole_realm_to_feudalism_effect" + + # First, let's see if the character only has their noble family title - then we don't bother changing their government + # We only destroy the family title to make sure it doesn't linger + if = { + limit = { + is_landed = no + any_held_title = { + is_noble_family_title = yes + } + NOT = { + any_held_title = { + is_noble_family_title = no + } + } + } + every_held_title = { + limit = { + is_noble_family_title = yes + } + save_temporary_scope_as = family_title + prev = { destroy_title = scope:family_title } + } + } + + # If not, let's change the government type + # If liege has clan - Become clan! + else_if = { + limit = { + is_independent_ruler = no + OR = { + liege = { government_has_flag = government_is_clan } + AND = { + liege = { government_has_flag = government_is_tribal } + religion = religion:islam_religion + } + } + } + change_government = clan_government + } + # If liege has feudal - Become feudal! + else_if = { + limit = { + is_independent_ruler = no + OR = { + liege = { government_has_flag = government_is_feudal } + AND = { + liege = { government_has_flag = government_is_tribal } + NOT = { religion = religion:islam_religion } + } + } + } + change_government = feudal_government + } + # If you're an independent Muslim ruler - Become clan! + else_if = { + limit = { + is_independent_ruler = yes + faith = { religion_tag = islam_religion } + } + change_government = clan_government + } + # If you're an independent ruler with anything else - Become feudal! + else = { change_government = feudal_government } + + # Finally, let's double-check and see if there are any remaining family titles we should destroy + if = { + 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 } + } + } +} + +################################################## +# Dynasty Legacy: Bureaucracy +################################################## + +ep3_dynasty_legacy_add_legitimacy_effect = { + scope:activity = { + if = { + limit = { + scope:host = { + government_has_flag = government_is_administrative + dynasty = { has_dynasty_perk = ep3_administrative_legacy_3 } + } + # Does the activity location have a domicile owned by a house member + # Does that domicile have the Reception Hall building + activity_location = { + any_province_domicile = { + owner = { house ?= scope:host.house } + has_domicile_building_or_higher = reception_hall_01 + } + } + } + activity_location = { + random_province_domicile = { + limit = { + owner = { house ?= scope:host.house } + has_domicile_building_or_higher = reception_hall_01 + } + owner = { save_scope_as = reception_hall_owner } + } + } + scope:host = { + house = { + if = { + limit = { + NOT = { + has_variable = ep3_legacy_legitimacy_counter + } + } + # Set the initial value + set_variable = { + name = ep3_legacy_legitimacy_counter + value = 10 + } + } + else = { + change_variable = { + name = ep3_legacy_legitimacy_counter + add = 10 + } + } + } + if = { + limit = { + primary_title.tier = tier_empire + } + send_interface_toast = { + type = event_toast_effect_good + title = ep3_dynasty_legacy_gain_legitimacy_effect_title + left_icon = scope:host + right_icon = scope:host.primary_title + add_legitimacy = 10 + } + } + else = { + house = { + every_house_member = { + limit = { is_ai = no } + send_interface_message = { + type = event_generic_good_text + title = ep3_dynasty_legacy_add_legitimacy_effect_title + desc = ep3_dynasty_legacy_add_legitimacy_effect_desc + left_icon = scope:host + right_icon = house + } + } + } + } + } + } + } +} + +################################################## +# Byzantium +################################################## + +remove_a_criminal_trait_in_faith_effect = { + $CHARACTER$ = { + if = { + limit = { + has_trait = adulterer + trait_is_criminal_in_faith_trigger = { TRAIT = adulterer FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = adulterer + } + else_if = { + limit = { + has_trait = fornicator + trait_is_criminal_in_faith_trigger = { TRAIT = fornicator FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = fornicator + } + else_if = { + limit = { + has_trait = sodomite + trait_is_criminal_in_faith_trigger = { TRAIT = sodomite FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = sodomite + } + else_if = { + limit = { + has_trait = deviant + trait_is_criminal_in_faith_trigger = { TRAIT = deviant FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = deviant + } + else_if = { + limit = { + has_trait = kinslayer_3 + trait_is_criminal_in_faith_trigger = { TRAIT = kinslayer_3 FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = kinslayer_3 + } + else_if = { + limit = { + has_trait = kinslayer_2 + trait_is_criminal_in_faith_trigger = { TRAIT = kinslayer_2 FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = kinslayer_2 + } + else_if = { + limit = { + has_trait = kinslayer_1 + trait_is_criminal_in_faith_trigger = { TRAIT = kinslayer_1 FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = kinslayer_1 + } + else_if = { + limit = { + has_trait = witch + trait_is_criminal_in_faith_trigger = { TRAIT = witch FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = witch + } + else_if = { + limit = { + has_trait = cannibal + trait_is_criminal_in_faith_trigger = { TRAIT = cannibal FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = cannibal + } + else_if = { + limit = { + has_trait = incestuous + trait_is_criminal_in_faith_trigger = { TRAIT = incestuous FAITH = $FAITH$ GENDER_CHARACTER = $CHARACTER$ } + } + remove_trait = incestuous + } + } +} + +################################################## +# Chariot Races +################################################## + +gather_charioteers_effect = { + scope:activity = { + random_list = { + 50 = { + set_variable = { + name = num_blues + value = 2 + } + } + 50 = { + set_variable = { + name = num_blues + value = 3 + } + } + } + random_list = { + 50 = { + set_variable = { + name = num_greens + value = 2 + } + } + 50 = { + set_variable = { + name = num_greens + value = 3 + } + } + } + random_list = { + 50 = { + set_variable = { + name = num_whites + value = 2 + } + } + 50 = { + set_variable = { + name = num_whites + value = 3 + } + } + } + random_list = { + 50 = { + set_variable = { + name = num_reds + value = 2 + } + } + 50 = { + set_variable = { + name = num_reds + value = 3 + } + } + } + + ordered_attending_character = { + order_by = chariot_ordering_value + max = 12 + check_range_bounds = no + save_temporary_scope_as = temp_character + if = { + limit = { + OR = { + has_court_position = charioteer_court_position + trigger_if = { + limit = { + available_charioteers_spots_trigger = { TEAM = green } + } + has_trait = charioteer_green + } + trigger_if = { + limit = { + available_charioteers_spots_trigger = { TEAM = blue } + } + has_trait = charioteer_blue + } + trigger_if = { + limit = { + available_charioteers_spots_trigger = { TEAM = red } + } + has_trait = charioteer_red + } + trigger_if = { + limit = { + available_charioteers_spots_trigger = { TEAM = white } + } + has_trait = charioteer_white + } + } + } + scope:activity = { + add_to_guest_subset = { + name = charioteers + target = scope:temp_character + } + } + } + } + + # Finalize the list of charioteers + chariot_racers_setup_effect = { TEAM = green } + chariot_racers_setup_effect = { TEAM = blue } + chariot_racers_setup_effect = { TEAM = red } + chariot_racers_setup_effect = { TEAM = white } + # And filter everyone remaining to spectators. + every_attending_character = { + limit = { + NOT = { + is_in_guest_subset = { name = charioteers } + } + } + save_scope_as = temp_character + scope:activity = { + add_to_guest_subset = { + name = spectators + target = scope:temp_character + } + } + } + } +} + +chariot_racers_setup_effect = { # If you need to create additional racers + while = { + count = 5 + limit = { + available_charioteers_spots_trigger = { TEAM = $TEAM$ } + } + create_character = { + template = charioteer_template + employer = scope:activity.activity_host + save_scope_as = temp_charioteer + } + scope:temp_charioteer = { + add_trait = charioteer_$TEAM$ + add_trait_xp = { + trait = charioteer_$TEAM$ + value = { 5 50 } + } + add_to_activity = scope:activity + } + scope:activity = { + add_to_guest_subset = { + name = charioteers + target = scope:temp_charioteer + } + } + } +} + +# Each character is assigned Odds to Win, Odds to Place, and Odds to Show +# Win: come in first place +# Place: come in first or second place +# Show: come in first, second, or third place +calculate_chariot_race_odds_effect = { + calculate_chariot_odds_to_win_effect = yes + calculate_chariot_odds_to_place_effect = yes + calculate_chariot_odds_to_show_effect = yes +} + +# Odds are represented in the format A:B, where A is the number of ways/opportunities a character has to succeed, and B represents how many ways/opportunities they have to fail +# These same calculations are done for the teams overall +# Individual odds are saved on the individual character +# Team odds are saved on the activity scope +calculate_chariot_odds_to_win_effect = { + scope:activity = { + ### INDIVIDUAL ODDS + # Set odds to win + set_variable = { + name = total_chance_win + value = 0 + } + # Set odds_win_a (number of ways to win) + every_guest_subset = { + name = charioteers + set_variable = { + name = odds_win_a + value = charioteer_chance_to_win + } + scope:activity = { + change_variable = { + name = total_chance_win + add = { + value = prev.charioteer_chance_to_win + min = 1 + } + } + } + } + # set odds_win_b (number of ways to lose) + every_guest_subset = { + name = charioteers + set_variable = { + name = odds_win_b + value = { + value = scope:activity.var:total_chance_win + subtract = var:odds_win_a + min = 1 + } + } + } + + # Calc percent chance to win + every_guest_subset = { + name = charioteers + set_variable = { + name = percent_chance_to_win + value = { + add = var:odds_win_a + divide = { + value = 0 + add = var:odds_win_a + add = var:odds_win_b + } + multiply = 100 + min = 1 + max = 99 + } + } + } + ########## + + ### TEAM ODDS + # For each of the 4 teams, we calculate their odds to win/place/show. These variables are saved on the activity + # BLUES + # Initialize variables + set_variable = { + name = blue_odds_win_a + value = 0 + } + set_variable = { + name = blue_odds_win_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_blue } + scope:activity = { + change_variable = { + name = blue_odds_win_a + add = { + value = prev.var:odds_win_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = blue_odds_win_b + add = { + value = var:total_chance_win + subtract = var:blue_odds_win_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = blue_percent_chance_to_win + value = { + add = var:blue_odds_win_a + divide = { + value = 0 + add = var:blue_odds_win_a + add = var:blue_odds_win_b + } + multiply = 100 + min = 1 + max = 99 + } + } + + # GREENS + # Initialize variables + set_variable = { + name = green_odds_win_a + value = 0 + } + set_variable = { + name = green_odds_win_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_green } + scope:activity = { + change_variable = { + name = green_odds_win_a + add = { + value = prev.var:odds_win_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = green_odds_win_b + add = { + value = var:total_chance_win + subtract = var:green_odds_win_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = green_percent_chance_to_win + value = { + add = var:green_odds_win_a + divide = { + value = 0 + add = var:green_odds_win_a + add = var:green_odds_win_b + } + multiply = 100 + min = 1 + max = 99 + } + } + + # WHITES + # Initialize variables + set_variable = { + name = white_odds_win_a + value = 0 + } + set_variable = { + name = white_odds_win_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_white } + scope:activity = { + change_variable = { + name = white_odds_win_a + add = { + value = prev.var:odds_win_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = white_odds_win_b + add = { + value = var:total_chance_win + subtract = var:white_odds_win_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = white_percent_chance_to_win + value = { + add = var:white_odds_win_a + divide = { + value = 0 + add = var:white_odds_win_a + add = var:white_odds_win_b + } + multiply = 100 + min = 1 + max = 99 + } + } + + # REDS + # Initialize variables + set_variable = { + name = red_odds_win_a + value = 0 + } + set_variable = { + name = red_odds_win_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_red } + scope:activity = { + change_variable = { + name = red_odds_win_a + add = { + value = prev.var:odds_win_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = red_odds_win_b + add = { + value = var:total_chance_win + subtract = var:red_odds_win_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = red_percent_chance_to_win + value = { + add = var:red_odds_win_a + divide = { + value = 0 + add = var:red_odds_win_a + add = var:red_odds_win_b + } + multiply = 100 + min = 1 + max = 99 + } + } + } +} + +calculate_chariot_odds_to_place_effect = { + scope:activity = { + ### INDIVIDUAL ODDS + # Set odds to place + set_variable = { + name = total_chance_place + value = 0 + } + every_guest_subset = { + name = charioteers + set_variable = { + name = odds_place_a + value = { + value = charioteer_chance_to_win + multiply = 2 + } + } + scope:activity = { + change_variable = { + name = total_chance_place + add = { + value = prev.charioteer_chance_to_win + min = 1 + } + } + } + } + every_guest_subset = { + name = charioteers + set_variable = { + name = odds_place_b + value = { + value = scope:activity.var:total_chance_place + subtract = var:odds_place_a + min = 1 + } + } + } + + # Calc percent chance to win + every_guest_subset = { + name = charioteers + set_variable = { + name = percent_chance_to_place + value = { + add = var:odds_place_a + divide = { + value = 0 + add = var:odds_place_a + add = var:odds_place_b + } + multiply = 100 + min = 1 + max = 99 + } + } + } + ########## + + ### TEAM ODDS + # For each of the 4 teams, we calculate their odds to win/place/show. These variables are saved on the activity + # Initialize variables + set_variable = { + name = blue_odds_place_a + value = 0 + } + set_variable = { + name = blue_odds_place_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_blue } + scope:activity = { + change_variable = { + name = blue_odds_place_a + add = { + value = prev.var:odds_place_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = blue_odds_place_b + add = { + value = var:total_chance_place + subtract = var:blue_odds_place_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = blue_percent_chance_to_place + value = { + add = var:blue_odds_place_a + divide = { + value = 0 + add = var:blue_odds_place_a + add = var:blue_odds_place_b + } + multiply = 100 + min = 1 + max = 99 + } + } + + # GREENS + # Initialize variables + set_variable = { + name = green_odds_place_a + value = 0 + } + set_variable = { + name = green_odds_place_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_green } + scope:activity = { + change_variable = { + name = green_odds_place_a + add = { + value = prev.var:odds_place_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = green_odds_place_b + add = { + value = var:total_chance_place + subtract = var:green_odds_place_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = green_percent_chance_to_place + value = { + add = var:green_odds_place_a + divide = { + value = 0 + add = var:green_odds_place_a + add = var:green_odds_place_b + } + multiply = 100 + min = 1 + max = 99 + } + } + + # WHITES + # Initialize variables + set_variable = { + name = white_odds_place_a + value = 0 + } + set_variable = { + name = white_odds_place_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_white } + scope:activity = { + change_variable = { + name = white_odds_place_a + add = { + value = prev.var:odds_place_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = white_odds_place_b + add = { + value = var:total_chance_place + subtract = var:white_odds_place_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = white_percent_chance_to_place + value = { + add = var:white_odds_place_a + divide = { + value = 0 + add = var:white_odds_place_a + add = var:white_odds_place_b + } + multiply = 100 + min = 1 + max = 99 + } + } + + + # REDS + # Initialize variables + set_variable = { + name = red_odds_place_a + value = 0 + } + set_variable = { + name = red_odds_place_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_red } + scope:activity = { + change_variable = { + name = red_odds_place_a + add = { + value = prev.var:odds_place_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = red_odds_place_b + add = { + value = var:total_chance_place + subtract = var:red_odds_place_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = red_percent_chance_to_place + value = { + add = var:red_odds_place_a + divide = { + value = 0 + add = var:red_odds_place_a + add = var:red_odds_place_b + } + multiply = 100 + min = 1 + max = 99 + } + } + } +} + +calculate_chariot_odds_to_show_effect = { + scope:activity = { + ### INDIVIDUAL ODDS + # Set odds to show + set_variable = { + name = total_chance_show + value = 0 + } + every_guest_subset = { + name = charioteers + set_variable = { + name = odds_show_a + value = { + value = charioteer_chance_to_win + multiply = 3 + min = 1 + } + } + scope:activity = { + change_variable = { + name = total_chance_show + add = { + value = prev.charioteer_chance_to_win + min = 1 + } + } + } + } + every_guest_subset = { + name = charioteers + set_variable = { + name = odds_show_b + value = { + value = scope:activity.var:total_chance_show + subtract = var:odds_show_a + min = 1 + } + } + } + + # Calc percent chance to show + every_guest_subset = { + name = charioteers + set_variable = { + name = percent_chance_to_show + value = { + add = var:odds_show_a + divide = { + value = var:odds_show_a + add = scope:activity.var:total_chance_show + } + multiply = 100 + min = 1 + max = 99 + } + } + } + ########## + + ### TEAM ODDS + # For each of the 4 teams, we calculate their odds to win/place/show. These variables are saved on the activity + # BLUES + # Initialize variables + set_variable = { + name = blue_odds_show_a + value = 0 + } + set_variable = { + name = blue_odds_show_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_blue } + scope:activity = { + change_variable = { + name = blue_odds_show_a + add = { + value = prev.var:odds_show_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = blue_odds_show_b + add = { + value = var:total_chance_show + subtract = var:blue_odds_show_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = blue_percent_chance_to_show + value = { + add = var:blue_odds_show_a + divide = { + value = 0 + add = var:blue_odds_show_a + add = var:blue_odds_show_b + } + multiply = 100 + min = 1 + max = 99 + } + } + + # GREENS + # Initialize variables + set_variable = { + name = green_odds_show_a + value = 0 + } + set_variable = { + name = green_odds_show_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_green } + scope:activity = { + change_variable = { + name = green_odds_show_a + add = { + value = prev.var:odds_show_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = green_odds_show_b + add = { + value = var:total_chance_show + subtract = var:green_odds_show_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = green_percent_chance_to_show + value = { + add = var:green_odds_show_a + divide = { + value = 0 + add = var:green_odds_show_a + add = var:green_odds_show_b + } + multiply = 100 + min = 1 + max = 99 + } + } + + # WHITES + # Initialize variables + set_variable = { + name = white_odds_show_a + value = 0 + } + set_variable = { + name = white_odds_show_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_white } + scope:activity = { + change_variable = { + name = white_odds_show_a + add = { + value = prev.var:odds_show_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = white_odds_show_b + add = { + value = var:total_chance_show + subtract = var:white_odds_show_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = white_percent_chance_to_show + value = { + add = var:white_odds_show_a + divide = { + value = 0 + add = var:white_odds_show_a + add = var:white_odds_show_b + } + multiply = 100 + min = 1 + max = 99 + } + } + + # REDS + # Initialize variables + set_variable = { + name = red_odds_show_a + value = 0 + } + set_variable = { + name = red_odds_show_b + value = 0 + } + + # Account for each team member + every_guest_subset = { + name = charioteers + limit = { has_trait = charioteer_red } + scope:activity = { + change_variable = { + name = red_odds_show_a + add = { + value = prev.var:odds_show_a + min = 1 + } + } + } + } + # Set the B variable based on the total amount of chance - the opporutnity for success + change_variable = { + name = red_odds_show_b + add = { + value = var:total_chance_show + subtract = var:red_odds_show_a + min = 1 + } + } + # Calculate the percentage chance of success for readability + set_variable = { + name = red_percent_chance_to_show + value = { + add = var:red_odds_show_a + divide = { + value = 0 + add = var:red_odds_show_a + add = var:red_odds_show_b + } + multiply = 100 + min = 1 + max = 99 + } + } + } +} + +calculate_chariot_payout_effect = { + scope:activity = { + every_guest_subset = { + name = charioteers + set_variable = { + name = win_payout + value = { + add = var:odds_win_b + subtract = { + value = var:odds_win_b + multiply = 0.3 + } + save_temporary_value_as = temp_val + subtract = { + value = scope:temp_val + multiply = bookkeeper_small_commission_value + round = yes + } + divide = var:odds_win_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = place_payout + value = { + add = var:odds_place_b + subtract = { + value = var:odds_place_b + multiply = 0.3 + } + save_temporary_value_as = temp_val + subtract = { + value = scope:temp_val + multiply = bookkeeper_medium_commission_value + round = yes + } + divide = var:odds_place_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = show_payout + value = { + add = var:odds_show_b + subtract = { + value = var:odds_show_b + multiply = 0.3 + } + save_temporary_value_as = temp_val + subtract = { + value = scope:temp_val + multiply = bookkeeper_large_commission_value + round = yes + } + divide = var:odds_show_a + add = 1 + min = 1.1 + } + } + } + set_variable = { + name = blue_win_payout + value = { + add = var:blue_odds_win_b + subtract = { + value = var:blue_odds_win_b + multiply = bookkeeper_small_commission_value + round = yes + } + divide = var:blue_odds_win_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = blue_place_payout + value = { + add = var:blue_odds_place_b + subtract = { + value = var:blue_odds_place_b + multiply = bookkeeper_medium_commission_value + round = yes + } + divide = var:blue_odds_place_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = blue_show_payout + value = { + add = var:blue_odds_show_b + subtract = { + value = var:blue_odds_show_b + multiply = bookkeeper_large_commission_value + round = yes + } + divide = var:blue_odds_show_a + add = 1 + min = 1.1 + } + } + + set_variable = { + name = green_win_payout + value = { + add = var:green_odds_win_b + subtract = { + value = var:green_odds_win_b + multiply = bookkeeper_small_commission_value + round = yes + } + divide = var:green_odds_win_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = green_place_payout + value = { + add = var:green_odds_place_b + subtract = { + value = var:green_odds_place_b + multiply = bookkeeper_medium_commission_value + round = yes + } + divide = var:green_odds_place_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = green_show_payout + value = { + add = var:green_odds_show_b + subtract = { + value = var:green_odds_show_b + multiply = bookkeeper_large_commission_value + round = yes + } + divide = var:green_odds_show_a + add = 1 + min = 1.1 + } + } + + set_variable = { + name = white_win_payout + value = { + add = var:white_odds_win_b + subtract = { + value = var:white_odds_win_b + multiply = bookkeeper_small_commission_value + round = yes + } + divide = var:white_odds_win_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = white_place_payout + value = { + add = var:white_odds_place_b + subtract = { + value = var:white_odds_place_b + multiply = bookkeeper_medium_commission_value + round = yes + } + divide = var:white_odds_place_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = white_show_payout + value = { + add = var:white_odds_show_b + subtract = { + value = var:white_odds_show_b + multiply = bookkeeper_large_commission_value + round = yes + } + divide = var:white_odds_show_a + add = 1 + min = 1.1 + } + } + + set_variable = { + name = red_win_payout + value = { + add = var:red_odds_win_b + subtract = { + value = var:red_odds_win_b + multiply = bookkeeper_small_commission_value + round = yes + } + divide = var:red_odds_win_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = red_place_payout + value = { + add = var:red_odds_place_b + subtract = { + value = var:red_odds_place_b + multiply = bookkeeper_medium_commission_value + round = yes + } + divide = var:red_odds_place_a + add = 1 + min = 1.1 + } + } + set_variable = { + name = red_show_payout + value = { + add = var:red_odds_show_b + subtract = { + value = var:red_odds_show_b + multiply = bookkeeper_large_commission_value + round = yes + } + divide = var:red_odds_show_a + add = 1 + min = 1.1 + } + } + + } +} + +set_or_increment_lucky_better_variable = { + if = { + limit = { + NOT = { has_variable = lucky_bet_counter } + } + set_variable = { + name = lucky_bet_counter + value = 1 + } + } + else = { + change_variable = { + name = lucky_bet_counter + add = 1 + } + if = { + limit = { + var:lucky_bet_counter >= 5 + has_any_nickname = no + } + send_interface_toast = { + # works for our purposes "New Nickname" + title = sell_titles_nickname_gained + left_icon = this + give_nickname = nick_the_lucky + } + } + } +} + +disburse_chariot_race_activity_host_rewards = { + scope:activity = { + add_activity_log_entry = { + key = chariot_race_host_rewards + score = 100 + show_in_conclusion = yes + character = root + location = root.location + + root = { + # Some base influence + change_influence = medium_influence_gain + # Extra influence rewards for having a successful wager + if = { + limit = { + has_character_flag = successful_bet + has_variable = wager_type + } + switch = { + trigger = var:wager_type + flag:win = { + change_influence = medium_influence_gain + } + flag:place = { + change_influence = minor_influence_gain + } + flag:show = { + change_influence = miniscule_influence_gain + } + } + } + + # Rewards for employing a charioteer who wins/places/shows + if = { + limit = { employs_court_position = charioteer_court_position } + if = { + limit = { + any_court_position_holder = { + type = charioteer_court_position + scope:activity.var:first_place ?= this + } + } + change_influence = monumental_influence_gain + } + else_if = { + limit = { + any_court_position_holder = { + type = charioteer_court_position + scope:activity.var:second_place ?= this + } + } + change_influence = massive_influence_gain + } + else_if = { + limit = { + any_court_position_holder = { + type = charioteer_court_position + scope:activity.var:third_place ?= this + } + } + change_influence = major_influence_gain + } + } + + #Legitimacy and popular opinion for how fancy your chariot races were + if = { + limit = { + scope:activity = { + has_activity_option = { + category = chariot_option_entertainment + option = chariot_entertainment_bad + } + } + } + if = { + limit = { + scope:host.capital_county = { + county_opinion > 0 + } + } + add_legitimacy = miniscule_legitimacy_gain + if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = major_stress_loss + athletic = miniscule_stress_loss + gregarious = miniscule_stress_loss + } + } + custom_tooltip = chariot_race_reward_high_county_opinion_tt + } + else_if = { + limit = { + scope:host.capital_county = { + county_opinion <= -50 + } + } + add_legitimacy = 5 + if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = medium_stress_loss + athletic = miniscule_stress_loss + gregarious = miniscule_stress_loss + } + } + custom_tooltip = chariot_race_reward_low_county_opinion_tt + } + else = { + add_legitimacy = 10 + } + } + else_if = { + limit = { + scope:activity = { + has_activity_option = { + category = chariot_option_entertainment + option = chariot_entertainment_normal + } + } + } + if = { + limit = { + scope:host.capital_county = { + county_opinion > 0 + } + } + add_legitimacy = minor_legitimacy_gain + if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = massive_stress_loss + athletic = miniscule_stress_loss + gregarious = miniscule_stress_loss + } + } + capital_county = { + change_county_control = miniscule_county_control_gain + } + + custom_tooltip = chariot_race_reward_high_county_opinion_tt + } + else_if = { + limit = { + scope:host.capital_county = { + county_opinion <= -50 + } + } + add_legitimacy = 10 + if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = major_stress_loss + athletic = miniscule_stress_loss + gregarious = miniscule_stress_loss + } + } + custom_tooltip = chariot_race_reward_low_county_opinion_tt + } + else = { + add_legitimacy = miniscule_legitimacy_gain + } + scope:host.capital_county = { + add_county_modifier = { + modifier = ep3_chariot_race_weak_appeasement_modifier + years = 10 + } + } + } + else_if = { + limit = { + scope:activity = { + has_activity_option = { + category = chariot_option_entertainment + option = chariot_entertainment_good + } + } + } + if = { + limit = { + scope:host.capital_county = { + county_opinion > 0 + } + } + add_legitimacy = medium_legitimacy_gain + if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = monumental_stress_loss + athletic = miniscule_stress_loss + gregarious = miniscule_stress_loss + } + } + capital_county = { + change_county_control = minor_county_control_gain + } + custom_tooltip = chariot_race_reward_high_county_opinion_tt + } + else_if = { + limit = { + scope:host.capital_county = { + county_opinion <= -50 + } + } + add_legitimacy = miniscule_legitimacy_gain + if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = miniscule_stress_loss + athletic = massive_stress_loss + gregarious = miniscule_stress_loss + } + } + custom_tooltip = chariot_race_reward_low_county_opinion_tt + } + else = { + add_legitimacy = minor_legitimacy_gain + } + scope:host.capital_county = { + add_county_modifier = { + modifier = ep3_chariot_race_strong_appeasement_modifier + years = 10 + } + } + } + } + } + } +} + +disburse_chariot_race_activity_spectator_rewards = { + # Some smaller amounts of Influence rewards for having a successful wager + if = { + limit = { + has_character_flag = successful_bet + has_variable = wager_type + } + switch = { + trigger = var:wager_type + flag:win = { + change_influence = medium_influence_gain + } + flag:place = { + change_influence = minor_influence_gain + } + flag:show = { + change_influence = miniscule_influence_gain + } + } + } + + # Rewards for employing a charioteer who wins/places/shows + # You get more influence if your charioteer is successful + if = { + limit = { + any_court_position_holder = { + type = charioteer_court_position + scope:activity.var:first_place ?= this + } + } + change_influence = monumental_influence_gain + if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = monumental_stress_loss + athletic = miniscule_stress_loss + gregarious = miniscule_stress_loss + } + } + } + else_if = { + limit = { + any_court_position_holder = { + type = charioteer_court_position + scope:activity.var:second_place ?= this + } + } + change_influence = massive_influence_gain + if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = massive_stress_loss + athletic = miniscule_stress_loss + gregarious = miniscule_stress_loss + } + } + } + else_if = { + limit = { + any_court_position_holder = { + type = charioteer_court_position + scope:activity.var:third_place ?= this + } + } + change_influence = major_influence_gain + if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = massive_stress_loss + athletic = miniscule_stress_loss + gregarious = miniscule_stress_loss + } + } + } + else_if = { + limit = { has_activity_intent = reduce_stress_intent } + stress_impact = { + base = miniscule_stress_loss + athletic = major_stress_loss + gregarious = miniscule_stress_loss + } + } +} + +disburse_chariot_race_activity_charioteer_rewards = { + # Give them some xp based on place finished + if = { + limit = { this = scope:activity.var:first_place } + scope:activity = { + add_activity_log_entry = { + key = charioteer_gained_trait_xp_key + score = 110 + character = scope:activity.var:first_place + scope:activity.var:first_place = { + distribute_charioteer_trait_xp_effect = { VALUE = 15 } } + } + } + } + else_if = { + limit = { this = scope:activity.var:second_place } + scope:activity = { + add_activity_log_entry = { + key = charioteer_gained_trait_xp_key + score = 110 + character = scope:activity.var:second_place + scope:activity.var:second_place = { distribute_charioteer_trait_xp_effect = { VALUE = 12 } } + } + } + } + else_if = { + limit = { this = scope:activity.var:third_place } + scope:activity = { + add_activity_log_entry = { + key = charioteer_gained_trait_xp_key + score = 110 + character = scope:activity.var:third_place + scope:activity.var:third_place = { distribute_charioteer_trait_xp_effect = { VALUE = 8 } } + } + } + } + else = { + scope:activity = { + add_activity_log_entry = { + key = charioteer_gained_trait_xp_key + score = 110 + character = prev + prev = { distribute_charioteer_trait_xp_effect = { VALUE = 3 } } + } + } + } +} + +# Used to show how much a character gets from a successful wager in end of the race event chariot_race.0600 +individual_chariot_race_payout_effect = { + save_scope_as = current_gambler + if = { + limit = { + var:wager_type ?= flag:win + var:wager_target ?= scope:activity.var:first_place + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:first_place.var:win_payout + max = scope:current_gambler.monumental_gold_value + } + } + else_if = { + limit = { + var:wager_type ?= flag:place + OR = { + var:wager_target ?= scope:activity.var:first_place + var:wager_target ?= scope:activity.var:second_place + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:second_place.var:place_payout + max = scope:current_gambler.monumental_gold_value + } + } + else_if = { + limit = { + var:wager_type ?= flag:show + OR = { + var:wager_target ?= scope:activity.var:first_place + var:wager_target ?= scope:activity.var:second_place + var:wager_target ?= scope:activity.var:third_place + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:third_place.var:show_payout + max = scope:current_gambler.monumental_gold_value + } + } + # Handle team based bets + else_if = { + limit = { + var:wager_type ?= flag:win + var:wager_target ?= scope:current_gambler + } + switch = { + trigger = var:wager_team + flag:blues = { + if = { + limit = { scope:activity.var:first_place = { has_trait = charioteer_blue } } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:blue_win_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + flag:greens = { + if = { + limit = { scope:activity.var:first_place = { has_trait = charioteer_green } } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:green_win_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + flag:whites = { + if = { + limit = { scope:activity.var:first_place = { has_trait = charioteer_white } } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:white_win_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + flag:reds = { + if = { + limit = { scope:activity.var:first_place = { has_trait = charioteer_red } } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:red_win_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + } + } + else_if = { + limit = { + var:wager_type ?= flag:place + var:wager_target ?= scope:current_gambler + } + switch = { + trigger = var:wager_team + flag:blues = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_blue } + scope:activity.var:second_place = { has_trait = charioteer_blue } + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:blue_place_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + flag:greens = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_green } + scope:activity.var:second_place = { has_trait = charioteer_green } + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:green_place_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + flag:whites = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_white } + scope:activity.var:second_place = { has_trait = charioteer_white } + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:white_place_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + flag:reds = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_red } + scope:activity.var:second_place = { has_trait = charioteer_red } + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:red_place_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + } + } + else_if = { + limit = { + var:wager_type ?= flag:show + var:wager_target ?= scope:current_gambler + } + switch = { + trigger = var:wager_team + flag:blues = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_blue } + scope:activity.var:second_place = { has_trait = charioteer_blue } + scope:activity.var:third_place = { has_trait = charioteer_blue } + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:blue_show_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + flag:greens = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_green } + scope:activity.var:second_place = { has_trait = charioteer_green } + scope:activity.var:third_place = { has_trait = charioteer_green } + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:green_show_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + flag:whites = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_white } + scope:activity.var:second_place = { has_trait = charioteer_white } + scope:activity.var:third_place = { has_trait = charioteer_white } + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:white_show_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + flag:reds = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_red } + scope:activity.var:second_place = { has_trait = charioteer_red } + scope:activity.var:third_place = { has_trait = charioteer_red } + } + } + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:red_show_payout + max = scope:current_gambler.monumental_gold_value + } + } + } + } + } + else_if = { + limit = { has_variable = wager_value } + custom_tooltip = chariot_race_lost_bet_tt + } +} + +chariot_race_payout_effect = { + scope:activity = { + every_guest_subset = { + name = spectators + save_scope_as = current_gambler + if = { + limit = { + var:wager_type ?= flag:win + var:wager_target ?= scope:activity.var:first_place + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_char_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:first_place.var:win_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:first_place.var:win_payout + } + } + } + } + } + else_if = { + limit = { + var:wager_type ?= flag:place + OR = { + var:wager_target ?= scope:activity.var:first_place + var:wager_target ?= scope:activity.var:second_place + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_char_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:second_place.var:place_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:second_place.var:place_payout + } + } + } + } + } + else_if = { + limit = { + var:wager_type ?= flag:show + OR = { + var:wager_target ?= scope:activity.var:first_place + var:wager_target ?= scope:activity.var:second_place + var:wager_target ?= scope:activity.var:third_place + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_char_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:third_place.var:show_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:third_place.var:show_payout + } + } + } + } + } + # Handle team based bets + else_if = { + limit = { + var:wager_type ?= flag:win + var:wager_target ?= this + } + switch = { + trigger = var:wager_team + flag:blues = { + if = { + limit = { scope:activity.var:first_place = { has_trait = charioteer_blue } } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:blue_win_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:blue_win_payout + } + } + } + } + } + } + flag:greens = { + if = { + limit = { scope:activity.var:first_place = { has_trait = charioteer_green } } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:green_win_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:green_win_payout + } + } + } + } + } + } + flag:whites = { + if = { + limit = { scope:activity.var:first_place = { has_trait = charioteer_white } } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:white_win_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:white_win_payout + } + } + } + } + } + } + flag:reds = { + if = { + limit = { scope:activity.var:first_place = { has_trait = charioteer_red } } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:red_win_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:red_win_payout + } + } + } + } + } + } + } + } + else_if = { + limit = { + var:wager_type ?= flag:place + var:wager_target ?= this + } + switch = { + trigger = var:wager_team + flag:blues = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_blue } + scope:activity.var:second_place = { has_trait = charioteer_blue } + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:blue_place_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:blue_place_payout + } + } + } + } + } + } + flag:greens = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_green } + scope:activity.var:second_place = { has_trait = charioteer_green } + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:green_place_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:green_place_payout + } + } + } + } + } + } + flag:whites = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_white } + scope:activity.var:second_place = { has_trait = charioteer_white } + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:white_place_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:white_place_payout + } + } + } + } + } + } + flag:reds = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_red } + scope:activity.var:second_place = { has_trait = charioteer_red } + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:red_place_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:red_place_payout + } + } + } + } + } + } + } + } + else_if = { + limit = { + var:wager_type ?= flag:show + var:wager_target ?= this + } + switch = { + trigger = var:wager_team + flag:blues = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_blue } + scope:activity.var:second_place = { has_trait = charioteer_blue } + scope:activity.var:third_place = { has_trait = charioteer_blue } + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:blue_show_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:blue_show_payout + } + } + } + } + } + } + flag:greens = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_green } + scope:activity.var:second_place = { has_trait = charioteer_green } + scope:activity.var:third_place = { has_trait = charioteer_green } + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:green_show_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:green_show_payout + } + } + } + } + } + } + flag:whites = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_white } + scope:activity.var:second_place = { has_trait = charioteer_white } + scope:activity.var:third_place = { has_trait = charioteer_white } + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:white_show_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:white_show_payout + } + } + } + } + } + } + flag:reds = { + if = { + limit = { + OR = { + scope:activity.var:first_place = { has_trait = charioteer_red } + scope:activity.var:second_place = { has_trait = charioteer_red } + scope:activity.var:third_place = { has_trait = charioteer_red } + } + } + set_or_increment_lucky_better_variable = yes + add_character_flag = successful_bet + scope:activity = { + add_activity_log_entry = { + key = chariot_race_betting_team_outcome_key + score = 100 + show_in_conclusion = yes + character = scope:current_gambler + scope:current_gambler = { + add_gold = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:red_show_payout + max = scope:current_gambler.monumental_gold_value + } + } + change_variable = { + name = chariot_race_pot + subtract = { + value = scope:current_gambler.var:wager_value + multiply = scope:activity.var:red_show_payout + } + } + } + } + } + } + } + } + } + } +} + +clear_placement_variables_effect = { + switch = { + trigger = has_variable + first_place = { remove_variable = first_place } + second_place = { remove_variable = second_place } + third_place = { remove_variable = third_place } + fourth_place = { remove_variable = fourth_place } + fifth_place = { remove_variable = fifth_place } + sixth_place = { remove_variable = sixth_place } + seventh_place = { remove_variable = seventh_place } + eighth_place = { remove_variable = eighth_place } + ninth_place = { remove_variable = ninth_place } + tenth_place = { remove_variable = tenth_place } + eleventh_place = { remove_variable = eleventh_place } + twelfth_place = { remove_variable = twelfth_place } + } +} + +chariot_race_remove_variables_effect = { + scope:activity = { + # Clean up variables we used for calculations on both Charioteers and Spectators + every_guest_subset = { + name = charioteers + remove_variable = odds_win_a + remove_variable = odds_win_b + remove_variable = odds_place_a + remove_variable = odds_place_b + remove_variable = odds_show_a + remove_variable = odds_show_b + remove_variable = percent_chance_to_win + remove_variable = percent_chance_to_place + remove_variable = percent_chance_to_show + remove_variable = win_payout + remove_variable = place_payout + remove_variable = show_payout + remove_variable = current_place_in_race + } + every_guest_subset = { + name = spectators + remove_variable = wager_team + remove_variable = wager_type + remove_variable = wager_target + remove_variable = wager_value + if = { + limit = { has_character_flag = successful_bet } + remove_character_flag = successful_bet + } + } + # Really for error suppression only since variables saved on activities are destroyed when the activity is over + switch = { + trigger = has_variable + blue_percent_chance_to_win = { remove_variable = blue_percent_chance_to_win } + blue_percent_chance_to_show = { remove_variable = blue_percent_chance_to_show } + blue_percent_chance_to_place = { remove_variable = blue_percent_chance_to_place } + green_percent_chance_to_win = { remove_variable = green_percent_chance_to_win } + green_percent_chance_to_place = { remove_variable = green_percent_chance_to_place } + green_percent_chance_to_show = { remove_variable = green_percent_chance_to_show } + white_percent_chance_to_place = { remove_variable = white_percent_chance_to_place } + white_percent_chance_to_win = { remove_variable = white_percent_chance_to_win } + white_percent_chance_to_show = { remove_variable = white_percent_chance_to_show } + red_percent_chance_to_win = { remove_variable = red_percent_chance_to_win } + red_percent_chance_to_place = { remove_variable = red_percent_chance_to_place } + red_percent_chance_to_show = { remove_variable = red_percent_chance_to_show } + dead_charioteers = { remove_variable = dead_charioteers } + } + clear_placement_variables_effect = yes + } +} + +advance_place_in_ranking_effect = { + $NEW_LEADING_CHAR$ = { save_scope_as = char_advanced } + $NEW_TRAILING_CHAR$ = { save_scope_as = char_passed } + scope:char_advanced = { + change_variable = { + name = chariot_race_victory_score + add = { + value = scope:char_passed.var:chariot_race_victory_score + subtract = scope:char_advanced.var:chariot_race_victory_score + add = 1 + } + } + + } + scope:activity = { update_chariot_race_standings_effect = yes } +} + +# Use this effect to update the current standings of the race based on each charioteer's victory score +update_chariot_race_standings_effect = { + scope:activity = { + # Ensure we have dead characters saved for the gui + if = { + limit = { + has_variable = first_place + var:first_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:first_place + } + } + else_if = { + limit = { + has_variable = second_place + var:second_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:second_place + } + } + else_if = { + limit = { + has_variable = third_place + var:third_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:third_place + } + } + else_if = { + limit = { + has_variable = fourth_place + var:fourth_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:fourth_place + } + } + else_if = { + limit = { + has_variable = fifth_place + var:fifth_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:fifth_place + } + } + else_if = { + limit = { + has_variable = sixth_place + var:sixth_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:sixth_place + } + } + else_if = { + limit = { + has_variable = seventh_place + var:seventh_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:seventh_place + } + } + else_if = { + limit = { + has_variable = eighth_place + var:eighth_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:eighth_place + } + } + else_if = { + limit = { + has_variable = ninth_place + var:ninth_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:ninth_place + } + } + else_if = { + limit = { + has_variable = tenth_place + var:tenth_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:tenth_place + } + } + else_if = { + limit = { + has_variable = eleventh_place + var:eleventh_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:eleventh_place + } + } + else_if = { + limit = { + has_variable = twelfth_place + var:twelfth_place = { is_alive = no } + } + add_to_variable_list = { + name = dead_charioteers + target = var:twelfth_place + } + } + # Clear the variables so we get rid of any dead characters + clear_placement_variables_effect = yes + # Get a count of how many living charioteers we have + set_variable = { + name = num_charioteers + value = 0 + } + # Iterate over the list of charioteers and save each as a variable according to their place + ordered_guest_subset = { + name = charioteers + order_by = charioteer_victory_score_value + max = 12 + check_range_bounds = no + limit = { is_alive = yes } + save_temporary_scope_as = current_charioteer + # increment variable + scope:activity = { + change_variable = { + name = num_charioteers + add = 1 + } + } + if = { + limit = { has_variable = current_place_in_race } + remove_variable = current_place_in_race + } + # scripted effect to set variable based on current count (num_charioteers) + assign_charioteer_to_place_variable_effect = yes + } + } +} + +# Used in update_chariot_race_standings_effect to set variables on both the activity and the individual charioteers +assign_charioteer_to_place_variable_effect = { + scope:activity = { + switch = { + trigger = var:num_charioteers + 1 = { + set_variable = { + name = first_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 1 + } + } + } + 2 = { + set_variable = { + name = second_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 2 + } + } + } + 3 = { + set_variable = { + name = third_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 3 + } + } + } + 4 = { + set_variable = { + name = fourth_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 4 + } + } + } + 5 = { + set_variable = { + name = fifth_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 5 + } + } + } + 6 = { + set_variable = { + name = sixth_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 6 + } + } + } + 7 = { + set_variable = { + name = seventh_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 7 + } + } + } + 8 = { + set_variable = { + name = eighth_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 8 + } + } + } + 9 = { + set_variable = { + name = ninth_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 9 + } + } + } + 10 = { + set_variable = { + name = tenth_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 10 + } + } + } + 11 = { + set_variable = { + name = eleventh_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 11 + } + } + } + 12 = { + set_variable = { + name = twelfth_place + value = scope:current_charioteer + } + scope:current_charioteer = { + set_variable = { + name = current_place_in_race + value = 12 + } + } + } + } + } +} + +distribute_charioteer_trait_xp_effect = { + switch = { + trigger = has_trait + charioteer_blue = { + if = { + limit = { has_court_position = charioteer_court_position } + employer = { + send_interface_toast = { + title = charioteer_trait_xp_gain_message + left_icon = prev + prev = { + add_trait_xp = { + trait = charioteer_blue + value = $VALUE$ + } + } + } + } + } + else = { + add_trait_xp = { + trait = charioteer_blue + value = $VALUE$ + } + } + } + charioteer_green = { + if = { + limit = { has_court_position = charioteer_court_position } + employer = { + send_interface_toast = { + title = charioteer_trait_xp_gain_message + left_icon = prev + prev = { + add_trait_xp = { + trait = charioteer_green + value = $VALUE$ + } + } + } + } + } + else = { + add_trait_xp = { + trait = charioteer_green + value = $VALUE$ + } + } + } + charioteer_white = { + if = { + limit = { has_court_position = charioteer_court_position } + employer = { + send_interface_toast = { + title = charioteer_trait_xp_gain_message + left_icon = prev + prev = { + add_trait_xp = { + trait = charioteer_white + value = $VALUE$ + } + } + } + } + } + else = { + add_trait_xp = { + trait = charioteer_white + value = $VALUE$ + } + } + } + charioteer_red = { + if = { + limit = { has_court_position = charioteer_court_position } + employer = { + send_interface_toast = { + title = charioteer_trait_xp_gain_message + left_icon = prev + prev = { + add_trait_xp = { + trait = charioteer_red + value = $VALUE$ + } + } + } + } + } + else = { + add_trait_xp = { + trait = charioteer_red + value = $VALUE$ + } + } + } + } +} + +remove_dead_charioteer_from_race = { + scope:activity = { + add_to_variable_list = { + name = dead_charioteers + target = prev + } + } +} + +### END CHARIOT RACE + +ep3_send_akolouthos_message_loyal = { + send_interface_message = { + type = msg_akolouthos_steels_varangians + title = ep3_akolouthos_events.1000 + desc = ep3_akolouthos_events.1000_loyal_notification_tooltip + + left_icon = scope:trait_getter + scope:trait_getter = { + add_trait = loyal + add_opinion = { + target = root + modifier = loyalty_opinion + opinion = 40 + } + } + custom_tooltip = akolouthos_effect_tooltip + } +} + +ep3_send_akolouthos_message_varangian = { + send_interface_message = { + type = msg_akolouthos_steels_varangians + title = ep3_akolouthos_events.1000 + desc = ep3_akolouthos_events.1000_varangian_notification_tooltip + + left_icon = scope:trait_getter + scope:trait_getter = { + add_trait = varangian + add_opinion = { + target = root + modifier = loyalty_opinion + opinion = 40 + } + } + custom_tooltip = akolouthos_effect_tooltip + } +} + +ep3_palace_looting_random_malus_effect = { + if = { + limit = { + has_character_flag = malus_court_grandeur + var:varangian_regiments >= 7 + } + change_current_court_grandeur = massive_court_grandeur_loss + } + else_if = { + limit = { + has_character_flag = malus_court_grandeur + var:varangian_regiments >= 4 + } + change_current_court_grandeur = major_court_grandeur_loss + } + else_if = { + limit = { + has_character_flag = malus_court_grandeur + } + change_current_court_grandeur = medium_court_grandeur_loss + } + if = { + limit = { + has_character_flag = malus_broken_artifact + } + scope:broken_artifact = { + add_durability = -40 + } + } + if = { + limit = { + has_character_flag = malus_stolen_artifact + } + destroy_artifact = scope:stolen_artifact + } +} + +ep3_child_castration_effect = { + add_trait = beardless_eunuch + #Eunuch bonus effects + custom_tooltip = castration_increased_aptitude + if = { + limit = { + scope:actor = { + is_landed_or_landless_administrative = yes + } + } + custom_tooltip = castration_governor_efficiency + } + #might get hurt + custom_tooltip = castration_wounded_chance + hidden_effect = { + random_list = { + 5 = { + add_character_modifier = { + modifier = brutal_castration_modifier + years = 5 + } + } + 5 = { + modifier = { + add = 5 + employs_court_position = court_physician_court_position + } + modifier = { + add = 5 + employs_court_position = court_physician_court_position + court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 1 + } + } + } + modifier = { + add = 10 + employs_court_position = court_physician_court_position + court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 2 + } + } + } + modifier = { + add = 10 + employs_court_position = court_physician_court_position + court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 3 + } + } + } + modifier = { + add = 10 + employs_court_position = court_physician_court_position + court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 4 + } + } + } + } + } + } +} + +ep3_youth_castration_effect = { + add_trait = eunuch_1 + #eunuch bonus effects + custom_tooltip = castration_increased_aptitude + if = { + limit = { + scope:actor = { + is_landed_or_landless_administrative = yes + } + } + custom_tooltip = castration_governor_efficiency + } + #might get wounded + custom_tooltip = castration_wounded_chance + hidden_effect = { + random_list = { + 10 = { + add_character_modifier = { + modifier = brutal_castration_modifier + years = 5 + } + } + 5 = { + modifier = { + add = 5 + employs_court_position = court_physician_court_position + } + modifier = { + add = 5 + employs_court_position = court_physician_court_position + court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 1 + } + } + } + modifier = { + add = 10 + employs_court_position = court_physician_court_position + court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 2 + } + } + } + modifier = { + add = 10 + employs_court_position = court_physician_court_position + court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 3 + } + } + } + modifier = { + add = 10 + employs_court_position = court_physician_court_position + court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 4 + } + } + } + } + } + } +} + +ep3_greek_fire_success_effect = { + scope:invading_commander = { + add_character_modifier = { + modifier = ravaged_by_greek_fire_modifier + years = 1 + } + add_stress = major_stress_impact_gain + } + scope:army = { + deplete_army_by_percentage = 0.9 + } + scope:invading_commander = { + custom_tooltip = two_knights_killed_tooltip + hidden_effect = { + scope:knight_1 ?= { + death = { + death_reason = death_greek_fire + killer = scope:city_defender + } + } + scope:knight_2 ?= { + death = { + death_reason = death_greek_fire + killer = scope:city_defender + } + } + } + custom_tooltip = three_knights_killed_tooltip + hidden_effect = { + scope:knight_3 ?= { + increase_wounds_effect = { REASON = greek_fire } + } + scope:knight_4 ?= { + increase_wounds_effect = { REASON = greek_fire } + } + scope:knight_5 ?= { + increase_wounds_effect = { REASON = greek_fire } + } + } + } + +} + +ep3_greek_fire_fail_effect = { + scope:invading_commander = { + add_character_modifier = { + modifier = assaulted_by_greek_fire_modifier + years = 1 + } + add_stress = medium_stress_impact_gain + } + scope:knight_1 ?= { + death = { + death_reason = death_greek_fire + killer = scope:city_defender + } + } + scope:army = { + deplete_army_by_percentage = 0.4 + } + scope:invading_commander = { + custom_tooltip = two_knights_wounded_tooltip + hidden_effect = { + scope:knight_2 ?= { + increase_wounds_effect = { REASON = greek_fire } + } + scope:knight_3 ?= { + increase_wounds_effect = { REASON = greek_fire } + } + } + } +} + +ep3_greek_fire_crit_fail_effect = { + scope:invading_commander = { + add_character_modifier = { + modifier = assaulted_by_greek_fire_modifier + years = 1 + } + } + scope:army = { + deplete_army_by_percentage = 0.1 + } + scope:invading_commander = { + custom_tooltip = two_knights_wounded_tooltip + hidden_effect = { + scope:knight_1 ?= { + increase_wounds_effect = { REASON = greek_fire } + } + scope:knight_2 ?= { + increase_wounds_effect = { REASON = greek_fire } + } + } + } + + root.capital_county = { + add_county_modifier = { + modifier = defenders_immolated_modifier + years = 10 + } + } + #You lose the greek fire fleet modifier + title:c_byzantion = { + remove_county_modifier = defensive_fire_dromons_modifier + } +} + +save_traveler_culture_effect = { + random_culture_global = { + limit = { + exists = culture_head + NOT = { this = root.culture } + } + save_scope_as = traveler_culture + } + #save second culture + random_culture_global = { + limit = { + exists = culture_head + NOT = { this = root.culture } + OR = { + AND = { + culture_overlaps_geographical_region = world_europe + scope:traveler_culture = { culture_overlaps_geographical_region = world_europe } + } + AND = { + culture_overlaps_geographical_region = world_asia_minor + scope:traveler_culture = { culture_overlaps_geographical_region = world_europe } + } + AND = { + culture_overlaps_geographical_region = world_europe + scope:traveler_culture = { culture_overlaps_geographical_region = world_asia_minor } + } + AND = { + culture_overlaps_geographical_region = world_asia_minor + scope:traveler_culture = { culture_overlaps_geographical_region = world_asia_minor } + } + AND = { + culture_overlaps_geographical_region = world_asia_minor + scope:traveler_culture = { culture_overlaps_geographical_region = world_middle_east } + } + AND = { + culture_overlaps_geographical_region = world_middle_east + scope:traveler_culture = { culture_overlaps_geographical_region = world_asia_minor } + } + AND = { + culture_overlaps_geographical_region = world_middle_east + scope:traveler_culture = { culture_overlaps_geographical_region = world_middle_east } + } + AND = { + culture_overlaps_geographical_region = world_africa + scope:traveler_culture = { culture_overlaps_geographical_region = world_africa } + } + AND = { + culture_overlaps_geographical_region = world_steppe + scope:traveler_culture = { culture_overlaps_geographical_region = world_steppe } + } + AND = { + culture_overlaps_geographical_region = world_tibet + scope:traveler_culture = { culture_overlaps_geographical_region = world_tibet } + } + AND = { + culture_overlaps_geographical_region = world_tibet + scope:traveler_culture = { culture_overlaps_geographical_region = world_india} + } + AND = { + culture_overlaps_geographical_region = world_india + scope:traveler_culture = { culture_overlaps_geographical_region = world_tibet } + } + AND = { + culture_overlaps_geographical_region = world_india + scope:traveler_culture = { culture_overlaps_geographical_region = world_india } + } + AND = { + culture_overlaps_geographical_region = world_burma + scope:traveler_culture = { culture_overlaps_geographical_region = world_india } + } + AND = { + culture_overlaps_geographical_region = world_india + scope:traveler_culture = { culture_overlaps_geographical_region = world_burma } + } + AND = { + culture_overlaps_geographical_region = world_tibet + scope:traveler_culture = { culture_overlaps_geographical_region = world_burma } + } + AND = { + culture_overlaps_geographical_region = world_burma + scope:traveler_culture = { culture_overlaps_geographical_region = world_tibet } + } + } + cultural_acceptance = { + target = scope:traveler_culture + value >= 5 + } + } + alternative_limit = { + this = root.culture + } + save_scope_as = traveler_culture_2 + } +} +ep3_ai_castration_effect = { + random = { + chance = 50 + add_trait = beardless_eunuch + random_list = { + 5 = { + add_character_modifier = { + modifier = brutal_castration_modifier + years = 5 + } + } + 5 = {} + 5 = { + trigger = { + exists = liege + liege = { employs_court_position = court_physician_court_position } + } + modifier = { + add = 5 + liege.court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 1 + } + } + } + modifier = { + add = 10 + liege.court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 2 + } + } + } + modifier = { + add = 10 + liege.court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 3 + } + } + } + modifier = { + add = 10 + liege.court_position:court_physician_court_position = { + aptitude = { + court_position = court_physician_court_position + value >= 4 + } + } + } + } + } + } +} + +ep3_story_cycle_admin_eunuch_upgrade_modifier_effect = { + save_scope_value_as = { + name = modifier_type + value = flag:$TYPE$ + } + switch = { + trigger = has_character_modifier + admin_eunuch_$TYPE$_1_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_1_modifier } + add_character_modifier = admin_eunuch_$TYPE$_2_modifier + } + admin_eunuch_$TYPE$_2_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_2_modifier } + add_character_modifier = admin_eunuch_$TYPE$_3_modifier + } + admin_eunuch_$TYPE$_3_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_3_modifier } + add_character_modifier = admin_eunuch_$TYPE$_4_modifier + } + admin_eunuch_$TYPE$_4_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_4_modifier } + add_character_modifier = admin_eunuch_$TYPE$_5_modifier + } + admin_eunuch_$TYPE$_5_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_5_modifier } + add_character_modifier = admin_eunuch_$TYPE$_6_modifier + } + admin_eunuch_$TYPE$_6_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_6_modifier } + add_character_modifier = admin_eunuch_$TYPE$_7_modifier + } + admin_eunuch_$TYPE$_7_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_7_modifier } + add_character_modifier = admin_eunuch_$TYPE$_8_modifier + } + admin_eunuch_$TYPE$_8_modifier = { + if = { + limit = { + scope:modifier_type = flag:eunuch + NOT = { has_hook = top_liege } + } + add_hook = { + type = influence_hook + target = top_liege + } + } + else_if = { + limit = { + scope:modifier_type = flag:eunuch + NOT = { has_strong_hook = top_liege } + } + remove_hook = { target = top_liege } + add_hook = { + type = strong_influence_hook + target = top_liege + } + } + else = { change_influence = medium_influence_gain } + } + fallback = { add_character_modifier = admin_eunuch_$TYPE$_4_modifier } + } +} + +ep3_story_cycle_admin_eunuch_matching_modifier_effect = { + $FIRST$ = { + switch = { + trigger = has_character_modifier + admin_eunuch_$FIRST_TYPE$_1_modifier = { + $SECOND$ = { add_character_modifier = admin_eunuch_$SECOND_TYPE$_1_modifier } + } + admin_eunuch_$FIRST_TYPE$_2_modifier = { + $SECOND$ = { add_character_modifier = admin_eunuch_$SECOND_TYPE$_2_modifier } + } + admin_eunuch_$FIRST_TYPE$_3_modifier = { + $SECOND$ = { add_character_modifier = admin_eunuch_$SECOND_TYPE$_3_modifier } + } + admin_eunuch_$FIRST_TYPE$_4_modifier = { + $SECOND$ = { add_character_modifier = admin_eunuch_$SECOND_TYPE$_4_modifier } + } + admin_eunuch_$FIRST_TYPE$_5_modifier = { + $SECOND$ = { add_character_modifier = admin_eunuch_$SECOND_TYPE$_5_modifier } + } + admin_eunuch_$FIRST_TYPE$_6_modifier = { + $SECOND$ = { add_character_modifier = admin_eunuch_$SECOND_TYPE$_6_modifier } + } + admin_eunuch_$FIRST_TYPE$_7_modifier = { + $SECOND$ = { add_character_modifier = admin_eunuch_$SECOND_TYPE$_7_modifier } + } + admin_eunuch_$FIRST_TYPE$_8_modifier = { + $SECOND$ = { add_character_modifier = admin_eunuch_$SECOND_TYPE$_8_modifier } + } + } + } +} + +ep3_story_cycle_admin_eunuch_downgrade_modifier_effect = { + save_scope_value_as = { + name = modifier_type + value = flag:$TYPE$ + } + switch = { + trigger = has_character_modifier + admin_eunuch_$TYPE$_1_modifier = { + if = { + limit = { scope:modifier_type = flag:eunuch } + progress_towards_rival_effect = { + REASON = rival_admin_eunuch + CHARACTER = top_liege + OPINION = default_rival_opinion + } + } + else = { change_influence = medium_influence_loss } + } + admin_eunuch_$TYPE$_2_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_2_modifier } + add_character_modifier = admin_eunuch_$TYPE$_1_modifier + if = { # Harder to say no the further you go + limit = { scope:modifier_type = flag:liege } + change_influence = miniscule_influence_loss + } + } + admin_eunuch_$TYPE$_3_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_3_modifier } + add_character_modifier = admin_eunuch_$TYPE$_2_modifier + if = { # Harder to say no the further you go + limit = { scope:modifier_type = flag:liege } + change_influence = miniscule_influence_loss + } + } + admin_eunuch_$TYPE$_4_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_4_modifier } + add_character_modifier = admin_eunuch_$TYPE$_3_modifier + if = { # Harder to say no the further you go + limit = { scope:modifier_type = flag:liege } + change_influence = minor_influence_loss + } + } + admin_eunuch_$TYPE$_5_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_5_modifier } + add_character_modifier = admin_eunuch_$TYPE$_4_modifier + if = { # Harder to say no the further you go + limit = { scope:modifier_type = flag:liege } + change_influence = minor_influence_loss + } + } + admin_eunuch_$TYPE$_6_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_6_modifier } + add_character_modifier = admin_eunuch_$TYPE$_5_modifier + if = { # Harder to say no the further you go + limit = { scope:modifier_type = flag:liege } + change_influence = medium_influence_loss + } + } + admin_eunuch_$TYPE$_7_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_7_modifier } + add_character_modifier = admin_eunuch_$TYPE$_6_modifier + if = { # Harder to say no the further you go + limit = { scope:modifier_type = flag:liege } + change_influence = medium_influence_loss + } + } + admin_eunuch_$TYPE$_8_modifier = { + hidden_effect = { remove_character_modifier = admin_eunuch_$TYPE$_8_modifier } + add_character_modifier = admin_eunuch_$TYPE$_7_modifier + if = { # Harder to say no the further you go + limit = { scope:modifier_type = flag:liege } + change_influence = major_influence_loss + } + } + fallback = { add_character_modifier = admin_eunuch_$TYPE$_3_modifier } + } +} + +ep3_story_cycle_admin_eunuch_clear_modifier_effect = { + switch = { + trigger = has_character_modifier + admin_eunuch_$TYPE$_1_modifier = { remove_character_modifier = admin_eunuch_$TYPE$_1_modifier } + admin_eunuch_$TYPE$_2_modifier = { remove_character_modifier = admin_eunuch_$TYPE$_2_modifier } + admin_eunuch_$TYPE$_3_modifier = { remove_character_modifier = admin_eunuch_$TYPE$_3_modifier } + admin_eunuch_$TYPE$_4_modifier = { remove_character_modifier = admin_eunuch_$TYPE$_4_modifier } + admin_eunuch_$TYPE$_5_modifier = { remove_character_modifier = admin_eunuch_$TYPE$_5_modifier } + admin_eunuch_$TYPE$_6_modifier = { remove_character_modifier = admin_eunuch_$TYPE$_6_modifier } + admin_eunuch_$TYPE$_7_modifier = { remove_character_modifier = admin_eunuch_$TYPE$_7_modifier } + admin_eunuch_$TYPE$_8_modifier = { remove_character_modifier = admin_eunuch_$TYPE$_8_modifier } + } +} + +ep3_give_eunuch_effect = { + $TAKER$ = { + add_courtier = $EUNUCH$ + } + $GIVER$ = { + change_influence = { + value = 100 + add = $EUNUCH$.sum_of_all_skills_value + if = { + limit = { + $EUNUCH$ = { has_trait = beardless_eunuch } + } + multiply = 1.5 + } + } + } +} + +################################################## +# Misc +################################################## + +# Picks a random valid maa type for OWNER to create +ep3_pick_random_maa_regiment_effect = { + save_temporary_scope_value_as = { + name = include_basic_maa + value = $INCLUDE_BASIC_MAA$ + } + save_temporary_scope_value_as = { + name = include_siege_maa + value = $INCLUDE_SIEGE_MAA$ + } + $OWNER$ = { + random_list = { + 1 = { + trigger = { + scope:include_basic_maa = yes + } + save_scope_value_as = { + name = maa_to_create + value = flag:light_footmen + } + } + 1 = { + trigger = { + scope:include_basic_maa = yes + } + save_scope_value_as = { + name = maa_to_create + value = flag:bowmen + } + } + 1 = { + trigger = { + scope:include_basic_maa = yes + } + save_scope_value_as = { + name = maa_to_create + value = flag:light_horsemen + } + } + 1 = { + trigger = { + scope:include_basic_maa = yes + } + save_scope_value_as = { + name = maa_to_create + value = flag:pikemen_unit + } + } + # TRIBAL + 1 = { + trigger = { + culture = { has_innovation = innovation_elephantry } + } + save_scope_value_as = { + name = maa_to_create + value = flag:war_elephant + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_war_camels } + } + save_scope_value_as = { + name = maa_to_create + value = flag:camel_rider + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_arched_saddle } + } + save_scope_value_as = { + name = maa_to_create + value = flag:armored_horsemen + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_catapult } + scope:include_siege_maa = yes + } + save_scope_value_as = { + name = maa_to_create + value = flag:onager + } + } + # EARLY + 1 = { + trigger = { + culture = { has_innovation = innovation_quilted_armor } + } + save_scope_value_as = { + name = maa_to_create + value = flag:armored_footmen + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_mangonel } + scope:include_siege_maa = yes + } + save_scope_value_as = { + name = maa_to_create + value = flag:mangonel + } + } + # HIGH + 1 = { + trigger = { + culture = { has_innovation = innovation_trebuchet } + scope:include_siege_maa = yes + } + save_scope_value_as = { + name = maa_to_create + value = flag:trebuchet + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_advanced_bowmaking } + } + save_scope_value_as = { + name = maa_to_create + value = flag:crossbowmen + } + } + # LATE + 1 = { + trigger = { + culture = { has_innovation = innovation_bombard } + scope:include_siege_maa = yes + } + save_scope_value_as = { + name = maa_to_create + value = flag:bombard + } + } + # CULTURAL INNOVATIONS + 1 = { + trigger = { + culture = { has_innovation = innovation_bamboo_bows } + } + save_scope_value_as = { + name = maa_to_create + value = flag:paiks + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_zweihanders } + } + save_scope_value_as = { + name = maa_to_create + value = flag:landsknecht + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_adaptive_militia } + } + save_scope_value_as = { + name = maa_to_create + value = flag:goedendag + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_valets } + } + save_scope_value_as = { + name = maa_to_create + value = flag:gendarme + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_pike_columns } + } + save_scope_value_as = { + name = maa_to_create + value = flag:picchieri + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_legionnaires } + } + save_scope_value_as = { + name = maa_to_create + value = flag:praetorian + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_desert_tactics } + } + save_scope_value_as = { + name = maa_to_create + value = flag:chasseur + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_caballeros } + } + save_scope_value_as = { + name = maa_to_create + value = flag:caballero + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_hobbies } + } + save_scope_value_as = { + name = maa_to_create + value = flag:hobelar + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_rectilinear_schiltron } + } + save_scope_value_as = { + name = maa_to_create + value = flag:schiltron + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_sahel_horsemen } + } + save_scope_value_as = { + name = maa_to_create + value = flag:sahel_horsemen + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_sarawit } + } + save_scope_value_as = { + name = maa_to_create + value = flag:sarawit + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_repeating_crossbow } + } + save_scope_value_as = { + name = maa_to_create + value = flag:chu_ko_nu + } + } + 1 = { + trigger = { + culture = { has_innovation = innovation_pole_vault } + } + save_scope_value_as = { + name = maa_to_create + value = flag:guanch_vaulter + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_huscarls } + } + save_scope_value_as = { + name = maa_to_create + value = flag:huscarl + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_longbowmen } + } + save_scope_value_as = { + name = maa_to_create + value = flag:longbowmen + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_monaspa } + } + save_scope_value_as = { + name = maa_to_create + value = flag:monaspa + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_cataphract } + } + save_scope_value_as = { + name = maa_to_create + value = flag:cataphract + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_metsanvartija } + } + save_scope_value_as = { + name = maa_to_create + value = flag:metsanvartija + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_maturkan_warriors } + } + save_scope_value_as = { + name = maa_to_create + value = flag:maturkan_warriors + } + } + 1 = { + trigger = { + OR = { + culture = { culture_has_archer_cavalry_maa = yes } + mpo_can_recruit_nomad_maa_trigger = yes + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:horse_archers + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_ayyar } + } + save_scope_value_as = { + name = maa_to_create + value = flag:ayyar + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_mubarizun } + } + save_scope_value_as = { + name = maa_to_create + value = flag:mubarizun + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_mulaththamun } + } + save_scope_value_as = { + name = maa_to_create + value = flag:mulaththamun + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_archers_of_the_nile } + } + save_scope_value_as = { + name = maa_to_create + value = flag:archers_of_the_nile + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_druzhina } + } + save_scope_value_as = { + name = maa_to_create + value = flag:druzhina + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_hussar } + } + save_scope_value_as = { + name = maa_to_create + value = flag:hussar + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_horn_warrior } + } + save_scope_value_as = { + name = maa_to_create + value = flag:horn_warrior + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_bush_hunter } + } + save_scope_value_as = { + name = maa_to_create + value = flag:bush_hunter + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_shomer } + } + save_scope_value_as = { + name = maa_to_create + value = flag:shomer + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_garudas } + } + save_scope_value_as = { + name = maa_to_create + value = flag:garudas + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_khandayat } + } + save_scope_value_as = { + name = maa_to_create + value = flag:khandayat + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_mountaineer } + } + save_scope_value_as = { + name = maa_to_create + value = flag:mountaineer + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_guinea_warrior } + } + save_scope_value_as = { + name = maa_to_create + value = flag:guinea_warrior + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_abudrar } + } + save_scope_value_as = { + name = maa_to_create + value = flag:abudrar + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_zbrojnosh } + } + save_scope_value_as = { + name = maa_to_create + value = flag:zbrojnosh + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_palace_guards } + } + save_scope_value_as = { + name = maa_to_create + value = flag:palace_guards + } + } + 1 = { + trigger = { + exists = dynasty + dynasty = { + has_dynasty_perk = fp3_khvarenah_legacy_4 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:asawira + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_tarkhan } + } + save_scope_value_as = { + name = maa_to_create + value = flag:tarkhan + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_zupin_warrior } + } + save_scope_value_as = { + name = maa_to_create + value = flag:zupin_warrior + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_tawashi } + } + save_scope_value_as = { + name = maa_to_create + value = flag:tawashi + } + } + 1 = { + trigger = { + exists = dynasty + dynasty = { + has_dynasty_perk = warfare_legacy_5 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:house_guard + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:archer_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_archers + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:skirmisher_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_skirmishers + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:pike_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_pikes + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:outrider_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_outriders + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:vanguard_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_vanguards + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:lancer_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_lancers + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:crossbowmen_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_crossbowers + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:camelry_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_cameliers + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:elephantry_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_elephantiers + } + } + 1 = { + trigger = { + any_active_accolade = { + primary_type = { + this = accolade_type:horse_archer_attribute + } + accolade_rank >= 3 + } + } + save_scope_value_as = { + name = maa_to_create + value = flag:accolade_maa_horse_archers + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_vigmen } + } + save_scope_value_as = { + name = maa_to_create + value = flag:vigmen + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_bondi } + } + save_scope_value_as = { + name = maa_to_create + value = flag:bondi + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_varangian_veterans } + } + save_scope_value_as = { + name = maa_to_create + value = flag:varangian_veterans + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_ayrudzi } + } + save_scope_value_as = { + name = maa_to_create + value = flag:ayrudzi + } + } + 1 = { + trigger = { + mpo_can_recruit_nomad_maa_trigger = yes + } + save_scope_value_as = { + name = maa_to_create + value = flag:steppe_raiders + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_conrois } + } + save_scope_value_as = { + name = maa_to_create + value = flag:conrois + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_akritai } + } + save_scope_value_as = { + name = maa_to_create + value = flag:akritai + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_ballistrai } + } + save_scope_value_as = { + name = maa_to_create + value = flag:ballistrai + } + } + 1 = { + trigger = { + culture = { has_cultural_parameter = unlock_maa_skoutatoi } + } + save_scope_value_as = { + name = maa_to_create + value = flag:skoutatoi + } + } + 1 = { + trigger = { + exists = scope:title + scope:title = title:e_byzantium + } + save_scope_value_as = { + name = maa_to_create + value = flag:varangian_guards + } + } + 1 = { + trigger = { + domicile ?= { has_domicile_parameter = camp_unlocks_handpicked_faithful_maa_type } + } + save_scope_value_as = { + name = maa_to_create + value = flag:handpicked_faithful + } + } + } + } + #in case you don't fullfil any criteria just pick a random default maa + if = { + limit = { + NOT = { exists = scope:maa_to_create } + } + random_list = { + 1 = { + save_scope_value_as = { + name = maa_to_create + value = flag:light_footmen + } + } + 1 = { + save_scope_value_as = { + name = maa_to_create + value = flag:bowmen + } + } + 1 = { + save_scope_value_as = { + name = maa_to_create + value = flag:light_horsemen + } + } + 1 = { + save_scope_value_as = { + name = maa_to_create + value = flag:pikemen_unit + } + } + } + } +} + +# creates the maa type for OWNER of SIZE set by the above +ep3_create_random_maa_regiment_effect = { + $OWNER$ = { + switch = { + trigger = scope:maa_to_create + flag:light_footmen = { + create_maa_or_upgrade_regiment_effect = { + TYPE = light_footmen + SIZE = $SIZE$ + } + } + flag:bowmen = { + create_maa_or_upgrade_regiment_effect = { + TYPE = bowmen + SIZE = $SIZE$ + } + } + flag:light_horsemen = { + create_maa_or_upgrade_regiment_effect = { + TYPE = light_horsemen + SIZE = $SIZE$ + } + } + flag:pikemen_unit = { + create_maa_or_upgrade_regiment_effect = { + TYPE = pikemen_unit + SIZE = $SIZE$ + } + } + flag:war_elephant = { + create_maa_or_upgrade_regiment_effect = { + TYPE = war_elephant + SIZE = $SIZE$ + } + } + flag:camel_rider = { + create_maa_or_upgrade_regiment_effect = { + TYPE = camel_rider + SIZE = $SIZE$ + } + } + flag:armored_horsemen = { + create_maa_or_upgrade_regiment_effect = { + TYPE = armored_horsemen + SIZE = $SIZE$ + } + } + flag:onager = { + create_maa_or_upgrade_regiment_effect = { + TYPE = onager + SIZE = $SIZE$ + } + } + flag:armored_footmen = { + create_maa_or_upgrade_regiment_effect = { + TYPE = armored_footmen + SIZE = $SIZE$ + } + } + flag:mangonel = { + create_maa_or_upgrade_regiment_effect = { + TYPE = mangonel + SIZE = $SIZE$ + } + } + flag:trebuchet = { + create_maa_or_upgrade_regiment_effect = { + TYPE = trebuchet + SIZE = $SIZE$ + } + } + flag:crossbowmen = { + create_maa_or_upgrade_regiment_effect = { + TYPE = crossbowmen + SIZE = $SIZE$ + } + } + flag:bombard = { + create_maa_or_upgrade_regiment_effect = { + TYPE = bombard + SIZE = $SIZE$ + } + } + flag:paiks = { + create_maa_or_upgrade_regiment_effect = { + TYPE = paiks + SIZE = $SIZE$ + } + } + flag:landsknecht = { + create_maa_or_upgrade_regiment_effect = { + TYPE = landsknecht + SIZE = $SIZE$ + } + } + flag:goedendag = { + create_maa_or_upgrade_regiment_effect = { + TYPE = goedendag + SIZE = $SIZE$ + } + } + flag:gendarme = { + create_maa_or_upgrade_regiment_effect = { + TYPE = gendarme + SIZE = $SIZE$ + } + } + flag:picchieri = { + create_maa_or_upgrade_regiment_effect = { + TYPE = picchieri + SIZE = $SIZE$ + } + } + flag:praetorian = { + create_maa_or_upgrade_regiment_effect = { + TYPE = praetorian + SIZE = $SIZE$ + } + } + flag:chasseur = { + create_maa_or_upgrade_regiment_effect = { + TYPE = chasseur + SIZE = $SIZE$ + } + } + flag:caballero = { + create_maa_or_upgrade_regiment_effect = { + TYPE = caballero + SIZE = $SIZE$ + } + } + flag:hobelar = { + create_maa_or_upgrade_regiment_effect = { + TYPE = hobelar + SIZE = $SIZE$ + } + } + flag:schiltron = { + create_maa_or_upgrade_regiment_effect = { + TYPE = schiltron + SIZE = $SIZE$ + } + } + flag:sahel_horsemen = { + create_maa_or_upgrade_regiment_effect = { + TYPE = sahel_horsemen + SIZE = $SIZE$ + } + } + flag:sarawit = { + create_maa_or_upgrade_regiment_effect = { + TYPE = sarawit + SIZE = $SIZE$ + } + } + flag:chu_ko_nu = { + create_maa_or_upgrade_regiment_effect = { + TYPE = chu_ko_nu + SIZE = $SIZE$ + } + } + flag:guanch_vaulter = { + create_maa_or_upgrade_regiment_effect = { + TYPE = guanch_vaulter + SIZE = $SIZE$ + } + } + flag:huscarl = { + create_maa_or_upgrade_regiment_effect = { + TYPE = huscarl + SIZE = $SIZE$ + } + } + flag:longbowmen = { + create_maa_or_upgrade_regiment_effect = { + TYPE = longbowmen + SIZE = $SIZE$ + } + } + flag:monaspa = { + create_maa_or_upgrade_regiment_effect = { + TYPE = monaspa + SIZE = $SIZE$ + } + } + flag:cataphract = { + create_maa_or_upgrade_regiment_effect = { + TYPE = cataphract + SIZE = $SIZE$ + } + } + flag:metsanvartija = { + create_maa_or_upgrade_regiment_effect = { + TYPE = metsanvartija + SIZE = $SIZE$ + } + } + flag:maturkan_warriors = { + create_maa_or_upgrade_regiment_effect = { + TYPE = maturkan_warriors + SIZE = $SIZE$ + } + } + flag:horse_archers = { + create_maa_or_upgrade_regiment_effect = { + TYPE = horse_archers + SIZE = $SIZE$ + } + } + flag:ayyar = { + create_maa_or_upgrade_regiment_effect = { + TYPE = ayyar + SIZE = $SIZE$ + } + } + flag:mubarizun = { + create_maa_or_upgrade_regiment_effect = { + TYPE = mubarizun + SIZE = $SIZE$ + } + } + flag:mulaththamun = { + create_maa_or_upgrade_regiment_effect = { + TYPE = mulaththamun + SIZE = $SIZE$ + } + } + flag:archers_of_the_nile = { + create_maa_or_upgrade_regiment_effect = { + TYPE = archers_of_the_nile + SIZE = $SIZE$ + } + } + flag:druzhina = { + create_maa_or_upgrade_regiment_effect = { + TYPE = druzhina + SIZE = $SIZE$ + } + } + flag:hussar = { + create_maa_or_upgrade_regiment_effect = { + TYPE = hussar + SIZE = $SIZE$ + } + } + flag:horn_warrior = { + create_maa_or_upgrade_regiment_effect = { + TYPE = horn_warrior + SIZE = $SIZE$ + } + } + flag:bush_hunter = { + create_maa_or_upgrade_regiment_effect = { + TYPE = bush_hunter + SIZE = $SIZE$ + } + } + flag:shomer = { + create_maa_or_upgrade_regiment_effect = { + TYPE = shomer + SIZE = $SIZE$ + } + } + flag:garudas = { + create_maa_or_upgrade_regiment_effect = { + TYPE = garudas + SIZE = $SIZE$ + } + } + flag:khandayat = { + create_maa_or_upgrade_regiment_effect = { + TYPE = khandayat + SIZE = $SIZE$ + } + } + flag:mountaineer = { + create_maa_or_upgrade_regiment_effect = { + TYPE = mountaineer + SIZE = $SIZE$ + } + } + flag:guinea_warrior = { + create_maa_or_upgrade_regiment_effect = { + TYPE = guinea_warrior + SIZE = $SIZE$ + } + } + flag:abudrar = { + create_maa_or_upgrade_regiment_effect = { + TYPE = abudrar + SIZE = $SIZE$ + } + } + flag:zbrojnosh = { + create_maa_or_upgrade_regiment_effect = { + TYPE = zbrojnosh + SIZE = $SIZE$ + } + } + flag:palace_guards = { + create_maa_or_upgrade_regiment_effect = { + TYPE = palace_guards + SIZE = $SIZE$ + } + } + flag:asawira = { + create_maa_or_upgrade_regiment_effect = { + TYPE = asawira + SIZE = $SIZE$ + } + } + flag:tarkhan = { + create_maa_or_upgrade_regiment_effect = { + TYPE = tarkhan + SIZE = $SIZE$ + } + } + flag:zupin_warrior = { + create_maa_or_upgrade_regiment_effect = { + TYPE = zupin_warrior + SIZE = $SIZE$ + } + } + flag:tawashi = { + create_maa_or_upgrade_regiment_effect = { + TYPE = tawashi + SIZE = $SIZE$ + } + } + flag:house_guard = { + create_maa_or_upgrade_regiment_effect = { + TYPE = house_guard + SIZE = $SIZE$ + } + } + flag:accolade_maa_archers = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_archers + SIZE = $SIZE$ + } + } + flag:accolade_maa_skirmishers = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_skirmishers + SIZE = $SIZE$ + } + } + flag:accolade_maa_pikes = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_pikes + SIZE = $SIZE$ + } + } + flag:accolade_maa_outriders = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_outriders + SIZE = $SIZE$ + } + } + flag:accolade_maa_vanguards = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_vanguards + SIZE = $SIZE$ + } + } + flag:accolade_maa_lancers = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_lancers + SIZE = $SIZE$ + } + } + flag:accolade_maa_crossbowers = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_crossbowers + SIZE = $SIZE$ + } + } + flag:accolade_maa_cameliers = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_cameliers + SIZE = $SIZE$ + } + } + flag:accolade_maa_elephantiers = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_elephantiers + SIZE = $SIZE$ + } + } + flag:accolade_maa_horse_archers = { + create_maa_or_upgrade_regiment_effect = { + TYPE = accolade_maa_horse_archers + SIZE = $SIZE$ + } + } + flag:vigmen = { + create_maa_or_upgrade_regiment_effect = { + TYPE = vigmen + SIZE = $SIZE$ + } + } + flag:bondi = { + create_maa_or_upgrade_regiment_effect = { + TYPE = bondi + SIZE = $SIZE$ + } + } + flag:varangian_veterans = { + create_maa_or_upgrade_regiment_effect = { + TYPE = varangian_veterans + SIZE = $SIZE$ + } + } + flag:ayrudzi = { + create_maa_or_upgrade_regiment_effect = { + TYPE = ayrudzi + SIZE = $SIZE$ + } + } + flag:steppe_raiders = { + create_maa_or_upgrade_regiment_effect = { + TYPE = steppe_raiders + SIZE = $SIZE$ + } + } + flag:conrois = { + create_maa_or_upgrade_regiment_effect = { + TYPE = conrois + SIZE = $SIZE$ + } + } + flag:akritai = { + create_maa_or_upgrade_regiment_effect = { + TYPE = akritai + SIZE = $SIZE$ + } + } + flag:ballistrai = { + create_maa_or_upgrade_regiment_effect = { + TYPE = ballistrai + SIZE = $SIZE$ + } + } + flag:skoutatoi = { + create_maa_or_upgrade_regiment_effect = { + TYPE = skoutatoi + SIZE = $SIZE$ + } + } + flag:varangian_guards = { + create_maa_or_upgrade_regiment_effect = { + TYPE = varangian_guards + SIZE = $SIZE$ + } + } + flag:handpicked_faithful = { + create_maa_or_upgrade_regiment_effect = { + TYPE = handpicked_faithful + SIZE = $SIZE$ + } + } + } + } +} + +create_maa_or_upgrade_regiment_effect = { + if = { + limit = { + any_maa_regiment = { + is_maa_type = $TYPE$ + can_upgrade_maa = yes + } + } + random_maa_regiment = { + limit = { + is_maa_type = $TYPE$ + can_upgrade_maa = yes + } + change_maa_regiment_size = $SIZE$ + } + } + else = { + create_maa_regiment = { + type = $TYPE$ + check_can_recruit = no + size = $SIZE$ + } + } +} + +ep3_missionary_effect = { + # Same religion or unreformed or Hasan, convert to the preacher's faith + if = { + limit = { + OR = { + $LOCATION$.religion = $PREACHER$.religion + $LOCATION$.faith = { has_doctrine_parameter = unreformed } + character:41702 ?= $PREACHER$ + } + } + $LOCATION$ = { + set_county_faith = $PREACHER$.faith + } + } + # Preacher is Gnostic, convert the locals to a regionally appropriate form of Gnosticism + else_if = { + limit = { + $PREACHER$.faith = { + OR = { + has_doctrine = tenet_gnosticism + has_doctrine = special_doctrine_is_gnostic_faith + } + } + $LOCATION$.religion = { + any_faith = { + has_doctrine = tenet_gnosticism + } + } + } + $LOCATION$ = { + religion = { + random_faith = { + limit = { + OR = { + has_doctrine = tenet_gnosticism + has_doctrine = special_doctrine_is_gnostic_faith + } + } + $LOCATION$ = { set_county_faith = prev } + } + } + } + } + # Otherwise, reduce popular opinion + else = { + $LOCATION$ = { + add_county_modifier = { + modifier = ep3_religious_doubts + years = 15 + } + } + } +} +ep3_hasan_missionary_effect = { + ep3_hasan_advance_radicalism = yes + ep3_missionary_effect = { + PREACHER = $PREACHER$ + LOCATION = $LOCATION$ + } +} +ep3_hasan_advance_radicalism = { + if = { + limit = { + any_owned_story = { + story_type = story_hasan + } + } + custom_tooltip = { + text = advance_to_the_assassins_tt + random_owned_story = { + limit = { + story_type = story_hasan + } + if = { + limit = { + exists = var:radical_points + } + change_variable = { + name = radical_points + add = 1 + } + } + else = { + set_variable = { + name = radical_points + value = 1 + } + } + } + } + } +} +hasan_sabbah_ignite_decision_effect = { + if = { + limit = { + hasan_sabbah_event_troops_value <= 1000 + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = ayyar + stacks = 1 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = ayyar + stacks = 1 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = ayyar + stacks = 1 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + } + else_if = { + limit = { + hasan_sabbah_event_troops_value <= 2000 + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + men_at_arms = { + type = ayyar + stacks = 1 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + men_at_arms = { + type = ayyar + stacks = 1 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + men_at_arms = { + type = ayyar + stacks = 1 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + men_at_arms = { + type = ayyar + stacks = 1 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + } + else_if = { + limit = { + hasan_sabbah_event_troops_value <= 3000 + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 1 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + } + else_if = { + limit = { + hasan_sabbah_event_troops_value > 3000 + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 2 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 2 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 2 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 2 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + spawn_army = { + name = hasan_fanatics + men_at_arms = { + type = asawira + stacks = 2 + } + men_at_arms = { + type = ayyar + stacks = 2 + } + levies = hasan_sabbah_event_troops_value + inheritable = yes + location = root.domicile.domicile_location + war_keep_on_attacker_victory = yes + } + } + start_war = { + cb = ep3_hasan_assassin_war + target = root.location.county.holder.top_liege + target_title = root.location.county.holder.top_liege.primary_title + } +} +hasan_sabbah_end_war = { + # Offer Hasan the opportunity to become landed + hidden_effect = { + if = { + limit = { + $SELJUK$ = { + any_sub_realm_barony = { + title_province = { has_building_or_higher = alamut_castle_01 } + } + } + } + $SELJUK$ = { + random_sub_realm_barony = { + limit = { + title_province = { has_building_or_higher = alamut_castle_01 } + } + county = { + save_scope_as = hasan_home + } + } + } + } + else_if = { + limit = { + $SELJUK$ = { + any_sub_realm_county = { + faith = $HASAN$.faith + holder = { is_ai = yes } + } + } + } + $SELJUK$ = { + random_sub_realm_county = { + limit = { + faith = $HASAN$.faith + holder = { is_ai = yes } + } + save_scope_as = hasan_home + } + } + } + else = { + $SELJUK$ = { + random_sub_realm_county = { + limit = { + holder = { is_ai = yes } + } + save_scope_as = hasan_home + } + } + } + $HASAN$ = { + if = { + limit = { + any_owned_story = { + story_type = story_hasan + exists = var:preferred_caliph + } + } + random_owned_story = { + limit = { story_type = story_hasan } + var:preferred_caliph = { save_scope_as = caliph } + } + } + trigger_event = { + id = hasan_sabbah.1050 + } + if = { + limit = { + is_ai = no + } + add_achievement_global_variable_effect = { + VARIABLE = finished_the_old_man_of_the_mountain_achievement + VALUE = yes + } + } + } + } + create_title_and_vassal_change = { + type = independency + save_scope_as = change + } + $HASAN$ = { + add_prestige = medium_prestige_value + } + $SELJUK$ = { + add_prestige = { + value = medium_prestige_value + multiply = -1 + } + + every_vassal = { + limit = { + highest_held_title_tier > tier_barony + } + change_liege_or_become_independent = { + CHANGE = scope:change + VASSAL = this + } + } + + every_vassal = { + limit = { is_ai = no } + send_interface_toast = { + type = msg_gained_independence + title = liege_primary_title_dissolution + desc = liege_primary_title_dissolution_desc + left_icon = $SELJUK$ + } + } + } + resolve_title_and_vassal_change = scope:change + $SELJUK$ = { + every_held_title = { + limit = { + tier >= tier_duchy + is_head_of_faith = no + NOT = { this = $SELJUK$.capital_county.duchy } + } + add_to_temporary_list = titles_to_destroy + } + } + every_in_list = { + list = titles_to_destroy + $HASAN$ = { + destroy_title = prev + } + } + $SELJUK$ = { + if = { + limit = { + government_has_flag = government_is_administrative + } + admin_government_reset_effect = yes + } + } + # LEGITIMACY FROM LOSING FACTION WAR + faction_war_end_defeat_legitimacy_effect = yes + # End Hasan's story cycle + hidden_effect = { + $HASAN$ = { + if = { + limit = { + any_owned_story = { + story_type = story_hasan + } + } + random_owned_story = { + limit = { + story_type = story_hasan + } + end_story = yes + } + } + } + } +} + +reinforce_soldiers_regiment_effect = { + save_scope_as = laamp_temp + # For the value. + save_temporary_scope_as = actor + custom_tooltip = { + text = reinforce_soldiers_effect_tt + every_maa_regiment = { + limit = { maa_regiments_valid_for_cheap_reinforcement_trigger = yes } + change_maa_troops_count = reinforce_soldiers_regiment_soldiers_value + } + } +} + +refill_maa_with_provisions_effect = { + save_scope_as = laamp_temp + while = { + limit = { + scope:actor.domicile.provisions > 0 + any_maa_regiment = { + maa_regiments_valid_to_refill_trigger = yes + } + } + random_maa_regiment = { + limit = { + maa_regiments_valid_to_refill_trigger = yes + } + save_scope_as = maa_scope + save_scope_value_as = { + name = current_provisions_max_value_scope + value = scope:actor.domicile.provisions + } + scope:actor.domicile ?= { + change_provisions = { + value = { + add = scope:maa_scope.replenishable_troops_value + divide = provision_refill_value + max = scope:current_provisions_max_value_scope + multiply = -1 + } + } + } + change_maa_troops_count = replenishable_troops_with_provisions_value + } + } +} + +refill_maa_with_gold_effect = { + save_scope_as = laamp_temp + while = { + limit = { + scope:actor.gold > 0 + any_maa_regiment = { + maa_regiments_valid_to_refill_trigger = yes + } + } + random_maa_regiment = { + limit = { + maa_regiments_valid_to_refill_trigger = yes + } + save_scope_as = maa_scope + save_scope_value_as = { + name = current_gold_max_value_scope + value = scope:actor.gold + } + scope:actor = { + remove_short_term_gold = { + add = scope:maa_scope.replenishable_troops_value + divide = gold_refill_value + max = scope:current_gold_max_value_scope + } + } + change_maa_troops_count = replenishable_troops_with_gold_value + } + } +} + +admin_government_reset_effect = { + if = { + limit = { is_landed = yes } # error suppression + ### NOMADIC + if = { + limit = { + OR = { + government_has_flag = government_is_nomadic + capital_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + } + change_government = nomad_government + } + ### TRIBAL - are all of your holdings Tribal? + if = { + limit = { + NOT = { + any_held_title = { + trigger_if = { + limit = { tier <= tier_county } + title_province ?= { + NOT = { has_holding_type = tribal_holding } + } + } + trigger_else = { + title_capital_county.title_province ?= { + NOT = { has_holding_type = tribal_holding } + } + } + } + } + } + change_government = tribal_government + } + ### CLAN - are you a Muslim or from a Clan culture? + else_if = { + limit = { + OR = { + faith = { religion_tag = islam_religion } + culture = { + OR = { + has_cultural_pillar = heritage_arabic + has_cultural_pillar = heritage_iranian + has_cultural_pillar = heritage_turkic + } + } + } + } + change_government = clan_government + } + ### FEUDAL - fallback playable case + else = { change_government = feudal_government } + } +} + +create_basic_peasant_effect = { + create_character = { + template = peasant_character + location = root.location + dynasty = none + culture = root.location.culture + faith = root.location.faith + gender_female_chance = 50 + after_creation = { + set_to_lowborn = yes + } + save_scope_as = peasant + } +} + +fire_governor_long_war_response_events = { + if = { + limit = { + scope:defender = { + government_has_flag = government_is_administrative + is_independent_ruler = yes + any_vassal = { + is_governor = yes + NOR = { + this = scope:attacker + is_allied_to = scope:attacker + } + } + } + } + scope:defender = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:attacker + is_allied_to = scope:attacker + } + } + save_scope_as = def_governor_1 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 24 + } + } + } + scope:defender = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:attacker + is_allied_to = scope:attacker + this = scope:def_governor_1 + } + } + save_scope_as = def_governor_2 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 28 + } + } + } + scope:defender = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:attacker + is_allied_to = scope:attacker + this = scope:def_governor_1 + this = scope:def_governor_2 + } + } + save_scope_as = def_governor_3 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 32 + } + } + } + scope:defender = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:attacker + is_allied_to = scope:attacker + this = scope:def_governor_1 + this = scope:def_governor_2 + this = scope:def_governor_3 + } + } + save_scope_as = def_governor_4 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 36 + } + } + } + scope:defender = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:attacker + is_allied_to = scope:attacker + this = scope:def_governor_1 + this = scope:def_governor_2 + this = scope:def_governor_3 + this = scope:def_governor_4 + } + } + save_scope_as = def_governor_5 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 42 + } + } + } + scope:defender = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:attacker + is_allied_to = scope:attacker + this = scope:def_governor_1 + this = scope:def_governor_2 + this = scope:def_governor_3 + this = scope:def_governor_4 + this = scope:def_governor_5 + } + } + save_scope_as = def_governor_6 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 54 + } + } + } + } + if = { + limit = { + scope:attacker = { + government_has_flag = government_is_administrative + is_independent_ruler = yes + any_vassal = { + is_governor = yes + NOR = { + this = scope:defender + is_allied_to = scope:defender + } + } + } + } + scope:attacker = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:defender + is_allied_to = scope:defender + } + } + save_scope_as = att_governor_1 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 24 + } + } + } + scope:attacker = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:defender + is_allied_to = scope:defender + this = scope:att_governor_1 + } + } + save_scope_as = att_governor_2 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 28 + } + } + } + scope:attacker = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:defender + is_allied_to = scope:defender + this = scope:att_governor_1 + this = scope:att_governor_2 + } + } + save_scope_as = att_governor_3 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 32 + } + } + } + scope:attacker = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:defender + is_allied_to = scope:defender + this = scope:att_governor_1 + this = scope:att_governor_2 + this = scope:att_governor_3 + } + } + save_scope_as = att_governor_4 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 36 + } + } + } + scope:attacker = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:defender + is_allied_to = scope:defender + this = scope:att_governor_1 + this = scope:att_governor_2 + this = scope:att_governor_3 + this = scope:att_governor_4 + } + } + save_scope_as = att_governor_5 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 42 + } + } + } + scope:attacker = { + random_vassal = { + limit = { + is_governor = yes + NOR = { + this = scope:defender + is_allied_to = scope:defender + this = scope:att_governor_1 + this = scope:att_governor_2 + this = scope:att_governor_3 + this = scope:att_governor_4 + this = scope:att_governor_5 + } + } + save_scope_as = att_governor_6 + trigger_event = { + id = ep3_governor_yearly.3010 + months = 54 + } + } + } + } +} + +ep3_governor_yearly_3010_war_aid_effect = { + if = { + limit = { + scope:emperor = { + is_defender_in_war = scope:war + } + } + scope:war = { + add_defender = scope:governor + } + } + else = { + scope:war = { + add_attacker = scope:governor + } + + } + if = { + limit = { + root = scope:emperor + } + hidden_effect = { + reverse_add_opinion = { + target = scope:emperor + opinion = 20 + modifier = grateful_opinion + } + } + } + else = { + reverse_add_opinion = { + target = scope:emperor + opinion = 20 + modifier = grateful_opinion + } + } + pay_short_term_gold = { + target = scope:emperor + gold = medium_gold_value + } + if = { + limit = { + can_add_hook = { + target = scope:emperor + type = favor_hook + } + } + add_hook = { + target = scope:emperor + type = favor_hook + } + } #TODO_CD_EP3_JC FIRST OPTION SHOULD BE BECOMING CO-EMPEROR IF POSSIBLE, but make sure it doesn't happen more than once + else = { + change_influence = major_influence_gain + } +} +ep3_admin_war_aftermath_effect = { + scope:war = { + if = { + limit = { + any_war_participant = { + is_landed = yes + government_has_flag = government_is_administrative + } + } + every_war_participant = { + limit = { + is_landed = yes + government_has_flag = government_is_administrative + } + primary_title = { + set_variable = { + name = admin_war_aftermath_var + years = 5 + } + } + } + } + } +} + +state_faith_conversion_add_piety_effect = { + if = { + limit = { + scope:actor = { + top_liege = { government_allows = state_faith } + faith = top_liege.primary_title.state_faith + } + scope:recipient.top_liege = { government_allows = state_faith } + } + scope:actor = { + add_piety = medium_piety_gain + } + } +} + +state_faith_refuse_conversion_add_piety_effect = { + if = { + limit = { + scope:actor.top_liege = { government_allows = state_faith } + scope:recipient = { + top_liege = { government_allows = state_faith } + faith = top_liege.primary_title.state_faith + } + } + scope:recipient = { add_piety = medium_piety_gain } + } +} + +# EP3 Laamp possibility warning +ep3_war_loss_adventurer_tt_effect = { + save_scope_as = war_loser + if = { + limit = { + has_ep3_dlc_trigger = yes + NOT = { + any_held_title = { + OR = { + is_landless_type_title = yes + is_noble_family_title = yes + } + } + } + trigger_if = { + limit = { any_in_list = { list = target_titles } } + OR = { + # You are losing all your counties and have no vassals to steal from + AND = { + any_held_county = { + count = all + OR = { + is_in_list = target_titles + target_is_de_jure_liege_or_above = scope:war_loser.primary_title + } + } + any_vassal = { + count = 0 + highest_held_title_tier >= tier_county + } + } + # You are losing all your held titles + any_held_title = { + count = all + OR = { + is_in_list = target_titles + target_is_de_jure_liege_or_above = scope:war_loser.primary_title + } + } + } + } + } + custom_tooltip = laamp_may_become_adventurer_tt + } +} + +add_randomised_double_moon_modifier_effect = { + hidden_effect = { + scope:double_moon_book = { + random_list = { + 1 = { + add_artifact_modifier = artifact_prowess_2_modifier + set_artifact_description = double_moon_tome_desc_1 + } + 1 = { + add_artifact_modifier = artifact_knight_effectiveness_4_modifier + set_artifact_description = double_moon_tome_desc_2 + } + 1 = { + add_artifact_modifier = artifact_stewardship_1_modifier + set_artifact_description = double_moon_tome_desc_3 + } + 1 = { + add_artifact_modifier = artifact_diplomacy_1_modifier + set_artifact_description = double_moon_tome_desc_4 + } + 1 = { + add_artifact_modifier = artifact_health_gain_1_modifier + set_artifact_description = double_moon_tome_desc_5 + } + 1 = { + add_artifact_modifier = artifact_monthly_minor_prestige_3_modifier + set_artifact_description = double_moon_tome_desc_6 + } + 1 = { + add_artifact_modifier = artifact_monthly_prestige_3_modifier + set_artifact_description = double_moon_tome_desc_7 + } + 1 = { + add_artifact_modifier = artifact_dynasty_opinion_2_modifier + set_artifact_description = double_moon_tome_desc_8 + } + 1 = { + add_artifact_modifier = artifact_learn_language_scheme_phase_duration_add_2_modifier + set_artifact_description = double_moon_tome_desc_9 + } + 1 = { + add_artifact_modifier = artifact_diplomacy_per_prestige_level_modifier + set_artifact_description = double_moon_tome_desc_10 + } + 1 = { + add_artifact_modifier = artifact_mercenary_hire_cost_mult_2_modifier + set_artifact_description = double_moon_tome_desc_11 + } + 1 = { + add_artifact_modifier = artifact_general_opinion_1_modifier + set_artifact_description = double_moon_tome_desc_12 + } + 1 = { + add_artifact_modifier = artifact_independent_ruler_opinion_2_modifier + set_artifact_description = double_moon_tome_desc_13 + } + 1 = { + add_artifact_modifier = artifact_clergy_opinion_2_modifier + set_artifact_description = double_moon_tome_desc_14 + } + } + } + } +} + +random_rain_snow_chance_effect = { + random_list = { + 10 = { # Snow + trigger = { + location = { + OR = { + has_province_modifier = winter_mild_modifier + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier + } + } + } + save_scope_as = snow_day + } + 10 = { # Rain + trigger = { + location = { + NOR = { + has_province_modifier = winter_mild_modifier + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier + } + } + } + modifier = { + factor = 1.02 + location.county = { is_riverside_county = yes } + } + modifier = { + factor = 0.05 + location = { + OR = { + terrain = desert + terrain = drylands + terrain = desert_mountains + terrain = oasis + + } + } + } + save_scope_as = rain_day + } + 10 = {} # No rain + } +} + +governor_resignation_title_transfer_effect = { + save_scope_as = resigner + top_liege = { save_scope_as = emperor } + # Create tooltips + every_held_title = { + limit = { + is_landless_type_title = no + is_noble_family_title = no + save_temporary_scope_as = liege_title + NOT = { + scope:resigner = { + any_held_title = { is_de_jure_liege_or_above_target = scope:liege_title } + } + } + } + save_scope_as = landed_title + current_heir = { save_scope_as = next_candidate } + if = { + limit = { tier >= tier_duchy } + scope:next_candidate = { custom_tooltip = force_governor_removal_interaction_pass_effect_tt } + } + } + create_title_and_vassal_change = { + type = stepped_down + save_scope_as = change + } + # Transfer all titles to heir of primary title if only one governorship is held + hidden_effect = { + if = { + limit = { + any_held_title = { + count = 1 + tier >= tier_duchy + is_landless_type_title = no + is_noble_family_title = no + } + } + primary_title.current_heir = { save_scope_as = next_candidate } + every_vassal = { + limit = { + NOT = { + this = scope:next_candidate + } + } + change_liege = { + liege = scope:next_candidate + change = scope:change + } + } + every_held_title = { + limit = { + tier >= tier_county + is_landless_type_title = no + is_noble_family_title = no + } + change_title_holder_include_vassals = { + holder = scope:next_candidate + change = scope:change + take_baronies = no + } + } + } + else = { + every_held_title = { + limit = { + tier >= tier_duchy + is_landless_type_title = no + is_noble_family_title = no + } + current_heir = { save_scope_as = next_candidate } + every_direct_de_facto_vassal_title = { + limit = { + holder = { + is_vassal_of = scope:resigner + NOT = { + this = scope:next_candidate + } + } + } + holder = { + change_liege = { + liege = scope:next_candidate + change = scope:change + } + } + } + change_title_holder_include_vassals = { + holder = scope:next_candidate + change = scope:change + take_baronies = no + } + every_direct_de_facto_vassal_title = { + limit = { holder = scope:resigner } + change_title_holder_include_vassals = { + holder = scope:next_candidate + change = scope:change + take_baronies = no + } + } + } + # Fallback for counties not held in de jure duchies + every_held_title = { + limit = { + tier = tier_county + } + change_title_holder_include_vassals = { + holder = scope:emperor + change = scope:change + take_baronies = no + } + } + } + } + resolve_title_and_vassal_change = scope:change +} + +boost_governor_efficiency_success_effect = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = boost_efficiency_success_desc + left_icon = scope:recipient + + scope:recipient ?= { + send_interface_toast = { + type = event_toast_effect_good + title = boost_efficiency_success_desc + left_icon = scope:actor + if = { + limit = { has_character_modifier = ep3_damage_efficiency_modifier } + remove_character_modifier = ep3_damage_efficiency_modifier + if = { + limit = { var:ep3_governor_efficiency_stack = 1 } + remove_variable = ep3_governor_efficiency_stack + } + else = { + change_variable = { + name = ep3_governor_efficiency_stack + add = -1 + } + } + } + else = { + add_character_modifier = { + modifier = ep3_boost_efficiency_modifier + years = 10 + } + if = { + limit = { has_variable = ep3_governor_efficiency_stack } + set_variable = { + name = ep3_governor_efficiency_stack + value = { + value = scope:recipient.var:ep3_governor_efficiency_stack + add = 1 + max = 5 + } + years = 10 + } + } + else = { + set_variable = { + name = ep3_governor_efficiency_stack + value = 1 + years = 10 + } + } + } + if = { + limit = { + opinion = { + target = scope:actor + value >= 15 + } + } + scope:actor = { + progress_towards_friend_effect = { + REASON = friend_boosted_gov_efficiency + CHARACTER = scope:recipient + OPINION = default_friend_opinion + } + } + } + else_if = { + limit = { is_ai = yes } + add_opinion = { + target = scope:actor + modifier = boosted_efficiency_opinion + } + } + } + } + } + } +} + +boost_governor_efficiency_duel_effect = { + scope:actor = { + duel = { + skill = $SKILL$ + value = mediocre_skill_rating + 10 = { + compare_modifier = { + value = scope:duel_value + multiplier = 1.5 + min = -49 + } + min = 2 + desc = boost_efficiency_success_desc + send_interface_toast = { + type = event_toast_effect_good + title = boost_efficiency_success_desc + left_icon = scope:recipient + boost_governor_efficiency_success_effect = yes + } + } + 10 = { + compare_modifier = { + value = scope:duel_value + multiplier = -1.5 + min = -49 + } + min = 2 + desc = boost_efficiency_failure_desc + send_interface_toast = { + type = event_toast_text_bad + title = boost_efficiency_failure_desc + left_icon = scope:recipient + desc = NO_EFFECT + } + } + } + } +} + +damage_governor_efficiency_success_effect = { + scope:recipient ?= { + send_interface_toast = { + type = event_toast_effect_bad + title = damage_efficiency_success_desc + left_icon = scope:actor + if = { + limit = { has_character_modifier = ep3_boost_efficiency_modifier } + remove_character_modifier = ep3_boost_efficiency_modifier + if = { + limit = { var:ep3_governor_efficiency_stack = 1 } + remove_variable = ep3_governor_efficiency_stack + } + else = { + change_variable = { + name = ep3_governor_efficiency_stack + add = -1 + } + } + } + else = { + add_character_modifier = { + modifier = ep3_damage_efficiency_modifier + years = 10 + } + if = { + limit = { has_variable = ep3_governor_efficiency_stack } + set_variable = { + name = ep3_governor_efficiency_stack + value = { + value = scope:recipient.var:ep3_governor_efficiency_stack + add = 1 + max = 5 + } + years = 10 + } + } + else = { + set_variable = { + name = ep3_governor_efficiency_stack + value = 1 + years = 10 + } + } + } + if = { + limit = { is_ai = yes } + add_opinion = { + target = scope:actor + modifier = damaged_efficiency_opinion + } + } + } + } +} + +damage_governor_efficiency_duel_effect = { + scope:actor = { + duel = { + skill = $SKILL$ + value = mediocre_skill_rating + 10 = { + compare_modifier = { + value = scope:duel_value + multiplier = 1.5 + min = -49 + } + min = 2 + desc = damage_efficiency_success_desc + send_interface_toast = { + type = event_toast_effect_good + title = damage_efficiency_success_desc + left_icon = scope:recipient + damage_governor_efficiency_success_effect = yes + } + } + 10 = { + compare_modifier = { + value = scope:duel_value + multiplier = -1.5 + min = -49 + } + min = 2 + desc = damage_efficiency_failure_desc + send_interface_toast = { + type = event_toast_text_bad + title = damage_efficiency_success_desc + left_icon = scope:recipient + desc = NO_EFFECT + } + } + } + } +} + +# NF Adoption effect +noble_family_adoption_effect = { + $ADOPTEE$ = { + if = { + limit = { + exists = house.house_head + } + house.house_head = { #We do this first, otherwise house head will already mean someone else. + add_opinion = { + modifier = adopted_my_house_member_opinion + opinion = -25 + target = $ADOPTER$ + } + if = { + limit = { + has_hook_of_type = { + type = house_head_hook + target = $ADOPTEE$ + } + } + remove_hook = { + type = house_head_hook + target = $ADOPTEE$ + } + } + } + } + } + $ADOPTER$ = { + if = { + limit = { scope:gold = yes } + pay_short_term_gold = { + target = $ADOPTEE$ + gold = $ADOPTER$.minor_gold_value + } + } + if = { + limit = { scope:hook = yes } + use_hook = $ADOPTEE$ + } + $ADOPTEE$ = { set_house = $ADOPTER$.house } + # Zealous vassals *hate* you adopting a heretic + house = { + every_house_member = { + custom = every_zealot_house_member_tt + limit = { + ai_zeal >= medium_positive_ai_value + faith = { faith_hostility_level = { target = $ADOPTEE$.faith value >= faith_astray_level } } + NOT = { this = $ADOPTER$ } + } + add_opinion = { + modifier = adopted_new_house_member_opinion + opinion = -20 + target = $ADOPTER$ + } + } + every_house_member = { + custom = every_close_family_house_member_tt + limit = { + NOT = { this = $ADOPTER$ } + is_close_family_of = $ADOPTER$ + NAND = { + ai_zeal >= medium_positive_ai_value + faith = { faith_hostility_level = { target = $ADOPTEE$.faith value >= faith_astray_level } } + } + } + add_opinion = { + modifier = adopted_new_house_member_opinion + opinion = -10 + target = $ADOPTER$ + } + } + } + } + $ADOPTEE$ = { + #adopted should travel + if = { + limit = { exists = $ADOPTER$.capital_province } + $ADOPTER$.capital_province = { save_scope_as = destination_province } + } + else_if = { + limit = { exists = $ADOPTER$.host.capital_province } + $ADOPTER$.host.capital_province = { save_scope_as = destination_province } + } + else_if = { + limit = { exists = $ADOPTER$.domicile.domicile_location } + $ADOPTER$.domicile.domicile_location = { save_scope_as = destination_province } + } + else = { + $ADOPTER$.location = { save_scope_as = destination_province } + } + save_scope_as = adoptee + $ADOPTER$ = { save_scope_as = adopter } + if = { + limit = { + any_relation = { + type = guardian + NOT = { this = $ADOPTER$ } + } + } + random_relation = { + type = guardian + limit = { NOT = { this = $ADOPTER$ } } + save_scope_as = old_guardian + } + remove_guardian_effect = { + GUARDIAN = scope:old_guardian + WARD = scope:adoptee + RETURN_WARD = no + HIDE_OPINION = no + } + } + if = { + limit = { NOT = { scope:destination_province = $ADOPTEE$.location } } + set_variable = { + name = adoptee_travelling_to_adopter + years = 2 + value = scope:adopter + } + start_travel_plan = { + destination = scope:destination_province + on_start_on_action = on_adoptee_depart_for_adopter + on_travel_planner_cancel_on_action = on_adoptee_depart_travel_planner_exit + on_arrival_on_action = on_adoptee_arrive_at_adopter + on_arrival_destinations = last + return_trip = no # One way + } + custom_tooltip = adoptee_leaves_for_adopter_tt + } + else_if = { + limit = { + $ADOPTER$ = { + NOT = { is_in_the_same_court_as = $ADOPTEE$ } + } + } + $ADOPTER$ = { add_courtier = $ADOPTEE$ } + } + #No final else, in this situation they are already in the right location and the right court. + } +} + +# Create icon artifacts +## Court Artifact - Large +create_artifact_court_icon_large_effect = { + # Get the character the artifact is being made for. + $OWNER$ = { save_scope_as = owner } + $PAINTER$ = { save_scope_as = painter } + + hidden_effect_new_object = { + # Get artifact quality, wealth, and materials + get_artifact_quality_effect = yes + get_artifact_wealth_effect = yes + # Create the artifact + scope:owner = { + if = { + limit = { + exists = scope:inspiration_owner + } + create_artifact = { + name = artifact_wall_court_icon_large_name + description = placeholder # Will be regenerated in the post-creation effects + creator = scope:painter + visuals = icon_court_large + type = wall_big + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + } + } + else_if = { + limit = { + exists = scope:adventurer + } + create_artifact = { + name = artifact_wall_court_icon_large_name + description = placeholder # Will be regenerated in the post-creation effects + creator = scope:adventurer + visuals = icon_court_large + type = wall_big + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + history = { + location = scope:location + actor = scope:adventurer + recipient = root + type = discovered + } + } + } + else = { + create_artifact = { + name = artifact_wall_court_icon_large_name + description = placeholder # Will be regenerated in the post-creation effects + creator = scope:painter + visuals = icon_court_large + type = wall_big + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + } + } + } + scope:newly_created_artifact = { + set_artifact_description = artifact_wall_court_icon_large_description + # Set piety + add_2_scaled_artifact_modifier_devotion_effect = yes + + if = { + limit = { + OR = { + rarity = famed + rarity = illustrious + } + } + add_scaled_artifact_modifier_dynasty_prestige_effect = yes + } + remove_artifact_modifier = artifact_placeholder_modifier + } + } +} + +## Court Artifact - Small +create_artifact_court_icon_small_effect = { + # Get the character the artifact is being made for. + $OWNER$ = { save_scope_as = owner } + $PAINTER$ = { save_scope_as = painter } + + hidden_effect_new_object = { + # Get artifact quality, wealth, and materials + get_artifact_quality_effect = yes + get_artifact_wealth_effect = yes + # Create the artifact + scope:owner = { + if = { + limit = { + exists = scope:inspiration_owner + } + create_artifact = { + name = artifact_wall_court_icon_small_name + description = placeholder # Will be regenerated in the post-creation effects + creator = scope:painter + visuals = icon_court_small + type = wall_small + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + } + } + else_if = { + limit = { + exists = scope:adventurer + } + create_artifact = { + name = artifact_wall_court_icon_small_name + description = placeholder # Will be regenerated in the post-creation effects + creator = scope:adventurer + visuals = icon_court_small + type = wall_small + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + history = { + location = scope:location + actor = scope:adventurer + recipient = root + type = discovered + } + } + } + else = { + create_artifact = { + name = artifact_wall_court_icon_small_name + description = placeholder # Will be regenerated in the post-creation effects + creator = scope:painter + visuals = icon_court_small + type = wall_small + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + } + } + } + scope:newly_created_artifact = { + set_artifact_description = artifact_wall_court_icon_small_description + # Set piety + add_2_scaled_artifact_modifier_devotion_effect = yes + + if = { + limit = { + OR = { + rarity = famed + rarity = illustrious + } + } + add_scaled_artifact_modifier_dynasty_prestige_effect = yes + } + remove_artifact_modifier = artifact_placeholder_modifier + } + } +} + +## Trinket Artifact +create_artifact_trinket_icon_effect = { + # Get the character the artifact is being made for. + $OWNER$ = { save_scope_as = owner } + $PAINTER$ = { save_scope_as = painter } + + hidden_effect_new_object = { + # Get artifact quality, wealth, and materials + get_artifact_quality_effect = yes + get_artifact_wealth_effect = yes + # Create the artifact + scope:owner = { + if = { + limit = { + exists = scope:inspiration_owner + } + create_artifact = { + name = artifact_trinket_icon_name + description = placeholder # Will be regenerated in the post-creation effects + creator = scope:painter + visuals = trinket_icon + type = miscellaneous + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + } + } + else_if = { + limit = { + exists = scope:adventurer + } + create_artifact = { + name = artifact_trinket_icon_name + description = placeholder # Will be regenerated in the post-creation effects + creator = scope:adventurer + visuals = icon_court_small + type = miscellaneous + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + history = { + location = scope:location + actor = scope:adventurer + recipient = root + type = discovered + } + } + } + else = { + create_artifact = { + name = artifact_trinket_icon_name + description = placeholder # Will be regenerated in the post-creation effects + creator = scope:painter + visuals = trinket_icon + type = miscellaneous + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + } + } + } + scope:newly_created_artifact = { + set_artifact_description = artifact_trinket_icon_description + # Set piety + add_scaled_artifact_modifier_piety_effect = yes + + if = { + limit = { + OR = { + rarity = famed + rarity = illustrious + } + } + add_scaled_artifact_modifier_learning_lifestyle_xp_effect = yes + } + remove_artifact_modifier = artifact_placeholder_modifier + } + } +} + +## Trinket Artifact +create_artifact_trinket_icon_ancient_effect = { + # Get the character the artifact is being made for. + $OWNER$ = { save_scope_as = owner } + + hidden_effect_new_object = { + # Get artifact quality, wealth, and materials + get_artifact_quality_effect = yes + get_artifact_wealth_effect = yes + # Create the artifact + scope:owner = { + create_artifact = { + name = artifact_trinket_icon_name + description = placeholder # Will be regenerated in the post-creation effects + visuals = trinket_icon + type = miscellaneous + modifier = artifact_placeholder_modifier + save_scope_as = newly_created_artifact + wealth = scope:wealth + quality = scope:quality + history = { type = created_before_history } + } + } + scope:newly_created_artifact = { + set_artifact_description = artifact_trinket_icon_description + # Set piety + add_scaled_artifact_modifier_piety_effect = yes + + if = { + limit = { + OR = { + rarity = famed + rarity = illustrious + } + } + add_scaled_artifact_modifier_learning_lifestyle_xp_effect = yes + } + remove_artifact_modifier = artifact_placeholder_modifier + } + } +} +# Scheme bonuses from being the emperor, or member of a dominant/powerful family +ep3_actor_scheme_modifier_effect = { + scope:new_scheme ?= { + # Emperor enjoys a significant bonus to all admin related schemes + if = { + limit = { scope:actor = scope:actor.top_liege } + add_scheme_modifier = { type = admin_emperor_scheme_modifier } + } + # Dominant and Powerful Families enjoys a decent bonus to all admin related schemes + else_if = { + limit = { + scope:actor.house ?= { is_dominant_family = yes } + } + add_scheme_modifier = { type = admin_dominant_family_scheme_modifier } + } + else_if = { + limit = { + scope:actor.house ?= { is_powerful_family = yes } + } + add_scheme_modifier = { type = admin_powerful_family_scheme_modifier } + } + } +} + +#Complete war group task contracts, used in war_on_actions +war_task_contracts_completion_effect = { + #Join War Contract and Help Claimant Contract + scope:war = { + if = { + limit = { + any_war_participant = { + any_character_active_contract = { + OR = { + AND = { + has_task_contract_type = laamp_join_war_contract + var:task_contract_war ?= scope:war + } + AND = { + has_task_contract_type = laamp_help_claimant_contract + task_contract_employer = scope:war.primary_attacker + } + } + save_temporary_scope_as = relevant_contract + } + } + } + scope:relevant_contract = { + if = { + limit = { + scope:war = { + war_contribution = { + target = scope:relevant_contract.task_contract_taker + value > 0 + } + } + } + complete_task_contract = success_standard + } + else = { + complete_task_contract = failure_standard + } + } + } + if = { + limit = { + primary_attacker = { + has_variable = valuable_prisoners + } + } + primary_attacker = { + remove_variable = valuable_prisoners + } + } + if = { + limit = { + primary_defender = { + has_variable = valuable_prisoners + } + } + primary_defender = { + remove_variable = valuable_prisoners + } + } + if = { + limit = { + using_civil_war_cb_trigger = yes + any_war_participant = { + any_character_active_contract = { + has_task_contract_type = laamp_join_faction_contract + task_contract_employer = { + is_participant_in_war = scope:war + } + } + } + } + every_war_participant = { + every_character_active_contract = { + limit = { + has_task_contract_type = laamp_join_faction_contract + task_contract_employer = { + is_participant_in_war = scope:war + } + } + if = { + limit = { + task_contract_taker = scope:winner + } + complete_task_contract = success_standard + } + else = { + complete_task_contract = failure_standard + } + } + } + } + } +} + +#If a landless adventurer was hired as a mercenary and contributed in a war they get paid, used in war_on_actions, relevant flag set by hire_laamp_mercenaries_interaction or ep3_interactions_events.0112 +laamp_as_mercenary_payout_effect = { + scope:war = { + if = { + limit = { + any_war_participant = { + has_character_flag = joined_as_mercenary + is_attacker_in_war = scope:war + NOT = { is_leader_in_war = scope:war } + OR = { + has_raised_armies = yes + scope:war = { + war_contribution = { + target = prev + value > 0 + } + } + } + } + } + every_war_participant = { + limit = { + has_character_flag = joined_as_mercenary + is_attacker_in_war = scope:war + NOT = { is_leader_in_war = scope:war } + OR = { + has_raised_armies = yes + scope:war = { + war_contribution = { + target = prev + value > 0 + } + } + } + } + add_to_list = laamp_mercenaries + remove_character_flag = joined_as_mercenary + } + primary_attacker = { + save_scope_as = employer + trigger_event = { + id = ep3_interactions_events.0121 + days = { 3 7 } + } + } + every_in_list = { + list = laamp_mercenaries + scope:employer = { + remove_list_variable = { + name = hired_mercenaries + target = prev + } + } + } + } + if = { + limit = { + any_war_participant = { + has_character_flag = joined_as_mercenary + is_defender_in_war = scope:war + NOT = { is_leader_in_war = scope:war } + OR = { + has_raised_armies = yes + scope:war = { + war_contribution = { + target = prev + value > 0 + } + } + } + } + } + every_war_participant = { + limit = { + has_character_flag = joined_as_mercenary + is_defender_in_war = scope:war + NOT = { is_leader_in_war = scope:war } + OR = { + has_raised_armies = yes + scope:war = { + war_contribution = { + target = prev + value > 0 + } + } + } + } + add_to_list = laamp_mercenaries + remove_character_flag = joined_as_mercenary + } + primary_defender = { + save_scope_as = employer + trigger_event = { + id = ep3_interactions_events.0121 + days = { 3 7 } + } + } + every_in_list = { + list = laamp_mercenaries + scope:employer = { + remove_list_variable = { + name = hired_mercenaries + target = prev + } + } + } + } + } +} + +laamp_as_mercenary_payout_tooltip_effect = { + save_scope_as = war + show_as_tooltip = { + scope:defender = { + if = { + limit = { + exists = scope:war + any_war_ally = { + is_landless_adventurer = yes + OR = { + any_character_active_contract = { + has_task_contract_type = laamp_join_war_contract + var:task_contract_war ?= scope:war + } + AND = { + has_variable = owed_contract_assistance_gold + var:owed_contract_assistance_war ?= scope:war + } + has_variable = joined_as_mercenary + } + } + } + every_war_ally = { + if = { + limit = { + is_landless_adventurer = yes + } + save_scope_as = laamp_temp + save_scope_as = actor + save_scope_value_as = { + name = war_contribution_value + value = "scope:war.war_contribution(scope:laamp_temp)" + } + if = { + limit = { + any_character_active_contract = { + has_task_contract_type = laamp_join_war_contract + var:task_contract_war = scope:war + } + } + every_character_active_contract = { + limit = { + has_task_contract_type = laamp_join_war_contract + var:task_contract_war = scope:war + } + show_as_tooltip = { + task_contract_employer = { + save_scope_as = employer + custom_tooltip = ep3_join_war_payment_tt + pay_short_term_gold = { + target = scope:laamp_temp + gold = ep3_hire_laamp_mercs_payment_value + } + } + } + } + } + if = { + limit = { + has_variable = joined_as_mercenary + scope:defender = { + is_target_in_variable_list = { + name = hired_mercenaries + target = scope:laamp_temp + } + } + } + scope:defender = { + save_scope_as = employer + custom_tooltip = ep3_hire_laamp_mercs_payment_tt + pay_short_term_gold = { + target = scope:laamp_temp + gold = ep3_hire_laamp_mercs_payment_value + } + } + } + if = { + limit = { + has_variable = owed_contract_assistance_gold + var:owed_contract_assistance_war ?= scope:war + } + save_scope_as = contract_assistance_helper + scope:defender = { + save_scope_as = recipient + custom_tooltip = contract_assistance_interaction_condition_tt + pay_short_term_gold = { + target = scope:actor + gold = scope:actor.var:owed_contract_assistance_gold + } + } + } + } + } + } + } + scope:attacker = { + if = { + limit = { + exists = scope:war + any_war_ally = { + is_landless_adventurer = yes + OR = { + any_character_active_contract = { + has_task_contract_type = laamp_join_war_contract + var:task_contract_war = scope:war + } + AND = { + has_variable = owed_contract_assistance_gold + var:owed_contract_assistance_war ?= scope:war + } + has_variable = joined_as_mercenary + } + } + } + every_war_ally = { + if = { + limit = { + is_landless_adventurer = yes + } + save_scope_as = laamp_temp + save_scope_as = actor + save_scope_value_as = { + name = war_contribution_value + value = "scope:war.war_contribution(scope:laamp_temp)" + } + if = { + limit = { + any_character_active_contract = { + has_task_contract_type = laamp_join_war_contract + var:task_contract_war = scope:war + } + } + every_character_active_contract = { + limit = { + has_task_contract_type = laamp_join_war_contract + var:task_contract_war = scope:war + } + show_as_tooltip = { + task_contract_employer = { + save_scope_as = employer + custom_tooltip = ep3_hire_laamp_mercs_payment_tt + pay_short_term_gold = { + target = scope:laamp_temp + gold = ep3_hire_laamp_mercs_payment_value + } + } + } + } + } + if = { + limit = { + has_variable = joined_as_mercenary + scope:attacker = { + is_target_in_variable_list = { + name = hired_mercenaries + target = scope:laamp_temp + } + } + } + scope:attacker = { + save_scope_as = employer + custom_tooltip = ep3_hire_laamp_mercs_payment_tt + pay_short_term_gold = { + target = scope:laamp_temp + gold = ep3_hire_laamp_mercs_payment_value + } + } + } + if = { + limit = { + has_variable = owed_contract_assistance_gold + var:owed_contract_assistance_war ?= scope:war + } + save_scope_as = contract_assistance_helper + scope:attacker = { + custom_tooltip = contract_assistance_interaction_condition_tt + pay_short_term_gold = { + target = scope:actor + gold = scope:actor.var:owed_contract_assistance_gold + } + } + } + } + } + } + } + } +} + +chariot_race_sow_discord_strong_response_effect = { + if = { + limit = { + root = { + this = scope:host + } + } + scope:host = { + capital_county = { + change_county_control = { + value = -3 + multiply = scope:activity.var:counter_chant_count + } + } + custom_tooltip = counter_chants_strong_modifier_tooltip + hidden_effect = { + scope:activity = { + every_in_list = { + variable = counter_chanters + scope:host = { + capital_county = { + add_county_modifier = { + modifier = strong_sow_discord_modifier + years = 10 + } + } + } + } + } + } + } + } + else = { + scope:host = { + capital_county = { + add_county_modifier = { + modifier = strong_sow_discord_modifier + years = 10 + } + change_county_control = -3 + } + } + } +} +chariot_race_sow_discord_weak_response_effect = { + if = { + limit = { + root = { + this = scope:host + } + } + scope:host = { + custom_tooltip = counter_chants_weak_modifier_tooltip + hidden_effect = { + scope:activity = { + every_in_list = { + variable = counter_chanters + scope:host = { + capital_county = { + add_county_modifier = { + modifier = weak_sow_discord_modifier + years = 10 + } + } + } + } + } + } + } + } + else = { + scope:host = { + capital_county = { + add_county_modifier = { + modifier = weak_sow_discord_modifier + years = 10 + } + } + } + } +} +chariot_race_sow_discord_normal_response_effect = { + if = { + limit = { + root = { + this = scope:host + } + } + scope:host = { + capital_county = { + change_county_control = { + value = -1 + multiply = scope:activity.var:counter_chant_count + } + } + custom_tooltip = counter_chants_normal_modifier_tooltip + hidden_effect = { + scope:activity = { + every_in_list = { + variable = counter_chanters + scope:host = { + capital_county = { + add_county_modifier = { + modifier = normal_sow_discord_modifier + years = 10 + } + } + } + } + } + } + } + } + else = { + scope:host = { + capital_county = { + add_county_modifier = { + modifier = normal_sow_discord_modifier + years = 10 + } + custom_tooltip = modifier_stacking_chariot_tooltip + change_county_control = -1 + } + } + } +} + +############# +# Camp Party +############# + +camp_party_completed_log_entry_effect = { + involved_activity = { + add_activity_log_entry = { + key = camp_party_completed_log_entry_effect + tags = { completed } + score = 100 + show_in_conclusion = yes + character = root + #Effects + root = { + disburse_camp_party_reward_effect = yes + } + } + } +} + +disburse_camp_party_reward_effect = { + involved_activity ?= { + ###Non-progression linked + #Drinks + scope:host = { + #For highest level drinks + if = { + limit = { + involved_activity = { + has_activity_option = { + category = camp_party_option_drinks + option = camp_party_drinks_abundant + } + } + } + add_character_modifier = { + modifier = ep3_master_of_ceremonies + years = 3 + } + } + + #For any level of drinks + #Opinion + if = { + limit = { + involved_activity = { + OR = { + has_activity_option = { + category = camp_party_option_drinks + option = camp_party_drinks_abundant + } + has_activity_option = { + category = camp_party_option_drinks + option = camp_party_drinks_adequate + } + } + } + } + involved_activity = { + every_attending_character = { + limit = { + NOT = { this = scope:host } + } + custom = every_attending_guest + add_opinion = { + modifier = feast_life_of_the_party_opinion + target = scope:host + opinion = 35 + } + } + } + } + + # Reveler Trait + if = { + limit = { + involved_activity = { + OR = { + has_activity_option = { + category = camp_party_option_drinks + option = camp_party_drinks_abundant + } + has_activity_option = { + category = camp_party_option_drinks + option = camp_party_drinks_adequate + } + } + } + } + if = { + limit = { + NOT = { + has_trait = lifestyle_reveler + } + } + add_trait = lifestyle_reveler + } + add_trait_xp = { + trait = lifestyle_reveler + value = { + integer_range = { + min = small_lifestyle_random_xp_low + max = small_lifestyle_random_xp_high + } + } + } + } + } + + #100 Carousing + if = { + limit = { var:activity_special_type_progression >= 100 } + + #Stress Loss + every_attending_character = { + custom = every_attending_guest + add_stress = -150 + } + + #Host effects + scope:host = { + hidden_effect = { + domicile = { + random_list = { + 1 = { + trigger = { + has_domicile_building_or_higher = camp_main_01 + NOT = { has_domicile_building = camp_main_04 } + } + switch = { + trigger = has_domicile_building + camp_main_01 = { add_domicile_building = camp_main_02 } + camp_main_02 = { add_domicile_building = camp_main_03 } + camp_main_03 = { add_domicile_building = camp_main_04 } + } + } + 1 = { + trigger = { + has_domicile_building_or_higher = supply_tent_01 + NOT = { has_domicile_building = supply_tent_06 } + } + switch = { + trigger = has_domicile_building + supply_tent_01 = { add_domicile_building = supply_tent_02 } + supply_tent_02 = { add_domicile_building = supply_tent_03 } + supply_tent_03 = { add_domicile_building = supply_tent_04 } + supply_tent_04 = { add_domicile_building = supply_tent_05 } + supply_tent_05 = { add_domicile_building = supply_tent_06 } + } + } + 1 = { + trigger = { + has_domicile_building_or_higher = barber_tent_01 + NOT = { has_domicile_building = barber_tent_06 } + } + switch = { + trigger = has_domicile_building + barber_tent_01 = { add_domicile_building = barber_tent_02 } + barber_tent_02 = { add_domicile_building = barber_tent_03 } + barber_tent_03 = { add_domicile_building = barber_tent_04 } + barber_tent_04 = { add_domicile_building = barber_tent_05 } + barber_tent_05 = { add_domicile_building = barber_tent_06 } + } + } + 1 = { + trigger = { + has_domicile_building_or_higher = baggage_train_01 + NOT = { has_domicile_building = baggage_train_06 } + } + switch = { + trigger = has_domicile_building + baggage_train_01 = { add_domicile_building = baggage_train_02 } + baggage_train_02 = { add_domicile_building = baggage_train_03 } + baggage_train_03 = { add_domicile_building = baggage_train_04 } + baggage_train_04 = { add_domicile_building = baggage_train_05 } + baggage_train_05 = { add_domicile_building = baggage_train_06 } + } + } + 1 = { + trigger = { + has_domicile_building_or_higher = camp_fire_01 + NOT = { has_domicile_building = camp_fire_06 } + } + switch = { + trigger = has_domicile_building + camp_fire_01 = { add_domicile_building = camp_fire_02 } + camp_fire_02 = { add_domicile_building = camp_fire_03 } + camp_fire_03 = { add_domicile_building = camp_fire_04 } + camp_fire_04 = { add_domicile_building = camp_fire_05 } + camp_fire_05 = { add_domicile_building = camp_fire_06 } + } + } + 1 = { + trigger = { + has_domicile_building_or_higher = proving_grounds_01 + NOT = { has_domicile_building = proving_grounds_06 } + } + switch = { + trigger = has_domicile_building + proving_grounds_01 = { add_domicile_building = proving_grounds_02 } + proving_grounds_02 = { add_domicile_building = proving_grounds_03 } + proving_grounds_03 = { add_domicile_building = proving_grounds_04 } + proving_grounds_04 = { add_domicile_building = proving_grounds_05 } + proving_grounds_05 = { add_domicile_building = proving_grounds_06 } + } + } + 1 = { + trigger = { + has_domicile_building_or_higher = camp_perimeter_01 + NOT = { has_domicile_building = camp_perimeter_06 } + } + switch = { + trigger = has_domicile_building + camp_perimeter_01 = { add_domicile_building = camp_perimeter_02 } + camp_perimeter_02 = { add_domicile_building = camp_perimeter_03 } + camp_perimeter_03 = { add_domicile_building = camp_perimeter_04 } + camp_perimeter_04 = { add_domicile_building = camp_perimeter_05 } + camp_perimeter_05 = { add_domicile_building = camp_perimeter_06 } + } + } + } + } + } + + custom_tooltip = activity_camp_party_reward_upgrade_building + + custom_tooltip = camp_party_100_contracts_get + + hidden_effect = { + contract_passive_spawn_effect = { + SPAWN_CONTRACTS = 2 + } + } + + #Provisions + domicile = { + change_provisions = massive_provisions_gain + } + + #Lifestyle XP + bp2_lifestyle_xp_gain_per_type_effect = { VALUE = major } + + add_character_flag = { + flag = better_recruitment_visit_holding_flag + years = 1 + } + } + } + + #75+ Carousing + else_if = { + limit = { + var:activity_special_type_progression < 100 + var:activity_special_type_progression >= 75 + } + + #Stress Loss + every_attending_character = { + custom = every_attending_guest + add_stress = -100 + } + + #Contract spawn & flag assign + scope:host = { + custom_tooltip = camp_party_75_contracts_get + + hidden_effect = { + contract_passive_spawn_effect = { + SPAWN_CONTRACTS = 1 + } + } + + #Provisions + domicile = { + change_provisions = major_provisions_gain + } + + #Lifestyle XP + bp2_lifestyle_xp_gain_per_type_effect = { VALUE = medium } + + add_character_flag = { + flag = better_recruitment_visit_holding_flag + years = 1 + } + } + } + #50+ Carousing + else_if = { + limit = { + var:activity_special_type_progression < 75 + var:activity_special_type_progression >= 50 + } + + #Stress Loss + every_attending_character = { + custom = every_attending_guest + add_stress = -75 + } + + #Contract spawn and flag assign + scope:host = { + #Provisions + domicile = { + change_provisions = medium_provisions_gain + } + + #Lifestyle XP + bp2_lifestyle_xp_gain_per_type_effect = { VALUE = minor } + + add_character_flag = { + flag = better_recruitment_visit_holding_flag + years = 1 + } + } + } + #25+ Carousing + else = { + #Stress Loss + every_attending_character = { + custom = every_attending_guest + add_stress = -50 + } + + scope:host = { + add_character_flag = { + flag = cheaper_provisions_visit_holding_flag + years = 1 + } + } + } + + scope:host = { + if = { + limit = { + has_activity_intent = fireside_chat_intent + } + hidden_effect = { + remove_character_modifier = ep3_fireside_chat_modifier_3 + remove_character_modifier = ep3_fireside_chat_modifier_2 + remove_character_modifier = ep3_fireside_chat_modifier_1 + } + if = { + limit = { + involved_activity = { + any_attending_character = { + count >= 4 + OR = { + has_character_modifier = ep3_fireside_chat_diplomacy + has_character_modifier = ep3_fireside_chat_learning + has_character_modifier = ep3_fireside_chat_intrigue + has_character_modifier = ep3_fireside_chat_stewardship + has_character_modifier = ep3_fireside_chat_martial + } + } + } + } + add_character_modifier = { + modifier = ep3_fireside_chat_modifier_3 + years = 10 + } + } + else_if = { + limit = { + involved_activity = { + any_attending_character = { + count >= 2 + OR = { + has_character_modifier = ep3_fireside_chat_diplomacy + has_character_modifier = ep3_fireside_chat_learning + has_character_modifier = ep3_fireside_chat_intrigue + has_character_modifier = ep3_fireside_chat_stewardship + has_character_modifier = ep3_fireside_chat_martial + } + } + } + } + add_character_modifier = { + modifier = ep3_fireside_chat_modifier_2 + years = 10 + } + } + else = { + add_character_modifier = { + modifier = ep3_fireside_chat_modifier_1 + years = 10 + } + } + } + } + } +} + +ep3_camp_party_visit_holding_skills_boost = { + add_diplomacy_skill = { 1 3 } + add_martial_skill = { 1 3 } + add_stewardship_skill = { 1 3 } + add_intrigue_skill = { 1 3 } + add_learning_skill = { 1 3 } +} + +#Setting up the Fens as a pseudo-custom region +ep3_the_fens_list_effect = { + province:1525 = { add_to_list = the_fens } #b_lynn + province:1534 = { add_to_list = the_fens } #b_cambridgeshire + province:1535 = { add_to_list = the_fens } #b_radfield + province:1536 = { add_to_list = the_fens } #b_papworth + province:1537 = { add_to_list = the_fens } #b_ely + province:1541 = { add_to_list = the_fens } #b_hurstingstone + province:1542 = { add_to_list = the_fens } #b_norman_cross + province:1584 = { add_to_list = the_fens } #b_stamford + province:1585 = { add_to_list = the_fens } #b_boston + province:1601 = { add_to_list = the_fens } #b_peterborough +} + +#Used for setting up the Harrying of the North widget for events +#Requires use of ep3_harrying_widget_clear_effect in the 'after' as well +ep3_harrying_widget_setup_effect = { + global_var:harrying_of_the_north = { save_scope_as = story } + ## First, identify our widget character. + save_scope_as = scope_character + ## Then transfer over some suitable variables for the UI. + set_variable = { + name = pacification_gui + value = scope:story.var:pacification + } + set_variable = { + name = resistance_gui + value = scope:story.var:resistance + } +} + +#Increase pacification +ep3_increase_pacification_effect = { + save_scope_as = origin_char + scope:story = { + change_variable = { + name = pacification + add = $AMOUNT$ + } + } + set_variable = { + name = pacification_gui + value = scope:story.var:pacification + } + if = { #Display in red if Anglo-Saxon + limit = { + culture = culture:anglo_saxon + } + custom_tooltip = ep3_increase_pacification_effect_tt_negative + } + else = { #Otherwise in green + custom_tooltip = ep3_increase_pacification_effect_tt_positive + } + + if = { + limit = { + exists = scope:story.var:ruler_england + } + scope:story.var:ruler_england = { + send_interface_message = { + type = msg_pacification_rise + title = harrying.notification_pacification_rise + desc = harrying_pacification_rise + } + } + } + + if = { + limit = { + character:90028 = { + is_alive = yes + NOT = { + has_character_flag = hereward_settled_flag + } + } + } + character:90028 = { + send_interface_message = { + type = msg_pacification_rise + title = harrying.notification_pacification_rise + desc = harrying_pacification_rise + } + } + } + + if = { + limit = { + scope:story.var:ruler_england = { + any_vassal = { + culture = culture:anglo_saxon + } + } + } + scope:story.var:ruler_england = { + every_vassal = { + limit = { + culture = culture:anglo_saxon + } + send_interface_message = { + type = msg_pacification_rise + title = harrying.notification_pacification_rise + desc = harrying_pacification_rise + } + } + } + } +} + +#Increase pacification - large +ep3_increase_pacification_large_effect = { + save_scope_as = origin_char + scope:story = { + change_variable = { + name = pacification + add = 2 + } + } + set_variable = { + name = pacification_gui + value = scope:story.var:pacification + } + if = { #Display in red if Anglo-Saxon + limit = { + culture = culture:anglo_saxon + } + custom_tooltip = ep3_increase_pacification_effect_tt_negative_large + } + else = { #Otherwise in green + custom_tooltip = ep3_increase_pacification_effect_tt_positive_large + } + + if = { + limit = { + exists = scope:story.var:ruler_england + } + scope:story.var:ruler_england = { + send_interface_message = { + type = msg_pacification_rise + title = harrying.notification_pacification_rise + desc = harrying_pacification_rise + } + } + } + + if = { + limit = { + character:90028 = { + is_alive = yes + NOT = { + has_character_flag = hereward_settled_flag + } + } + } + character:90028 = { + send_interface_message = { + type = msg_pacification_rise + title = harrying.notification_pacification_rise + desc = harrying_pacification_rise + } + } + } + + if = { + limit = { + scope:story.var:ruler_england = { + any_vassal = { + culture = culture:anglo_saxon + } + } + } + scope:story.var:ruler_england = { + every_vassal = { + limit = { + culture = culture:anglo_saxon + } + send_interface_message = { + type = msg_pacification_rise + title = harrying.notification_pacification_rise + desc = harrying_pacification_rise + } + } + } + } +} + +#Increase resistance +ep3_increase_resistance_effect = { + save_scope_as = origin_char + scope:story = { + change_variable = { + name = resistance + add = $AMOUNT$ + } + } + set_variable = { + name = resistance_gui + value = scope:story.var:resistance + } + if = { #Display in green if Anglo-Saxon + limit = { + culture = culture:anglo_saxon + } + custom_tooltip = ep3_increase_resistance_effect_tt_positive + } + else = { #Otherwise in green + custom_tooltip = ep3_increase_resistance_effect_tt_negative + } + + if = { + limit = { + exists = scope:story.var:ruler_england + } + scope:story.var:ruler_england = { + send_interface_message = { + type = msg_resistance_rise + title = harrying.notification_resistance_rise + desc = harrying_resistance_rise + } + } + } + + if = { + limit = { + character:90028 = { + is_alive = yes + NOT = { + has_character_flag = hereward_settled_flag + } + } + } + character:90028 = { + send_interface_message = { + type = msg_resistance_rise + title = harrying.notification_resistance_rise + desc = harrying_resistance_rise + } + } + } + + if = { + limit = { + scope:story.var:ruler_england = { + any_vassal = { + culture = culture:anglo_saxon + } + } + } + scope:story.var:ruler_england = { + every_vassal = { + limit = { + culture = culture:anglo_saxon + } + send_interface_message = { + type = msg_resistance_rise + title = harrying.notification_resistance_rise + desc = harrying_resistance_rise + } + } + } + } +} + +#Increase resistance - large +ep3_increase_resistance_large_effect = { + save_scope_as = origin_char + scope:story = { + change_variable = { + name = resistance + add = 2 + } + } + set_variable = { + name = resistance_gui + value = scope:story.var:resistance + } + if = { #Display in green if Anglo-Saxon + limit = { + culture = culture:anglo_saxon + } + custom_tooltip = ep3_increase_resistance_effect_tt_positive_large + } + else = { #Otherwise in green + custom_tooltip = ep3_increase_resistance_effect_tt_negative_large + } + + if = { + limit = { + exists = scope:story.var:ruler_england + } + scope:story.var:ruler_england = { + send_interface_message = { + type = msg_resistance_rise + title = harrying.notification_resistance_rise + desc = harrying_resistance_rise + } + } + } + + if = { + limit = { + character:90028 = { + is_alive = yes + NOT = { + has_character_flag = hereward_settled_flag + } + } + } + character:90028 = { + send_interface_message = { + type = msg_resistance_rise + title = harrying.notification_resistance_rise + desc = harrying_resistance_rise + } + } + } + + if = { + limit = { + scope:story.var:ruler_england = { + any_vassal = { + culture = culture:anglo_saxon + } + } + } + scope:story.var:ruler_england = { + random_vassal = { + limit = { + culture = culture:anglo_saxon + } + send_interface_message = { + type = msg_resistance_rise + title = harrying.notification_resistance_rise + desc = harrying_resistance_rise + } + } + } + } +} + +#Decrease pacification +ep3_decrease_pacification_effect = { + save_scope_as = origin_char + if = { + limit = { scope:story.var:pacification != 0 } + scope:story = { + change_variable = { + name = pacification + add = -1 + } + } + set_variable = { + name = pacification_gui + value = scope:story.var:pacification + } + if = { #Display in green if Anglo-Saxon + limit = { + culture = culture:anglo_saxon + } + custom_tooltip = ep3_decrease_pacification_effect_tt_positive + } + else = { #Otherwise in green + custom_tooltip = ep3_decrease_pacification_effect_tt_negative + } + + if = { + limit = { + exists = scope:story.var:ruler_england + } + scope:story.var:ruler_england = { + send_interface_message = { + type = msg_pacification_falls + title = harrying.notification_pacification_fall + desc = harrying_pacification_fall + } + } + } + + if = { + limit = { + character:90028 = { + is_alive = yes + NOT = { + has_character_flag = hereward_settled_flag + } + } + } + character:90028 = { + send_interface_message = { + type = msg_pacification_falls + title = harrying.notification_pacification_fall + desc = harrying_pacification_fall + } + } + } + + if = { + limit = { + scope:story.var:ruler_england = { + any_vassal = { + culture = culture:anglo_saxon + } + } + } + scope:story.var:ruler_england = { + every_vassal = { + limit = { + culture = culture:anglo_saxon + } + send_interface_message = { + type = msg_pacification_falls + title = harrying.notification_pacification_fall + desc = harrying_pacification_fall + } + } + } + } + } +} + +#Decrease resistance +ep3_decrease_resistance_effect = { + save_scope_as = origin_char + if = { + limit = { scope:story.var:pacification != 0 } + scope:story = { + change_variable = { + name = resistance + add = -1 + } + } + set_variable = { + name = resistance_gui + value = scope:story.var:resistance + } + if = { #Display in red if Anglo-Saxon + limit = { + culture = culture:anglo_saxon + } + custom_tooltip = ep3_decrease_resistance_effect_tt_negative + } + else = { #Otherwise in green + custom_tooltip = ep3_decrease_resistance_effect_tt_positive + } + + if = { + limit = { + exists = scope:story.var:ruler_england + } + scope:story.var:ruler_england = { + send_interface_message = { + type = msg_resistance_falls + title = harrying.notification_resistance_fall + desc = harrying_resistance_fall + } + } + } + + if = { + limit = { + character:90028 = { + is_alive = yes + NOT = { + has_character_flag = hereward_settled_flag + } + } + } + character:90028 = { + send_interface_message = { + type = msg_resistance_falls + title = harrying.notification_resistance_fall + desc = harrying_resistance_fall + } + } + } + + if = { + limit = { + scope:story.var:ruler_england = { + any_vassal = { + culture = culture:anglo_saxon + } + } + } + scope:story.var:ruler_england = { + every_vassal = { + limit = { + culture = culture:anglo_saxon + } + send_interface_message = { + type = msg_resistance_falls + title = harrying.notification_resistance_fall + desc = harrying_resistance_fall + } + } + } + } + } +} + +#Used for clearing widget data from the participants +ep3_harrying_widget_clear_effect = { + remove_variable = pacification_gui + remove_variable = resistance_gui +} + +# Effect for handling players and AI continuing as landless if deposed +# Should be used over the standard effect in most cases (except barons/unlanded AI etc.) +# DEPOSER should be whoever has caused the deposal - faction leader, ultimatum giver, etc. +depose_effect = { + show_as_tooltip = { depose = yes } + save_scope_as = allow_imprisoned_landless + if = { + limit = { is_valid_for_laampdom = yes } + custom_tooltip = laamp_may_become_adventurer_tt + } + set_variable = { + name = deposed_primary_title + value = primary_title + months = 1 + } + # Maintenance scopes + save_scope_as = defender + $DEPOSER$ = { + save_scope_as = attacker + save_scope_as = winner + } + every_held_title = { add_to_list = target_titles } + trigger_event = ep3_laamps.0002 +} + +# Effect for handling players and AI continuing as landless if banished +# Should be used over the standard effect in most cases (except barons/unlanded AI etc.) +# BANISHER should be whoever has caused the banishment - imprisoner, ultimatum giver, etc. +banish_effect = { + show_as_tooltip = { banish = yes } + save_scope_as = allow_imprisoned_landless + if = { + limit = { is_valid_for_laampdom = yes } + custom_tooltip = laamp_may_become_adventurer_tt + } + $BANISHER$ = { save_scope_as = banisher } + trigger_event = ep3_laamps.0021 +} + +#Used for setting up the Peasant Leader widget for events +#Requires use of ep3_peasant_leader_widget_clear_effect in the 'after' as well +ep3_peasant_leader_widget_setup_effect = { + set_variable = { + name = support_gui + value = scope:task_contract.var:support + } + set_variable = { + name = control_gui + value = scope:task_contract.var:control + } + set_variable = { + name = num_of_corrupt_counties_gui + value = scope:task_contract.var:num_of_corrupt_counties + } +} +#Increase support +ep3_increase_peasant_support_effect = { + scope:task_contract = { + change_variable = { + name = support + add = 1 + } + add_to_variable_list = { + name = supported_counties + target = scope:corrupt_province.county + } + } + custom_tooltip = ep3_support_peasants_effect_tt + scope:task_contract.var:task_contract_councillor_liege ?= { + send_interface_message = { + type = msg_peasant_supported + title = msg_peasant_supported.title + desc = msg_peasant_supported.desc + } + } + scope:task_contract.var:task_contract_councillor ?= { + send_interface_message = { + type = msg_peasant_supported + title = msg_peasant_supported.title + desc = msg_peasant_supported.desc + } + } +} +#Increase control +ep3_increase_peasant_control_effect = { + scope:task_contract = { + change_variable = { + name = control + add = 1 + } + } + custom_tooltip = ep3_control_peasants_effect_tt + scope:task_contract.var:task_contract_councillor_liege ?= { + send_interface_message = { + type = msg_peasant_controlled + title = msg_peasant_controlled.title + desc = msg_peasant_controlled.desc + } + } + scope:task_contract.var:task_contract_councillor ?= { + send_interface_message = { + type = msg_peasant_controlled + title = msg_peasant_controlled.title + desc = msg_peasant_controlled.desc + } + } +} +#Used for clearing widget data from the participants +ep3_peasant_leader_widget_clear_effect = { + remove_variable = support_gui + remove_variable = control_gui + remove_variable = num_of_corrupt_counties_gui +} + +ep3_join_faction_war_effect = { + # Use hook/pay gold + scope:actor = { + if = { + limit = { + scope:hook = yes + has_hook = scope:recipient + } + use_hook = scope:recipient + } + if = { + limit = { scope:gold = yes } + pay_short_term_gold = { + gold = scope:actor.medium_gold_value + target = scope:recipient + } + } + } + # Gain some influence + scope:recipient = { + change_influence = 75 + # Remove from existing faction if swapping + if = { + limit = { exists = joined_faction } + leave_faction = joined_faction + } + if = { + limit = { target_is_liege_or_above = scope:secondary_recipient } + add_faction_cooldown_effect = { YEARS = 5 } + } + remove_character_flag = under_offer_join_faction_war_flag + } + scope:actor.joined_faction.faction_war = { + if = { + limit = { is_defender = scope:actor } + add_defender = scope:recipient + } + else = { add_attacker = scope:recipient } + } +} + +ep3_switch_faction_war_sides_effect = { + scope:actor = { + if = { + limit = { + scope:hook = yes + has_hook = scope:recipient + } + use_hook = scope:recipient + } + if = { + limit = { scope:gold = yes } + pay_short_term_gold = { + gold = scope:actor.medium_gold_value + target = scope:recipient + } + } + } + scope:recipient = { + change_influence = 150 + # Remove from existing faction if swapping + if = { + limit = { exists = joined_faction } + leave_faction = joined_faction + } + if = { + limit = { target_is_liege_or_above = scope:secondary_recipient } + add_faction_cooldown_effect = { YEARS = 5 } + } + } + scope:actor = { + every_character_war = { + limit = { ep3_switch_faction_war_sides_war_trigger = yes } + hidden_effect = { remove_participant = scope:recipient } + if = { + limit = { is_defender = scope:actor } + add_defender = scope:recipient + hidden_effect = { + primary_attacker = { + add_opinion = { + target = scope:recipient + modifier = betrayed_me_opinion + opinion = -25 + } + } + } + } + else = { + add_attacker = scope:recipient + primary_defender = { + hidden_effect = { + add_opinion = { + target = scope:recipient + modifier = betrayed_me_opinion + opinion = -25 + } + } + } + } + } + } + scope:recipient = { custom_tooltip = ep3_switch_faction_war_sides_cooldown_effect_tt } +} + +ep3_raid_insight_effect = { + add_character_modifier = { + modifier = raid_insight_$TYPE$ + years = 5 + } +} + +# Set up titles in the new realm. +# Determine potential breakaways +ep3_landless_invasion_titles_taken_effect = { + # Determine independent vassals + adventurer_realm_destabilisation_list_effect = { + TITLE_RECEIVER = $TITLE_RECEIVER$ + TITLE_GIVER = $TITLE_GIVER$ + TITLE = $TITLE$ + } + # Determine hierarchy + ep3_become_landed_save_liege_effect = { + TITLE_GIVER = $TITLE_GIVER$ + ALWAYS_INDEPENDENT = yes + TITLE_LIST = $TITLE_LIST$ + } + # Resolve title, liege, government changes + ep3_become_landed_transfer_effect = { + TITLE_RECEIVER = $TITLE_RECEIVER$ + TITLE_LIST = $TITLE_LIST$ + TYPE = conquest + REASON = flag:conquest + } + # Vassals break away + adventurer_realm_destabilisation_transfer_effect = { + TITLE = $TITLE$ + TITLE_RECEIVER = $TITLE_RECEIVER$ + TITLE_GIVER = $TITLE_GIVER$ + TITLE_LIST = $TITLE_LIST$ + } +} + +governor_contract_invalidated_message_effect = { + task_contract_taker ?= { + save_scope_as = task_contract_character + send_interface_message = { + type = event_generic_bad_with_text + title = admin_contract_invalidated_title + left_icon = scope:task_contract_character + desc = admin_contract_invalidated_desc + + current_travel_plan ?= { cancel_travel_plan = yes } + } + } +} + +assign_favourite_child_effect = { + $ACTOR$ = { + random_relation = { + type = favorite_child + save_scope_as = current_favorite + } + send_interface_toast = { + title = choose_favorite_interaction_notification + left_icon = $ACTOR$ + right_icon = $RECIPIENT$ + if = { + limit = { + exists = scope:current_favorite + } + remove_relation_favorite_child = scope:current_favorite + scope:current_favorite = { + add_opinion = { + target = $ACTOR$ + modifier = no_more_favorite_opinion + } + } + } + set_relation_favorite_child = { reason = favorite_child_chosen target = $RECIPIENT$ } + $RECIPIENT$ = { + add_opinion = { + target = $ACTOR$ + modifier = made_favorite_opinion + } + } + custom_tooltip = choose_favorite_interaction_notification.tt + } + hidden_effect = { + every_close_or_extended_family_member = { + limit = { + NOT = { this = $RECIPIENT$ } + OR = { + is_child_of = $ACTOR$ + is_grandchild_of = $ACTOR$ + is_great_grandchild_of = $ACTOR$ + } + } + add_opinion = { + target = $ACTOR$ + modifier = has_favorite_opinion + } + add_opinion = { + target = $RECIPIENT$ + modifier = is_favorite_opinion + } + } + } + } +} + +add_random_internal_estate_building = { + random_list = { + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = servants_quarters_01 } + } + add_domicile_building = servants_quarters_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = servants_quarters_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = library_01 } + } + add_domicile_building = library_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = library_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = bath_01 } + } + add_domicile_building = bath_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = bath_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = courtyard_01 } + } + add_domicile_building = courtyard_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = courtyard_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = prison_01 } + } + add_domicile_building = prison_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = prison_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = living_quarters_01 } + } + add_domicile_building = living_quarters_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = living_quarters_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = trophy_room_01 } + } + add_domicile_building = trophy_room_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = trophy_room_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = office_01 } + } + add_domicile_building = office_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = office_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = guest_room_01 } + } + add_domicile_building = guest_room_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = guest_room_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = wine_cellar_01 } + } + add_domicile_building = wine_cellar_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = wine_cellar_02 + } + } + } +} + +fill_external_estate_building_effect = { + switch = { + trigger = has_domicile_building_or_higher + estate_main_05 = { + while = { + limit = { free_external_domicile_building_slots >= 1 } + add_random_external_estate_building = yes + } + } + estate_main_04 = { + while = { + limit = { free_external_domicile_building_slots >= 2 } + add_random_external_estate_building = yes + } + } + estate_main_03 = { + while = { + limit = { free_external_domicile_building_slots >= 3 } + add_random_external_estate_building = yes + } + } + estate_main_02 = { + while = { + limit = { free_external_domicile_building_slots >= 4 } + add_random_external_estate_building = yes + } + } + estate_main_01 = { + while = { + limit = { free_external_domicile_building_slots >= 5 } + add_random_external_estate_building = yes + } + } + } +} + +add_random_external_estate_building = { + if = { + limit = { + free_external_domicile_building_slots >= 1 + } + random_list = { + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = temple_small_01 } + } + add_domicile_building = temple_small_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = temple_small_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = barracks_01 } + } + add_domicile_building = barracks_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = barracks_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = watchtower_01 } + } + add_domicile_building = watchtower_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = watchtower_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = vineyard_01 } + } + add_domicile_building = vineyard_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = vineyard_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = guardhouse_01 } + } + add_domicile_building = guardhouse_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = guardhouse_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = garden_01 } + } + add_domicile_building = garden_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = garden_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = storage_01 } + } + add_domicile_building = storage_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = storage_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = grain_field_01 } + } + add_domicile_building = grain_field_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = grain_field_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = stable_01 } + } + add_domicile_building = stable_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = stable_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = workshop_01 } + } + add_domicile_building = workshop_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = workshop_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = market_01 } + } + add_domicile_building = market_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = market_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = grazing_land_01 } + } + add_domicile_building = grazing_land_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = grazing_land_02 + } + } + 10 = { + trigger = { + NOT = { has_domicile_building_or_higher = olive_01 } + } + add_domicile_building = olive_01 + if = { + limit = { has_domicile_building = estate_main_03 } + add_domicile_building = olive_02 + } + } + } + } +} diff --git a/common/scripted_triggers/00_available_for_events_triggers.txt b/common/scripted_triggers/00_available_for_events_triggers.txt index c9990fd6..03fa9422 100644 --- a/common/scripted_triggers/00_available_for_events_triggers.txt +++ b/common/scripted_triggers/00_available_for_events_triggers.txt @@ -364,6 +364,7 @@ is_governor_or_admin_count = { is_landless_administrative = { government_has_flag = government_is_administrative is_landed = no + is_house_head = yes has_domicile = yes } diff --git a/common/scripted_triggers/00_diarchy_scripted_triggers.txt b/common/scripted_triggers/00_diarchy_scripted_triggers.txt index 52bd0a8f..c0c7af25 100644 --- a/common/scripted_triggers/00_diarchy_scripted_triggers.txt +++ b/common/scripted_triggers/00_diarchy_scripted_triggers.txt @@ -468,6 +468,7 @@ valid_co_emperor_candidate_trigger = { } } scope:co_emperor_temp = house.house_head + any_held_title = { is_noble_family_title = yes } } } }