From 27bbcfed3f5e518ad6831158248486770980aaa5 Mon Sep 17 00:00:00 2001 From: Grekopithikos Date: Fri, 10 Nov 2023 10:26:31 +0200 Subject: [PATCH 01/82] update --- .../00_casus_belli_groups.txt | 2 +- common/casus_belli_types/00_civil_war.txt | 21 +- common/casus_belli_types/00_claim.txt | 42 +- common/casus_belli_types/00_conquest.txt | 68 ++- common/casus_belli_types/00_dejure_war.txt | 4 +- common/casus_belli_types/00_event_war.txt | 62 ++- common/casus_belli_types/00_invasion_war.txt | 302 +++++++++-- common/casus_belli_types/00_religious_war.txt | 109 +++- common/casus_belli_types/00_subjugation.txt | 145 ++++-- common/casus_belli_types/00_vassalization.txt | 5 +- common/casus_belli_types/01_fp1_wars.txt | 5 +- common/casus_belli_types/_casus_belli.info | 2 +- .../00_early_medieval_innovations.txt | 9 +- .../00_high_medieval_innovations.txt | 9 +- .../00_late_medieval_innovations.txt | 8 +- .../innovations/00_tribal_innovations.txt | 4 +- .../traditions/00_realm_traditions.txt | 54 +- .../traditions/00_regional_traditions.txt | 60 ++- .../traditions/00_ritual_traditions.txt | 7 - .../traditions/00_societal_traditions.txt | 12 + .../culture/traditions/01_fp1_traditions.txt | 53 +- .../culture/traditions/03_fp2_traditions.txt | 40 +- common/dynasty_perks/03_fp3_dynasty_perks.txt | 115 +++++ common/governments/00_government_types.txt | 16 +- common/governments/_governments.info | 2 + common/religion/doctrines/00_core_tenets.txt | 233 ++++++++- .../doctrines/00_doctrines_zoroastrianism.txt | 1 + .../00_ai_acceptance_triggers.txt | 1 - .../00_ai_value_triggers.txt | 194 +++++-- .../00_artifact_triggers.txt | 20 +- .../00_auto_character_triggers.txt | 4 +- .../00_available_for_events_triggers.txt | 1 - .../00_building_requirement_triggers.txt | 1 + common/scripted_triggers/00_clan_triggers.txt | 26 + .../00_councillor_triggers.txt | 106 +++- .../00_court_position_triggers.txt | 1 + .../00_courtier_guest_management_triggers.txt | 2 +- .../00_diarchy_scripted_triggers.txt | 105 +++- .../scripted_triggers/00_dynasty_triggers.txt | 5 + .../scripted_triggers/00_faction_triggers.txt | 18 + .../00_has_dlc_scripted_triggers.txt | 5 + .../scripted_triggers/00_scheme_triggers.txt | 43 +- .../scripted_triggers/00_secret_triggers.txt | 44 ++ .../00_secret_type_triggers.txt | 21 + .../scripted_triggers/00_terrain_triggers.txt | 11 + .../00_war_and_peace_triggers.txt | 18 +- .../01_fp1_scripted_triggers.txt | 2 - .../05_bp2_hostage_triggers.txt | 4 +- .../06_fp3_scripted_triggers.txt | 480 ++++++++++++++++++ .../scripted_triggers/20_health_triggers.txt | 5 - 50 files changed, 2125 insertions(+), 382 deletions(-) create mode 100644 common/dynasty_perks/03_fp3_dynasty_perks.txt create mode 100644 common/religion/doctrines/00_doctrines_zoroastrianism.txt create mode 100644 common/scripted_triggers/00_clan_triggers.txt create mode 100644 common/scripted_triggers/06_fp3_scripted_triggers.txt diff --git a/common/casus_belli_groups/00_casus_belli_groups.txt b/common/casus_belli_groups/00_casus_belli_groups.txt index ad5cf71777..9dad28e26a 100644 --- a/common/casus_belli_groups/00_casus_belli_groups.txt +++ b/common/casus_belli_groups/00_casus_belli_groups.txt @@ -17,7 +17,7 @@ } #Holy wars that should be restricted if your liege disagrees, or your faith does, but which don't require organised religion. E.g., human sacrifice raids. -religious_disorganised= { +religious_disorganised = { allowed_for_character = { OR = { # Cannot Holy War if your Liege(s) are of a different Faith than you. is_independent_ruler = yes diff --git a/common/casus_belli_types/00_civil_war.txt b/common/casus_belli_types/00_civil_war.txt index d3d5b0eb74..2a96506bda 100644 --- a/common/casus_belli_types/00_civil_war.txt +++ b/common/casus_belli_types/00_civil_war.txt @@ -432,7 +432,7 @@ liberty_faction_war = { on_victory = { scope:attacker = { show_pow_release_message_effect = yes } - + #EP2 Accolade glory gain from winning against higher ranked enemy scope:attacker = { accolade_attacker_war_end_glory_gain_med_effect = yes } @@ -1397,6 +1397,25 @@ refused_liege_demand_war = { } add_dread = medium_dread_gain } + + # For revoking titles of character's imprisoned abroard who have lost a revocation war + hidden_effect = { + if = { + limit = { + scope:attacker = { + is_imprisoned = yes + NOT = { is_imprisoned_by = scope:defender } + } + } + scope:defender = { + add_opinion = { + target = scope:attacker + modifier = foreign_prison_revocation_opinion + } + } + } + } + on_lost_request_revolt_war = yes } diff --git a/common/casus_belli_types/00_claim.txt b/common/casus_belli_types/00_claim.txt index ba539557d4..5077b6caf7 100644 --- a/common/casus_belli_types/00_claim.txt +++ b/common/casus_belli_types/00_claim.txt @@ -10,7 +10,7 @@ } scope:attacker = { culture = { - has_innovation = innovation_divine_right + has_innovation = innovation_chronicle_writing } } } @@ -18,7 +18,7 @@ trigger_else = { scope:attacker = { culture = { - has_innovation = innovation_rightful_ownership + has_innovation = innovation_divine_right } } } @@ -197,6 +197,14 @@ on_declaration = { on_declared_war = yes + if = { + limit = { + scope:defender = { is_sibling_of = scope:attacker } + } + scope:attacker = { + add_achievement_flag_effect = { FLAG = achievement_bad_blood_flag } + } + } } should_invalidate = { @@ -216,18 +224,18 @@ } } } - AND = { - NOT = { scope:claimant = scope:attacker } + AND = { + NOT = { scope:claimant = scope:attacker } scope:claimant = { OR = { - is_alive = no - NOR = { - is_vassal_or_below_of = scope:attacker - is_courtier_of = scope:attacker + is_alive = no + NOR = { + is_vassal_or_below_of = scope:attacker + is_courtier_of = scope:attacker } } } - } + } } } @@ -235,7 +243,7 @@ first_valid = { triggered_desc = { trigger = { - NOT = { scope:claimant = scope:attacker } + NOT = { scope:claimant = scope:attacker } scope:claimant = { is_alive = no } } desc = msg_claim_war_invalidated_claimant_unavailable_dead_message @@ -243,11 +251,11 @@ triggered_desc = { trigger = { scope:claimant = { - NOR = { - this = scope:attacker - NOR = { - is_vassal_or_below_of = scope:attacker - is_courtier_of = scope:attacker + NOR = { + this = scope:attacker + NOR = { + is_vassal_or_below_of = scope:attacker + is_courtier_of = scope:attacker } } } @@ -257,7 +265,7 @@ desc = msg_claim_war_invalidated_message } } - + on_invalidated = { } @@ -367,7 +375,7 @@ } desc = claim_cb_white_peace_desc } - + } on_white_peace = { diff --git a/common/casus_belli_types/00_conquest.txt b/common/casus_belli_types/00_conquest.txt index 6d38a55f4b..0c1a1183a0 100644 --- a/common/casus_belli_types/00_conquest.txt +++ b/common/casus_belli_types/00_conquest.txt @@ -21,6 +21,10 @@ target_titles = all target_title_tier = county ignore_effect = change_title_holder + + attacker_score_from_occupation_scale = 150 + attacker_score_from_battles_scale = 150 + defender_score_from_battles_scale = 150 ai_can_target_all_titles = { can_use_viking_invasion_cbs_trigger = yes @@ -85,9 +89,15 @@ scope:defender.faith = scope:attacker.faith } add = { - value = medium_piety_value + value = 25 desc = CB_SAME_FAITH_COST } + add = { + value = 5 + multiply = scope:attacker.realm_size + desc = CB_REALM_SIZE_COST + max = 75 + } } multiply = common_cb_piety_cost_multiplier } @@ -98,9 +108,15 @@ NOT = { scope:defender.faith = scope:attacker.faith } } add = { - value = medium_prestige_value + value = 50 desc = CB_COST_DIFFERENT_FAITH } + add = { + value = 5 + multiply = scope:attacker.realm_size + desc = CB_REALM_SIZE_COST + max = 100 + } } multiply = common_cb_prestige_cost_multiplier } @@ -298,6 +314,10 @@ duchy_conquest_cb = { combine_into_one = yes should_show_war_goal_subview = yes mutually_exclusive_titles = { always = yes } + + attacker_score_from_occupation_scale = 150 + attacker_score_from_battles_scale = 150 + defender_score_from_battles_scale = 150 allowed_for_character = { can_use_conquest_cbs_trigger = yes @@ -306,10 +326,30 @@ duchy_conquest_cb = { allowed_for_character_display_regardless = { trigger_if = { limit = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } culture = { has_cultural_parameter = cb_lower_prestige_level_requirement } } + prestige_level >= 1 + } + trigger_else_if = { + limit = { + OR = { + AND = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } + } + culture = { + has_cultural_parameter = cb_lower_prestige_level_requirement + } + } + } prestige_level >= 2 } trigger_else = { @@ -393,9 +433,15 @@ duchy_conquest_cb = { scope:defender.faith = scope:attacker.faith } add = { - value = massive_piety_value + value = 100 desc = CB_SAME_FAITH_COST } + add = { + value = 10 + multiply = scope:attacker.realm_size + desc = CB_REALM_SIZE_COST + max = 800 + } } multiply = common_cb_piety_cost_multiplier } @@ -406,9 +452,15 @@ duchy_conquest_cb = { NOT = { scope:defender.faith = scope:attacker.faith } } add = { - value = massive_prestige_value + value = 150 desc = CB_COST_DIFFERENT_FAITH } + add = { + value = 10 + multiply = scope:attacker.realm_size + desc = CB_REALM_SIZE_COST + max = 800 + } } multiply = common_cb_prestige_cost_multiplier #if = { @@ -706,6 +758,10 @@ ducal_conquest_cb = { combine_into_one = yes should_show_war_goal_subview = yes mutually_exclusive_titles = { always = yes } + + attacker_score_from_occupation_scale = 150 + attacker_score_from_battles_scale = 150 + defender_score_from_battles_scale = 150 allowed_for_character = { has_perk = ducal_conquest_perk @@ -784,13 +840,13 @@ ducal_conquest_cb = { scope:attacker.primary_title.tier <= tier_county } add = { - value = major_prestige_value + value = 50 desc = CB_BASE_COST } } else = { add = { - value = massive_prestige_value + value = 100 desc = CB_BASE_COST } } diff --git a/common/casus_belli_types/00_dejure_war.txt b/common/casus_belli_types/00_dejure_war.txt index be5ded6b75..cdb6aa4a34 100644 --- a/common/casus_belli_types/00_dejure_war.txt +++ b/common/casus_belli_types/00_dejure_war.txt @@ -6,7 +6,7 @@ allowed_for_character = { scope:attacker = { culture = { - has_innovation = innovation_rightful_ownership + has_innovation = innovation_divine_right } } } @@ -590,7 +590,7 @@ individual_duchy_de_jure_cb = { allowed_for_character = { scope:attacker = { culture = { - has_innovation = innovation_chronicle_writing + has_innovation = innovation_casus_belli } } } diff --git a/common/casus_belli_types/00_event_war.txt b/common/casus_belli_types/00_event_war.txt index 29e2ec4c75..e10c9195d0 100644 --- a/common/casus_belli_types/00_event_war.txt +++ b/common/casus_belli_types/00_event_war.txt @@ -619,11 +619,35 @@ remove_regent_cb = { on_invalidated_desc = msg_remove_regent_cb_invalidated_message on_invalidated = { + #remove the temporary fort level + root.war.var:barony_with_temporary_fort ?= { remove_province_modifier = temporary_fort_province_modifier } } cost = {} - on_declaration = { on_declared_war = yes } + on_declaration = { + on_declared_war = yes + #add a temporary fort level so that the diarch can be sieged + if = { + limit = { + scope:defender = { + capital_barony.title_province = { fort_level = 0 } + } + } + scope:defender = { + capital_barony.title_province = { + save_scope_as = defender_capital + add_province_modifier = temporary_fort_province_modifier + } + } + } + war ?= { + set_variable = { + name = barony_with_temporary_fort + value = scope:defender_capital + } + } + } on_victory_desc = { first_valid = { @@ -653,6 +677,18 @@ remove_regent_cb = { } depose_diarch = yes } + #remove the temporary fort level + if = { + limit = { + root.war.var:barony_with_temporary_fort ?= { has_province_modifier = temporary_fort_province_modifier } + } + custom_tooltip = remove_regent_cb_temporary_fort + hidden_effect = { + root.war.var:barony_with_temporary_fort = { + remove_province_modifier = temporary_fort_province_modifier + } + } + } } # Prestige Progress for the Attacker @@ -712,6 +748,18 @@ remove_regent_cb = { } scope:defender = { + #remove the temporary fort level + if = { + limit = { + root.war.var:barony_with_temporary_fort = { has_province_modifier = temporary_fort_province_modifier } + } + custom_tooltip = remove_regent_cb_temporary_fort + hidden_effect = { + root.war.var:barony_with_temporary_fort = { + remove_province_modifier = temporary_fort_province_modifier + } + } + } stress_impact = { arrogant = medium_stress_impact_gain } @@ -756,6 +804,18 @@ remove_regent_cb = { add_prestige_war_defender_effect = { PRESTIGE_VALUE = major_prestige_value } + #remove the temporary fort level + if = { + limit = { + root.war.var:barony_with_temporary_fort = { has_province_modifier = temporary_fort_province_modifier } + } + custom_tooltip = remove_regent_cb_temporary_fort + hidden_effect = { + root.war.var:barony_with_temporary_fort = { + remove_province_modifier = temporary_fort_province_modifier + } + } + } } # Allies on both sides get full prestige value for helping in the war, based on their war participation. diff --git a/common/casus_belli_types/00_invasion_war.txt b/common/casus_belli_types/00_invasion_war.txt index 14a015490f..9284329f3b 100644 --- a/common/casus_belli_types/00_invasion_war.txt +++ b/common/casus_belli_types/00_invasion_war.txt @@ -29,15 +29,40 @@ } trigger_else_if = { limit = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } culture = { has_cultural_parameter = cb_lower_prestige_level_requirement } } + prestige_level >= 2 + } + trigger_else_if = { + limit = { + OR = { + AND = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } + } + culture = { + has_cultural_parameter = cb_lower_prestige_level_requirement + } + } + } prestige_level >= 3 } trigger_else = { prestige_level >= 4 } + + custom_tooltip = { + text = struggle_involvement_cb_check_failure + struggle_blocks_invasion_conquest_cb_trigger = yes + } } allowed_against_character = { @@ -60,7 +85,7 @@ value = viking_conquest_ai_score_value # AI in struggles act insularly for wars that don't have a familial or legal basis. - #multiply = struggle_wars_prioritise_struggle_targets_value + multiply = struggle_wars_prioritise_struggle_targets_value } valid_to_start = { @@ -70,8 +95,6 @@ neighboring_county_or_viking_conquest_trigger = { CHARACTER = root } } } - # Struggle constraint - #struggle_blocks_invasion_conquest_cb_trigger = yes } should_invalidate = { @@ -149,20 +172,26 @@ add_claim_on_loss = yes } - scope:defender = { - # Title transfer tooltip for display - every_held_county = { - limit = { - duchy.kingdom = { is_in_list = target_titles } - } + show_as_tooltip = { + every_in_list = { + list = target_titles custom_tooltip = invasion_title_transfer_tt + custom_tooltip = invasion_title_transfer_2_tt + every_in_de_jure_hierarchy = { + limit = { holder.top_liege = scope:defender } + change_title_holder = { + holder = scope:attacker + change = scope:change + } + } } - # Vassal transfer tooltip for display - every_vassal = { - custom = invasion_vassal_transfer_tt - show_as_tooltip = { - change_liege = { - liege = scope:attacker + scope:defender = { + every_sub_realm_county = { + limit = { + county_controller = scope:attacker + } + change_title_holder = { + holder = scope:attacker change = scope:change } } @@ -332,23 +361,76 @@ clan_invasion_war = { allowed_for_character = { government_has_flag = government_is_clan NOR = { - has_character_flag = used_lifetime_invasion faith = { has_doctrine_parameter = invasion_cb_enabled } + AND = { + exists = house + house = { + has_house_unity_parameter = unity_disable_invasions + } + } + } + trigger_if = { + limit = { + exists = house + house = { + has_house_unity_parameter = unity_multiple_invasions + } + } + NOT = { has_character_flag = unity_invasion_cooldown } + } + trigger_if = { + limit = { + exists = house + house = { + has_house_unity_parameter = unity_unlimited_invasions + } + } + } + trigger_else = { + NOR = { + has_character_flag = used_lifetime_invasion + has_character_flag = pending_lifetime_invasion + } } } allowed_for_character_display_regardless = { trigger_if = { limit = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } culture = { has_cultural_parameter = cb_lower_prestige_level_requirement } } + prestige_level >= 2 + } + trigger_else_if = { + limit = { + OR = { + AND = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } + } + culture = { + has_cultural_parameter = cb_lower_prestige_level_requirement + } + } + } prestige_level >= 3 } trigger_else = { prestige_level >= 4 } + + custom_tooltip = { + text = struggle_involvement_cb_check_failure + struggle_blocks_invasion_conquest_cb_trigger = yes + } } allowed_against_character = { @@ -376,8 +458,6 @@ clan_invasion_war = { scope:target = { tier = tier_kingdom } - # Struggle constraint - #struggle_blocks_invasion_conquest_cb_trigger = yes } should_invalidate = { @@ -401,7 +481,8 @@ clan_invasion_war = { on_invalidated = { scope:attacker = { - remove_character_flag = used_lifetime_invasion # If the war is invalidated, you should be permitted to try again + remove_character_flag = pending_lifetime_invasion # If the war is invalidated, you should be permitted to try again + remove_character_flag = unity_invasion_cooldown # Reset cooldown as well } } @@ -412,9 +493,15 @@ clan_invasion_war = { } prestige = { add = { - value = 2000 + value = 200 desc = CB_BASE_COST } + add = { + value = 20 + multiply = scope:attacker.realm_size + desc = CB_REALM_SIZE_COST + max = 5000 + } multiply = common_cb_prestige_cost_multiplier } @@ -423,7 +510,11 @@ clan_invasion_war = { on_declaration = { on_declared_war = yes scope:attacker = { - add_character_flag = used_lifetime_invasion + add_character_flag = pending_lifetime_invasion + add_character_flag = { + flag = unity_invasion_cooldown + years = unity_antagonistic_invasion_cooldown_value + } } } @@ -452,7 +543,7 @@ clan_invasion_war = { save_scope_as = change add_claim_on_loss = yes } - + hidden_effect = { setup_invasion_cb = { titles = target_titles @@ -463,19 +554,54 @@ clan_invasion_war = { } } - scope:defender = { - # Vassal transfer tooltip for display - every_vassal = { - custom = invasion_vassal_transfer_tt - show_as_tooltip = { + show_as_tooltip = { + every_in_list = { + list = target_titles + if = { + limit = { + scope:defender.primary_title.tier >= scope:attacker.primary_title.tier + } + custom_tooltip = invasion_title_transfer_tt + custom_tooltip = invasion_title_transfer_2_tt + } + every_in_de_jure_hierarchy = { + limit = { + holder.top_liege = scope:defender + } + change_title_holder = { + holder = scope:attacker + change = scope:change + } + } + } + scope:defender = { + every_sub_realm_county = { + limit = { + county_controller = scope:attacker + } + change_title_holder = { + holder = scope:attacker + change = scope:change + } + } + # Vassal transfer tooltip for display + every_vassal = { + limit = { + primary_title = { + any_this_title_or_de_jure_above = { + is_in_list = target_titles + } + } + } + custom = invasion_vassal_transfer_tt change_liege = { liege = scope:attacker change = scope:change } } } - } - + } + #If target is lower tier, vassalise them. if = { limit = { @@ -499,6 +625,9 @@ clan_invasion_war = { } every_in_list = { list = target_titles + limit = { + holder.top_liege = scope:defender + } change_title_holder = { holder = scope:attacker change = scope:change @@ -514,6 +643,8 @@ clan_invasion_war = { add_prestige_experience = { value = major_prestige_value } + add_character_flag = used_lifetime_invasion + remove_character_flag = pending_lifetime_invasion } # Prestige loss for the defender @@ -575,6 +706,8 @@ clan_invasion_war = { ambitious = medium_stress_impact_gain arrogant = medium_stress_impact_gain } + add_character_flag = used_lifetime_invasion + remove_character_flag = pending_lifetime_invasion } scope:defender = { @@ -635,6 +768,8 @@ clan_invasion_war = { scope:attacker = { save_temporary_scope_as = loser + add_character_flag = used_lifetime_invasion + remove_character_flag = pending_lifetime_invasion } on_lost_aggression_war_discontent_loss = yes } @@ -834,7 +969,12 @@ mongol_invasion_war = { } } } - trigger_else = { + AND = { + scope:attacker.faith = { + faith_hostility_level_comparison = { + prev.holder.faith <= scope:defender.faith + } + } holder = { OR = { this = scope:defender @@ -883,7 +1023,6 @@ mongol_invasion_war = { nearest = 1 } - custom_tooltip = DEMANDING_VASSAL_CB_TITLE if = { limit = { exists = scope:attacker.var:taken_duchies_num } hidden_effect = { @@ -917,10 +1056,11 @@ mongol_invasion_war = { take_baronies = yes } } - remove_from_list = duchies_taken } + holder.primary_title.tier >= scope:attacker.primary_title.tier } } + add_to_temporary_list = titles_taken } #remove_variable = taken_duchies_num } @@ -1192,7 +1332,7 @@ mongol_realm_invasion_war = { # } # } - # # If fired by the Mongol Invasion story, don't charge a cost + # If fired by the Mongol Invasion story, don't charge a cost if = { limit = { scope:attacker = { has_character_flag = free_mongol_cb } } multiply = { @@ -1200,7 +1340,6 @@ mongol_realm_invasion_war = { desc = CB_MONGOL_INVASIONS_COST } } - } } @@ -1259,13 +1398,96 @@ mongol_realm_invasion_war = { } } + show_as_tooltip = { + every_in_list = { + list = target_titles + if = { + limit = { + scope:defender.primary_title.tier >= scope:attacker.primary_title.tier + } + custom_tooltip = invasion_title_transfer_tt + custom_tooltip = invasion_title_transfer_2_tt + } + every_in_de_jure_hierarchy = { + limit = { + holder.top_liege = scope:defender + } + change_title_holder = { + holder = scope:attacker + change = scope:change + } + } + } + scope:defender = { + every_sub_realm_county = { + limit = { + county_controller = scope:attacker + } + change_title_holder = { + holder = scope:attacker + change = scope:change + } + } + # Vassal transfer tooltip for display + every_vassal = { + limit = { + primary_title = { + any_this_title_or_de_jure_above = { + is_in_list = target_titles + } + } + } + custom = invasion_vassal_transfer_tt + change_liege = { + liege = scope:attacker + change = scope:change + } + } + } + } + # Most of the title transfers are handled here - setup_invasion_cb = { - titles = target_titles - attacker = scope:attacker - defender = scope:defender - change = scope:change - take_occupied = yes + hidden_effect = { + setup_invasion_cb = { + titles = target_titles + attacker = scope:attacker + defender = scope:defender + change = scope:change + take_occupied = yes + } + } + + scope:defender = { + # Loot tooltip for display + every_held_county = { + custom = mongol_invasion_loot_county_tt + random = { + chance = scope:attacker.martial + custom_tooltip = mongol_invasion_loot_gold_tt + custom_tooltip = mongol_invasion_loot_development_tt + custom_tooltip = mongol_invasion_loot_dread_tt + } + } + hidden_effect = { + # Sub realm looting + every_sub_realm_county = { + custom = mongol_invasion_loot_chance_tt + limit = { + duchy.kingdom.empire = { is_in_list = target_titles } + } + mongol_invasion_county_looting_chance_effect = yes + } + # Vassal sub realm looting + every_vassal_or_below = { + every_sub_realm_county = { + limit = { + holder = { is_ai = yes } + duchy.kingdom.empire = { is_in_list = target_titles } + } + mongol_invasion_county_looting_chance_effect = yes + } + } + } } resolve_title_and_vassal_change = scope:change diff --git a/common/casus_belli_types/00_religious_war.txt b/common/casus_belli_types/00_religious_war.txt index 9bc4c18110..45a1b8ca6b 100644 --- a/common/casus_belli_types/00_religious_war.txt +++ b/common/casus_belli_types/00_religious_war.txt @@ -7,6 +7,10 @@ combine_into_one = yes should_show_war_goal_subview = yes mutually_exclusive_titles = { always = yes } + + attacker_score_from_occupation_scale = 150 + attacker_score_from_battles_scale = 150 + defender_score_from_battles_scale = 150 # Already defined in 00_casus_belli_groups.txt allowed_for_character = { @@ -172,9 +176,9 @@ } on_invalidated = { - + } - + ai_score_mult = { value = 1 # Increase odds if the character is a vassal with Ghazi Contract @@ -493,6 +497,10 @@ religious_war = { combine_into_one = yes should_show_war_goal_subview = yes mutually_exclusive_titles = { always = yes } + + attacker_score_from_occupation_scale = 150 + attacker_score_from_battles_scale = 150 + defender_score_from_battles_scale = 150 # Additional requirements to the defines in 00_casus_belli_groups.txt allowed_for_character = { @@ -658,7 +666,7 @@ religious_war = { } on_invalidated = { - + } cost = { @@ -783,7 +791,7 @@ religious_war = { change = scope:change } } - + every_in_list = { list = titles_taken change_title_holder = { @@ -1082,7 +1090,7 @@ major_religious_war = { has_house_modifier = fp2_struggle_hostility_house_combined_modifier } } - } + } } } piety_level >= 3 @@ -1200,9 +1208,9 @@ major_religious_war = { } } } - + on_invalidated = { - + } cost = { @@ -1290,7 +1298,7 @@ major_religious_war = { change = scope:change } } - + every_in_list = { list = titles_taken change_title_holder = { @@ -1530,6 +1538,9 @@ excommunication_war = { # Already defined in 00_casus_belli_groups.txt # allowed_for_character = {} + + attacker_score_from_battles_scale = 150 + defender_score_from_battles_scale = 150 allowed_against_character = { scope:defender = { @@ -1696,7 +1707,7 @@ excommunication_war = { # Truce add_truce_attacker_defeat_effect = yes } - + should_invalidate = { scope:defender = { NOT = { @@ -1720,7 +1731,7 @@ excommunication_war = { desc = msg_invalidate_war_title } } - + on_invalidated = { scope:attacker = { #Used for the piety_change scripted effect. @@ -1755,11 +1766,9 @@ excommunication_war = { use_de_jure_wargoal_only = yes attacker_wargoal_percentage = 0.8 - - attacker_score_from_occupation_scale = 50 - defender_score_from_occupation_scale = 50 - #attacker_score_from_battles_scale = 50 - #defender_score_from_battles_scale = 50 + + max_defender_score_from_occupation = 150 + max_attacker_score_from_occupation = 150 max_attacker_score_from_battles = 100 max_defender_score_from_battles = 100 @@ -1794,6 +1803,10 @@ flowery_war_cb = { group = religious_disorganised ai_only_against_neighbors = yes allow_hostages = no + + attacker_score_from_occupation_scale = 150 + attacker_score_from_battles_scale = 150 + defender_score_from_battles_scale = 150 # Root is the title # scope:attacker is the attacker @@ -1860,7 +1873,7 @@ flowery_war_cb = { } on_invalidated = { - + } on_declaration = { @@ -2305,7 +2318,7 @@ flowery_war_cb = { } on_white_peace = { - scope:attacker = { + scope:attacker = { show_pow_release_message_effect = yes stress_impact = { ambitious = medium_stress_impact_gain @@ -2818,7 +2831,7 @@ flowery_war_cb = { max_attacker_score_from_occupation = 150 max_ai_diplo_distance_to_title = 500 - + ai_score = { value = raid_for_captives_ai_score_value } @@ -2964,7 +2977,7 @@ undirected_great_holy_war = { } on_invalidated_desc = msg_invalidate_war_title - + on_invalidated = { scope:attacker.faith.great_holy_war.ghw_target_title = { save_scope_as = target_kingdom @@ -3035,9 +3048,21 @@ undirected_great_holy_war = { save_scope_as = the_ghw } + scope:attacker = { #Achievement setup. + every_character_war = { + limit = { + is_attacker = scope:attacker + is_defender = scope:defender + } + every_war_attacker = { + add_achievement_flag_effect = { FLAG = achievement_for_the_faith_flag } + } + } + } + scope:defender.faith = { #needed for hold_court.6150 set_variable = { - name = 6150_lost_ghw_recently + name = 6150_lost_ghw_recently years = 5 } } @@ -3269,7 +3294,7 @@ undirected_great_holy_war = { add_trait = crusader_king remove_character_flag = ghw_recipient_will_be_crusader_king add_realm_law_skip_effects = crown_authority_1 - + if = { # Set the appropriate Succession Law limit = { can_have_single_heir_succession_law_trigger = yes @@ -3297,7 +3322,7 @@ undirected_great_holy_war = { } add_realm_law_skip_effects = partition_succession_law } - + spawn_army = { # Spawn a temporary army so that the Crusader King isn't helpless, symbolizing Crusaders staying behind levies = { value = 100 @@ -3367,7 +3392,7 @@ undirected_great_holy_war = { } } } - + #Set 30 years cooldown. hidden_effect = { scope:attacker.faith = { @@ -3471,6 +3496,18 @@ undirected_great_holy_war = { } } + scope:defender = { #Achievement setup. + every_character_war = { + limit = { + is_attacker = scope:attacker + is_defender = scope:defender + } + every_war_defender = { + add_achievement_flag_effect = { FLAG = achievement_for_the_faith_flag } + } + } + } + every_player = { #Fluff for players limit = { OR = { @@ -3585,7 +3622,7 @@ directed_great_holy_war = { scope:attacker.faith = { NOR = { # No active GHW already. - exists = great_holy_war + exists = great_holy_war # If GHWs have just been unlocked, AI rulers will wait a little bit before declaring them. trigger_if = { @@ -3758,6 +3795,18 @@ directed_great_holy_war = { save_scope_as = the_ghw } + scope:attacker = { #Achievement setup. + every_character_war = { + limit = { + is_attacker = scope:attacker + is_defender = scope:defender + } + every_war_attacker = { + add_achievement_flag_effect = { FLAG = achievement_for_the_faith_flag } + } + } + } + if = { limit = { exists = scope:attacker.faith.great_holy_war.ghw_title_recipient } scope:attacker.faith.great_holy_war.ghw_title_recipient = { @@ -3934,6 +3983,18 @@ directed_great_holy_war = { save_scope_as = the_ghw } + scope:defender = { #Achievement setup. + every_character_war = { + limit = { + is_attacker = scope:attacker + is_defender = scope:defender + } + every_war_defender = { + add_achievement_flag_effect = { FLAG = achievement_for_the_faith_flag } + } + } + } + every_player = { #Fluff for players limit = { OR = { diff --git a/common/casus_belli_types/00_subjugation.txt b/common/casus_belli_types/00_subjugation.txt index cfc0da6db9..751a90ff31 100644 --- a/common/casus_belli_types/00_subjugation.txt +++ b/common/casus_belli_types/00_subjugation.txt @@ -2,6 +2,10 @@ icon = vassalization group = subjugation ai_only_against_neighbors = yes + + attacker_score_from_occupation_scale = 150 + attacker_score_from_battles_scale = 150 + defender_score_from_battles_scale = 150 allowed_for_character = { OR = { @@ -13,6 +17,9 @@ faith = { has_doctrine = eastern_hostility_doctrine } + house ?= { + has_variable = subjugations_expanded + } } } @@ -23,73 +30,105 @@ scope:attacker = { trigger_if = { limit = { - government_has_flag = government_is_tribal - scope:defender = { - government_has_flag = government_is_tribal + faith.religion = religion:islam_religion + house ?= { + house_head = scope:attacker + has_variable = subjugations_expanded } + scope:defender.faith.religion = religion:islam_religion } + } + trigger_else = { trigger_if = { limit = { - culture = { - has_cultural_parameter = cb_lower_prestige_level_requirement + government_has_flag = government_is_tribal + scope:defender = { + government_has_flag = government_is_tribal } } - prestige_level >= 1 - } - trigger_else = { - prestige_level >= 2 - } - } - trigger_else_if = { - limit = { - faith.religious_head = scope:attacker - exists = scope:defender.faith.religious_head - scope:defender.faith.religious_head = scope:attacker.faith.religious_head - scope:attacker.faith = { has_doctrine = doctrine_temporal_head } - } - trigger_if = { - limit = { - OR = { + trigger_if = { + limit = { culture = { - has_cultural_parameter = cb_lower_piety_level_requirement + has_cultural_parameter = cb_lower_prestige_level_requirement } - # Iberian Struggle Hostility Reward - AND = { - exists = house - house = { - OR = { - has_house_modifier = fp2_struggle_hostility_house_faith_modifier - has_house_modifier = fp2_struggle_hostility_house_combined_modifier + } + prestige_level >= 1 + } + trigger_else = { + prestige_level >= 2 + } + } + trigger_else_if = { + limit = { + faith.religious_head = scope:attacker + exists = scope:defender.faith.religious_head + scope:defender.faith.religious_head = scope:attacker.faith.religious_head + scope:attacker.faith = { has_doctrine = doctrine_temporal_head } + } + trigger_if = { + limit = { + OR = { + culture = { + has_cultural_parameter = cb_lower_piety_level_requirement + } + # Iberian Struggle Hostility Reward + AND = { + exists = house + house = { + OR = { + has_house_modifier = fp2_struggle_hostility_house_faith_modifier + has_house_modifier = fp2_struggle_hostility_house_combined_modifier + } } } } } + piety_level >= 2 + } + trigger_else = { + piety_level >= 3 } - piety_level >= 2 } trigger_else = { - piety_level >= 3 - } - } - trigger_else = { - trigger_if = { - limit = { - culture = { - has_cultural_parameter = cb_lower_prestige_level_requirement + trigger_if = { + limit = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } + culture = { + has_cultural_parameter = cb_lower_prestige_level_requirement + } } + prestige_level >= 2 + } + trigger_else_if = { + limit = { + OR = { + AND = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } + } + culture = { + has_cultural_parameter = cb_lower_prestige_level_requirement + } + } + } + prestige_level >= 3 + } + trigger_else = { + prestige_level >= 4 } - prestige_level >= 3 - } - trigger_else = { - prestige_level >= 4 } - } - custom_description = { - text = has_used_lifetime_subjugation - subject = scope:attacker - NOT = { - scope:attacker = { - has_character_flag = used_lifetime_subjugation + custom_description = { + text = has_used_lifetime_subjugation + subject = scope:attacker + NOT = { + scope:attacker = { + has_character_flag = used_lifetime_subjugation + } } } } @@ -121,6 +160,14 @@ } } } + AND = { + faith.religion = religion:islam_religion + house ?= { + house_head = scope:attacker + has_variable = subjugations_expanded + } + scope:defender.faith.religion = religion:islam_religion + } } } diff --git a/common/casus_belli_types/00_vassalization.txt b/common/casus_belli_types/00_vassalization.txt index 542ba9f77e..7004efed39 100644 --- a/common/casus_belli_types/00_vassalization.txt +++ b/common/casus_belli_types/00_vassalization.txt @@ -3,6 +3,10 @@ group = vassalization ai_only_against_neighbors = yes + attacker_score_from_occupation_scale = 150 + attacker_score_from_battles_scale = 150 + defender_score_from_battles_scale = 150 + allowed_for_character = { #OR = { has_perk = forced_vassalage_perk @@ -171,7 +175,6 @@ # Truce add_truce_attacker_victory_effect = yes - } on_white_peace_desc = { diff --git a/common/casus_belli_types/01_fp1_wars.txt b/common/casus_belli_types/01_fp1_wars.txt index b56f331aea..27672f68d6 100644 --- a/common/casus_belli_types/01_fp1_wars.txt +++ b/common/casus_belli_types/01_fp1_wars.txt @@ -144,8 +144,7 @@ fp1_varangian_adventurer_conquest = { on_invalidated_desc = msg_county_conquest_war_invalidated_message - on_invalidated = { - } + on_invalidated = {} cost = { piety = { @@ -1187,7 +1186,7 @@ fp1_varangian_adventurer_conquest = { } } - # Allies on both sides get full prestige value for helping in the war, based on their war participation. + # Allies on both sides get full prestige value for helping in the war, based on their war participation. modify_allies_of_participants_fame_values = { WINNER = scope:defender FAME_BASE = medium_prestige_value diff --git a/common/casus_belli_types/_casus_belli.info b/common/casus_belli_types/_casus_belli.info index 4239d506fa..112d676ddf 100644 --- a/common/casus_belli_types/_casus_belli.info +++ b/common/casus_belli_types/_casus_belli.info @@ -26,7 +26,7 @@ key = { siege_participation_mult = 1.0 # What to multiply siege participation scoring by. Defaults to 1 battle_participation_mult = 1.0 # What to multiply battle participation scoring by. Defaults to 1 - cost = { gold = ... piety = ... prestige = ... } # How much it costs to declare the war + cost = { gold = ... piety = ... prestige = ... } # How much it costs to declare the war. Add a CB_BASE_COST desc key to the value if you have no conditions. attacker_capital_gives_war_score = no # No warscore from attacker capital defender_capital_gives_war_score = no # No warscore from defender capital diff --git a/common/culture/innovations/00_early_medieval_innovations.txt b/common/culture/innovations/00_early_medieval_innovations.txt index 04b05adbb7..350a66887b 100644 --- a/common/culture/innovations/00_early_medieval_innovations.txt +++ b/common/culture/innovations/00_early_medieval_innovations.txt @@ -125,9 +125,6 @@ innovation_hereditary_rule = { icon = @majesty_02 unlock_law = partition_succession_law - character_modifier = { - monthly_prestige_gain_mult = 0.05 - } flag = global_regular flag = early_medieval_era_regular @@ -193,7 +190,7 @@ innovation_chronicle_writing = { culture_era = culture_era_early_medieval icon = @administration_3 - unlock_casus_belli = individual_duchy_de_jure_cb + custom = multiple_claim_wars custom = cb_discount_prestige_10 custom = more_zealot @@ -222,6 +219,10 @@ innovation_baliffs = { county_modifier = { building_slot_add = 1 } + + character_modifier = { + tax_slot_add = 1 + } custom = more_glory_hounds flag = global_regular diff --git a/common/culture/innovations/00_high_medieval_innovations.txt b/common/culture/innovations/00_high_medieval_innovations.txt index 272ee7a82a..e3fd134844 100644 --- a/common/culture/innovations/00_high_medieval_innovations.txt +++ b/common/culture/innovations/00_high_medieval_innovations.txt @@ -127,9 +127,6 @@ innovation_heraldry = { unlock_law = high_partition_succession_law unlock_law = single_heir_dynasty_house - character_modifier = { - monthly_prestige_gain_mult = 0.05 - } custom = more_courtly flag = global_regular @@ -156,8 +153,10 @@ innovation_divine_right = { group = culture_group_civic culture_era = culture_era_high_medieval icon = @majesty_03 - - custom = multiple_claim_wars + + unlock_casus_belli = de_jure_cb + + custom = multiple_claim_wars_others custom = unlock_palatinate_contract diff --git a/common/culture/innovations/00_late_medieval_innovations.txt b/common/culture/innovations/00_late_medieval_innovations.txt index 7fce175398..3989b2ba6d 100644 --- a/common/culture/innovations/00_late_medieval_innovations.txt +++ b/common/culture/innovations/00_late_medieval_innovations.txt @@ -161,8 +161,9 @@ innovation_rightful_ownership = { culture_era = culture_era_late_medieval icon = @leadership_1 - unlock_casus_belli = de_jure_cb - custom = multiple_claim_wars_others + character_modifier = { + title_creation_cost_mult = -0.2 + } custom = cb_discount_prestige_10 custom = more_glory_hounds } @@ -173,7 +174,7 @@ innovation_ermine_cloaks = { icon = @majesty_03 character_modifier = { - monthly_prestige_gain_mult = 0.1 + vassal_limit = 20 } flag = global_regular @@ -187,6 +188,7 @@ innovation_court_officials = { character_modifier = { domain_limit = 1 + tax_slot_add = 1 } custom = more_courtly diff --git a/common/culture/innovations/00_tribal_innovations.txt b/common/culture/innovations/00_tribal_innovations.txt index 0f7e40ff35..344c0f9143 100644 --- a/common/culture/innovations/00_tribal_innovations.txt +++ b/common/culture/innovations/00_tribal_innovations.txt @@ -89,6 +89,7 @@ innovation_bannus = { character_modifier = { levy_reinforcement_rate = 0.15 + active_accolades = 1 } flag = global_regular @@ -108,7 +109,6 @@ innovation_quilted_armor = { flag = tribal_era_regular } -#culture_group_civic innovation_development_01 = { group = culture_group_civic culture_era = culture_era_tribal @@ -133,6 +133,7 @@ innovation_currency_01 = { flag = tribal_era_regular } +#culture_group_civic innovation_gavelkind = { group = culture_group_civic culture_era = culture_era_tribal @@ -180,6 +181,7 @@ innovation_casus_belli = { icon = @administration_1 unlock_casus_belli = individual_county_de_jure_cb + unlock_casus_belli = individual_duchy_de_jure_cb flag = global_regular flag = tribal_era_regular diff --git a/common/culture/traditions/00_realm_traditions.txt b/common/culture/traditions/00_realm_traditions.txt index 5660f66dc9..df86dac543 100644 --- a/common/culture/traditions/00_realm_traditions.txt +++ b/common/culture/traditions/00_realm_traditions.txt @@ -126,6 +126,7 @@ tradition_legalistic = { vassal_limit = 30 monthly_prestige_gain_per_dread_mult = -0.01 tyranny_gain_mult = 0.25 + tax_slot_add = 1 } cost = { @@ -504,7 +505,7 @@ tradition_gardening = { layers = { 0 = steward 1 = mediterranean - 4 = tools.dds + 4 = garden_architects.dds } parameters = { @@ -1097,34 +1098,22 @@ tradition_metal_craftsmanship = { desc = not_communal_bureaucratic_or_stoic_desc } } - # Warcraft - #if = { - # limit = { - # NOT = { - # any_culture_county = { - # count >= 1 - # any_county_province = { - # OR = { - # has_building_or_higher = rammelsberg_mines_01 - # has_building_or_higher = kutna_hora_mines_01 - # has_building_or_higher = kremnica_mines_01 - # has_building_or_higher = falun_mines_01 - # has_building_or_higher = schwaz_mines_01 - # has_building_or_higher = argentiera_mines_01 - # has_building_or_higher = kollur_mines_01 - # has_building_or_higher = siderokausia_mines_01 - # has_building_or_higher = mali_mines_01 - # } - # } - # } - # } - # } - # add = { - # value = tradition_unfulfilled_criteria_penalty - # desc = has_a_special_mine_desc - # } - #} - # End of Warcraft + if = { + limit = { + NOT = { + any_culture_county = { + count >= 1 + any_county_province = { + has_any_special_mine_trigger = yes + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = has_a_special_mine_desc + } + } multiply = tradition_replacement_cost_if_relevant } @@ -2072,6 +2061,9 @@ tradition_staunch_traditionalists = { has_dlc_feature = hybridize_culture } can_pick = { + NOT = { + has_cultural_tradition = tradition_fp3_fierce_independence + } } parameters = { @@ -2517,6 +2509,10 @@ tradition_dryland_dwellers = { } } } + custom_tooltip = { #FP3 addition + text = cannot_have_tradition_irrigation_experts + NOT = { culture_tradition:tradition_fp3_irrigation_experts = { is_in_list = traits } } + } } parameters = { diff --git a/common/culture/traditions/00_regional_traditions.txt b/common/culture/traditions/00_regional_traditions.txt index 79ac58a644..6583951d3e 100644 --- a/common/culture/traditions/00_regional_traditions.txt +++ b/common/culture/traditions/00_regional_traditions.txt @@ -192,6 +192,48 @@ tradition_lords_of_the_elephant = { can_unlock_innovation_war_dinosaur_trigger = yes } } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_or_egalitarian_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_culture_global = { + count >= 5 + cultural_acceptance = { target = prev value >= 50 } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = five_accepted_cultures_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_zealous_people = { is_in_list = traits } + culture_tradition:tradition_by_the_sword = { is_in_list = traits } + } } multiply = 0 } @@ -646,7 +688,6 @@ tradition_saharan_nomads = { } } } - can_pick = { any_culture_county = { title_province = { @@ -1066,12 +1107,10 @@ tradition_mountaineer_ruralism = { # less_likely_to_force_conversion = yes # } - # character_modifier = { # easier to self-convert and create or reform faith - # faith_creation_piety_cost_mult = -0.2 - # faith_conversion_piety_cost_mult = -0.2 - # different_faith_opinion = 10 - # different_faith_county_opinion_mult = -0.25 # reduced penalty for different faiths (note this appears confusing in the UI right now) - # } + parameters = { #easily convert and don't force conversion + more_easily_converted = yes + less_likely_to_force_conversion = yes + } # cost = { # prestige = { @@ -1126,7 +1165,6 @@ tradition_nubian_warrior_queens = { culture_prefer_female_warriors_trigger = yes # End of Warcraft } - can_pick = { # Warcraft custom_tooltip = { @@ -1155,7 +1193,7 @@ tradition_nubian_warrior_queens = { female_preference_inheritance = yes prowess_from_martial_education = yes } - + cost = { prestige = { add = { @@ -1206,10 +1244,10 @@ tradition_nubian_warrior_queens = { desc = three_gender_rulers_desc } } - + multiply = tradition_replacement_cost_if_relevant } } - + ai_will_do = { value = 100 } } diff --git a/common/culture/traditions/00_ritual_traditions.txt b/common/culture/traditions/00_ritual_traditions.txt index 12b0107b16..4cf77ebf1e 100644 --- a/common/culture/traditions/00_ritual_traditions.txt +++ b/common/culture/traditions/00_ritual_traditions.txt @@ -1095,13 +1095,6 @@ tradition_sacred_hunts = { 4 = hunter.dds } - is_shown = { - # Warcraft - # We have Ritual Hunt tenet very similar to this - always = no - # End of Warcraft - } - can_pick = { culture_not_pacifistic_trigger = yes custom_tooltip = { diff --git a/common/culture/traditions/00_societal_traditions.txt b/common/culture/traditions/00_societal_traditions.txt index 7c140afd1d..9a8d183df8 100644 --- a/common/culture/traditions/00_societal_traditions.txt +++ b/common/culture/traditions/00_societal_traditions.txt @@ -1228,6 +1228,14 @@ tradition_poetry = { 4 = quill.dds } + is_shown = { + NOT = { has_cultural_tradition = tradition_fp3_enlightened_magnates } + NAND = { + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + } + } + can_pick = { custom_tooltip = { text = cannot_have_tradition_fp1_northern_stories @@ -1778,6 +1786,10 @@ tradition_philosopher_culture = { 1 = indian 4 = philosopher.dds } + + is_shown = { + NOT = { has_cultural_tradition = tradition_fp3_beacon_of_learning } + } can_pick = { custom_description = { diff --git a/common/culture/traditions/01_fp1_traditions.txt b/common/culture/traditions/01_fp1_traditions.txt index 65f634aaf0..7fcecdcc0b 100644 --- a/common/culture/traditions/01_fp1_traditions.txt +++ b/common/culture/traditions/01_fp1_traditions.txt @@ -1,5 +1,5 @@ ########################### -# FP1 CULTURAL TRADITIONS +# FP1 CULTURAL TRADITIONS ########################### ####################### @@ -16,7 +16,7 @@ tradition_fp1_coastal_warriors = { 1 = western 4 = viking.dds } - + is_shown = { # DLC check. has_fp1_dlc_trigger = yes @@ -48,7 +48,6 @@ tradition_fp1_coastal_warriors = { text = culture_not_pacifist_trigger_desc culture_not_pacifistic_trigger = yes } - # Shouldn't be combined with the following traditions: custom_tooltip = { text = cannot_have_tradition_warrior_culture @@ -59,8 +58,7 @@ tradition_fp1_coastal_warriors = { NOT = { culture_tradition:tradition_seafaring = { is_in_list = traits } } } } - - + parameters = { unlock_maa_bondi = yes unlock_maa_vigmen = yes @@ -112,11 +110,11 @@ tradition_fp1_coastal_warriors = { desc = coastal_percentage_desc } } - + multiply = tradition_replacement_cost_if_relevant } } - + ai_will_do = { value = 100 if = { @@ -153,8 +151,9 @@ tradition_fp1_performative_honour = { is_shown = { # DLC check. has_fp1_dlc_trigger = yes + has_cultural_pillar = heritage_north_germanic } - + can_pick = { # Must be of a suitable heritage. @@ -175,7 +174,7 @@ tradition_fp1_performative_honour = { NOT = { culture_tradition:tradition_fp1_the_right_to_prove = { is_in_list = traits } } } } - + parameters = { has_access_to_shieldmaidens = yes has_access_to_trials_by_combat = yes @@ -187,7 +186,7 @@ tradition_fp1_performative_honour = { knight_limit = 1 accolade_glory_gain_mult = 0.1 } - + cost = { prestige = { # Base cost. @@ -226,7 +225,7 @@ tradition_fp1_performative_honour = { desc = courtiers_with_prowess_who_cant_be_knight_desc } } - + multiply = tradition_replacement_cost_if_relevant } } @@ -251,7 +250,7 @@ tradition_fp1_northern_stories = { # Warcraft can_have_tradition_runestones_trigger = yes } - + can_pick = { # Must be of a suitable heritage. # like_north_germanic_group_trigger = yes @@ -263,9 +262,7 @@ tradition_fp1_northern_stories = { } } } - # Shouldn't be combined with the following traditions: - custom_tooltip = { text = cannot_have_tradition_runestones NOT = { culture_tradition:tradition_runestones = { is_in_list = traits } } @@ -279,7 +276,7 @@ tradition_fp1_northern_stories = { NOT = { culture_tradition:tradition_storytellers = { is_in_list = traits } } } } - + parameters = { has_access_to_runestones = yes poet_trait_gives_bonuses = yes @@ -291,7 +288,7 @@ tradition_fp1_northern_stories = { character_modifier = { owned_scheme_secrecy_add = -15 } - + cost = { prestige = { # Base cost. @@ -339,11 +336,11 @@ tradition_fp1_northern_stories = { desc = rulers_with_poet_desc } } - + multiply = tradition_replacement_cost_if_relevant } } - + ai_will_do = { value = 100 } } # End of Warcraft @@ -365,14 +362,14 @@ tradition_fp1_trials_by_combat = { # DLC check. has_fp1_dlc_trigger = yes } - + can_pick = { custom_tooltip = { text = cannot_have_tradition_fp1_performative_honour NOT = { culture_tradition:tradition_fp1_performative_honour = { is_in_list = traits } } } } - + parameters = { has_access_to_trials_by_combat = yes blademaster_traits_give_learning = yes @@ -383,7 +380,7 @@ tradition_fp1_trials_by_combat = { knight_limit = 1 accolade_glory_gain_mult = 0.1 } - + cost = { prestige = { # Base cost. @@ -464,11 +461,11 @@ tradition_fp1_trials_by_combat = { desc = rulers_with_martial_edu_and_learning_desc } } - + multiply = tradition_replacement_cost_if_relevant } } - + ai_will_do = { value = 100 } } @@ -485,14 +482,14 @@ tradition_fp1_the_right_to_prove = { # DLC check. has_fp1_dlc_trigger = yes } - + can_pick = { custom_tooltip = { text = cannot_have_tradition_fp1_performative_honour NOT = { culture_tradition:tradition_fp1_performative_honour = { is_in_list = traits } } } } - + parameters = { has_access_to_shieldmaidens = yes } @@ -501,7 +498,7 @@ tradition_fp1_the_right_to_prove = { knight_limit = -2 knight_effectiveness_mult = 0.25 } - + cost = { prestige = { # Base cost. @@ -544,11 +541,11 @@ tradition_fp1_the_right_to_prove = { desc = courtiers_with_prowess_who_cant_be_knight_desc } } - + multiply = tradition_replacement_cost_if_relevant } } - + ai_will_do = { value = 100 if = { diff --git a/common/culture/traditions/03_fp2_traditions.txt b/common/culture/traditions/03_fp2_traditions.txt index 19fe423836..8399674d6c 100644 --- a/common/culture/traditions/03_fp2_traditions.txt +++ b/common/culture/traditions/03_fp2_traditions.txt @@ -1,5 +1,5 @@ ########################### -# FP2 CULTURAL TRADITIONS +# FP2 CULTURAL TRADITIONS ########################### ####################### @@ -14,14 +14,14 @@ tradition_fp2_state_ransoming = { 1 = western 4 = state_ransoming.dds } - + is_shown = { # DLC check. has_fp2_dlc_trigger = yes } # Anyone can take this. - + parameters = { knights_die_less_but_are_captured_more = yes characters_more_likely_to_be_captured_in_sieges = yes @@ -37,7 +37,7 @@ tradition_fp2_state_ransoming = { # Naturally, people are more keen to turn up to serve. levy_size = 0.1 } - + cost = { prestige = { # Base cost. @@ -81,7 +81,7 @@ tradition_fp2_state_ransoming = { multiply = tradition_replacement_cost_if_relevant } } - + ai_will_do = { value = 100 @@ -135,14 +135,14 @@ tradition_fp2_strategy_gamers = { 1 = western 4 = board_gamers.dds } - + is_shown = { # DLC check. has_fp2_dlc_trigger = yes } # Anyone can take this. - + parameters = { commanders_likelier_to_gain_commander_traits = yes may_challenge_to_board_games = yes @@ -154,7 +154,7 @@ tradition_fp2_strategy_gamers = { prowess = medium_skill_penalty martial = medium_skill_bonus } - + cost = { prestige = { # Base cost. @@ -195,14 +195,14 @@ tradition_fp2_strategy_gamers = { } } } - + multiply = tradition_replacement_cost_if_relevant } } - + ai_will_do = { value = 0 - + if = { limit = { exists = culture_head } culture_head = { @@ -239,7 +239,7 @@ tradition_fp2_malleable_subjects = { 1 = mena 4 = malleable_subjects.dds } - + is_shown = { # DLC check. has_fp2_dlc_trigger = yes @@ -251,7 +251,7 @@ tradition_fp2_malleable_subjects = { has_cultural_pillar = heritage_goblin # End of Warcraft } - + parameters = { doesnt_care_about_culture_faith_in_factions = yes wants_to_learn_liege_language = yes @@ -294,11 +294,11 @@ tradition_fp2_malleable_subjects = { desc = not_egalitarian_or_courtly_desc } } - + multiply = tradition_replacement_cost_if_relevant } } - + ai_will_do = { value = 0 # Players might want this, but the AI never does. @@ -317,7 +317,7 @@ tradition_fp2_ritualised_friendship = { 1 = western 4 = ritualised_friendship.dds } - + is_shown = { # DLC check. #has_fp2_dlc_trigger = yes @@ -344,7 +344,7 @@ tradition_fp2_ritualised_friendship = { } # End of Warcraft } - + parameters = { automatic_befriend_access = yes may_propose_best_friendship = yes @@ -356,7 +356,7 @@ tradition_fp2_ritualised_friendship = { scheme_power_against_friend_add = 20 scheme_power_against_best_friend_add = 40 } - + cost = { prestige = { # Base cost. @@ -384,11 +384,11 @@ tradition_fp2_ritualised_friendship = { } } } - + multiply = tradition_replacement_cost_if_relevant } } - + ai_will_do = { value = 0 diff --git a/common/dynasty_perks/03_fp3_dynasty_perks.txt b/common/dynasty_perks/03_fp3_dynasty_perks.txt new file mode 100644 index 0000000000..7d26d2b0f9 --- /dev/null +++ b/common/dynasty_perks/03_fp3_dynasty_perks.txt @@ -0,0 +1,115 @@ +fp3_khvarenah_legacy_1 = { # Sense of Purpose + legacy = fp3_khvarenah_legacy_track + + can_be_picked = { eligible_for_fp3_khvarenah_legacy_trigger = yes } + + effect = { + custom_description_no_bullet = { text = fp3_khvarenah_legacy_court_positions_effect } + } + + character_modifier = { + clan_tax_slot_add = 1 + } + + ai_chance = { + value = 11 + if = { + limit = { + culture = { like_heritage_iranian_trigger = yes } + } + multiply = 10 + } + if = { + limit = { + can_start_new_legacy_track_trigger = no + } + multiply = 0 + } + } +} + +fp3_khvarenah_legacy_2 = { # Lofty Ambitions + legacy = fp3_khvarenah_legacy_track + + can_be_picked = { eligible_for_fp3_khvarenah_legacy_trigger = yes } + + effect = { + custom_description_no_bullet = { text = fp3_khvarenah_legacy_2_hostile_effect } + } + + character_modifier = { + personal_scheme_power_mult = 0.25 + owned_personal_scheme_success_chance_add = 15 + monthly_stewardship_lifestyle_xp_gain_mult = 0.15 + } + + ai_chance = { + value = 100 + } +} + +fp3_khvarenah_legacy_3 = { # Light of Glory + legacy = fp3_khvarenah_legacy_track + + can_be_picked = { eligible_for_fp3_khvarenah_legacy_trigger = yes } + + effect = { + custom_description_no_bullet = { + text = fp3_khvarenah_legacy_3_marriage_effect + } + custom_description_no_bullet = { + text = fp3_khvarenah_legacy_3_spouse_task_effect + } + } + + character_modifier = { + courtly_tax_contribution_mult = 0.15 + glory_hound_levy_contribution_mult = 0.15 + } + + ai_chance = { + value = 100 + } +} + +fp3_khvarenah_legacy_4 = { # Ancient Authority + legacy = fp3_khvarenah_legacy_track + + can_be_picked = { eligible_for_fp3_khvarenah_legacy_trigger = yes } + + + effect = { + custom_description_no_bullet = { + text = fp3_khvarenah_legacy_tax_collector_effect #better tax collectors + } + if = { + limit = { has_dlc_feature = royal_court } + custom_description_no_bullet = { + text = fp3_khvarenah_legacy_4_effect #Better Bestow Royal Favor council task + } + } + custom_description_no_bullet = { + text = fp3_khvarenah_legacy_4_secondary_effect #can recruit Asawira + } + } + + ai_chance = { + value = 100 + } +} + +fp3_khvarenah_legacy_5 = { # Splendor Reborn + legacy = fp3_khvarenah_legacy_track + + can_be_picked = { eligible_for_fp3_khvarenah_legacy_trigger = yes } + + effect = { + custom_description_no_bullet = { text = fp3_khvarenah_legacy_5_decision_effect } + } + + ai_chance = { + value = 100 + } +} + + diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index a5f8d0eb82..1f93f256ee 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -24,7 +24,6 @@ war_declaration_rights council_rights title_revocation_rights - #jizya_special_rights } # Warcraft @@ -93,22 +92,22 @@ clan_government = { required_county_holdings = { castle_holding city_holding church_holding } always_use_patronym = yes dynasty_named_realms = yes + + house_unity = clan_house_unity + tax_slot_type = clan_tax_slot # Warcraft # Type flag = government_is_monarchy vassal_contract = { - clan_government_obligations + clan_tax_collector_obligations special_contract religious_rights war_declaration_rights council_rights title_revocation_rights - #jizya_special_rights - #iqta_special_rights - #ghazi_special_rights - #marriage_favor_rights + marriage_favor_rights } opinion_of_liege = { @@ -123,10 +122,10 @@ clan_government = { limit = { is_powerful_vassal = yes } - value = -30 + value = clan_powerful_vassal_no_alliance_opinion_penalty_value } else = { - value = -15 + value = clan_vassal_no_alliance_opinion_penalty_value } } } @@ -160,6 +159,7 @@ clan_government = { # Use flags instead of has_government for moddability if possible (i.e., wherever not visible to the player). flag = government_is_clan + flag = may_appoint_viziers # Warcraft flag = government_can_be_matchmaker color = hsv{ 0.39 0.93 0.54 } diff --git a/common/governments/_governments.info b/common/governments/_governments.info index 2dcbaa34ac..c48d0fafcb 100644 --- a/common/governments/_governments.info +++ b/common/governments/_governments.info @@ -38,6 +38,8 @@ my_government = { # List of vassal contract types } + house_unity = house_unity_key # the house unity is configured in common/house_unities and shows if a government can have house unity + # Disable some AI features for this government type (all are enabled by default). # Note that some features might be disabled for other reasons (e.g. if not independent, if below a certain tier). ai = { diff --git a/common/religion/doctrines/00_core_tenets.txt b/common/religion/doctrines/00_core_tenets.txt index 7a4c1f9f47..0070cc292c 100644 --- a/common/religion/doctrines/00_core_tenets.txt +++ b/common/religion/doctrines/00_core_tenets.txt @@ -80,6 +80,10 @@ character_modifier = { monthly_learning_lifestyle_xp_gain_mult = 0.2 } + + traits = { + virtues = { scholar } + } } tenet_armed_pilgrimages = { @@ -391,6 +395,10 @@ divine_marriage_opinion = 10 divine_marriage_piety_gain_active = yes } + + traits = { + virtues = { pure_blooded = 2 } + } } # Warcraft @@ -790,8 +798,11 @@ icon = core_tenet_rite is_shown = { - # Filter out Islam; they have their own system. - like_islam_religion_trigger = no + # Filter out religions that use a branch system. + OR = { + like_islam_religion_trigger = no + like_zoroastrianism_religion_trigger = no + } # We also only want people with existing spiritual HoFs. exists = religious_head has_doctrine_parameter = spiritual_head_of_faith @@ -1057,7 +1068,7 @@ traits = { virtues = { - lifestyle_mystic + lifestyle_mystic = { weight = 1 } } } @@ -1360,16 +1371,13 @@ } } - is_shown = { - - # Warcraft - NOT = { like_christianity_religion_trigger = yes } - - } - parameters = { sanctioned_false_conversion = yes } + + character_modifier = { + monthly_intrigue_lifestyle_xp_gain_mult = 0.1 #FP3 addition to make this tenet more attractive + } } tenet_tax_nonbelievers = { @@ -1424,6 +1432,15 @@ levy_reinforcement_rate_same_faith = 0.25 levy_reinforcement_rate_different_faith = -0.25 } + + parameters = { + unlock_jizya_contract = yes + } + + is_shown = { + NOT = { religion_tag = christianity_religion } + NOT = { has_doctrine = special_doctrine_jizya } + } } ############################# @@ -1472,7 +1489,9 @@ multiply = faith_unchanged_doctrine_cost_mult } } + + parameters = { meditation_mechanics_active = yes } @@ -1573,7 +1592,6 @@ holy_wars_forbidden = yes pacifist_opinion_active = yes opinion_of_pacifist_opinion_active = 10 - hostility_override_tenet_dharmic_pacifism = 1 } traits = { @@ -1744,6 +1762,35 @@ tenet_astrology = { icon = core_tenet_astrology + name = { #FP3 + first_valid = { + triggered_desc = { + trigger = { + OR = { + like_islam_religion_trigger = yes + like_zoroastrianism_religion_trigger = yes + } + } + desc = tenet_divination_name + } + desc = tenet_astrology_name + } + } + + desc = { + first_valid = { + triggered_desc = { + trigger = { + OR = { + like_islam_religion_trigger = yes + like_zoroastrianism_religion_trigger = yes + } + } + desc = tenet_divination_desc + } + desc = tenet_astrology_desc + } + } piety_cost = { if = { @@ -1858,8 +1905,8 @@ } traits = { - virtues = { gluttonous = 2 } - sins = { temperate = 2 } + virtues = { gluttonous = { scale = 2 weight = 2 } } + sins = { temperate = { scale = 2 weight = 2 } } } character_modifier = { @@ -1969,7 +2016,12 @@ } traits = { - virtues = { lifestyle_mystic = 5 } + virtues = { + lifestyle_mystic = { + scale = 5 + weight = 2 + } + } } } @@ -2041,14 +2093,6 @@ } } - is_shown = { - # Warcraft - # OR = { - # like_baltic_religion_trigger = yes - # religion_tag = waaqism_religion - # } - } - parameters = { safer_childbirths_active = yes healthier_children_active = yes @@ -2150,6 +2194,7 @@ parameters = { sky_burials_active = yes + can_build_towers_of_silence_active = yes } character_modifier = { @@ -2360,7 +2405,7 @@ tenet_cthonic_redoubts = { icon = core_tenet_cthonic_redoubts - + name = { first_valid = { triggered_desc = { @@ -2636,6 +2681,7 @@ } } + is_shown = { evil_public_religion_trigger = no NOT = { has_doctrine = life_hostility_doctrine } @@ -2663,12 +2709,10 @@ incompatible_tenet_MAGIC_magic_not_accepted_trigger = { MAGIC = life } } - parameters = { life_syncretism_active = yes hostility_override_life_hostility_doctrine = 1 } - traits = { virtues = { compassionate } sins = { sadistic callous } @@ -3441,6 +3485,145 @@ hills_advantage = 5 } } + + ############################# + # FP3 Tenets # + ############################# + + tenet_fp3_fedayeen = { + icon = core_tenet_assassin + + name = { + first_valid = { + triggered_desc = { + trigger = { + like_islam_religion_trigger = yes + } + desc = tenet_fp3_fedayeen_name + } + desc = tenet_fp3_sacred_murder_name + } + } + + is_shown = { } + + can_pick = { + custom_description = { + text = incompatible_tenet_pacifism_trigger + NOT = { doctrine:tenet_pacifism = { is_in_list = selected_doctrines } } + } + custom_description = { + text = incompatible_tenet_dharmic_pacifism_trigger + NOT = { doctrine:tenet_dharmic_pacifism = { is_in_list = selected_doctrines } } + } + custom_description = { + text = fedayeen_required_doctrines_trigger + OR = { + doctrine:tenet_warmonger = { is_in_list = selected_doctrines } + doctrine:tenet_unrelenting_faith = { is_in_list = selected_doctrines } + doctrine:tenet_consolamentum = { is_in_list = selected_doctrines } + doctrine:tenet_armed_pilgrimages = { is_in_list = selected_doctrines } + doctrine:tenet_struggle_submission = { is_in_list = selected_doctrines } + doctrine:tenet_pursuit_of_power = { is_in_list = selected_doctrines } + } + } + } + + piety_cost = { + if = { + limit = { + AND = { + #OR = { + # has_doctrine = muhammad_succession_shia_doctrine + # has_doctrine = muhammad_succession_muhakkima_doctrine + #} + OR = { + has_doctrine = tenet_warmonger + has_doctrine = tenet_unrelenting_faith + has_doctrine = tenet_consolamentum + } + } + + } + value = faith_tenet_cost_low + } + else = { + value = faith_tenet_cost_massive + } + + # Multiplier for keeping same tenet + if = { + limit = { has_doctrine = tenet_fp3_fedayeen } + multiply = faith_unchanged_doctrine_cost_mult + } + } + + parameters = { + master_assassin_court_position_unlocked = yes + death_is_glory = yes + sanctioned_assassinations = yes + } + + character_modifier = { + controlled_province_advantage = 5 + monthly_piety_gain_per_dread_add = 0.01 + prowess = 2 + } + + traits = { + virtues = { vengeful = 1 } + sins = { craven = 1 } + } + } + + tenet_communal_possessions = { + icon = core_tenet_communism + is_shown = { + always = no + } + can_pick = { + always = yes + } + + piety_cost = { + if = { + limit = { + OR = { + has_doctrine = tenet_mendicant_preachers + #has_doctrine = tenet_gnosticism + like_christianity_religion_trigger = yes + like_zoroastrianism_religion_trigger = yes + } + } + value = faith_tenet_cost_mid + } + else = { + value = faith_tenet_cost_high + } + + #Multiplier for keeping same tenet + if = { + limit = { has_doctrine = tenet_communal_possessions } + multiply = faith_unchanged_doctrine_cost_mult + } + } + + parameters = { + piety_from_gifts_active = yes + piety_from_marrying_lowborn_active = yes + } + + character_modifier = { + monthly_county_control_change_factor = -0.2 + build_gold_cost = -0.1 + county_opinion_add = 10 + } + + traits = { + virtues = { peasant_leader = 2 } #because communism! + sins = { arrogant } + } + } ############################# # Empty Template Tenet # ############################# diff --git a/common/religion/doctrines/00_doctrines_zoroastrianism.txt b/common/religion/doctrines/00_doctrines_zoroastrianism.txt new file mode 100644 index 0000000000..dd7e3cac6b --- /dev/null +++ b/common/religion/doctrines/00_doctrines_zoroastrianism.txt @@ -0,0 +1 @@ +# Warcraft \ No newline at end of file diff --git a/common/scripted_triggers/00_ai_acceptance_triggers.txt b/common/scripted_triggers/00_ai_acceptance_triggers.txt index 6d0dc1f9a7..ad9eb7e4c3 100644 --- a/common/scripted_triggers/00_ai_acceptance_triggers.txt +++ b/common/scripted_triggers/00_ai_acceptance_triggers.txt @@ -12,7 +12,6 @@ ai_will_give_favor_trigger = { target = $CHAR2$ } - #TODO_CD: Ensure that CHAR1 is not a member of a powerful faction with high Discontent. is_scheming_against = { target = $CHAR2$ type = murder } } } diff --git a/common/scripted_triggers/00_ai_value_triggers.txt b/common/scripted_triggers/00_ai_value_triggers.txt index 9c89e6994e..c383f59ccd 100644 --- a/common/scripted_triggers/00_ai_value_triggers.txt +++ b/common/scripted_triggers/00_ai_value_triggers.txt @@ -17,40 +17,66 @@ opposing_ai_values_trigger = { } ai_has_warlike_personality = { - ai_boldness > 0 - ai_greed >= 0 - OR = { - has_trait = wrathful - has_trait = impatient - has_trait = sadistic - has_trait = ambitious - has_trait = vengeful - has_trait = zealous - has_trait = irritable - AND = { - ai_boldness >= 50 - ai_greed >= 50 + AND = { # The unity decision "Organize House Members for War" forces AI house members to adopt this stance + exists = house + house = { + has_house_modifier = unity_house_organized_for_war_modifier + } } - AND = { - ai_boldness >= 25 - ai_greed >= 100 + AND = { # They are Detractors during the FP3 Struggle in the Unrest Phase + any_character_struggle = { + trigger_if = { + limit = { is_struggle_type = persian_struggle } + is_struggle_phase = struggle_persia_phase_unrest + } + trigger_else = { always = no } + } + has_trait = fp3_struggle_detractor } AND = { - ai_boldness >= 100 - ai_greed >= 25 + ai_boldness > 0 + ai_greed >= 0 + + OR = { + has_trait = wrathful + has_trait = impatient + has_trait = sadistic + has_trait = ambitious + has_trait = vengeful + has_trait = zealous + has_trait = irritable + AND = { + ai_boldness >= 50 + ai_greed >= 50 + } + AND = { + ai_boldness >= 25 + ai_greed >= 100 + } + AND = { + ai_boldness >= 100 + ai_greed >= 25 + } + government_has_flag = government_is_tribal + culture = { has_cultural_pillar = ethos_bellicose } + } + + NOR = { + ai_compassion >= 75 + has_trait = compassionate + has_trait = craven + has_trait = calm + faith = { has_doctrine_parameter = pacifist_opinion_active } + culture = { has_cultural_parameter = reduced_cost_for_conversion_to_pacifist_faith } + AND = { + exists = house + house = { + has_house_modifier = unity_house_focused_on_economy_modifier + } + } + } } - government_has_flag = government_is_tribal - culture = { has_cultural_pillar = ethos_bellicose } - } - - NOR = { - ai_compassion >= 75 - has_trait = compassionate - has_trait = craven - has_trait = calm - faith = { has_doctrine_parameter = pacifist_opinion_active } - culture = { has_cultural_parameter = reduced_cost_for_conversion_to_pacifist_faith } } } @@ -74,29 +100,105 @@ ai_has_cautious_personality = { NOR = { has_trait = fickle has_trait = lunatic + AND = { + exists = house + house = { + OR = { + has_house_modifier = unity_house_organized_for_war_modifier + has_house_modifier = unity_house_focused_on_economy_modifier + } + } + } + #AND = { # They are Detractors during the FP3 Struggle in the Unrest Phase + # any_character_struggle = { + # is_struggle_type = persian_struggle + # is_struggle_phase = struggle_persia_phase_unrest + # } + # has_trait = fp3_struggle_detractor + #} } } ai_has_economical_boom_personality = { - ai_boldness > 0 - OR = { - has_focus = stewardship_domain_focus # Only this focus, which is 33% of all stewardship focused characters in the world - has_trait = calm - has_trait = patient - has_trait = diligent - has_trait = generous - has_trait = stubborn - has_trait = profligate - has_trait = improvident - has_character_modifier = the_city_builder_modifier - has_character_modifier = the_castle_builder_modifier - has_character_modifier = the_temple_builder_modifier + AND = { # The unity decision "Encourage House to Improve the Economy" forces AI house members to adopt this stance + exists = house + house = { + has_house_modifier = unity_house_focused_on_economy_modifier + } + } + AND = { + ai_boldness > 0 + OR = { + has_focus = stewardship_domain_focus # Only this focus, which is 33% of all stewardship focused characters in the world + has_trait = calm + has_trait = patient + has_trait = diligent + has_trait = generous + has_trait = stubborn + has_trait = profligate + has_trait = improvident + has_character_modifier = the_city_builder_modifier + has_character_modifier = the_castle_builder_modifier + has_character_modifier = the_temple_builder_modifier + } + NAND = { + has_trait = greedy + has_trait = impatient + AND = { + exists = house + house = { + has_house_modifier = unity_house_organized_for_war_modifier + } + } + } + ai_has_warlike_personality = no + } + } +} + +ai_wants_low_unity = { + government_has_flag = government_is_clan + # To actively decrease Unity, the AI needs the following personality + OR = { + AND = { + OR = { + has_trait_malicious_trigger = yes + has_trait_dominant_trigger = yes + } + has_trait_submissive_trigger = no + has_trait_benevolent_trigger = no + } + ai_has_warlike_personality = yes + has_character_flag = agenda_towards_escalation } - NAND = { - has_trait = greedy - has_trait = impatient +} + +ai_wants_high_unity = { + government_has_flag = government_is_clan + # We'll make sure that the AI only wants to actively increase Unity if they have a matching personality + OR = { + AND = { + OR = { + has_trait_benevolent_trigger = yes + has_trait_submissive_trigger = yes + } + has_trait_malicious_trigger = no + } + ai_has_economical_boom_personality = yes + #AND = { + NOT = { has_trait = fp3_struggle_detractor } + # House is the most recent Caliphs house + #exists = struggle:persian_struggle + #trigger_if = { + # limit = { exists = title:d_sunni.holder } + # house = title:d_sunni.holder.house + #} + #trigger_else = { house = title:d_sunni.previous_holder.house } + #} + has_character_flag = agenda_towards_deescalation } - ai_has_warlike_personality = no + # And to make sure the AI doesn't want to increase and decrease Unity at the same time + ai_wants_low_unity = no } diff --git a/common/scripted_triggers/00_artifact_triggers.txt b/common/scripted_triggers/00_artifact_triggers.txt index eb8667d204..1f0b5f19d7 100644 --- a/common/scripted_triggers/00_artifact_triggers.txt +++ b/common/scripted_triggers/00_artifact_triggers.txt @@ -284,6 +284,11 @@ artifact_use_iberian_christian_unit_visuals_trigger = { culture = { has_unit_gfx = iberian_christian_unit_gfx } } +artifact_use_iranian_unit_visuals_trigger = { + exists = culture + culture = { has_unit_gfx = iranian_unit_gfx } +} + # BuildingGFX-based triggers artifact_use_indian_building_visuals_trigger = { exists = culture @@ -320,7 +325,12 @@ artifact_use_steppe_building_visuals_trigger = { culture = { has_building_gfx = steppe_building_gfx } } -# GFX Trigger-picker - only use this in the 'visuals' files! +artifact_use_iranian_building_visuals_trigger = { + exists = culture + culture = { has_building_gfx = iranian_building_gfx } +} + +# GFX Trigger-picker artifact_should_use_gfx_type_trigger = { trigger_if = { @@ -1969,6 +1979,7 @@ axe_unique_gfx_trigger = { has_clothing_gfx = indian_clothing_gfx has_clothing_gfx = african_clothing_gfx has_clothing_gfx = mena_clothing_gfx + has_clothing_gfx = iranian_clothing_gfx has_clothing_gfx = iberian_christian_clothing_gfx has_clothing_gfx = iberian_muslim_clothing_gfx } @@ -1986,6 +1997,7 @@ sword_unique_gfx_trigger = { has_clothing_gfx = mena_clothing_gfx has_clothing_gfx = iberian_christian_clothing_gfx has_clothing_gfx = iberian_muslim_clothing_gfx + has_clothing_gfx = iranian_clothing_gfx } } } @@ -2036,6 +2048,7 @@ spear_unique_gfx_trigger = { has_clothing_gfx = mena_clothing_gfx has_clothing_gfx = iberian_christian_clothing_gfx has_clothing_gfx = iberian_muslim_clothing_gfx + has_clothing_gfx = iranian_clothing_gfx } } } @@ -2049,6 +2062,11 @@ eligible_for_scientific_apparatus_armillary_sphere_trigger = { culture = { has_innovation = innovation_armilary_sphere } OR = { # Wide spread in the Arabic world fairly early. + + #has_court_language = language_arabic + #has_court_language = language_iranian #FP3 addition + + #knows_language = language_arabic # Becomes commonplace towards the end of the period. culture = { has_cultural_era_or_later = culture_era_late_medieval } diff --git a/common/scripted_triggers/00_auto_character_triggers.txt b/common/scripted_triggers/00_auto_character_triggers.txt index 728f6528ea..b90f641041 100644 --- a/common/scripted_triggers/00_auto_character_triggers.txt +++ b/common/scripted_triggers/00_auto_character_triggers.txt @@ -4,13 +4,13 @@ is_imprisoned = no trigger_if = { limit = { - scope:base.primary_title ?= { has_title_law = female_only_law } + scope:base.primary_title = { has_title_law = female_only_law } } is_female = yes } trigger_if = { limit = { - scope:base.primary_title ?= { has_title_law = male_only_law } + scope:base.primary_title = { has_title_law = male_only_law } } is_male = yes } diff --git a/common/scripted_triggers/00_available_for_events_triggers.txt b/common/scripted_triggers/00_available_for_events_triggers.txt index 2d57530bef..a3fbb99894 100644 --- a/common/scripted_triggers/00_available_for_events_triggers.txt +++ b/common/scripted_triggers/00_available_for_events_triggers.txt @@ -112,7 +112,6 @@ is_available_travelling = { has_contagious_deadly_disease_trigger = no is_incapable = no NOT = { has_variable = gone_adventuring } - #TODO_CD_EP2 should this be localized? is_busy_in_events_unlocalised = no is_travelling = yes } diff --git a/common/scripted_triggers/00_building_requirement_triggers.txt b/common/scripted_triggers/00_building_requirement_triggers.txt index 07e9bc32a8..66ad119e20 100644 --- a/common/scripted_triggers/00_building_requirement_triggers.txt +++ b/common/scripted_triggers/00_building_requirement_triggers.txt @@ -254,6 +254,7 @@ building_peat_quarries_requirement_terrain = { building_hill_farms_requirement_terrain = { terrain = hills } + building_elephant_pens_requirement_terrain = { geographical_region = world_innovation_elephants landing_of_exodar_happened_trigger = yes diff --git a/common/scripted_triggers/00_clan_triggers.txt b/common/scripted_triggers/00_clan_triggers.txt new file mode 100644 index 0000000000..c05cd4a839 --- /dev/null +++ b/common/scripted_triggers/00_clan_triggers.txt @@ -0,0 +1,26 @@ +### CLAN TRIGGERS ### +is_in_clan_trigger = { + exists = house + government_has_flag = government_is_clan + top_liege = house.house_head +} + +is_in_same_clan_as_trigger = { + exists = house + exists = $CHARACTER$.house + OR = { + government_has_flag = government_is_clan + $CHARACTER$ = { government_has_flag = government_is_clan } + } + house = $CHARACTER$.house + top_liege = $CHARACTER$.top_liege +} + +check_tax_collector_aptitude = { + $CHARACTER$ = { + tax_collector_aptitude = { + tax_slot_type = clan_tax_slot + value = $VALUE$ + } + } +} diff --git a/common/scripted_triggers/00_councillor_triggers.txt b/common/scripted_triggers/00_councillor_triggers.txt index 09ab34f85b..b26e701758 100644 --- a/common/scripted_triggers/00_councillor_triggers.txt +++ b/common/scripted_triggers/00_councillor_triggers.txt @@ -24,7 +24,19 @@ can_be_councillor_basics_trigger = { can_be_chancellor_trigger = { can_be_councillor_basics_trigger = yes - NOT = { has_council_position = councillor_spouse } + NAND = { + has_council_position = councillor_court_chaplain + faith = { has_doctrine_parameter = clerical_appointment_fixed } + } + NOT = { + OR = { + has_council_position = councillor_spouse + AND = { + this = liege.diarch + liege = { has_diarchy_active_parameter = diarchy_is_vizierate } + } + } + } OR = { is_ruler = yes AND = { @@ -43,7 +55,19 @@ can_be_chancellor_trigger = { can_be_steward_trigger = { can_be_councillor_basics_trigger = yes - NOT = { has_council_position = councillor_spouse } + NAND = { + has_council_position = councillor_court_chaplain + faith = { has_doctrine_parameter = clerical_appointment_fixed } + } + NOT = { + OR = { + has_council_position = councillor_spouse + AND = { + this = liege.diarch + liege = { has_diarchy_active_parameter = diarchy_is_vizierate } + } + } + } OR = { is_ruler = yes AND = { @@ -62,8 +86,20 @@ can_be_steward_trigger = { can_be_marshal_trigger = { can_be_councillor_basics_trigger = yes - is_hostage = no - NOT = { has_council_position = councillor_spouse } + is_hostage = no + NAND = { + has_council_position = councillor_court_chaplain + faith = { has_doctrine_parameter = clerical_appointment_fixed } + } + NOT = { + OR = { + has_council_position = councillor_spouse + AND = { + this = liege.diarch + liege = { has_diarchy_active_parameter = diarchy_is_vizierate } + } + } + } OR = { is_ruler = yes AND = { @@ -83,14 +119,34 @@ can_be_marshal_trigger = { can_be_spymaster_trigger = { can_be_councillor_basics_trigger = yes - NOT = { has_council_position = councillor_spouse } + NAND = { + has_council_position = councillor_court_chaplain + faith = { has_doctrine_parameter = clerical_appointment_fixed } + } + NOT = { + OR = { + has_council_position = councillor_spouse + AND = { + this = liege.diarch + liege = { has_diarchy_active_parameter = diarchy_is_vizierate } + } + } + } exists = $COURT_OWNER$ #so we can have the argument but get no errors } can_be_court_chaplain_trigger = { save_temporary_scope_as = court_chaplain_check can_be_councillor_basics_trigger = yes - NOT = { has_council_position = councillor_spouse } + NOT = { + OR = { + has_council_position = councillor_spouse + AND = { + this = liege.diarch + liege = { has_diarchy_active_parameter = diarchy_is_vizierate } + } + } + } $COURT_OWNER$.faith = { has_allowed_gender_for_clergy = scope:court_chaplain_check } faith = $COURT_OWNER$.faith trigger_if = { @@ -134,7 +190,6 @@ can_be_spouse_councillor_trigger = { } } - councillor_loyalty_trigger = { weighted_calc_true_if = { amount >= 50 @@ -171,10 +226,10 @@ councillor_loyalty_trigger = { councillor_positive_event_opinion_trigger = { always = yes -# opinion = { -# target = liege -# value >= -20 -# } + # opinion = { + # target = liege + # value >= -20 + # } } ############################ @@ -192,7 +247,7 @@ is_blocked_from_being_fired_from_council_trigger = { text = "is_blocked_from_being_fired_from_council" subject = this object = $COURT_OWNER$ - + OR = { # Check in code if the court owner is prevented from firing the councilor # can_fire_position must take a council task as input, but checks the councilor behind the task. @@ -382,7 +437,7 @@ spouse_diplomacy_tier_2_trigger = { AND = { is_performing_council_task = task_court_politics OR = { - diplomacy >= spouse_skill_rating_2 + diplomacy >= spouse_skill_rating_2 has_character_modifier = councillor_spouse_diplomacy_2_modifier has_character_modifier = councillor_spouse_diplomacy_1_modifier has_trait = diplomat @@ -683,14 +738,14 @@ spymaster_task_find_secrets_court_has_minor_secrets_trigger = { NOT = { this = scope:councillor } any_secret = { spymaster_task_find_secrets_suitable_minor_secret_trigger = yes - } + } } any_courtier_or_guest = { has_any_secrets = yes NOT = { this = scope:councillor_liege } NOT = { this = scope:councillor } any_secret = { - spymaster_task_find_secrets_suitable_minor_secret_trigger = yes + spymaster_task_find_secrets_suitable_minor_secret_trigger = yes } } } @@ -701,7 +756,7 @@ spymaster_task_find_secrets_court_has_major_secrets_trigger = { AND = { has_any_secrets = yes any_secret = { - spymaster_task_find_secrets_suitable_major_secret_trigger = yes + spymaster_task_find_secrets_suitable_major_secret_trigger = yes } } any_vassal = { @@ -710,14 +765,14 @@ spymaster_task_find_secrets_court_has_major_secrets_trigger = { NOT = { this = scope:councillor } any_secret = { spymaster_task_find_secrets_suitable_major_secret_trigger = yes - } + } } any_courtier_or_guest = { has_any_secrets = yes NOT = { this = scope:councillor_liege } NOT = { this = scope:councillor } any_secret = { - spymaster_task_find_secrets_suitable_major_secret_trigger = yes + spymaster_task_find_secrets_suitable_major_secret_trigger = yes } } } @@ -765,7 +820,7 @@ spymaster_find_secrets_secret_target_is_interesting_to_me_trigger = { # Event triggers - # Defined here because they need to be used in event + council task desc +# Defined here because they need to be used in event + council task desc marshal_task_1101_county_trigger = { holder = root @@ -824,6 +879,13 @@ councillor_liege_has_family_business_bonus = { } } +councillor_liege_has_consulted_house_bonus = { + scope:councillor_liege ?= { has_character_flag = fp3_consulted_house } + exists = scope:councillor_liege.house + exists = scope:councillor.house + scope:councillor ?= { house = scope:councillor_liege.house } +} + councillor_is_unskilled_trigger = { trigger_if = { limit = { this = $EMPLOYER$.cp:councillor_chancellor } @@ -864,7 +926,11 @@ councillor_is_skilled_trigger = { trigger_else = { learning > decent_skill_rating } } - +#FP3 Legacy Track: +councillor_liege_has_khvarenah_legacy_perk = { + exists = scope:councillor_liege.dynasty + scope:councillor_liege.dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_4 } +} can_be_knight_now_light_trigger = { is_imprisoned = no diff --git a/common/scripted_triggers/00_court_position_triggers.txt b/common/scripted_triggers/00_court_position_triggers.txt index 89252c013b..f045414622 100644 --- a/common/scripted_triggers/00_court_position_triggers.txt +++ b/common/scripted_triggers/00_court_position_triggers.txt @@ -62,6 +62,7 @@ court_position_does_not_already_have_a_job_trigger = { has_court_position = travel_leader_court_position has_court_position = wet_nurse_court_position is_councillor = yes + is_tax_collector = yes } } } diff --git a/common/scripted_triggers/00_courtier_guest_management_triggers.txt b/common/scripted_triggers/00_courtier_guest_management_triggers.txt index 25fc7acc54..13232cc568 100644 --- a/common/scripted_triggers/00_courtier_guest_management_triggers.txt +++ b/common/scripted_triggers/00_courtier_guest_management_triggers.txt @@ -95,6 +95,7 @@ courtier_allowed_to_leave_trigger = { } has_relation_lover = scope:liege is_knight_of = scope:liege + is_tax_collector_of = scope:liege any_relation = { type = ward OR = { @@ -683,7 +684,6 @@ guest_marriage_candidate_trigger = { } } - ###POOL TRIGGERS### is_visitable_relation_trigger = { exists = capital_province diff --git a/common/scripted_triggers/00_diarchy_scripted_triggers.txt b/common/scripted_triggers/00_diarchy_scripted_triggers.txt index 5e7ebde3ae..965c33802b 100644 --- a/common/scripted_triggers/00_diarchy_scripted_triggers.txt +++ b/common/scripted_triggers/00_diarchy_scripted_triggers.txt @@ -21,18 +21,31 @@ character_hates_scope_due_to_strife_guts_trigger = { # This is hooked up to the should_invalidate_diarch rule, referenced by Code. is_diarch_valid_trigger = { - # If you're in an entrenched regency for some reason, you can't manage a regency yourself. + # Basics. is_alive = yes + is_adult = yes + # If you're in an entrenched regency for some reason, you can't manage a regency yourself. NOT = { has_diarchy_parameter = diarchy_type_is_entrenched_regency } # You need to be mentally & physically sound, to some degree. regency_for_personal_reasons_trigger = no - #We cannot be at war with our liege + # Diarchy-specific checks. + ## Viziers. trigger_if = { limit = { - exists = liege + liege ?= { has_diarchy_parameter = diarchy_is_vizierate } } - NOT = { - is_at_war_with = liege + # Must match their liege's gender preference. + diarch_matches_liege_faith_gender_preference_trigger = yes + # Viziers aren't big land-owners. + ## Not in this way, at least. + highest_held_title_tier <= tier_barony + } + # We cannot be at war with our liege. + OR = { + is_independent_ruler = yes + AND = { + exists = liege + NOT = { is_at_war_with = liege } } } # If you have somehow managed to get invited to/start an activity outside of your realm (e.g., you're the spouse in a grand wedding), then yeah, you forfeit your position. @@ -58,13 +71,10 @@ is_diarch_valid_trigger = { travel_would_cause_regency_trigger = { REALM_HOLDER = this.liege } } } - trigger_if = { - limit = { - is_ai = yes - } - NOT = { - has_character_flag = cannot_be_diarch - } + # Event blocks. + OR = { + is_ai = no + NOT = { has_character_flag = cannot_be_diarch } } } @@ -121,6 +131,23 @@ diarch_callable_in_internal_war_trigger = { } } +diarch_matches_liege_faith_gender_preference_trigger = { + OR = { + # Female preference. + AND = { + is_female = yes + liege.faith = { has_doctrine = doctrine_gender_female_dominated } + } + # Male preference. + AND = { + is_male = yes + liege.faith = { has_doctrine = doctrine_gender_male_dominated } + } + # Equality. + liege.faith = { has_doctrine = doctrine_gender_equal } + } +} + ################################################## # Setup Triggers @@ -317,6 +344,60 @@ cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { } } +interaction_actor_is_liege_with_vizierate_trigger = { + scope:recipient.liege ?= scope:actor + scope:actor = { has_diarchy_active_parameter = diarchy_is_vizierate } +} + +is_valid_basic_candidate_for_vizier_trigger = { + is_diarch_valid_trigger = yes + diarch_matches_liege_faith_gender_preference_trigger = yes +} + +################################################## +# Succession Triggers + +diarch_candidate_shares_relationship_with_lesser_consort_trigger = { + # Grab the right scope. + save_temporary_scope_as = char_temp + # Now check. + any_relation = { + type = $RELATION$ + is_consort_of = scope:char_temp.liege + OR = { + NOT = { exists = scope:char_temp.liege.primary_spouse } + NOT = { this = scope:char_temp.liege.primary_spouse } + } + } +} + +diarch_candidate_shares_relationship_with_child_trigger = { + # Grab the right scope. + save_temporary_scope_as = char_temp + # Now check. + any_relation = { + type = $RELATION$ + is_adult = yes + is_child_of = scope:char_temp.liege + is_courtier_of = scope:char_temp.liege + } +} + +diarch_candidate_shares_minority_status_with_trigger = { + # For performance purposes, let's do the most obvious check first. + any_liege_or_above = { + NOT = { $QUALITY$ = scope:char_temp.$QUALITY$ } + } + # Grab the right scope. + save_temporary_scope_as = char_temp + liege = { + # Ok, now make sure we connect to at least one suitable character. + ## Yes we're putting a whole trigger in the scripted parameter. + ### No one will believe you if you try to tell them of my crimes. + $TRIGGER_OR_TARGET$ = { $QUALITY$ = scope:char_temp.$QUALITY$ } + } +} + ################################################## # Important Actions diff --git a/common/scripted_triggers/00_dynasty_triggers.txt b/common/scripted_triggers/00_dynasty_triggers.txt index c2acacb0ad..88fb5bc8d5 100644 --- a/common/scripted_triggers/00_dynasty_triggers.txt +++ b/common/scripted_triggers/00_dynasty_triggers.txt @@ -77,6 +77,11 @@ can_start_new_legacy_track_trigger = { NOT = { has_dynasty_perk = fp2_coterie_legacy_1 } has_dynasty_perk = fp2_coterie_legacy_5 } + OR = { + NOT = { has_dlc_feature = legacy_of_persia } + NOT = { has_dynasty_perk = fp3_khvarenah_legacy_1 } + has_dynasty_perk = fp3_khvarenah_legacy_5 + } } } diff --git a/common/scripted_triggers/00_faction_triggers.txt b/common/scripted_triggers/00_faction_triggers.txt index e193c99e0a..d619fc4c90 100644 --- a/common/scripted_triggers/00_faction_triggers.txt +++ b/common/scripted_triggers/00_faction_triggers.txt @@ -92,6 +92,24 @@ common_can_character_create_trigger = { } } +base_faction_trigger = { + NOT = { has_truce = scope:target } + can_join_or_create_faction_against = { + who = scope:target + faction = $FACTION_TYPE$ + } + scope:target = { NOT = { has_strong_hook = root } } + trigger_if = { + limit = { + exists = scope:recipient + } + scope:recipient = { + NOT = { is_at_war_with = scope:actor } + NOT = { has_trait = incapable } + } + } +} + ############################ # Popular Faction Triggers # diff --git a/common/scripted_triggers/00_has_dlc_scripted_triggers.txt b/common/scripted_triggers/00_has_dlc_scripted_triggers.txt index 2803d62ed3..9a91831794 100644 --- a/common/scripted_triggers/00_has_dlc_scripted_triggers.txt +++ b/common/scripted_triggers/00_has_dlc_scripted_triggers.txt @@ -23,6 +23,11 @@ has_fp2_dlc_trigger = { has_dlc_feature = the_fate_of_iberia } +has_fp3_dlc_trigger = { + # Does the host have the appropriate DLC? + has_dlc_feature = legacy_of_persia +} + ################################################## # Expansion Pack Triggers diff --git a/common/scripted_triggers/00_scheme_triggers.txt b/common/scripted_triggers/00_scheme_triggers.txt index 70443794a6..3a424bf471 100644 --- a/common/scripted_triggers/00_scheme_triggers.txt +++ b/common/scripted_triggers/00_scheme_triggers.txt @@ -254,6 +254,43 @@ build_murder_targets_trigger = { } } } + trigger_if = { # Greedy people want to murder their liege's high aptitude tax collector... + limit = { + ai_greed >= low_positive_ai_value + is_independent_ruler = no + exists = liege + liege = { + any_tax_collector = { + any_tax_collector_vassal = { + this = root + } + check_tax_collector_aptitude = { + CHARACTER = this + VALUE >= 4 + } + add_to_temporary_list = murder_targets + } + } + } + } + trigger_if = { # Some Clan members want to murder Extolled people out of pure spite and malice + limit = { + ai_greed >= 0 + ai_vengefulness >= 0 + ai_compassion <= medium_negative_ai_value + house.house_head ?= { + is_ruler = yes + government_has_flag = government_is_clan + } + ai_wants_low_unity = yes + } + house = { + any_house_member = { + has_trait = extolled + add_to_temporary_list = murder_targets + } + } + } any_consort = { # Unfaithful spouses trigger_if = { limit = { @@ -360,9 +397,13 @@ can_use_befriend_scheme_trigger = { culture = { has_cultural_parameter = automatic_befriend_access } #any_character_struggle = { # involvement = involved - # is_struggle_type = iberian_struggle # has_struggle_phase_parameter = struggle_unlocks_befriend_schemes_for_everyone #} + AND = { + government_has_flag = government_is_clan + is_in_same_clan_as_trigger = { CHARACTER = $TARGET$ } + house = { has_house_unity_stage = harmonious } + } } } diff --git a/common/scripted_triggers/00_secret_triggers.txt b/common/scripted_triggers/00_secret_triggers.txt index 8e5b5af984..4665b50af6 100644 --- a/common/scripted_triggers/00_secret_triggers.txt +++ b/common/scripted_triggers/00_secret_triggers.txt @@ -89,6 +89,19 @@ is_blackmailable_secret_trigger = { #Should not include is known scope:is_blackmailable_secret_blackmailer = { is_witch_trigger = yes } } } + # Can't blackmail a crypto-religionist of the same faith + trigger_if = { + limit = { secret_type = secret_crypto_religionist } + custom_description = { + text = cannot_blackmail_crypto_religionist_of_same_faith + scope:is_blackmailable_secret_blackmailer = { + NOR = { + exists = secret_faith + secret_faith ?= scope:is_blackmailable_secret_participant.secret_faith + } + } + } + } trigger_if = { limit = { secret_type = secret_lover } custom_description = { @@ -136,6 +149,7 @@ secret_is_always_interesting_trigger = { #Even if they can't be used for blackma secret_type = secret_murder_attempt secret_type = secret_disputed_heritage secret_type = secret_unmarried_illegitimate_child + secret_type = secret_crypto_religionist } } @@ -432,6 +446,22 @@ secret_type_is_blackmailable_simple_trigger = { $BLACKMAILER$ = { is_witch_trigger = yes } } } + trigger_else_if = { + limit = { + scope:type_flag = flag:secret_crypto_religionist + } + secret_crypto_religionist_is_valid_trigger = { + OWNER = $TARGET$ + } + OR = { + secret_crypto_religionist_is_shunned_trigger = { + OWNER = $TARGET$ + } + secret_crypto_religionist_is_criminal_trigger = { + OWNER = $TARGET$ + } + } + } trigger_else = { #Murder stuff, Bastard secrets, etc. always = no } @@ -525,5 +555,19 @@ random_blackmailable_secret_can_be_added_simple_trigger = { } } } + AND = { + secret_type_is_blackmailable_simple_trigger = { + TYPE = secret_crypto_religionist + TARGET = scope:target + BLACKMAILER = $BLACKMAILER$ + } + scope:target = { + NOT = { + any_secret = { + secret_type = secret_crypto_religionist + } + } + } + } } } diff --git a/common/scripted_triggers/00_secret_type_triggers.txt b/common/scripted_triggers/00_secret_type_triggers.txt index 9441a5c771..ab481b23c0 100644 --- a/common/scripted_triggers/00_secret_type_triggers.txt +++ b/common/scripted_triggers/00_secret_type_triggers.txt @@ -371,6 +371,27 @@ secret_witch_is_criminal_trigger = { } # SECRET WITCH - END +# SECRET CRYPTO-RELIGIONIST +# Don't add the crypto-religionist trait if they practice that faith in the open +secret_crypto_religionist_is_valid_trigger = { + $OWNER$ = { + AND = { + exists = secret_faith + NOT = { secret_faith = $OWNER$.faith } + } + } +} + +# Same as secret non-believer +secret_crypto_religionist_is_shunned_trigger = { + $OWNER$ = { is_clergy = no } +} + +secret_crypto_religionist_is_criminal_trigger = { + $OWNER$ = { is_clergy = yes } +} +# SECRET CRYPTO-RELIGIONIST - END + # SECRET EMBEZZLER secret_embezzler_is_valid_trigger = { # Can't embezzle from yourself. diff --git a/common/scripted_triggers/00_terrain_triggers.txt b/common/scripted_triggers/00_terrain_triggers.txt index 5b058175b2..2e0e70cfa2 100644 --- a/common/scripted_triggers/00_terrain_triggers.txt +++ b/common/scripted_triggers/00_terrain_triggers.txt @@ -74,3 +74,14 @@ is_likely_to_contain_trees_trigger = { terrain = hills } } + +holds_county_with_water_trigger = { + any_held_county = { + any_county_province = { + NOR = { + terrain = desert + terrain = desert_mountains + } + } + } +} diff --git a/common/scripted_triggers/00_war_and_peace_triggers.txt b/common/scripted_triggers/00_war_and_peace_triggers.txt index 0603584ad2..b37de92d44 100644 --- a/common/scripted_triggers/00_war_and_peace_triggers.txt +++ b/common/scripted_triggers/00_war_and_peace_triggers.txt @@ -296,12 +296,14 @@ can_be_knight_trigger = { prowess >= 10 } has_trait = order_member # Order Members will fight for their faith even if their faith says no - NOT = { + NOR = { has_trait = blind + has_court_position = master_assassin_court_position #FP3 addition } } NOT = { has_character_flag = wc_cannot_serve_in_army } is_ai = yes + } can_be_commander_basic_trigger = { @@ -456,6 +458,20 @@ using_hierarchical_cb_trigger = { } } +# In case is_civil_war is causing issues. +using_civil_war_cb_trigger = { + OR = { + using_cb = independence_faction_war + using_cb = liberty_faction_war + using_cb = populist_war + using_cb = claimant_faction_war + using_cb = depose_war + using_cb = refused_liege_demand_war + using_cb = nation_fracturing_faction_war + using_cb = peasant_war + } +} + special_invasion_cb_seize_land_in_region_trigger = { OR = { AND = { # For Duchies diff --git a/common/scripted_triggers/01_fp1_scripted_triggers.txt b/common/scripted_triggers/01_fp1_scripted_triggers.txt index 708c3698a9..0c35b9607d 100644 --- a/common/scripted_triggers/01_fp1_scripted_triggers.txt +++ b/common/scripted_triggers/01_fp1_scripted_triggers.txt @@ -147,12 +147,10 @@ fp1_va_eligible_for_scandinavian_troops_trigger = { # Illustration Triggers fp1_should_use_norse_graphics_trigger = { - has_fp1_dlc_trigger = yes culture = { has_building_gfx = norse_building_gfx } } fp1_should_use_extra_tribal_graphics_trigger = { - has_fp1_dlc_trigger = yes should_use_tribal_realm_palace_graphics_trigger = yes } diff --git a/common/scripted_triggers/05_bp2_hostage_triggers.txt b/common/scripted_triggers/05_bp2_hostage_triggers.txt index 0809b98c8d..b286022a1f 100644 --- a/common/scripted_triggers/05_bp2_hostage_triggers.txt +++ b/common/scripted_triggers/05_bp2_hostage_triggers.txt @@ -88,7 +88,7 @@ bp2_valid_to_demand_hostage_ai_trigger = { scope:recipient = { has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor } } - scope:actor.house.house_head ?= { + scope:actor.house.house_head = { any_owned_story = { story_type = story_cycle_house_feud var:house_feud_house ?= scope:recipient.house @@ -112,7 +112,7 @@ bp2_valid_to_exchange_hostage_ai_trigger = { scope:recipient = { has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor } } - scope:actor.house.house_head ?= { + scope:actor.house.house_head = { any_owned_story = { story_type = story_cycle_house_feud var:house_feud_house ?= scope:recipient.house diff --git a/common/scripted_triggers/06_fp3_scripted_triggers.txt b/common/scripted_triggers/06_fp3_scripted_triggers.txt new file mode 100644 index 0000000000..3ab21ef33b --- /dev/null +++ b/common/scripted_triggers/06_fp3_scripted_triggers.txt @@ -0,0 +1,480 @@ +fp3_should_use_iranian_graphics_trigger = { + culture = { has_building_gfx = iranian_building_gfx } +} + +eligible_for_fp3_khvarenah_legacy_trigger = { + has_fp3_dlc_trigger = yes + dynasty = { + OR = { + dynast = { + culture = { + OR = { + has_cultural_pillar = heritage_iranian + any_parent_culture_or_above = { + has_cultural_pillar = heritage_iranian + } + } + } + } + has_dynasty_perk = fp3_khvarenah_legacy_1 + } + } +} + +fp3_warrior_culture_trigger = { + AND = { + OR = { + has_cultural_pillar = ethos_bellicose + has_cultural_tradition = tradition_swords_for_hire + } + OR = { + has_cultural_pillar = heritage_iranian + has_cultural_pillar = heritage_arabic + has_cultural_pillar = heritage_turkic + has_cultural_pillar = heritage_tocharian + } + } +} + +fp3_custom_divinity_for_zoroastrianism_faiths = { + OR = { + faith.religion = faith:mazdayasna.religion + faith.religion = faith:gayomarthianism.religion + faith.religion = faith:khurmazta.religion + faith.religion = faith:zurvanism.religion + faith.religion = faith:urartuism.religion + faith.religion = faith:mazdakism.religion + faith.religion = faith:khurramism.religion + } +} + +fp3_sufism_enthusiast_trigger = { + has_religion = religion:islam_religion + learning > good_skill_level + OR = { + faith = { has_doctrine = tenet_esotericism } + faith = { has_doctrine_parameter = meditation_mechanics_active } + has_character_modifier = hallucinogenic_visions_uplifting_modifier + has_character_modifier = cosmic_insights_modifier + has_character_modifier = fp3_sufi_initiate_modifier + has_character_modifier = foreboding_visions_modifier + has_character_modifier = mysterious_prophetess_illness_modifier + learning >= excellent_skill_level + } +} + +# Used for speeding-up debug. Has little to no impact on performance, does not cause errors, or affect player experience. +is_developer_testing_trigger = { + is_ai = no + debug_only = yes + has_multiple_players = no +} + +fp3_will_remain_in_caliphate_regardless_of_takeover = { + OR = { + opinion = { # They must either not hate you + target = scope:struggle_ender + value > -29 # todo_cd_hci balance here is bad, since attaining the level necessary to take this decision causes everyone to like you! + } + opinion = { # Or really want to stay by the side of the caliph + target = scope:struggle_liege + value > 54 + } + } +} + +fp3_eligible_for_yearly_events_trigger = { + has_fp3_dlc_trigger = yes + OR = { + culture = { has_cultural_pillar = heritage_iranian } + culture = { has_cultural_pillar = heritage_turkic } + culture = { has_cultural_pillar = heritage_mongolic } + culture = { has_cultural_pillar = heritage_arabic } + } + any_realm_county = { # Most events are geographical in nature + any_county_province = { geographical_region = world_persian_empire } + } +} + +fp3_is_valid_futuwaa_member = { + $SPONSOR$.capital_province ?= { this = prev.location } # Prevents error log errors from dumbo AI + is_ai = yes # TODO_CD_EREN: Allow players to benefit too (requires sending them interface messages that their skills have increased) + age > 12 + age < 25 + is_married = no + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = $SPONSOR$ } +} + +fp3_is_valid_madrasa_pupil = { + $SPONSOR$.capital_province ?= { this = prev.location } # Prevents error log errors from dumbo AI + is_ai = yes # TODO_CD_EREN: Allow players to benefit too (see above) + age > 8 + age < 16 + NOT = { has_character_flag = studying_at_university } + #Gender rules + OR = { + $SPONSOR$ = { has_realm_law = equal_law } + AND = { + $SPONSOR$ = { + OR = { + has_realm_law = female_only_law + has_realm_law = female_preference_law + } + } + is_female = yes + } + AND = { + $SPONSOR$ = { + OR = { + has_realm_law = male_only_law + has_realm_law = male_preference_law + } + } + is_male = yes + } + } +} + +fp3_valid_shia_head = { + calc_true_if = { + amount >= 2 + + # Sayyids get a free pass. + has_trait = sayyid + # The wise get a free pass. + has_trait = lifestyle_mystic + piety_level >= very_high_piety_level + # Having many faithful counties. + custom_description = { + text = claim_the_imamate_decision.need_at_least_fifteen_same_faith_counties + any_sub_realm_county = { + count >= claim_the_imamate_decision_same_faith_greater_county_count + faith = root.faith + } + } + # Ancient Authority legacy. + dynasty ?= { has_dynasty_perk = fp3_khvarenah_legacy_4 } + } +} + +fp3_valid_muhakkima_head = { + calc_true_if = { + amount >= 2 + + # Sayyids get a free pass. + has_trait = sayyid + piety_level >= very_high_piety_level + # Having many faithful counties + custom_description = { + text = claim_the_imamate_decision.need_at_least_fifteen_same_faith_counties + any_sub_realm_county = { + count >= claim_the_imamate_decision_same_faith_greater_county_count + faith = root.faith + } + } + # Famed + prestige_level >= 4 + # #Muhakkima cares about justified warfare - and a justified cause. + OR = { + has_trait = faith_warrior #mujahid really + has_trait = theologian + } + } +} + +fp3_does_this_player_care_about_the_persian_struggle = { + save_temporary_scope_as = char_temp + OR = { + capital_province ?= { + OR = { # Is in region + geographical_region = world_middle_east_persia + geographical_region = world_africa_north_east + } + } + struggle:persian_struggle = { is_culture_involved_in_struggle = scope:char_temp.culture } + struggle:persian_struggle = { is_faith_involved_in_struggle = scope:char_temp.faith } + # Ping islamic and zoroastrian players as they might be interested + religion = religion:islam_religion + religion = religion:zoroastrianism_religion + fp3_character_involved_in_struggle_trigger = yes + fp3_character_interloper_in_struggle_trigger = yes + } +} + +fp3_reward_from_vassalization_ending = { + has_fp3_dlc_trigger = yes + + # Only available when the vassalization happened + exists = global_var:fp3_struggle_ending + global_var:fp3_struggle_ending = flag:fp3_struggle_vassalize_caliph_ending + + #need to be the liege of the caliph or from their House + + scope:recipient = { + any_held_title = { + this = title:d_sunni + } + } + + scope:actor.house ?= scope:recipient.top_liege.house +} + +fp3_struggle_involves_one_supporter_and_one_detractor = { + OR = { + AND = { + $FIRST$ = { has_trait = fp3_struggle_detractor } + $SECOND$ = { has_trait = fp3_struggle_supporter } + } + AND = { + $FIRST$ = { has_trait = fp3_struggle_supporter } + $SECOND$ = { has_trait = fp3_struggle_detractor } + } + } +} + +fp3_struggle_scoped_is_the_arabian_caliph_trigger = { + OR = { + has_title = title:e_arabia + has_title = title:d_sunni + } +} + +fp3_fortress_of_faith_county_trigger = { + faith = { save_temporary_scope_as = compare_faith } + root.faith = { + faith_hostility_level = { + target = scope:compare_faith + value < faith_evil_level + } + } +} + +fp3_is_valid_loyal_puppet = { # Install a suitable lackey to do your bidding + has_trait = fp3_struggle_supporter + # Can't be friends w/liege or indebted to them + liege ?= { + NOR = { + has_relation_friend = prev + has_hook = prev + } + } + primary_title.tier >= tier_county # We don't want to promote baron to avoid having Republic or Theocracies realms +} + +fp3_proper_gender_for_dynastic_ambition_trigger = { + OR = { #checking for appropriate gender + AND = { + root = { + OR = { + has_realm_law = male_preference_law + has_realm_law = male_only_law + } + } + is_male = yes + } + AND = { + root = { + OR = { + has_realm_law = female_preference_law + has_realm_law = female_only_law + } + } + is_female = yes + } + AND = { + root = { has_realm_law = equal_law } + OR = { + is_female = yes + is_male = yes + } + } + } +} + +fp3_character_any_involvement_persian_struggle_trigger = { + has_fp3_dlc_trigger = yes + OR = { + fp3_character_involved_in_struggle_trigger = yes + fp3_character_interloper_in_struggle_trigger = yes + } +} + +fp3_character_involved_in_struggle_trigger = { + has_fp3_dlc_trigger = yes + any_character_struggle = { + involvement = involved + is_struggle_type = persian_struggle + } +} + +fp3_character_interloper_in_struggle_trigger = { + has_fp3_dlc_trigger = yes + any_character_struggle = { + involvement = interloper + is_struggle_type = persian_struggle + } +} + +fp3_character_uninvolved_in_struggle_trigger = { + has_fp3_dlc_trigger = yes + exists = struggle:persian_struggle + fp3_character_interloper_in_struggle_trigger = no + fp3_character_involved_in_struggle_trigger = no +} + +fp3_struggle_is_the_caliph = { + AND = { + any_held_title = { + this = title:d_sunni + } + any_held_title = { + this = title:e_arabia + } + } +} + +fp3_embellish_capital_decision_character_trigger = { + is_capable_adult_ai = yes + is_imprisoned = no + is_healthy = yes + NOR = { + has_relation_rival = root + is_vassal_of = root + } +} + +fp3_name_read_in_friday_prayer_decision_liege_requirements_trigger = { + OR = { + is_independent_ruler = yes + custom_description = { + text = name_read_in_friday_prayer_crown_authority + is_independent_ruler = no + liege ?= { has_realm_law = crown_authority_0 } + } + AND = { + has_trait = fp3_struggle_detractor + liege = { has_title = title:d_sunni } + } + # We have to trigger_if this for tooltip reasons. + trigger_if = { + limit = { is_independent_ruler = no } + liege = { government_has_flag = government_is_tribal } + } + } +} + +favour_skilled_outsiders_decision_valid_character_to_take_trigger = { + OR = { + has_perk = meritocracy_perk + government_has_flag = government_is_clan + culture = { has_cultural_pillar = ethos_egalitarian } + calc_true_if = { + amount >= 2 + has_trait = calm + has_trait = humble + has_trait = ambitious + } + } +} + +favour_skilled_outsiders_decision_valid_county_to_generate_trigger = { + culture = { + # We don't technically need a custom tooltip for this, but the formatting looks much nicer. + custom_tooltip = { + text = favour_skilled_outsiders_decision.tt.not_share_your_heritage + NOT = { has_same_culture_heritage = root.culture } + } + trigger_if = { + limit = { exists = root.cp:councillor_chancellor } + custom_tooltip = { + text = favour_skilled_outsiders_decision.tt.not_share_chancellor_heritage + NOT = { has_same_culture_heritage = root.cp:councillor_chancellor.culture } + } + } + trigger_if = { + limit = { exists = root.cp:councillor_marshal } + custom_tooltip = { + text = favour_skilled_outsiders_decision.tt.not_share_marshal_heritage + NOT = { has_same_culture_heritage = root.cp:councillor_marshal.culture } + } + } + trigger_if = { + limit = { exists = root.cp:councillor_steward } + custom_tooltip = { + text = favour_skilled_outsiders_decision.tt.not_share_steward_heritage + NOT = { has_same_culture_heritage = root.cp:councillor_steward.culture } + } + } + trigger_if = { + limit = { exists = root.cp:councillor_spymaster } + custom_tooltip = { + text = favour_skilled_outsiders_decision.tt.not_share_spymaster_heritage + NOT = { has_same_culture_heritage = root.cp:councillor_spymaster.culture } + } + } + trigger_if = { + limit = { exists = root.cp:councillor_court_chaplain } + custom_tooltip = { + text = favour_skilled_outsiders_decision.tt.not_share_court_chaplain_heritage + NOT = { has_same_culture_heritage = root.cp:councillor_court_chaplain.culture } + } + } + trigger_if = { + limit = { + root = { is_independent_ruler = no } + } + custom_tooltip = { + text = favour_skilled_outsiders_decision.tt.not_share_liege_heritage + save_temporary_scope_as = culture_temp + NOT = { + root = { + any_liege_or_above = { + culture = { has_same_culture_heritage = scope:culture_temp } + } + } + } + } + } + } +} + +favour_skilled_outsiders_decision_grab_courtlies_trigger = { + OR = { + NOT = { exists = scope:outsider_select } + NOT = { + culture = { has_same_culture_heritage = scope:outsider_select.culture } + } + } + has_vassal_stance = courtly +} + +favour_skilled_outsiders_decision_grab_landless_councillors_trigger = { + OR = { + NOT = { exists = scope:outsider_select } + NOT = { + culture = { has_same_culture_heritage = scope:outsider_select.culture } + } + } + is_landed = no +} + +favour_skilled_outsiders_decision_non_courtlies_trigger = { + OR = { + NOT = { exists = scope:outsider_select } + NOT = { + culture = { has_same_culture_heritage = scope:outsider_select.culture } + } + } + NOT = { has_vassal_stance = courtly } +} + +has_clan_succession_law = { + is_ruler = yes + OR = { + has_realm_law = clan_antagonistic_partition_succession_law + has_realm_law = clan_competitive_partition_succession_law + has_realm_law = clan_impassive_partition_succession_law + has_realm_law = clan_friendly_partition_succession_law + has_realm_law = clan_harmonious_partition_succession_law + } +} diff --git a/common/scripted_triggers/20_health_triggers.txt b/common/scripted_triggers/20_health_triggers.txt index d799992c0e..aa9f7ecdb7 100644 --- a/common/scripted_triggers/20_health_triggers.txt +++ b/common/scripted_triggers/20_health_triggers.txt @@ -531,7 +531,6 @@ has_disfigurement_type_disease_trigger = { has_short_disease_type_trigger = { - exists = scope:disease_type OR = { scope:disease_type = flag:ill scope:disease_type = flag:pneumonic #3 @@ -542,7 +541,6 @@ has_short_disease_type_trigger = { } has_slow_disease_type_trigger = { - exists = scope:disease_type OR = { scope:disease_type = flag:consumption #2 scope:disease_type = flag:cancer #3 @@ -553,14 +551,12 @@ has_slow_disease_type_trigger = { } has_high_health_penalty_disease_type_trigger = { #3.5 to 6.5 - exists = scope:disease_type scope:disease_type = flag:typhus #3.5 scope:disease_type = flag:smallpox #3.5 scope:disease_type = flag:bubonic_plague #6.5 } has_low_health_penalty_disease_type_trigger = { #3 and lower - exists = scope:disease_type scope:disease_type = flag:ill #1 scope:disease_type = flag:great_pox #1 scope:disease_type = flag:gout_ridden #1.5 @@ -571,7 +567,6 @@ has_low_health_penalty_disease_type_trigger = { #3 and lower } minor_disease_flag_for_notification_trigger = { - exists = scope:disease_type OR = { scope:disease_type = flag:ill scope:disease_type = flag:gout_ridden From 35f43451082860b1b68ae23936076306367a3bb0 Mon Sep 17 00:00:00 2001 From: Grekopithikos Date: Sat, 11 Nov 2023 11:08:42 +0200 Subject: [PATCH 02/82] . --- common/laws/00_realm_laws.txt | 8 +- common/laws/00_succession_laws.txt | 371 +++++++- common/laws/01_title_succession_laws.txt | 36 +- .../pilgrimage_activity/pilgrimage_events.txt | 103 ++- .../pilgrimage_intent_events.txt | 36 + .../councillor_spouse_intrigue_events.txt | 13 - .../marshal_task_events.txt | 449 ++++++++++ .../spymaster_task_events.txt | 141 +++ .../steward_task_events.txt | 838 +++++++++++++++++- .../introduce_court_fashion_events.txt | 2 +- .../court_events/sumptuary_debate_events.txt | 62 +- .../prison_events/dungeon_ongoing_events.txt | 648 +++++++++++++- 12 files changed, 2595 insertions(+), 112 deletions(-) diff --git a/common/laws/00_realm_laws.txt b/common/laws/00_realm_laws.txt index 7028828bb6..e0d6269356 100644 --- a/common/laws/00_realm_laws.txt +++ b/common/laws/00_realm_laws.txt @@ -98,7 +98,7 @@ crown_authority = { courtly_opinion = -5 zealot_opinion = -10 minority_opinion = -10 - vassal_tax_mult = 0.1 + vassal_tax_contribution_mult = 0.1 vassal_levy_contribution_mult = 0.1 } flag = uses_crown_authority @@ -168,7 +168,7 @@ crown_authority = { courtly_opinion = -10 zealot_opinion = -20 minority_opinion = -30 - vassal_tax_mult = 0.25 + vassal_tax_contribution_mult = 0.25 vassal_levy_contribution_mult = 0.25 } flag = uses_crown_authority @@ -232,7 +232,6 @@ tribal_authority = { flag = uses_tribal_authority flag = imprisonment_toggle_enable - # Warcraft can_keep = { realm_law_use_tribal_authority = yes } #Imprisonment is disabled if you have this law. Script is in the interaction, currently in 00_prison_interactions. @@ -253,7 +252,6 @@ tribal_authority = { flag = can_change_succession_laws flag = imprisonment_toggle_on - # Warcraft can_keep = { realm_law_use_tribal_authority = yes } can_pass = { @@ -319,7 +317,6 @@ tribal_authority = { flag = vassal_retraction_allowed flag = diarchs_want_to_subsidise_without_this_flag - # Warcraft can_keep = { realm_law_use_tribal_authority = yes } can_pass = { @@ -385,7 +382,6 @@ tribal_authority = { #Settling is disabled unless you have this law. Script is in the decisions, currently in 80_major_decisions. #Reforming pagan religions (but not creating other faiths) is disabled unless you have this law. Script is in the reformation prereqs, currently in 00_rules. - # Warcraft can_keep = { realm_law_use_tribal_authority = yes } can_pass = { diff --git a/common/laws/00_succession_laws.txt b/common/laws/00_succession_laws.txt index f4700566af..8a0b22370e 100644 --- a/common/laws/00_succession_laws.txt +++ b/common/laws/00_succession_laws.txt @@ -1,4 +1,4 @@ -succession_order_laws = { + succession_order_laws = { flag = succession_order_laws confederate_partition_succession_law = { @@ -49,6 +49,10 @@ pass_cost = { prestige = change_succession_law_prestige_cost } + + potential = { + NOT = { government_has_flag = government_is_clan } + } } partition_succession_law = { @@ -101,6 +105,10 @@ value = 1 } } + + potential = { + NOT = { government_has_flag = government_is_clan } + } } high_partition_succession_law = { @@ -157,6 +165,10 @@ value = 2 } } + + potential = { + NOT = { government_has_flag = government_is_clan } + } } single_heir_succession_law = { @@ -176,6 +188,12 @@ } can_pass = { can_change_succession_law_trigger = yes + trigger_if = { + limit = { + government_has_flag = government_is_clan + } + piety_level >= 3 + } } should_start_with = { historical_succession_access_single_heir_succession_law_trigger = yes @@ -195,22 +213,25 @@ } pass_cost = { prestige = change_succession_law_prestige_cost + piety = { + value = 0 + if = { + limit = { + government_has_flag = government_is_clan + } + add = { + desc = "clan_government_cost_tooltip" + value = 1500 + } + } + } } revoke_cost = { prestige = change_succession_law_prestige_cost } ai_will_do = { - if = { - limit = { - OR = { - has_realm_law = confederate_partition_succession_law - has_realm_law = partition_succession_law - has_realm_law = high_partition_succession_law - } - } - value = 3 - } + value = 3 } } @@ -231,6 +252,12 @@ } can_pass = { can_change_succession_law_trigger = yes + trigger_if = { + limit = { + government_has_flag = government_is_clan + } + piety_level >= 3 + } } succession = { order_of_succession = inheritance @@ -248,13 +275,25 @@ } pass_cost = { prestige = change_succession_law_prestige_cost + piety = { + value = 0 + if = { + limit = { + government_has_flag = government_is_clan + } + add = { + desc = "clan_government_cost_tooltip" + value = 1500 + } + } + } } revoke_cost = { prestige = change_succession_law_prestige_cost } } - single_heir_dynasty_house = { + single_heir_dynasty_house = { # LAST CALL can_keep = { can_keep_single_heir_dynasty_house_trigger = yes # Vassal Contract allows it @@ -271,6 +310,12 @@ } can_pass = { can_change_single_heir_dynasty_house_succession_law_trigger = yes + trigger_if = { + limit = { + government_has_flag = government_is_clan + } + piety_level >= 3 + } } should_start_with = { historical_succession_access_single_heir_dynasty_house_trigger = yes @@ -290,6 +335,18 @@ } pass_cost = { prestige = change_succession_law_prestige_cost + piety = { + value = 0 + if = { + limit = { + government_has_flag = government_is_clan + } + add = { + desc = "clan_government_cost_tooltip" + value = 1500 + } + } + } } revoke_cost = { prestige = change_succession_law_prestige_cost @@ -322,6 +379,10 @@ faith = same_faith pool_character_config = pool_theocratic_succession } + + potential = { + can_have_bishop_theocratic_succession_law_trigger = yes + } } holy_order_succession_law = { @@ -339,6 +400,10 @@ faith = same_faith pool_character_config = pool_holy_order_succession } + + potential = { + can_have_holy_order_succession_law_trigger = yes + } } mercenary_company_succession_law = { @@ -355,6 +420,10 @@ order_of_succession = company pool_character_config = pool_mercenary_succession } + + potential = { + can_have_mercenary_succession_law_trigger = yes + } } city_succession_law = { @@ -373,6 +442,284 @@ } } + clan_antagonistic_partition_succession_law = { + can_keep = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } + } + can_pass = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } + } + can_have = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = antagonistic + } + } + + should_start_with = { + government_has_flag = government_is_clan + house ?= { has_house_unity_stage = antagonistic } + } + + potential = { + government_has_flag = government_is_clan + } + + requires_approve = { + NOT = { + government_has_flag = government_is_clan + } + } + + succession = { + order_of_succession = inheritance + traversal_order = children + rank = oldest + title_division = partition + } + + flag = same_house_vassals_gain_claim_on_primary_title + flag = house_unity_stage_antagonistic + + modifier = { + dynasty_house_opinion = -10 + glory_hound_opinion = 15 + zealot_opinion = 10 + player_heir_opinion = 10 + eligible_child_except_player_heir_opinion = 5 + } + + widget_name = "widget_clan_law" + } + + clan_competitive_partition_succession_law = { + can_keep = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = competitive + } + } + can_pass = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = competitive + } + } + can_have = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = competitive + } + } + should_start_with = { + government_has_flag = government_is_clan + house ?= { has_house_unity_stage = competitive } + } + + potential = { + government_has_flag = government_is_clan + } + + requires_approve = { + NOT = { + government_has_flag = government_is_clan + } + } + + succession = { + order_of_succession = inheritance + traversal_order = children + rank = oldest + title_division = partition + } + + flag = same_house_vassals_gain_claim_on_primary_title + flag = house_unity_stage_competitive + + modifier = { + glory_hound_opinion = 10 + zealot_opinion = 5 + player_heir_opinion = 10 + eligible_child_except_player_heir_opinion = 5 + } + + widget_name = "widget_clan_law" + } + + clan_impassive_partition_succession_law = { + can_keep = { + government_has_flag = government_is_clan + house ?= { + OR = { + has_house_unity_stage = impassive + # In case the house is fully unlanded + has_house_unity = no + } + } + } + can_pass = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = impassive + } + } + can_have = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = impassive + } + } + should_start_with = { + government_has_flag = government_is_clan + house ?= { + OR = { + has_house_unity_stage = impassive + # In case the house is fully unlanded + has_house_unity = no + } + } + } + + potential = { + government_has_flag = government_is_clan + } + + requires_approve = { + NOT = { + government_has_flag = government_is_clan + } + } + + flag = house_unity_stage_impassive + + succession = { + order_of_succession = inheritance + traversal_order = children + rank = oldest + title_division = partition + primary_heir_minimum_share = 0.25 + } + modifier = { + glory_hound_opinion = 5 + parochial_opinion = 5 + player_heir_opinion = 15 + } + + widget_name = "widget_clan_law" + } + + clan_friendly_partition_succession_law = { + can_keep = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = friendly + } + } + can_pass = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = friendly + } + } + can_have = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = friendly + } + } + should_start_with = { + government_has_flag = government_is_clan + house ?= { has_house_unity_stage = friendly } + } + + potential = { + government_has_flag = government_is_clan + } + + requires_approve = { + NOT = { + government_has_flag = government_is_clan + } + } + + flag = house_unity_stage_friendly + + succession = { + order_of_succession = inheritance + traversal_order = children + rank = oldest + title_division = partition + primary_heir_minimum_share = 0.33 + } + modifier = { + parochial_opinion = 10 + courtly_opinion = 5 + player_heir_opinion = 25 + } + + widget_name = "widget_clan_law" + } + + clan_harmonious_partition_succession_law = { + can_keep = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = harmonious + } + } + can_pass = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = harmonious + } + } + can_have = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = harmonious + } + } + should_start_with = { + government_has_flag = government_is_clan + house ?= { + has_house_unity_stage = harmonious + } + } + potential = { + government_has_flag = government_is_clan + } + + requires_approve = { + NOT = { + government_has_flag = government_is_clan + } + } + + flag = house_unity_stage_harmonious + + succession = { + order_of_succession = inheritance + traversal_order = children + rank = oldest + title_division = partition + primary_heir_minimum_share = 0.66 + } + modifier = { + parochial_opinion = 15 + courtly_opinion = 10 + player_heir_opinion = 40 + } + + widget_name = "widget_clan_law" + } +} + # Warcraft # Copies partition_succession_law dark_succession_law = { diff --git a/common/laws/01_title_succession_laws.txt b/common/laws/01_title_succession_laws.txt index 8a57045153..268c4145e4 100644 --- a/common/laws/01_title_succession_laws.txt +++ b/common/laws/01_title_succession_laws.txt @@ -4,9 +4,10 @@ can_have = { government_has_flag = government_is_feudal highest_held_title_tier >= tier_duchy - NOT = { #Cultures have their special flavor. + NOR = { #Cultures have their special flavor. #culture = { has_cultural_parameter = witenagemot_succession_enabled } culture = { has_cultural_parameter = scandinavian_elective_enabled } + culture = { has_cultural_parameter = tribal_elective_enabled } #FP3 addition } } can_pass = { @@ -94,6 +95,7 @@ prestige = change_title_succession_law_prestige_cost } } + #Thing scandinavian_elective_succession_law = { can_have = { @@ -124,6 +126,7 @@ prestige = change_title_succession_law_prestige_cost } } + #Tanistry gaelic_elective_succession_law = { can_have = { @@ -162,6 +165,37 @@ } } + #Jirga elective + tribal_elective_succession_law = { #FOR FP3 + can_have = { + OR = { + government_has_flag = government_is_feudal + government_has_flag = government_is_clan + government_has_flag = government_is_tribal + } + highest_held_title_tier >= tier_kingdom + } + can_pass = { + can_change_title_law_trigger = yes + culture = { has_cultural_parameter = tribal_elective_enabled } + } + can_title_have = { + can_title_have_law_general_trigger = yes + } + succession = { + order_of_succession = election + election_type = tribal_elective + } + flag = elective_succession_law + title_allegiance_opinion = 5 + revoke_cost = { + prestige = change_title_succession_law_prestige_cost + } + pass_cost = { + prestige = change_title_succession_law_prestige_cost + } + } + #Player Heir temporal_head_of_faith_succession_law = { can_title_have = { diff --git a/events/activities/pilgrimage_activity/pilgrimage_events.txt b/events/activities/pilgrimage_activity/pilgrimage_events.txt index 354d2e084e..257cc5ee86 100644 --- a/events/activities/pilgrimage_activity/pilgrimage_events.txt +++ b/events/activities/pilgrimage_activity/pilgrimage_events.txt @@ -3682,37 +3682,39 @@ pilgrimage.2010 = { trigger = { is_ai = no NOT = { has_trait = lifestyle_mystic } - any_ruler = { - OR = { - pilgrimage_2010_mystic_ruler = yes - pilgrimage_2010_mystic_home_ruler = yes + faith = { + any_faith_ruler = { + OR = { + pilgrimage_2010_mystic_ruler = yes + pilgrimage_2010_mystic_home_ruler = yes + } } } is_location_valid_for_travel_event_on_land = yes } immediate = { # Find our Mystic - if = { - limit = { - any_ruler = { pilgrimage_2010_mystic_ruler = yes } - } - random_ruler = { - limit = { pilgrimage_2010_mystic_ruler = yes } - save_scope_as = 2010_mystic - } - } - else = { - random_ruler = { + faith = { + if = { limit = { - pilgrimage_2010_mystic_home_ruler = yes + any_faith_ruler = { pilgrimage_2010_mystic_ruler = yes } + } + random_faith_ruler = { + limit = { pilgrimage_2010_mystic_ruler = yes } + save_scope_as = 2010_mystic } - save_scope_as = mystic_home_owner } - create_character = { - template = default_mystic_character - location = scope:mystic_home_owner.capital_province - culture = scope:mystic_home_owner.culture - save_scope_as = 2010_mystic + else = { + random_faith_ruler = { + limit = { pilgrimage_2010_mystic_home_ruler = yes } + save_scope_as = mystic_home_owner + } + create_character = { + template = default_mystic_character + location = scope:mystic_home_owner.capital_province + culture = scope:mystic_home_owner.culture + save_scope_as = 2010_mystic + } } } add_character_flag = in_pilgrimage_event_chain @@ -4685,6 +4687,15 @@ pilgrimage.2030 = { custom_tooltip = available_because_intent_tt bonus_to_all_types_effect = yes add_piety = minor_piety_gain + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } stress_impact = { base = minor_stress_impact_loss } @@ -6541,6 +6552,15 @@ pilgrimage.3004 = { value = 10 #TODO_CD_EP2 standardize MEDIUM } } + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } add_piety = major_piety_value add_prestige = minor_prestige_value } @@ -6613,6 +6633,15 @@ pilgrimage.3102 = { } add_stress = minor_stress_loss add_piety = minor_piety_gain + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } add_character_modifier = { modifier = pilgrimage_worldly_modifier years = 10 @@ -6782,6 +6811,15 @@ pilgrimage.3202 = { delay_travel_plan = { months = 2 } } add_learning_lifestyle_xp = major_lifestyle_xp + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } if = { limit = { has_trait = pilgrim @@ -7570,6 +7608,15 @@ pilgrimage.6007 = { option = { name = pilgrimage.6007.a pious_type_option_effect = yes + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } scope:6007_healer = { duel = { skill = learning @@ -9276,14 +9323,14 @@ pilgrimage.6531 = { override_background = { trigger = { NOT = { - root.location = { geographical_region = world_steppe } + root.location = { geographical_region = world_middle_east } } } reference = ep2_hunt_forest_cave } override_background = { trigger = { - root.location = { geographical_region = world_steppe } + root.location = { geographical_region = world_middle_east } } reference = wilderness } @@ -9334,14 +9381,14 @@ pilgrimage.6532 = { override_background = { trigger = { NOT = { - root.location = { geographical_region = world_steppe } + root.location = { geographical_region = world_middle_east } } } reference = ep2_hunt_foggy_forest } override_background = { trigger = { - root.location = { geographical_region = world_steppe } + root.location = { geographical_region = world_middle_east } } reference = terrain_travel } @@ -9579,14 +9626,14 @@ pilgrimage.6533 = { override_background = { trigger = { NOT = { - root.location = { geographical_region = world_steppe } + root.location = { geographical_region = world_middle_east } } } reference = ep2_hunt_foggy_forest } override_background = { trigger = { - root.location = { geographical_region = world_steppe } + root.location = { geographical_region = world_middle_east } } reference = terrain_travel } diff --git a/events/activities/pilgrimage_activity/pilgrimage_intent_events.txt b/events/activities/pilgrimage_activity/pilgrimage_intent_events.txt index d27062d086..00a46b6596 100644 --- a/events/activities/pilgrimage_activity/pilgrimage_intent_events.txt +++ b/events/activities/pilgrimage_activity/pilgrimage_intent_events.txt @@ -840,6 +840,15 @@ pilgrimage_intent.1030 = { else = { add_piety = major_piety_gain } + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } stress_impact = { base = minor_stress_impact_loss impatient = minor_stress_impact_gain @@ -1382,6 +1391,15 @@ pilgrimage_intent.1050 = { years = 25 } add_piety = medium_piety_gain + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } } } # Failure. @@ -1653,6 +1671,15 @@ pilgrimage_intent.1060 = { add_perk = open_minded_perk } add_piety = major_piety_gain + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } } } # Failure. @@ -1746,6 +1773,15 @@ pilgrimage_intent.1100 = { value = 5 #TODO_CD_EP2_FGK standardize } } + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } stress_impact = { cynical = minor_stress_impact_gain } diff --git a/events/councillor_task_events/councillor_spouse_events/councillor_spouse_intrigue_events.txt b/events/councillor_task_events/councillor_spouse_events/councillor_spouse_intrigue_events.txt index 20620dda9f..1b59c10a0d 100644 --- a/events/councillor_task_events/councillor_spouse_events/councillor_spouse_intrigue_events.txt +++ b/events/councillor_task_events/councillor_spouse_events/councillor_spouse_intrigue_events.txt @@ -1023,19 +1023,6 @@ councillor_spouse_intrigue.1002 = { } text = councillor_spouse_intrigue.1002.b } - #TODO_CD: Replace with other types of discovery - #if = { - #limit = { - #can_start_scheme = { - #type = spy_on_scheme - #target = scope:target - #} - #} - #start_scheme = { - #type = spy_on_scheme - #target = scope:target - #} - #} add_character_modifier = { modifier = digging_for_secrets_modifier years = 1 diff --git a/events/councillor_task_events/marshal_task_events.txt b/events/councillor_task_events/marshal_task_events.txt index 765fb799f0..228a463e86 100644 --- a/events/councillor_task_events/marshal_task_events.txt +++ b/events/councillor_task_events/marshal_task_events.txt @@ -517,6 +517,455 @@ marshal_task.0303 = { } } +# Is this character bad enough at martial/prowess that making them a commander would be a mistake? +scripted_trigger marshal_task_0304_is_valid_beneficiary_of_nepotism = { + is_physically_able_ai_adult = yes + prowess < mediocre_skill_rating + martial <= mediocre_skill_rating + NOR = { + is_knight_of = scope:councillor_liege + } + # Only peeps who are your vassal or who aren't employed in an important court position elsewhere are valid targets + OR = { + is_vassal_of = scope:councillor_liege + AND = { + is_landed = no + has_any_court_position = no + } + } + can_be_knight_trigger = { ARMY_OWNER = scope:councillor_liege } +} + +# Will this character ask you to employ their incompetent child as a knight? +scripted_trigger marshal_task_0304_is_valid_advocate_of_nepotism = { + NOT = { this = root } + is_physically_able_ai_adult = yes + is_available = yes + NOR = { + has_relation_rival = scope:councillor_liege + has_relation_nemesis = scope:councillor_liege + } + ai_honor < high_positive_ai_value + ai_energy >= low_negative_ai_value +} + +scripted_trigger marshal_task_0304_is_corrupt_parent_of_weak_child = { + marshal_task_0304_is_valid_advocate_of_nepotism = yes + any_child = { + marshal_task_0304_is_valid_beneficiary_of_nepotism = yes + } +} + +# Promote an incompetent house member's child to knighthood +marshal_task.0304 = { + type = character_event + title = marshal_task.0304.t + desc = marshal_task.0304.desc + theme = martial + left_portrait = scope:beneficiary_of_nepotism + right_portrait = { + character = cp:councillor_marshal + animation = personality_rational + } + lower_left_portrait = scope:advocate_of_nepotism + + trigger = { + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + NOT = { + has_variable = had_new_commander_event + } + # Either you have a harmonious clan government (so you care about unity effects) or the parent is a vassal (so you care about their opinion) + OR = { + AND = { + government_has_flag = government_is_clan + exists = house + house = { + OR = { + has_house_unity_stage = friendly + has_house_unity_stage = harmonious + } + any_house_member = { + marshal_task_0304_is_corrupt_parent_of_weak_child = yes + } + } + } + any_vassal = { + marshal_task_0304_is_corrupt_parent_of_weak_child = yes + } + } + } + + # Ambitious parents are more likely to try this scheme + weight_multiplier = { + base = 1 + modifier = { + add = 0.5 + OR = { + AND = { + exists = house + house = { + any_house_member = { + marshal_task_0304_is_corrupt_parent_of_weak_child = yes + has_trait = ambitious + } + } + } + any_vassal = { + marshal_task_0304_is_corrupt_parent_of_weak_child = yes + has_trait = ambitious + } + } + } + } + + immediate = { + set_variable = { + name = had_new_commander_event + days = 730 + } + # Select who will appear in the event + if = { + limit = { + exists = house + government_has_flag = government_is_clan + house = { + OR = { + has_house_unity_stage = friendly + has_house_unity_stage = harmonious + } + any_house_member = { + marshal_task_0304_is_corrupt_parent_of_weak_child = yes + } + } + } + house = { + random_house_member = { + limit = { + marshal_task_0304_is_corrupt_parent_of_weak_child = yes + } + weight = { + base = 1 + modifier = { + add = 0.5 + has_trait = ambitious + } + # Weight mothers more strongly + modifier = { + add = 0.5 + is_female = yes + } + } + save_scope_as = advocate_of_nepotism + random_child = { + limit = { + marshal_task_0304_is_valid_beneficiary_of_nepotism = yes + } + save_scope_as = beneficiary_of_nepotism + get_quirk_character_effect = yes + } + } + } + } + else = { + random_vassal = { + limit = { + marshal_task_0304_is_corrupt_parent_of_weak_child = yes + } + weight = { + base = 1 + modifier = { + add = 0.5 + has_trait = ambitious + } + # Weight mothers more strongly + modifier = { + add = 0.5 + is_female = yes + } + } + save_scope_as = advocate_of_nepotism + random_child = { + limit = { + marshal_task_0304_is_valid_beneficiary_of_nepotism = yes + } + save_scope_as = beneficiary_of_nepotism + get_quirk_character_effect = yes + } + } + } + # Add the incompetent potential commander as a guest if they aren't already at your court or landed + if = { + limit = { + scope:beneficiary_of_nepotism = { + NOR = { + is_courtier_of = root + location = root.capital_province + is_landed = yes + } + } + } + add_visiting_courtier = scope:beneficiary_of_nepotism + } + } + + option = { # Accept the nepotism + name = { + trigger = { house = scope:beneficiary_of_nepotism.house } + text = marshal_task.0304.a_clan + } + name = { + trigger = { NOT = { house = scope:beneficiary_of_nepotism.house } } + text = marshal_task.0304.a_neutral + } + if = { + limit = { + scope:beneficiary_of_nepotism = { + is_landed = no + NOT = { is_courtier_of = root } + } + } + add_courtier = scope:beneficiary_of_nepotism + } + scope:beneficiary_of_nepotism = { + hidden_effect = { set_knight_status = force } + add_character_flag = { + flag = marshal_task_0304_forced_knighthood + years = 20 + } + } + custom_description_no_bullet = { + text = marshal_task_0304_a_tt + subject = scope:advocate_of_nepotism + object = scope:beneficiary_of_nepotism + } + reverse_add_opinion = { + target = scope:advocate_of_nepotism + modifier = marshal_task_train_commanders_supported_my_child_opinion + } + # For the next 20 years, we'll check monthly to see if the child is still employed as a knight + # But only if the councillor liege is a player (for performance reasons) + if = { + limit = { is_ai = no } + trigger_event = { + id = marshal_task.0305 + days = 14 + } + } + if = { + limit = { + government_has_flag = government_is_clan + # Only add/lose unity if the parent is a part of your house + house = scope:advocate_of_nepotism.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:councillor_liege + TARGET = scope:advocate_of_nepotism + VALUE = minor_unity_gain + DESC = clan_unity_yes_to_nepotism.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + ai_chance = { + base = 50 + ai_value_modifier = { + ai_honor = -0.25 + } + } + stress_impact = { + just = minor_stress_impact_gain + arrogant = minor_stress_impact_gain + paranoid = minor_stress_impact_gain + } + } + + option = { # Offer for their child to be your courtier instead + name = marshal_task.0304.b + trigger = { + scope:beneficiary_of_nepotism = { + NOR = { + is_courtier_of = scope:councillor_liege + is_landed = yes + } + } + } + duel = { + skill = diplomacy + target = scope:advocate_of_nepotism + 6 = { + compare_modifier = { + value = scope:duel_value + multiplier = 0.5 + min = -5 + } + desc = marshal_task.0304.b.success + send_interface_toast = { + title = marshal_task.0304.b.success + left_icon = scope:advocate_of_nepotism + right_icon = scope:beneficiary_of_nepotism + pay_short_term_gold = { + gold = scope:beneficiary_of_nepotism.recruit_guest_interaction_cost + target = scope:beneficiary_of_nepotism + } + add_courtier = scope:beneficiary_of_nepotism + } + } + 4 = { + compare_modifier = { + value = scope:duel_value + multiplier = 0.5 + min = -5 + } + desc = marshal_task.0304.b.failure + send_interface_toast = { + title = marshal_task.0304.b.failure + left_icon = scope:advocate_of_nepotism + reverse_add_opinion = { + target = scope:advocate_of_nepotism + modifier = marshal_task_train_commanders_rebuffed_my_child_opinion + opinion = -20 + } + if = { + limit = { + government_has_flag = government_is_clan + house = scope:advocate_of_nepotism.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:councillor_liege + TARGET = scope:advocate_of_nepotism + VALUE = minor_unity_loss + DESC = clan_unity_refused_nepotism.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + } + } + ai_chance = { + base = 10 + compare_modifier = { + value = diplomacy + offset = scope:advocate_of_nepotism.diplomacy + multiplier = 2.5 + } + } + } + + option = { # Deny the nepotism + name = marshal_task.0304.c + ai_chance = { + base = 10 + } + reverse_add_opinion = { + target = scope:advocate_of_nepotism + modifier = marshal_task_train_commanders_rebuffed_my_child_opinion + } + if = { + limit = { + government_has_flag = government_is_clan + house = scope:advocate_of_nepotism.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:councillor_liege + TARGET = scope:advocate_of_nepotism + VALUE = minor_unity_loss + DESC = clan_unity_refused_nepotism.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } +} + +marshal_task.0305 = { + hidden = yes + + trigger = { + scope:councillor_liege = { + is_alive = yes + } + scope:advocate_of_nepotism = { + is_alive = yes + } + scope:beneficiary_of_nepotism = { + is_alive = yes + is_healthy = yes + has_character_flag = marshal_task_0304_forced_knighthood + NOT = { + has_opinion_modifier = { + modifier = kicked_me_from_court + target = scope:councillor_liege + } + } + } + } + + immediate = { + if = { + limit = { + scope:beneficiary_of_nepotism = { is_knight_of = scope:councillor_liege } + } + trigger_event = { + id = marshal_task.0305 + days = 30 + } + } + else = { + trigger_event = marshal_task.306 + } + } +} + +# The worthless house member you promised to keep as a knight was removed from their post +marshal_task.0306 = { + type = letter_event + sender = scope:advocate_of_nepotism + opening = marshal_task.0306.opening + desc = marshal_task.0306.desc + + option = { + name = marshal_task.0306.a + stress_impact = { + shy = medium_stress_impact_gain + } + scope:advocate_of_nepotism = { + if = { + limit = { + has_opinion_modifier = { + target = root + modifier = marshal_task_train_commanders_supported_my_child_opinion + } + } + remove_opinion = { + target = root + modifier = marshal_task_train_commanders_supported_my_child_opinion + } + } + add_opinion = { + target = root + modifier = weak_excuses + opinion = -25 + years = 15 + } + } + scope:beneficiary_of_nepotism = { + remove_character_flag = marshal_task_0304_forced_knighthood + } + if = { + limit = { + government_has_flag = government_is_clan + house = scope:advocate_of_nepotism.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:councillor_liege + TARGET = scope:advocate_of_nepotism + VALUE = medium_unity_loss + DESC = clan_unity_nepotism_removed_from_post.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } +} + ########## # END Task Outcome Events ########## diff --git a/events/councillor_task_events/spymaster_task_events.txt b/events/councillor_task_events/spymaster_task_events.txt index d37e61ee05..6e1668c413 100644 --- a/events/councillor_task_events/spymaster_task_events.txt +++ b/events/councillor_task_events/spymaster_task_events.txt @@ -155,6 +155,19 @@ spymaster_task.0301 = { add = 1 spymaster_find_secrets_secret_target_is_interesting_to_me_trigger = yes } + # Less likely to discovery crypto-religionist secret if owner has Taqiya tenet + modifier = { + add = -3 + secret_type = secret_crypto_religionist + secret_owner = { + secret_faith ?= { has_doctrine_parameter = sanctioned_false_conversion } + } + } + # Less likely to pick crypto-religionist secrets (b/c narratively they are hard to discover) + modifier = { + factor = 0.25 + secret_type = secret_crypto_religionist + } } save_scope_as = secret_to_reveal secret_owner = { @@ -163,6 +176,25 @@ spymaster_task.0301 = { } #Fire events + # If the secret is a crypto-religionist secret, then there is a chance that the spymaster does not discover anything after all + if = { + limit = { + scope:secret_to_reveal = { + secret_type = secret_crypto_religionist + } + } + random = { + chance = { + value = 50 + # Even more likely to not discover this secret if the target practices Taqiya + if = { + limit = { secret_faith ?= { has_doctrine_parameter = sanctioned_false_conversion } } + add = 25 + } + } + trigger_event = spymaster_task.0399 + } + } scope:councillor_liege = { if = { #It's someone I care about limit = { @@ -1502,6 +1534,115 @@ spymaster_task.0352 = { } } +#Spymaster found Secret Crypto-Religionist +spymaster_task.0353 = { + type = character_event + title = spymaster_task.0353.t + desc = { + first_valid = { + triggered_desc = { + trigger = { + root = scope:councillor_liege + } + desc = spymaster_task.0311.councillor_liege_opening + } + desc = spymaster_task.0311.spymaster_opening + } + first_valid = { + # Both secret practicers of the same faith + triggered_desc = { + trigger = { + exists = secret_faith + secret_faith = scope:secret_holder.secret_faith + } + desc = spymaster_task.0311.secret_crypto_religionist.shared_faith_shared_secret + } + # Both of the same faith, but root does not practice in secret. Faith however does allow false conversions + triggered_desc = { + trigger = { + NOT = { exists = secret_faith } + faith = scope:secret_holder.secret_faith + faith = { has_doctrine_parameter = sanctioned_false_conversion } + } + desc = spymaster_task.0311.secret_crypto_religionist.shared_faith_taqiya + } + # Both of the same faith, but root does not practice in secret + triggered_desc = { + trigger = { + NOT = { exists = secret_faith } + faith = scope:secret_holder.secret_faith + } + desc = spymaster_task.0311.secret_crypto_religionist.shared_faith + } + # Both secret practicers, but not of the same faith. + triggered_desc = { + trigger = { + exists = secret_faith + NOT = { secret_faith = scope:secret_holder.secret_faith } + } + desc = spymaster_task.0311.secret_crypto_religionist.shared_secret + } + # Root is cynical and uncompassionate + triggered_desc = { + trigger = { + has_trait = cynical + ai_compassion < medium_negative_ai_value + } + desc = spymaster_task.0311.secret_crypto_religionist.cynical_uncompassionate + } + # Root is cynical but compassionate + triggered_desc = { + trigger = { + has_trait = cynical + ai_compassion >= medium_negative_ai_value + } + desc = spymaster_task.0311.secret_crypto_religionist.cynical_compassionate + } + desc = spymaster_task.0311.secret_crypto_religionist + } + } + theme = intrigue + left_portrait = { + character = scope:councillor + animation = shock + } + right_portrait = { + character = scope:secret_holder + animation = dismissal + } + + trigger = { + scope:secret_to_reveal = { + secret_type = secret_crypto_religionist + } + exists = scope:secret_holder.secret_faith + } + + option = { + name = { + text = { + first_valid = { + triggered_desc = { + trigger = { + exists = secret_faith + secret_faith = scope:secret_holder.secret_faith + } + desc = spymaster_task.0353.a.shared_faith_shared_secret + } + triggered_desc = { + trigger = { has_trait = cynical } + desc = spymaster_task.0353.a.cynical + } + desc = spymaster_task.0353.a + } + } + } + scope:secret_to_reveal = { + reveal_to = root + } + } +} + #Spymaster found something - FALLBACK spymaster_task.0359 = { type = character_event diff --git a/events/councillor_task_events/steward_task_events.txt b/events/councillor_task_events/steward_task_events.txt index 54be13f7e3..7bd5457214 100644 --- a/events/councillor_task_events/steward_task_events.txt +++ b/events/councillor_task_events/steward_task_events.txt @@ -21,6 +21,7 @@ namespace = steward_task # 1002 - Inefficient Census # 1003 - Lack of Sheriffs # 1004 - Smuggling Ring +# 1005 - Tax collector catches steward's accounting error ## # 1101 - Extra Taxes @@ -33,6 +34,7 @@ namespace = steward_task # 2001 - Reduce Construction Speed # 2002 - Loss of County Opinion # 2003 - Loss of County Control +# 2004-2008 - Prioritize county development vs. taxation # 2101 - Efficient Taxation # 2102 - Increased Control @@ -762,6 +764,194 @@ steward_task.1004 = { } } +scripted_trigger is_valid_steward_task_1005_tax_collector = { + is_available_healthy_ai_adult = yes + NOT = { this = root.cp:councillor_steward } + + # Tax collector needs to have at least a little ambition to push this issue + ai_energy > high_negative_ai_value + + # Tax collector and steward can't be friends + NOR = { + has_relation_friend = root.cp:councillor_steward + has_relation_best_friend = root.cp:councillor_steward + } + OR = { + opinion = { + target = root.cp:councillor_steward + value < low_positive_opinion + } + reverse_opinion = { + target = root.cp:councillor_steward + value < low_positive_opinion + } + } + + # The steward must pay taxes to them + tax_slot = { any_tax_slot_vassal = { this = root.cp:councillor_steward } } +} + +# Tax collector tries collecting taxes in steward's realm +steward_task.1005 = { + type = character_event + title = steward_task.1005.t + desc = steward_task.1005.desc + theme = stewardship + override_background = { reference = council_chamber } + left_portrait = { + character = scope:steward + animation = anger + } + right_portrait = scope:tax_collector + + cooldown = { years = 20 } + + # Need to have both an AI tax collector and an AI steward + trigger = { + is_available = yes + exists = cp:councillor_steward + cp:councillor_steward = { + is_available_healthy_ai_adult = yes + ai_greed > high_negative_ai_value # Steward needs to be at least a little greedy to care about taxes + } + employs_tax_collector = yes + any_tax_collector = { is_valid_steward_task_1005_tax_collector = yes } + + # Don't trigger if the tax collector/steward rivalry story cycle is already ongoing, that story has its own (more interesting) events + NOT = { any_owned_story = { story_type = story_cycle_tax_rivalry } } + } + + immediate = { + cp:councillor_steward = { save_scope_as = steward } + random_tax_collector = { + limit = { is_valid_steward_task_1005_tax_collector = yes } + save_scope_as = tax_collector + } + # Set these variables for the tax collector and steward rivalry story + set_variable = { + name = story_steward + value = scope:steward + days = 30 + } + set_variable = { + name = story_tax_collector + value = scope:tax_collector + days = 30 + } + } + + + option = { # Use stewardship to negotiate a solution everyone is happy with + name = steward_task.1005.a + trigger = { + stewardship > low_skill_rating + } + duel = { + skill = stewardship + value = decent_skill_rating + + 5 = { + compare_modifier = { + value = scope:duel_value + multiplier = 0.25 + } + send_interface_toast = { + type = event_toast_effect_good + title = steward_task.1005.a_success + left_icon = root + add_character_modifier = { + modifier = tax_collector_fair_arbiter_modifier + years = 20 + } + } + } + 5 = { + compare_modifier = { + value = scope:duel_value + multiplier = -0.25 + } + send_interface_toast = { + title = steward_task.1005.a_failure + add_character_modifier = { + modifier = tax_collector_free_rein_modifier + years = 20 + } + } + scope:steward = { + progress_towards_rival_effect = { + REASON = rival_taxation_is_theft + CHARACTER = scope:tax_collector + OPINION = 0 + } + } + create_tax_rivalry_story_effect = yes + } + } + ai_chance = { + base = 100 + } + } + + option = { # Side with tax collector, get money & negative vassal opinion + name = steward_task.1005.b + add_character_modifier = { + modifier = tax_collector_free_rein_modifier + years = 20 + } + scope:steward = { + progress_towards_rival_effect = { + REASON = rival_taxation_is_theft + CHARACTER = scope:tax_collector + OPINION = 0 + } + } + create_tax_rivalry_story_effect = yes + ai_chance = { + base = 0 + ai_value_modifier = { + ai_greed = 0.25 + } + opinion_modifier = { + opinion_target = scope:tax_collector + multiplier = 0.4 + } + } + } + + option = { # Side with steward, don't get money or negative vassal opinion + name = steward_task.1005.c + # Lose unity, assuming the tax collector is a member of your house + # Unless the steward is also a member of your house because that would be annoying + reverse_add_opinion = { + target = scope:steward + modifier = feast_sided_with_me_in_my_fight_opinion + opinion = 10 + } + scope:tax_collector = { + progress_towards_rival_effect = { + REASON = rival_accounting_exposure + CHARACTER = scope:steward + OPINION = 0 + } + } + create_tax_rivalry_story_effect = yes + ai_chance = { + base = 50 + ai_value_modifier = { + ai_greed = -0.25 + } + opinion_modifier = { + opinion_target = scope:steward + multiplier = 0.4 + } + } + } + + after = { + clean_up_tax_rivalry_story_variables_effect = yes + } +} + ### Good Side Effects @@ -1050,7 +1240,653 @@ steward_task.2003 = { } } +scripted_trigger steward_task_2004_tax_collector_is_valid = { + # Tax collector needs to be an AI as their actions are entirely simulated + is_available_ai_adult = yes + NOT = { this = root.cp:councillor_steward } + # Tax collector needs at least a little energy to go above and beyond + ai_energy > low_negative_ai_value +} + +# Setup for steward_task.2005/2008 +steward_task.2004 = { + hidden = yes + cooldown = { years = 5 } + + trigger = { + exists = cp:councillor_steward + cp:councillor_steward = { + is_available_adult = yes + } + employs_tax_collector = yes + any_tax_collector = { + steward_task_2004_tax_collector_is_valid = yes + } + # Don't trigger if the tax collector/steward rivalry story cycle is already ongoing, that story has its own (more interesting) events + NOT = { any_owned_story = { story_type = story_cycle_tax_rivalry } } + } + + immediate = { + save_scope_as = liege + random_tax_collector = { + limit = { steward_task_2004_tax_collector_is_valid = yes } + save_scope_as = tax_collector + } + scope:county.title_province = { save_scope_as = background_terrain_scope } # For event bg in steward_task.2005 + cp:councillor_steward = { save_scope_as = steward } + # Set these variables for the tax collector and steward rivalry story + set_variable = { + name = story_steward + value = scope:steward + days = 30 + } + set_variable = { + name = story_tax_collector + value = scope:tax_collector + days = 30 + } + # Only trigger steward_task.2005 for player stewards + if = { + limit = { + scope:steward = { is_ai = yes } + } + trigger_event = steward_task.2008 + } + else = { + scope:steward = { trigger_event = steward_task.2005 } + } + } +} + +# Calculate whether the liege would prefer long-term gains over short-term gold +scripted_effect steward_task_2005_set_liege_development_preference_effect = { + set_variable = { + name = liege_preference_towards_development + days = 10 + value = { + value = 0 + add = { + if = { + limit = { + scope:liege = { has_trait = patient } + } + value = 100 + } + else_if = { + limit = { + scope:liege = { has_trait = impatient } + } + value = -100 + } + } + add = { + value = scope:liege.ai_greed + multiply = -0.25 + } + add = { + value = scope:liege.ai_rationality + multiply = 0.1 + } + # Make an exception for ambitious, they favor long-term gains despite their ai greed + add = { + if = { + limit = { + scope:liege = { has_trait = ambitious } + } + value = 25 + } + } + } + } +} + +# Determine liege's reaction to the steward's decision for steward_task.2005 +scripted_effect steward_task_2005_liege_opinion_effect = { + # If the liege is a player, then let the liege decide how to react + if = { + limit = { + scope:liege = { is_ai = no } + } + if = { + limit = { + $DEVELOPMENT$ = yes + } + scope:liege = { + add_character_flag = { + flag = steward_task_2005_redoubled_development + days = 1 + } + } + } + else = { + scope:liege = { + add_character_flag = { + flag = steward_task_2005_redoubled_taxation + days = 1 + } + } + } + scope:liege = { trigger_event = steward_task.2006 } + } + # Otherwise, immediately inform the steward how the liege received their decision + else = { + # Correctly predicted what the liege would prefer: + if = { + limit = { + OR = { + AND = { + $DEVELOPMENT$ = yes + scope:steward.var:liege_preference_towards_development >= 0 + } + AND = { + $DEVELOPMENT$ = no + scope:steward.var:liege_preference_towards_development <= 0 + } + } + } + scope:steward = { + send_interface_toast = { + type = event_toast_effect_good + title = steward_task.2005.success + left_icon = scope:liege + reverse_add_opinion = { + target = scope:liege + modifier = pleased_opinion + opinion = 15 + } + } + } + } + # Incorrectly predicted what the liege would prefer: + else_if = { + limit = { + OR = { + AND = { + $DEVELOPMENT$ = yes + scope:steward.var:liege_preference_towards_development < 0 + } + AND = { + $DEVELOPMENT$ = no + scope:steward.var:liege_preference_towards_development > 0 + } + } + } + scope:steward = { + send_interface_toast = { + title = steward_task.2005.failure + left_icon = scope:liege + reverse_add_opinion = { + target = scope:liege + modifier = disappointed_opinion + opinion = -15 + } + } + } + } + } +} + +# Tax-collector tries collecting more taxes in developing county +steward_task.2005 = { + type = character_event + title = steward_task.2005.t + desc = steward_task.2005.desc + theme = stewardship + override_background = { + reference = terrain_scope + } + left_portrait = scope:tax_collector + right_portrait = { + character = scope:ledger_slave + animation = sick + } + + immediate = { + set_variable = { + name = had_steward_task_side_effect + value = yes + days = steward_task_side_effect_cooldown + } + steward_task_2005_set_liege_development_preference_effect = yes + # Create the ledger slave for fun, but only if the steward is a player (for performance reasons) + if = { + limit = { is_ai = no } + create_character = { + template = servant_character + employer = scope:liege + gender_female_chance = root_faith_dominant_gender_adjusted_female_chance + save_scope_as = ledger_slave + } + } + } + + option = { # Give more money to liege + name = steward_task.2005.a + flavor = steward_task.2005.a.tt + scope:county = { + add_county_modifier = { + modifier = steward_redoubled_taxation_modifier + years = 15 + } + } + hidden_effect = { steward_task_2005_liege_opinion_effect = { DEVELOPMENT = no } } + ai_chance = { + base = 0 + modifier = { + add = { + value = var:liege_preference_towards_development + multiply = -1 + } + } + } + } + + option = { # Prioritize development + name = steward_task.2005.b + flavor = steward_task.2005.b.tt + scope:county = { + add_county_modifier = { + modifier = steward_redoubled_development_modifier + years = 15 + } + } + reverse_add_opinion = { + target = scope:tax_collector + modifier = steward_doubted_my_accounting_opinion + } + progress_towards_rival_effect = { + CHARACTER = scope:tax_collector + REASON = rival_disregarded_accounting + OPINION = 0 + } + scope:liege = { + create_tax_rivalry_story_effect = yes + } + hidden_effect = { steward_task_2005_liege_opinion_effect = { DEVELOPMENT = yes } } + ai_chance = { + base = 0 + modifier = { + add = var:liege_preference_towards_development + } + } + } + + option = { # Just ask + name = steward_task.2005.c + custom_tooltip = steward_task.2005.c.tt + scope:liege = { + trigger_event = steward_task.2007 + } + ai_chance = { + base = 0 + # Higher chance if liege is a player and thus this option would trigger an event for them + modifier = { + scope:liege = { is_ai = no } + add = 1000 + } + } + } + + after = { + if = { + limit = { exists = scope:ledger_slave } + scope:ledger_slave = { + silent_disappearance_effect = yes + } + } + } +} + +# As a liege, react to your steward's decision (player only) +steward_task.2006 = { + type = letter_event + opening = steward_task.2006.opening + sender = scope:steward + desc = { + desc = steward_task.2006.desc_intro + triggered_desc = { + trigger = { has_character_flag = steward_task_2005_redoubled_development } + desc = steward_task.2006.desc_development + } + triggered_desc = { + trigger = { has_character_flag = steward_task_2005_redoubled_taxation } + desc = steward_task.2006.desc_taxation + } + } + + option = { # Praise steward + name = steward_task.2006.a + # Add stress depending on what the steward's decision was + if = { + limit = { has_character_flag = steward_task_2005_redoubled_development } + stress_impact = { + greedy = minor_stress_impact_gain + impatient = minor_stress_impact_gain + } + } + else_if = { + limit = { has_character_flag = steward_task_2005_redoubled_taxation } + stress_impact = { + generous = minor_stress_impact_gain + patient = minor_stress_impact_gain + } + } + } + + option = { # Criticize steward + name = steward_task.2006.b + # Remove the modifier that they added and replace it with the one you want + scope:steward = { + send_interface_message = { + type = event_stewardship_bad + title = steward_task.2006.b_notification + left_icon = scope:county + right_icon = scope:liege + tooltip = task_develop_county_notification_tooltip + scope:county = { + if = { + limit = { has_county_modifier = steward_redoubled_development_modifier } + remove_county_modifier = steward_redoubled_development_modifier + add_county_modifier = { + modifier = steward_redoubled_taxation_modifier + years = 15 + } + } + else_if = { + limit = { has_county_modifier = steward_redoubled_taxation_modifier } + remove_county_modifier = steward_redoubled_taxation_modifier + add_county_modifier = { + modifier = steward_redoubled_development_modifier + years = 15 + } + } + } + # Hide this effect for the liege choosing this option + if = { + limit = { + NOT = { root = scope:liege } + } + reverse_add_opinion = { + target = scope:liege + modifier = disappointed_opinion + opinion = -15 + } + } + } + } + reverse_add_opinion = { + target = scope:steward + modifier = stress_upset_councillor + } + # Add stress depending on what the steward's decision was + if = { + limit = { has_character_flag = steward_task_2005_redoubled_development } + stress_impact = { + generous = minor_stress_impact_gain + patient = minor_stress_impact_gain + } + } + else_if = { + limit = { has_character_flag = steward_task_2005_redoubled_taxation } + stress_impact = { + greedy = minor_stress_impact_gain + impatient = minor_stress_impact_gain + } + } + } + after = { + clean_up_tax_rivalry_story_variables_effect = yes + } +} + +# As a liege, decide how you want to tax the developing county after your steward asks you +steward_task.2007 = { + type = letter_event + opening = steward_task.2006.opening + sender = scope:steward + desc = steward_task.2007.desc + + trigger = { is_available = yes } + + option = { # Focus on taxation + name = steward_task.2007.a + scope:steward = { + send_interface_message = { + type = event_steward_task_good + title = steward_task.2005.t + left_icon = scope:county + right_icon = scope:liege + desc = task_develop_county_notification_tooltip + scope:county = { + add_county_modifier = { + modifier = steward_redoubled_taxation_modifier + years = 15 + } + } + } + } + stress_impact = { + generous = minor_stress_impact_gain + patient = minor_stress_impact_gain + } + ai_chance = { + base = 0 + modifier = { + add = { + value = scope:steward.var:liege_preference_towards_development + multiply = -1 + } + } + } + } + + option = { # Focus on development + name = steward_task.2005.b + scope:steward = { + send_interface_message = { + type = event_steward_task_good + title = steward_task.2005.t + left_icon = scope:county + right_icon = scope:liege + desc = task_develop_county_notification_tooltip + scope:county = { + add_county_modifier = { + modifier = steward_redoubled_development_modifier + years = 15 + } + } + } + } + stress_impact = { + greedy = minor_stress_impact_gain + impatient = minor_stress_impact_gain + } + ai_chance = { + base = 0 + modifier = { + add = scope:steward.var:liege_preference_towards_development + } + } + } + + after = { + clean_up_tax_rivalry_story_variables_effect = yes + } +} + +# As a liege, decide how you want to tax the developing county (steward is AI) +steward_task.2008 = { + type = character_event + title = steward_task.2005.t + desc = { + first_valid = { + triggered_desc = { + trigger = { + AND = { + scope:steward = { + opinion = { + target = scope:tax_collector + value <= low_negative_opinion + } + } + scope:tax_collector = { + opinion = { + target = scope:steward + value <= low_negative_opinion + } + } + } + } + desc = steward_task.2008.desc_intro_friendly + } + desc = steward_task.2008.desc_intro_unfriendly + } + desc = steward_task.2008.desc_outro + } + theme = stewardship + override_background = { + reference = council_chamber + } + left_portrait = scope:tax_collector + right_portrait = { + character = scope:steward + animation = dismissal + } + + immediate = { + scope:steward = { steward_task_2005_set_liege_development_preference_effect = yes } + scope:tax_collector = { + progress_towards_rival_effect = { + REASON = rival_disregarded_accounting + CHARACTER = scope:steward + OPINION = 0 + } + } + } + + trigger = { + is_available = yes + # Just so this event doesn't trigger for two people who get along + scope:tax_collector = { + OR = { + opinion = { + target = scope:steward + value < low_positive_opinion + } + reverse_opinion = { + target = scope:steward + value < low_positive_opinion + } + } + } + } + + option = { # Side with tax collector (taxation) + name = steward_task.2008.a + scope:county = { + add_county_modifier = { + modifier = steward_redoubled_taxation_modifier + years = 15 + } + } + if = { + limit = { + is_in_same_clan_as_trigger = { CHARACTER = scope:steward } + NOT = { is_in_same_clan_as_trigger = { CHARACTER = scope:tax_collector } } + } + add_clan_unity_interaction_effect = { + CHARACTER = root + TARGET = scope:steward + VALUE = minor_unity_loss + DESC = clan_unity_sided_with_tax_collector.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + create_tax_rivalry_story_effect = yes + stress_impact = { + generous = minor_stress_impact_gain + patient = minor_stress_impact_gain + } + ai_chance = { + base = 0 + modifier = { + add = { + value = scope:steward.var:liege_preference_towards_development + multiply = -1 + } + } + } + } + + option = { # Side with steward (development) + name = steward_task.2008.b + scope:county = { + add_county_modifier = { + modifier = steward_redoubled_development_modifier + years = 15 + } + } + if = { + limit = { + is_in_same_clan_as_trigger = { CHARACTER = scope:tax_collector } + NOT = { is_in_same_clan_as_trigger = { CHARACTER = scope:steward } } + } + add_clan_unity_interaction_effect = { + CHARACTER = root + TARGET = scope:tax_collector + VALUE = minor_unity_loss + DESC = clan_unity_sided_with_steward.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + create_tax_rivalry_story_effect = yes + stress_impact = { + greedy = minor_stress_impact_gain + impatient = minor_stress_impact_gain + } + ai_chance = { + base = 0 + modifier = { + add = { + value = scope:steward.var:liege_preference_towards_development + } + } + } + } + + option = { # Opt out + name = steward_task.2008.c + reverse_add_opinion = { + target = scope:steward + modifier = dismissed_me_opinion + opinion = -15 + } + reverse_add_opinion = { + target = scope:tax_collector + modifier = dismissed_me_opinion + opinion = -15 + } + create_tax_rivalry_story_effect = yes + stress_impact = { + compassionate = minor_stress_impact_gain + just = minor_stress_impact_gain + arbitrary = minor_stress_impact_loss + wrathful = minor_stress_impact_loss + } + ai_chance = { + base = 0 + modifier = { + has_trait = lazy + add = 50 + } + } + } + + after = { + clean_up_tax_rivalry_story_variables_effect = yes + } +} ###Good Side Effects @@ -1306,7 +2142,7 @@ steward_task.3002 = { } send_interface_message = { - type = event_steward_task_bad + type = event_stewardship_bad title = steward_task.3002.notification desc = { triggered_desc = { diff --git a/events/court_events/introduce_court_fashion_events.txt b/events/court_events/introduce_court_fashion_events.txt index d277956db8..1b2dcc0e88 100644 --- a/events/court_events/introduce_court_fashion_events.txt +++ b/events/court_events/introduce_court_fashion_events.txt @@ -652,4 +652,4 @@ court_amenities_interactions.0013 = { give_nickname = nick_king_of_fashion } } -} +} \ No newline at end of file diff --git a/events/court_events/sumptuary_debate_events.txt b/events/court_events/sumptuary_debate_events.txt index cf4f0e6a74..b947f1b041 100644 --- a/events/court_events/sumptuary_debate_events.txt +++ b/events/court_events/sumptuary_debate_events.txt @@ -45,7 +45,8 @@ court_amenities_interactions.0001 = { override_background = { reference = council_chamber } - left_portrait = scope:actor + left_portrait = root + right_portrait = scope:actor immediate = { # Only the initiator of the challenge is destined to be landed @@ -56,7 +57,10 @@ court_amenities_interactions.0001 = { option = { name = court_amenities_interactions.0001.a duel = { - skill = stewardship # How well do you understand the law? + skills = { + stewardship # How well do you understand the law? + diplomacy # How good are you at convincing people? + } target = scope:actor 50 = { #Defender wins the toss. compare_modifier = { @@ -77,20 +81,8 @@ court_amenities_interactions.0001 = { multiply = -5 } } - # How good are you at convincing people? - modifier = { - add = { - value = scope:recipient.diplomacy - multiply = 5 - } - } - modifier = { - add = { - value = scope:actor.diplomacy - multiply = -5 - } - } - desc = court_amenities_interactions.0001.a.tt_success + min = 5 + custom_tooltip = court_amenities_interactions.0001.a.tt_success hidden_effect = { random_list = { 90 = { # Success, gain prestige @@ -165,20 +157,8 @@ court_amenities_interactions.0001 = { multiply = 5 } } - # How good are you at convincing people? - modifier = { - add = { - value = scope:recipient.diplomacy - multiply = -5 - } - } - modifier = { - add = { - value = scope:actor.diplomacy - multiply = 5 - } - } - desc = court_amenities_interactions.0001.a.tt_success + min = 5 + custom_tooltip = court_amenities_interactions.0001.a.tt_failure hidden_effect = { random_list = { 90 = { # Success, gain prestige @@ -240,7 +220,7 @@ court_amenities_interactions.0001 = { base = 100 } } - + #I surrender, opponent gains a weak hook and prestige option = { name = court_amenities_interactions.0001.b @@ -428,13 +408,6 @@ court_amenities_interactions.0003 = { desc = { desc = court_amenities_interactions.0002.desc_intro first_valid = { - #triggered_desc = { - # trigger = { - # has_character_flag = sumptuary_debate_won - # scope:actor.faith = { has_doctrine_parameter = naked_adherents_active } - # } - # desc = court_amenities_interactions.0003.desc_won.nakey - #} triggered_desc = { trigger = { has_character_flag = sumptuary_debate_won @@ -465,15 +438,6 @@ court_amenities_interactions.0003 = { animation = disbelief } animation = schadenfreude - #triggered_outfit = { - # trigger = { - # scope:actor = { - # has_character_flag = sumptuary_debate_lost - # faith = { has_doctrine_parameter = naked_adherents_active } - # } - # } - # outfit_tags = { beggar_rags } - #} triggered_outfit = { trigger = { scope:actor = { @@ -597,7 +561,7 @@ court_amenities_interactions.0004 = { character = scope:victim animation = pain } - + option = { # Let them off with a warning name = court_amenities_interactions.0004.a add_hook = { @@ -605,7 +569,7 @@ court_amenities_interactions.0004 = { target = scope:victim } } - + option = { # Arrest them name = court_amenities_interactions.0004.b add_opinion = { diff --git a/events/prison_events/dungeon_ongoing_events.txt b/events/prison_events/dungeon_ongoing_events.txt index 4f06a7a091..8b572aadde 100644 --- a/events/prison_events/dungeon_ongoing_events.txt +++ b/events/prison_events/dungeon_ongoing_events.txt @@ -20,7 +20,7 @@ dungeon_ongoing.0001 = { soundeffect = in_the_dungeon_event left_portrait = { character = root - animation = stressed + animation = stress } trigger = { @@ -475,6 +475,652 @@ dungeon_ongoing.0009 = { } } +# You contemplate smuggling a letter out to your family, beseeching them for help +# Clans only +dungeon_ongoing.0010 = { + type = character_event + title = dungeon_ongoing.0010.t + desc = dungeon_ongoing.0010.desc + + theme = prison + soundeffect = in_the_dungeon_event + left_portrait = { + character = root + animation = stress + } + + trigger = { + age >= 12 + government_has_flag = government_is_clan + exists = top_liege + exists = house + # You belong to the same government as your imprisoner + imprisoner = { + exists = top_liege + top_liege = root.top_liege + } + NOT = { has_character_flag = had_event_dungeon_ongoing_0010 } + house = { + any_house_member = { + NOR = { + this = root + this = root.imprisoner + } + is_available_adult = yes + # Belongs to the same government as the imprisoner + # This is so that the imprisoner actually cares about their opinion + exists = top_liege + top_liege = root.imprisoner.top_liege + } + } + } + + immediate = { + play_music_cue = "mx_cue_prison" + add_character_flag = { + flag = had_event_dungeon_ongoing_0010 + days = 365 + } + imprisoner = { + save_scope_as = imprisoner + } + save_scope_as = prisoner + # Grab the most likely person to write to + # This will be the person we're closest to and has the most military power + house = { + random_house_member = { + limit = { + NOR = { + this = scope:prisoner + this = scope:imprisoner + } + is_available_adult = yes + } + weight = { + base = 1 + opinion_modifier = { + who = this + opinion_target = scope:prisoner + multiplier = 2 + } + modifier = { + add = { + value = max_military_strength + subtract = scope:imprisoner.max_military_strength + divide = 50 + min = 50 # Weights landed over unlanded + } + } + } + save_scope_as = letter_recipient + } + } + # Save the difference between our diplomacy/intrigue skills and our imprisoners' + # This will be important to determine which of the smuggle letter options to show + save_scope_value_as = { + name = diplomacy_skill_difference + value = { + value = diplomacy + subtract = scope:imprisoner.diplomacy + } + } + save_scope_value_as = { + name = intrigue_skill_difference + value = { + value = intrigue + subtract = scope:imprisoner.intrigue + } + } + } + + option = { # Risk writing them: Diplomacy + name = dungeon_ongoing.0010.a + custom_tooltip = dungeon_ongoing.0010.a.tt + # The difference between our diplomacy skill and the imprisoner's diplomacy skill is higher than + # The difference between our intrigue skill and theirs + # I.e. this option has a higher chance of success than option b + trigger = { + scope:diplomacy_skill_difference >= scope:intrigue_skill_difference + } + duel = { + skill = diplomacy + value = scope:imprisoner.diplomacy + 7 = { # Success + compare_modifier = { + value = scope:duel_value + multiplier = 0.5 + min = -6.67 + } + desc = dungeon_ongoing.0010.a.success.t + send_interface_toast = { + title = dungeon_ongoing.0010.a.success.t + custom_tooltip = dungeon_ongoing.0010.a.success.desc + left_icon = scope:letter_recipient + } + scope:letter_recipient = { + trigger_event = { + id = dungeon_ongoing.0011 + days = { 7 14 } + } + } + } + 3 = { # Failure, get beaten + desc = dungeon_ongoing.0010.a.failure.t + send_interface_toast = { + type = event_toast_effect_bad + title = dungeon_ongoing.0010.a.failure.t + left_icon = scope:imprisoner + increase_wounds_effect = { REASON = dungeon } + } + } + } + stress_impact = { + craven = minor_stress_gain + } + ai_chance = { + base = 50 + modifier = { + add = { + value = scope:diplomacy_skill_difference + multiply = 4 + } + } + } + } + + option = { # Risk writing them: Intrigue + name = dungeon_ongoing.0010.b + custom_tooltip = dungeon_ongoing.0010.b.tt + trigger = { + scope:diplomacy_skill_difference < scope:intrigue_skill_difference + } + duel = { + skill = intrigue + value = scope:imprisoner.intrigue + 7 = { # Success + compare_modifier = { + value = scope:duel_value + multiplier = 0.5 + min = -6.67 + } + desc = dungeon_ongoing.0010.a.success.t + send_interface_toast = { + title = dungeon_ongoing.0010.a.success.t + custom_tooltip = dungeon_ongoing.0010.a.success.desc + left_icon = scope:letter_recipient + } + scope:letter_recipient = { + trigger_event = { + id = dungeon_ongoing.0011 + days = { 7 14 } + } + } + } + 3 = { # Failure, get beaten + desc = dungeon_ongoing.0010.b.failure.t + send_interface_toast = { + type = event_toast_effect_bad + title = dungeon_ongoing.0010.b.failure.t + left_icon = root + increase_wounds_effect = { REASON = dungeon } + } + } + } + stress_impact = { + craven = minor_stress_gain + } + ai_chance = { + base = 50 + modifier = { + add = { + value = scope:intrigue_skill_difference + multiply = 4 + } + } + } + } + + option = { # Don't risk writing them + name = dungeon_ongoing.0010.c + if = { + limit = { + OR = { + has_trait = patient + has_trait = craven + has_trait = content + } + } + # No stress impact + } + else_if = { + limit = { + OR = { + has_trait = impatient + has_trait = brave + has_trait = ambitious + } + } + add_stress = medium_stress_impact_gain + } + else = { + add_stress = minor_stress_impact_gain + } + ai_chance = { + base = 10 + opinion_modifier = { + who = scope:prisoner + opinion_target = scope:letter_recipient + multiplier = 4 + } + } + } + +} + +# A family member beseeches you to rescue them from prison +dungeon_ongoing.0011 = { + type = character_event + title = dungeon_ongoing.0011.t + desc = dungeon_ongoing.0011.desc + + theme = family + override_background = { + reference = dungeon + } + soundeffect = in_the_dungeon_event + left_portrait = { + character = scope:prisoner + animation = beg + } + + trigger = { + # Making sure our prisoner is still imprisoned by the same person... + scope:prisoner = { + is_alive = yes + is_imprisoned_by = scope:imprisoner + } + } + + option = { # Try to guilt-trip the imprisoner + name = dungeon_ongoing.0011.a + # If the imprisoner is an AI, then duel with diplomacy + if = { + limit = { + scope:imprisoner = { is_ai = yes} + } + duel = { + skill = diplomacy + value = scope:imprisoner.diplomacy + 6 = { # Successful convincing imprisoner + desc = dungeon_ongoing.0011.a.success.t + compare_modifier = { + value = scope:duel_value + multiplier = 0.25 + } + # More likely if imprisoner likes you + opinion_modifier = { + who = scope:imprisoner + opinion_target = scope:letter_recipient + multiplier = 0.1 + } + # More likely if imprisoner fears your military might + modifier = { + add = { + value = max_military_strength + subtract = scope:imprisoner.max_military_strength + divide = 500 + min = -2 + } + } + send_interface_toast = { + title = dungeon_ongoing.0011.a.success.t + left_icon = scope:imprisoner + right_icon = scope:prisoner + scope:prisoner = { + release_from_prison = yes + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:letter_recipient + TARGET = scope:imprisoner + VALUE = minor_unity_gain + DESC = clan_unity_release_from_prison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + reverse_add_opinion = { + target = scope:prisoner + modifier = released_from_prison + } + } + 4 = { # Did not convince imprisoner + desc = dungeon_ongoing.0011.a.failure.t + send_interface_toast = { + type = event_generic_bad + title = dungeon_ongoing.0010.a.failure.t + left_icon = root + reverse_add_opinion = { + target = scope:imprisoner + modifier = overreaction_opinion + opinion = -15 + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:letter_recipient + TARGET = scope:imprisoner + VALUE = minor_unity_loss + DESC = clan_unity_unrelease_from_prison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + scope:prisoner = { + trigger_event = dungeon_ongoing.0014 + } + hidden_effect = { + reverse_add_opinion = { + target = scope:imprisoner + modifier = disappointed_opinion + opinion = -15 + } + } + } + } + } + # Otherwise trigger dungeon_ongoing.0013 for the imprisoner where they will decide for themselves + else = { + custom_tooltip = dungeon_ongoing.0011.a_not_ai + scope:imprisoner = { + trigger_event = { + id = dungeon_ongoing.0013 + days = { 3 7 } + } + } + } + ai_chance = { + base = 50 + # More likely if the letter recipient likes the prisoner + opinion_modifier = { + who = scope:letter_recipient + opinion_target = scope:prisoner + multiplier = 2 + } + } + } + + option = { # Let them rot! + name = dungeon_ongoing.0011.b + scope:prisoner = { + add_opinion = { + target = scope:letter_recipient + modifier = abandoned_me_opinion + } + trigger_event = dungeon_ongoing.0012 + } + # Lose piety, unless religion condones callousness + if = { + limit = { + faith = { + NOR = { + trait_is_virtue = callous + trait_is_virtue = sadistic + trait_is_sin = compassionate + } + } + } + add_piety = minor_piety_loss + } + ai_chance = { + base = 0 + ai_value_modifier = { + ai_compassion = -0.5 + } + # More likely if the letter recipient hates the prisoner + opinion_modifier = { + who = scope:letter_recipient + opinion_target = scope:prisoner + multiplier = -1 + } + } + } +} + +# Letter to family member goes ignored +dungeon_ongoing.0012 = { + type = character_event + title = dungeon_ongoing.0012.t + desc = dungeon_ongoing.0012.desc + + theme = prison + soundeffect = in_the_dungeon_event + left_portrait = { + character = root + triggered_animation = { + trigger = { + OR = { + has_trait = callous + has_trait = sadistic + } + } + animation = boredom + } + triggered_animation = { + trigger = { + NOR = { + has_trait = callous + has_trait = sadistic + } + } + animation = stress + } + } + + trigger = { + is_imprisoned_by = scope:imprisoner + } + + option = { # Be sad, unless you're callous + name = dungeon_ongoing.0012.a + stress_impact = { + base = medium_stress_gain + } + } + + option = { # Bah, who needs family? + name = dungeon_ongoing.0012.b + trigger = { + OR = { + has_trait = callous + has_trait = sadistic + } + } + trait = callous + trait = sadistic + exclusive = yes + } + +} + +# Release a clan member from your prison or not? +dungeon_ongoing.0013 = { + type = character_event + title = dungeon_ongoing.0013.t + desc = { + desc = dungeon_ongoing.0013.desc_intro + first_valid = { + # In this desc, the advocate is imploring you to release the prisoner on the basis of compassion + house unity + # So don't trigger it if that advocate also has another house member imprisoned and would be a hypocrite + triggered_desc = { + trigger = { + is_in_same_clan_as_trigger = { CHARACTER = scope:letter_recipient } + scope:letter_recipient = { + NOR = { + ai_compassion < low_positive_ai_value + any_prisoner = { + house = scope:letter_recipient.house + } + } + } + } + desc = dungeon_ongoing.0013.desc_reasoning_compassionate + } + desc = dungeon_ongoing.0013.desc_reasoning_other + } + } + + theme = family + override_background = { + reference = throne_room + } + left_portrait = { + character = scope:letter_recipient + animation = disapproval + } + right_portrait = { + character = scope:imprisoner + animation = personality_rational + } + lower_left_portrait = scope:prisoner + + trigger = { + scope:prisoner = { + is_alive = yes + is_imprisoned_by = scope:imprisoner + } + scope:letter_recipient = { + is_available_adult = yes + top_liege = scope:imprisoner.top_liege + } + } + + immediate = { + top_liege.primary_title = { save_scope_as = realm_title } + } + + option = { # Release the prisoner + name = dungeon_ongoing.0013.a + scope:prisoner = { + release_from_prison = yes + } + scope:prisoner = { + add_opinion = { + target = scope:letter_recipient + modifier = released_from_prison + } + } + reverse_add_opinion = { + target = scope:letter_recipient + modifier = grateful_opinion + opinion = 20 + } + # Add house unity if either the petitioner or the prisoner are part of your house + if = { + limit = { + OR = { + is_in_same_clan_as_trigger = { CHARACTER = scope:letter_recipient } + is_in_same_clan_as_trigger = { CHARACTER = scope:prisoner } + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:imprisoner + TARGET = scope:letter_recipient + VALUE = minor_unity_gain + DESC = clan_unity_grant_prisoner_release.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + stress_impact = { + greedy = minor_stress_impact_gain + } + ai_chance = { + base = 50 + # More likely to release if they like the concerned family member + opinion_modifier = { + opinion_target = scope:letter_recipient + multiplier = 0.25 + } + } + } + + option = { # Don't release the prisoner + name = dungeon_ongoing.0013.b + reverse_add_opinion = { + target = scope:letter_recipient + modifier = disappointed_opinion + opinion = -20 + } + # Remove house unity if either the petitioner or the prisoner are part of your house + if = { + limit = { + OR = { + is_in_same_clan_as_trigger = { CHARACTER = scope:letter_recipient } + is_in_same_clan_as_trigger = { CHARACTER = scope:prisoner } + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:imprisoner + TARGET = scope:letter_recipient + VALUE = minor_unity_loss + DESC = clan_unity_refused_release_request.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + scope:prisoner = { + trigger_event = dungeon_ongoing.0014 + } + stress_impact = { + compassionate = medium_stress_impact_gain + } + ai_chance = { + base = 0 + ai_value_modifier = { + ai_greed = 0.25 + ai_compassion = 0.2 + } + } + } + +} + +# Your family member's request was ignored +dungeon_ongoing.0014 = { + type = character_event + title = dungeon_ongoing.0014.t + desc = dungeon_ongoing.0014.desc + + theme = prison + soundeffect = in_the_dungeon_event + left_portrait = { + character = root + animation = stress + } + + trigger = { + is_alive = yes + is_imprisoned_by = scope:imprisoner + } + + option = { # At least they tried + name = dungeon_ongoing.0014.a + stress_impact = { + base = minor_stress_loss + } + } + + option = { # But I want to leave NOW! + name = dungeon_ongoing.0014.b + trigger = { + OR = { + has_trait = impatient + has_trait = ambitious + } + } + trait = impatient + trait = ambitious + exclusive = yes + stress_impact = { + base = minor_stress_gain + } + } + +} ######################### # Long-term Imprisonment Events From b412e93279b7f99c1f5a806af795b9accb22503b Mon Sep 17 00:00:00 2001 From: Grekopithikos Date: Sun, 12 Nov 2023 11:44:02 +0200 Subject: [PATCH 03/82] events --- common/game_rules/000_wc_game_rules.txt | 15 - common/game_rules/00_game_rules.txt | 16 +- events/court_maintenance_events.txt | 6 +- events/government_events/clan_events.txt | 315 +++--- events/harm_events.txt | 456 ++++++--- .../alliance_interaction_events.txt | 3 + .../character_interaction_events.txt | 108 +- .../vassal_interaction_events.txt | 34 + events/jester_stress_relief_events.txt | 80 +- events/lifestyles/sell_titles_events.txt | 52 +- events/relations_events/lover_events.txt | 2 +- .../religion_events/faith_creation_events.txt | 3 +- .../false_conversion_events.txt | 961 ++++++++++++++++-- events/religion_events/fervor_events.txt | 113 +- .../religion_events/great_holy_war_events.txt | 542 ++++++---- events/religion_events/heresy_events.txt | 123 +-- events/religion_events/holy_order_events.txt | 2 +- .../court_scheme_outcome_events.txt | 4 +- .../fabricate_hook_outcome_events.txt | 6 - .../intrigue_scheme_ongoing_events.txt | 74 +- .../murder_scheme/murder_outcome_events.txt | 22 +- .../murder_saves/murder_save_events.txt | 75 +- .../murder_scheme_maintenance_events.txt | 47 +- .../travel_danger_events_arky.txt | 1 - .../travel_danger_events_joe.txt | 106 +- .../travel_danger_events_klank.txt | 30 +- .../travel_events/travel_events_filippa.txt | 8 +- events/travel_events/travel_events_james.txt | 45 + .../travel_events/travel_events_veronica.txt | 1 + events/war_events/raid_events.txt | 7 +- 30 files changed, 2318 insertions(+), 939 deletions(-) diff --git a/common/game_rules/000_wc_game_rules.txt b/common/game_rules/000_wc_game_rules.txt index 69893435c3..5df5c2be91 100644 --- a/common/game_rules/000_wc_game_rules.txt +++ b/common/game_rules/000_wc_game_rules.txt @@ -61,21 +61,6 @@ wc_knowledge_overflow = { } } -dlc_fp1_scandinavian_adventurers = { - - categories = { - warcraft_category difficulty historicity flavor - } - - default = fp1_scandi_adventurers_frequent - #dlc = "The Northern Lords" - fp1_scandi_adventurers_rare = { flag = blocks_achievements } - fp1_scandi_adventurers_occasional = {} - fp1_scandi_adventurers_frequent = {} - fp1_scandi_adventurers_apocalyptic = {} - fp1_scandi_adventurers_off = { flag = blocks_achievements } -} - wc_interracial_marriage = { categories = { diff --git a/common/game_rules/00_game_rules.txt b/common/game_rules/00_game_rules.txt index e47fa33df9..97beb0c34b 100644 --- a/common/game_rules/00_game_rules.txt +++ b/common/game_rules/00_game_rules.txt @@ -317,7 +317,7 @@ random_harm_target = { difficulty health } - default = harm_target_all + default = harm_target_ai_only harm_target_all = {} @@ -724,6 +724,20 @@ domain_limit_tweaks = { # Warcraft - Removing # End of Warcraft +dlc_fp1_scandinavian_adventurers = { + + categories = { + difficulty historicity flavor + } + + default = fp1_scandi_adventurers_frequent + #dlc = "The Northern Lords" + fp1_scandi_adventurers_rare = { flag = blocks_achievements } + fp1_scandi_adventurers_occasional = {} + fp1_scandi_adventurers_frequent = {} + fp1_scandi_adventurers_apocalyptic = {} + fp1_scandi_adventurers_off = { flag = blocks_achievements } +} # Warcraft - Removing diff --git a/events/court_maintenance_events.txt b/events/court_maintenance_events.txt index 5e573bfd60..69bda2e28a 100644 --- a/events/court_maintenance_events.txt +++ b/events/court_maintenance_events.txt @@ -297,12 +297,8 @@ court_maintenance.0011 = { } cp:councillor_chancellor = { save_scope_as = messenger } } - else_if = { - limit = { any_vassal = { always = yes } } - random_vassal = { save_scope_as = messenger } - } else = { - random_courtier = { save_scope_as = messenger } + random_vassal = { save_scope_as = messenger } } #House banner if = { diff --git a/events/government_events/clan_events.txt b/events/government_events/clan_events.txt index 08e9c3f60d..eee41bbf79 100644 --- a/events/government_events/clan_events.txt +++ b/events/government_events/clan_events.txt @@ -1,27 +1,21 @@ namespace = clan - -#Events related to clan governments -#These events are very generalized to be applicable for a wide variety of characters, and some inaccuracies will inevitably exist. - -# Flavor events -# clan.1001-1999 - - - -################# -# # -# FLAVOR # -# # -################# - +### Events related to clan governments ############################################# +## 1001 - 1002 Powerful vassal requests marriage by Linnéa Thimrén +## 1011 - 1011 A vassal asks for a perk by Linnéa Thimrén +## 1101 - 1101 Vassal Resents Nepotism by Sean Hughes +## 1201 - 1201 Culture seeks Representation by Sean Hughes +################################################################################### +# These events are very generalized to be applicable for +# a wide variety of characters, and some inaccuracies will inevitably exist. +################################################################################### ######################################### -# Powerful vassal requests marriage # -# by Linnéa Thimrén # +# Powerful vassal requests marriage # +# by Linnéa Thimrén # ######################################### - scripted_trigger clan_1001_valid_vassal = { + is_available_ai_adult = yes is_powerful_vassal_of = root government_has_flag = government_is_clan NOT = { is_allied_to = root } @@ -41,23 +35,26 @@ clan.1001 = { title = clan.1001.t desc = clan.1001.desc theme = realm - left_portrait = scope:child - right_portrait = scope:vassal + left_portrait = { + character = root + animation = frontend_right_idle + } + lower_left_portrait = scope:child + right_portrait = { + character = scope:vassal + animation = flirtation + } lower_right_portrait = scope:vassal_child + cooldown = { years = 10 } trigger = { government_has_flag = government_is_clan - NOT = { has_character_flag = had_event_clan_1001 } any_vassal = { clan_1001_valid_vassal = yes } } immediate = { - add_character_flag = { - flag = had_event_clan_1001 - years = 10 - } every_child = { limit = { is_married = no @@ -96,12 +93,10 @@ clan.1001 = { } } - option = { #They will marry! + option = { # They will marry! name = clan.1001.a if = { - limit = { - has_ep2_dlc_trigger = yes - } + limit = { has_ep2_dlc_trigger = yes } create_grand_wedding_betrothal = { SPOUSE_1 = scope:child SPOUSE_2 = scope:vassal_child @@ -126,6 +121,14 @@ clan.1001 = { } } scope:vassal = { + add_clan_unity_interaction_effect = { + CHARACTER = root + TARGET = this + VALUE = medium_unity_gain + DESC = clan_unity_generic_increased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } + add_opinion = { target = root modifier = pleased_opinion @@ -159,9 +162,17 @@ clan.1001 = { } } - option = { #nah + option = { # nah name = clan.1001.b scope:vassal = { + add_clan_unity_interaction_effect = { + CHARACTER = root + TARGET = this + VALUE = medium_unity_loss + DESC = clan_unity_generic_decreased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } + add_opinion = { target = root modifier = refusal_opinion @@ -202,18 +213,13 @@ clan.1002 = { } } } - scope:rejecting_betrothed = { - save_scope_as = child - } - + scope:rejecting_betrothed = { save_scope_as = child } } option = { #It was a mistake!! name = clan.1002.a if = { - limit = { - has_ep2_dlc_trigger = yes - } + limit = { has_ep2_dlc_trigger = yes } create_grand_wedding_betrothal = { SPOUSE_1 = scope:child SPOUSE_2 = scope:vassal_child @@ -238,6 +244,13 @@ clan.1002 = { } } scope:vassal = { + add_clan_unity_interaction_effect = { + CHARACTER = root + TARGET = this + VALUE = miniscule_unity_loss + DESC = clan_unity_generic_decreased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } add_opinion = { target = root modifier = pleased_opinion @@ -264,15 +277,22 @@ clan.1002 = { ai_chance = { base = 100 } + + add_clan_unity_interaction_effect = { + CHARACTER = root + TARGET = scope:vassal + VALUE = massive_unity_loss + DESC = clan_unity_generic_decreased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } } } ################################# -# A vassal asks for a perk # -# by Linnéa Thimrén # +# A vassal asks for a perk # +# by Linnéa Thimrén # ################################# - clan.1011 = { type = character_event title = clan.1011.t @@ -280,27 +300,19 @@ clan.1011 = { desc = clan.1011.desc_opening first_valid = { triggered_desc = { - trigger = { - exists = scope:army_1 - } + trigger = { exists = scope:army_1 } desc = clan.1011.desc_army } triggered_desc = { - trigger = { - exists = scope:prestige_1 - } + trigger = { exists = scope:prestige_1 } desc = clan.1011.desc_prestige } triggered_desc = { - trigger = { - exists = scope:diplomacy_1 - } + trigger = { exists = scope:diplomacy_1 } desc = clan.1011.desc_diplomacy } triggered_desc = { - trigger = { - exists = scope:prowess_1 - } + trigger = { exists = scope:prowess_1 } desc = clan.1011.desc_prowess } desc = clan.1011.desc_fallback @@ -310,10 +322,10 @@ clan.1011 = { left_portrait = scope:vassal right_portrait = scope:allied_vassal lower_center_portrait = scope:councillor + cooldown = { years = 10 } trigger = { government_has_flag = government_is_clan - NOT = { has_character_flag = had_event_clan_1011 } any_vassal = { government_has_flag = government_is_clan is_allied_to = root @@ -325,11 +337,7 @@ clan.1011 = { } immediate = { - add_character_flag = { - flag = had_event_clan_1011 - years = 10 - } - random_vassal = { #An ally you hopefully like somewhat + random_vassal = { # An ally you hopefully like somewhat limit = { government_has_flag = government_is_clan is_allied_to = root @@ -468,7 +476,7 @@ clan.1011 = { } } - option = { #army + option = { # army name = clan.1011.army trigger = { OR = { @@ -483,6 +491,14 @@ clan.1011 = { custom_tooltip = clan.1011.tt } + add_clan_unity_interaction_effect = { + CHARACTER = scope:vassal + TARGET = root + VALUE = minor_unity_gain + DESC = clan_unity_generic_increased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } + scope:councillor = { add_character_modifier = { modifier = focused_on_teaching_martial_modifier @@ -500,7 +516,7 @@ clan.1011 = { } } - option = { #prestige + option = { # prestige name = clan.1011.prestige trigger = { OR = { @@ -514,6 +530,15 @@ clan.1011 = { } custom_tooltip = clan.1011.tt } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:vassal + TARGET = root + VALUE = minor_unity_gain + DESC = clan_unity_generic_increased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } + add_prestige = medium_prestige_loss scope:vassal = { add_prestige = medium_prestige_gain @@ -524,7 +549,7 @@ clan.1011 = { } } - option = { #diplomacy + option = { # diplomacy name = clan.1011.diplomacy trigger = { OR = { @@ -538,6 +563,15 @@ clan.1011 = { } custom_tooltip = clan.1011.tt } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:vassal + TARGET = root + VALUE = minor_unity_gain + DESC = clan_unity_generic_increased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } + scope:vassal = { add_character_modifier = { modifier = diplomacy_student_modifier @@ -555,7 +589,7 @@ clan.1011 = { } } - option = { #prowess + option = { # prowess name = clan.1011.prowess trigger = { OR = { @@ -569,6 +603,15 @@ clan.1011 = { } custom_tooltip = clan.1011.tt } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:vassal + TARGET = root + VALUE = minor_unity_gain + DESC = clan_unity_generic_increased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } + scope:vassal = { add_character_modifier = { modifier = prowess_student_modifier @@ -586,7 +629,7 @@ clan.1011 = { } } - option = { #fallback + option = { # fallback name = clan.1011.fallback trigger = { NOR = { @@ -600,6 +643,14 @@ clan.1011 = { short_term_gold < medium_gold_value } + add_clan_unity_interaction_effect = { + CHARACTER = scope:vassal + TARGET = root + VALUE = minor_unity_gain + DESC = clan_unity_generic_increased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } + remove_short_term_gold = medium_gold_value scope:vassal = { add_gold = medium_gold_value @@ -610,8 +661,17 @@ clan.1011 = { } } - option = { #nah + option = { # nah name = clan.1011.b + + add_clan_unity_interaction_effect = { + CHARACTER = scope:vassal + TARGET = root + VALUE = minor_unity_loss + DESC = clan_unity_generic_decreased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } + scope:vassal = { add_opinion = { target = root @@ -630,7 +690,6 @@ clan.1011 = { # Vassal Resents Nepotism # # by Sean Hughes # ######################################### - scripted_trigger clan_1101_complaining_vassal = { clan_1101_nondynastic_vassal = yes is_available_ai_adult = yes @@ -653,6 +712,7 @@ clan.1101 = { character = scope:vassal animation = beg } + right_portrait = root trigger = { government_has_flag = government_is_clan @@ -690,19 +750,13 @@ clan.1101 = { is_powerful_vassal_of = root clan_1101_complaining_vassal = yes } - alternative_limit = { - clan_1101_complaining_vassal = yes - } + alternative_limit = { clan_1101_complaining_vassal = yes } weight = { base = 1 - compare_modifier = { - value = highest_held_title_tier - } - ai_value_modifier = { - ai_greed = 0.01 # Between +1 and -1 - } + compare_modifier = { value = highest_held_title_tier } + ai_value_modifier = { ai_greed = 0.01 } } save_scope_as = vassal } @@ -710,12 +764,18 @@ clan.1101 = { # Option A (High Diplomacy): Talk your way out of it. option = { - trigger = { - diplomacy >= high_skill_rating - } + trigger = { diplomacy >= high_skill_rating } name = clan.1101.a + flavor = clan.1101.a.flavor skill = diplomacy + house = { + add_unity_value = { + value = medium_unity_gain + character = root + desc = clan_unity_generic_increased_fallback.notarget + } + } scope:vassal = { add_opinion = { modifier = pleased_opinion @@ -737,10 +797,16 @@ clan.1101 = { } } - every_vassal_or_below = { - limit = { - dynasty = root.dynasty + house = { + add_unity_value = { + value = medium_unity_loss + character = root + desc = clan_unity_generic_decreased_fallback.notarget } + } + + every_vassal_or_below = { + limit = { dynasty = root.dynasty } custom = clan.1101.b.custom custom_tooltip = clan.1101.b.tt @@ -763,16 +829,34 @@ clan.1101 = { option = { name = clan.1101.c + house = { # Tyranny, but, still technically in benefit of your house + add_unity_value = { + value = medium_unity_gain + character = root + desc = clan_unity_generic_increased_fallback.notarget + } + } + imprison_character_effect = { IMPRISONER = root TARGET = scope:vassal } + + stress_impact = { just = medium_stress_gain } } # Option D: Reject the demands. option = { name = clan.1101.d + house = { + add_unity_value = { + value = medium_unity_gain + character = root + desc = clan_unity_generic_increased_fallback.notarget + } + } + scope:vassal = { add_opinion = { modifier = refusal_opinion @@ -801,7 +885,6 @@ clan.1101 = { # Culture seeks Representation # # by Sean Hughes # ######################################### - scripted_trigger clan_1201_has_unrepresented_culture_trigger = { save_temporary_scope_as = this_county holder = { @@ -813,14 +896,7 @@ scripted_trigger clan_1201_has_unrepresented_culture_trigger = { } # Check to see if the culture of this county is also unrepresented in the upper eschelons of the sub-realm (no direct vassals of this culture). - root = { - NOT = { - any_vassal = { - culture = scope:this_county.culture - - } - } - } + root = { NOT = { any_vassal = { culture = scope:this_county.culture } } } } clan.1201 = { @@ -890,15 +966,12 @@ clan.1201 = { else = { save_scope_as = target_title add_to_list = target_title_counties - holder = { - save_scope_as = vassal - } + holder = { save_scope_as = vassal } } } # Generate a petitioner from that county create_character = { - # Warcraft age = { 25 40 } gender_female_chance = { if = { @@ -909,9 +982,7 @@ clan.1201 = { limit = { root.faith = { has_doctrine = doctrine_gender_female_dominated } } add = 100 } - else = { - add = 50 - } + else = { add = 50 } } diplomacy = {4 8} martial = {2 6} @@ -968,6 +1039,14 @@ clan.1201 = { name = clan.1201.a + add_clan_unity_interaction_effect = { + CHARACTER = root + TARGET = scope:target_title.holder + VALUE = major_unity_loss + DESC = clan_unity_title_revoked.desc + REVERSE_NON_HOUSE_TARGET = no + } + # Assign all titles in the duchy (including the duchy itself) to the petitioner. create_title_and_vassal_change = { type = granted @@ -976,31 +1055,19 @@ clan.1201 = { } if = { - limit = { - scope:target_title = { - tier = tier_duchy - } - } + limit = { scope:target_title = { tier = tier_duchy } } scope:target_title = { change_title_holder = { holder = scope:petitioner change = scope:change } - holder = { - add_to_list = upset_vassals - } + holder = { add_to_list = upset_vassals } } } every_in_list = { list = target_title_counties - limit = { - holder = { - target_is_liege_or_above = root - } - } - holder = { - add_to_list = upset_vassals - } + limit = { holder = { target_is_liege_or_above = root } } + holder = { add_to_list = upset_vassals } change_title_holder = { holder = scope:petitioner change = scope:change @@ -1034,6 +1101,14 @@ clan.1201 = { option = { name = clan.1201.b + add_clan_unity_interaction_effect = { + CHARACTER = root + TARGET = scope:target_title.holder + VALUE = minor_unity_loss + DESC = clan_unity_generic_decreased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no + } + add_courtier = scope:petitioner scope:petitioner = { add_opinion = { @@ -1046,9 +1121,7 @@ clan.1201 = { every_in_list = { list = target_title_counties limit = { - holder = { - target_is_liege_or_above = root - } + holder = { target_is_liege_or_above = root } } change_county_control = -50 add_county_modifier = { @@ -1061,10 +1134,14 @@ clan.1201 = { # Option C: Refuse the petitioner's request. option = { name = clan.1201.c - hidden_effect = { - scope:petitioner = { - override_death_effect = { death_reason = death_disappearance } - } + add_clan_unity_interaction_effect = { + CHARACTER = root + TARGET = scope:target_title.holder + VALUE = minor_unity_gain + DESC = clan_unity_generic_increased_fallback.desc + REVERSE_NON_HOUSE_TARGET = no } + + hidden_effect = { scope:petitioner = { death = { death_reason = death_disappearance } } } } } diff --git a/events/harm_events.txt b/events/harm_events.txt index 91adc40f51..2dd7d7bc3f 100644 --- a/events/harm_events.txt +++ b/events/harm_events.txt @@ -141,7 +141,8 @@ scripted_effect harm_0000_grab_available_court_physician_effect = { scripted_effect harm_0000_physic_rescue_chance_incapable_effect = { random_list = { # You aren't permanently hurt. - 50 = { + 0 = { + modifier = { add = harm_event_random_list_medium_odd_success_value } desc = harm.0000.tt.incapable.success send_interface_toast = { title = harm.0000.tt.incapable.success @@ -150,7 +151,8 @@ scripted_effect harm_0000_physic_rescue_chance_incapable_effect = { } } # The experience leaves you feeble. - 50 = { + 0 = { + modifier = { add = harm_event_random_list_medium_odd_failure_value } desc = harm.0000.tt.incapable.failure send_interface_toast = { title = harm.0000.tt.incapable.failure @@ -172,7 +174,8 @@ scripted_effect harm_0000_physic_rescue_chance_incapable_effect = { scripted_effect harm_0000_physic_rescue_chance_death_effect = { random_list = { # You live. - 50 = { + 0 = { + modifier = { add = harm_event_random_list_medium_odd_success_value } desc = harm.0000.tt.death.success send_interface_toast = { title = harm.0000.tt.death.success @@ -182,7 +185,8 @@ scripted_effect harm_0000_physic_rescue_chance_death_effect = { } } # You die. - 50 = { + 0 = { + modifier = { add = harm_event_random_list_medium_odd_failure_value } desc = harm.0000.tt.death.failure send_interface_toast = { title = harm.0000.tt.death.failure @@ -408,7 +412,8 @@ harm.0001 = { # Welp, you've got some kinda chance. random_list = { - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0001.d.tt.success send_interface_toast = { title = harm.0001.d.tt.success @@ -416,7 +421,8 @@ harm.0001 = { harm_0001_age_gracefully_or_stress_loss_effect = yes } } - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0001.d.tt.failure send_interface_toast = { title = harm.0001.d.tt.failure @@ -617,7 +623,8 @@ harm.0011 = { name = harm.0011.a random_list = { - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0011.a.tt.success # You recover, given time. send_interface_toast = { @@ -642,7 +649,8 @@ harm.0011 = { } } } - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0011.a.tt.failure # But you were not fine. send_interface_toast = { @@ -680,7 +688,8 @@ harm.0011 = { skill = learning value = very_high_skill_rating # With HerHis aid, you pull through. - 50 = { + 0 = { + modifier = { add = harm_event_random_list_medium_odd_success_value } compare_modifier = { value = scope:duel_value multiplier = 3.5 @@ -694,14 +703,16 @@ harm.0011 = { right_icon = scope:medic # Clearly you were well-fortified. random_list = { - 50 = { + 0 = { + modifier = { add = harm_event_random_list_medium_odd_success_value } desc = harm.0011.a.tt.success.bone add_character_modifier = { modifier = thick_skulled_modifier years = 20 } } - 50 = { + 0 = { + modifier = { add = harm_event_random_list_medium_odd_failure_value } desc = harm.0011.a.tt.success.brain add_character_modifier = { modifier = strong_willed_modifier @@ -719,7 +730,8 @@ harm.0011 = { } } # HerHis best just wasn't good enough. - 50 = { + 0 = { + modifier = { add = harm_event_random_list_medium_odd_failure_value } compare_modifier = { value = scope:duel_value multiplier = -3.5 @@ -923,7 +935,8 @@ harm.0501 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0501.a.tt.success send_interface_toast = { title = harm.0501.a.tt.success @@ -932,7 +945,8 @@ harm.0501 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0501.a.tt.failure send_interface_toast = { title = harm.0501.a.tt.failure @@ -980,7 +994,8 @@ harm.0501 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0501.c.tt.success send_interface_toast = { title = harm.0501.c.tt.success @@ -989,7 +1004,8 @@ harm.0501 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0501.c.tt.failure send_interface_toast = { title = harm.0501.c.tt.failure @@ -1189,7 +1205,8 @@ harm.0511 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0511.a.tt.success send_interface_toast = { title = harm.0511.a.tt.success @@ -1198,7 +1215,8 @@ harm.0511 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0511.a.tt.failure send_interface_toast = { title = harm.0511.a.tt.failure @@ -1262,7 +1280,8 @@ harm.0511 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0511.c.tt.success send_interface_toast = { title = harm.0511.c.tt.success @@ -1271,7 +1290,8 @@ harm.0511 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0511.c.tt.failure send_interface_toast = { title = harm.0511.c.tt.failure @@ -1458,7 +1478,8 @@ harm.0521 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0521.a.tt.success send_interface_toast = { title = harm.0521.a.tt.success @@ -1467,7 +1488,8 @@ harm.0521 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0521.a.tt.failure send_interface_toast = { title = harm.0521.a.tt.failure @@ -1532,7 +1554,8 @@ harm.0521 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0521.c.tt.success send_interface_toast = { title = harm.0521.c.tt.success @@ -1541,7 +1564,8 @@ harm.0521 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0521.c.tt.failure send_interface_toast = { title = harm.0521.c.tt.failure @@ -1714,7 +1738,8 @@ harm.0531 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0531.a.tt.success send_interface_toast = { title = harm.0531.a.tt.success @@ -1723,7 +1748,8 @@ harm.0531 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0531.a.tt.failure send_interface_toast = { title = harm.0531.a.tt.failure @@ -1789,7 +1815,8 @@ harm.0531 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0531.c.tt.success send_interface_toast = { title = harm.0531.c.tt.success @@ -1798,7 +1825,8 @@ harm.0531 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0531.c.tt.failure send_interface_toast = { title = harm.0531.c.tt.failure @@ -2015,7 +2043,8 @@ harm.0541 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0541.a.tt.success send_interface_toast = { title = harm.0541.a.tt.success @@ -2024,7 +2053,8 @@ harm.0541 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0541.a.tt.failure send_interface_toast = { title = harm.0541.a.tt.failure @@ -2087,7 +2117,8 @@ harm.0541 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0541.c.tt.success send_interface_toast = { title = harm.0541.c.tt.success @@ -2096,7 +2127,8 @@ harm.0541 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0541.c.tt.failure send_interface_toast = { title = harm.0541.c.tt.failure @@ -2289,7 +2321,8 @@ harm.0551 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0551.a.tt.success send_interface_toast = { title = harm.0551.a.tt.success @@ -2298,7 +2331,8 @@ harm.0551 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0551.a.tt.failure send_interface_toast = { title = harm.0551.a.tt.failure @@ -2352,7 +2386,8 @@ harm.0551 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0551.c.tt.success send_interface_toast = { title = harm.0551.c.tt.success @@ -2361,7 +2396,8 @@ harm.0551 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0551.c.tt.failure send_interface_toast = { title = harm.0551.c.tt.failure @@ -2515,7 +2551,8 @@ harm.0561 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0561.a.tt.success send_interface_toast = { title = harm.0561.a.tt.success @@ -2524,7 +2561,8 @@ harm.0561 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0561.a.tt.failure send_interface_toast = { title = harm.0561.a.tt.failure @@ -2578,7 +2616,8 @@ harm.0561 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0561.c.tt.success send_interface_toast = { title = harm.0561.c.tt.success @@ -2587,7 +2626,8 @@ harm.0561 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0561.c.tt.failure send_interface_toast = { title = harm.0561.c.tt.failure @@ -2795,7 +2835,8 @@ harm.0571 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0571.a.tt.success send_interface_toast = { title = harm.0571.a.tt.success @@ -2804,7 +2845,8 @@ harm.0571 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0571.a.tt.failure send_interface_toast = { title = harm.0571.a.tt.failure @@ -2852,7 +2894,8 @@ harm.0571 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0571.c.tt.success send_interface_toast = { title = harm.0571.c.tt.success @@ -2861,7 +2904,8 @@ harm.0571 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0571.c.tt.failure send_interface_toast = { title = harm.0571.c.tt.failure @@ -3040,7 +3084,8 @@ harm.0581 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0581.a.tt.success send_interface_toast = { title = harm.0581.a.tt.success @@ -3049,7 +3094,8 @@ harm.0581 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0581.a.tt.failure send_interface_toast = { title = harm.0581.a.tt.failure @@ -3242,7 +3288,8 @@ harm.0591 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0591.a.tt.success send_interface_toast = { title = harm.0591.a.tt.success @@ -3251,7 +3298,8 @@ harm.0591 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0591.a.tt.failure send_interface_toast = { title = harm.0591.a.tt.failure @@ -3308,7 +3356,8 @@ harm.0591 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0591.c.tt.success send_interface_toast = { title = harm.0591.c.tt.success @@ -3317,7 +3366,8 @@ harm.0591 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0591.c.tt.failure send_interface_toast = { title = harm.0591.c.tt.failure @@ -3537,7 +3587,8 @@ harm.0601 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0601.a.tt.success send_interface_toast = { title = harm.0601.a.tt.success @@ -3546,7 +3597,8 @@ harm.0601 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0601.a.tt.failure send_interface_toast = { title = harm.0601.a.tt.failure @@ -3731,7 +3783,8 @@ harm.0611 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0611.a.tt.success send_interface_toast = { title = harm.0611.a.tt.success @@ -3740,7 +3793,8 @@ harm.0611 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0611.a.tt.failure send_interface_toast = { title = harm.0611.a.tt.failure @@ -3806,7 +3860,8 @@ harm.0611 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0611.c.tt.success send_interface_toast = { title = harm.0611.c.tt.success @@ -3815,7 +3870,8 @@ harm.0611 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0611.c.tt.failure send_interface_toast = { title = harm.0611.c.tt.failure @@ -3988,7 +4044,8 @@ harm.0621 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0621.a.tt.success send_interface_toast = { title = harm.0621.a.tt.success @@ -3997,7 +4054,8 @@ harm.0621 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0621.a.tt.failure send_interface_toast = { title = harm.0621.a.tt.failure @@ -4051,7 +4109,8 @@ harm.0621 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0621.c.tt.success send_interface_toast = { title = harm.0621.c.tt.success @@ -4060,7 +4119,8 @@ harm.0621 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0621.c.tt.failure send_interface_toast = { title = harm.0621.c.tt.failure @@ -4402,7 +4462,8 @@ harm.0631 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0631.a.tt.success send_interface_toast = { title = harm.0631.a.tt.success @@ -4411,7 +4472,8 @@ harm.0631 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0631.a.tt.failure send_interface_toast = { title = harm.0631.a.tt.failure @@ -4462,7 +4524,8 @@ harm.0631 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0631.c.tt.success send_interface_toast = { title = harm.0631.c.tt.success @@ -4471,7 +4534,8 @@ harm.0631 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0631.c.tt.failure send_interface_toast = { title = harm.0631.c.tt.failure @@ -4659,7 +4723,8 @@ harm.0641 = { random_list = { # You aren't permanently hurt. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0641.a.tt.success send_interface_toast = { title = harm.0641.a.tt.success @@ -4668,7 +4733,8 @@ harm.0641 = { } } # The experience leaves you feeble. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0641.a.tt.failure send_interface_toast = { title = harm.0641.a.tt.failure @@ -4734,7 +4800,8 @@ harm.0641 = { random_list = { # You aren't permanently hurt. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0641.c.tt.success send_interface_toast = { title = harm.0641.c.tt.success @@ -4743,7 +4810,8 @@ harm.0641 = { } } # The experience leaves you feeble. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0641.c.tt.failure send_interface_toast = { title = harm.0641.c.tt.failure @@ -4911,7 +4979,8 @@ harm.1001 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1001.a.tt.success send_interface_toast = { title = harm.1001.a.tt.success @@ -4921,7 +4990,8 @@ harm.1001 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1001.a.tt.failure send_interface_toast = { title = harm.1001.a.tt.failure @@ -4973,7 +5043,8 @@ harm.1001 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1001.c.tt.success send_interface_toast = { title = harm.1001.c.tt.success @@ -4983,7 +5054,8 @@ harm.1001 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1001.c.tt.failure send_interface_toast = { title = harm.1001.c.tt.failure @@ -5132,7 +5204,8 @@ harm.1011 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1011.a.tt.success send_interface_toast = { title = harm.1011.a.tt.success @@ -5142,7 +5215,8 @@ harm.1011 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1011.a.tt.failure send_interface_toast = { title = harm.1011.a.tt.failure @@ -5210,7 +5284,8 @@ harm.1011 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1011.c.tt.success send_interface_toast = { title = harm.1011.c.tt.success @@ -5220,7 +5295,8 @@ harm.1011 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1011.c.tt.failure send_interface_toast = { title = harm.1011.c.tt.failure @@ -5391,7 +5467,8 @@ harm.1021 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1021.a.tt.success send_interface_toast = { title = harm.1021.a.tt.success @@ -5401,7 +5478,8 @@ harm.1021 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1021.a.tt.failure send_interface_toast = { title = harm.1021.a.tt.failure @@ -5471,7 +5549,8 @@ harm.1021 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1021.c.tt.success send_interface_toast = { title = harm.1021.c.tt.success @@ -5481,7 +5560,8 @@ harm.1021 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1021.c.tt.failure send_interface_toast = { title = harm.1021.c.tt.failure @@ -5642,7 +5722,8 @@ harm.1031 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1031.a.tt.success send_interface_toast = { title = harm.1031.a.tt.success @@ -5652,7 +5733,8 @@ harm.1031 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1031.a.tt.failure send_interface_toast = { title = harm.1031.a.tt.failure @@ -5722,7 +5804,8 @@ harm.1031 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1031.c.tt.success send_interface_toast = { title = harm.1031.c.tt.success @@ -5732,7 +5815,8 @@ harm.1031 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1031.c.tt.failure send_interface_toast = { title = harm.1031.c.tt.failure @@ -5900,7 +5984,8 @@ harm.1041 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1041.a.tt.success send_interface_toast = { title = harm.1041.a.tt.success @@ -5910,7 +5995,8 @@ harm.1041 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1041.a.tt.failure send_interface_toast = { title = harm.1041.a.tt.failure @@ -6085,7 +6171,8 @@ harm.1051 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1051.a.tt.success send_interface_toast = { title = harm.1051.a.tt.success @@ -6095,7 +6182,8 @@ harm.1051 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1051.a.tt.failure send_interface_toast = { title = harm.1051.a.tt.failure @@ -6279,7 +6367,8 @@ harm.1061 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1061.a.tt.success send_interface_toast = { title = harm.1061.a.tt.success @@ -6289,7 +6378,8 @@ harm.1061 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1061.a.tt.failure send_interface_toast = { title = harm.1061.a.tt.failure @@ -6341,7 +6431,8 @@ harm.1061 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1061.c.tt.success send_interface_toast = { title = harm.1061.c.tt.success @@ -6351,7 +6442,8 @@ harm.1061 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1061.c.tt.failure send_interface_toast = { title = harm.1061.c.tt.failure @@ -6584,7 +6676,8 @@ harm.1071 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1071.a.tt.success send_interface_toast = { title = harm.1071.a.tt.success @@ -6594,12 +6687,13 @@ harm.1071 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1071.a.tt.failure send_interface_toast = { title = harm.1071.a.tt.failure left_icon = root - override_death_killer_effect = { + override_death_effect = { death_reason = death_courtier_mistakenly_stabbed killer = scope:killer } @@ -6662,7 +6756,8 @@ harm.1071 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1071.c.tt.success send_interface_toast = { title = harm.1071.c.tt.success @@ -6672,12 +6767,13 @@ harm.1071 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1071.c.tt.failure send_interface_toast = { title = harm.1071.c.tt.failure left_icon = root - override_death_killer_effect = { + override_death_effect = { death_reason = death_courtier_mistakenly_stabbed killer = scope:killer } @@ -6708,10 +6804,19 @@ harm.1071 = { } after = { - # Yeahhhh. Yeah you're goin' down for this'un. - rightfully_imprison_character_effect = { - TARGET = scope:killer - IMPRISONER = scope:killer.liege + if = { + limit = { + scope:killer = { + is_alive = yes + exists = liege + liege = { is_alive = yes } + } + } + # Yeahhhh. Yeah you're goin' down for this'un. + rightfully_imprison_character_effect = { + TARGET = scope:killer + IMPRISONER = scope:killer.liege + } } } } @@ -6884,7 +6989,8 @@ harm.1081 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1081.a.tt.success send_interface_toast = { title = harm.1081.a.tt.success @@ -6894,7 +7000,8 @@ harm.1081 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1081.a.tt.failure send_interface_toast = { title = harm.1081.a.tt.failure @@ -6946,7 +7053,8 @@ harm.1081 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1081.c.tt.success send_interface_toast = { title = harm.1081.c.tt.success @@ -6956,7 +7064,8 @@ harm.1081 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1081.c.tt.failure send_interface_toast = { title = harm.1081.c.tt.failure @@ -7114,7 +7223,8 @@ harm.1091 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1091.a.tt.success send_interface_toast = { title = harm.1091.a.tt.success @@ -7124,7 +7234,8 @@ harm.1091 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1091.a.tt.failure send_interface_toast = { title = harm.1091.a.tt.failure @@ -7200,7 +7311,8 @@ harm.1091 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1091.c.tt.success send_interface_toast = { title = harm.1091.c.tt.success @@ -7210,7 +7322,8 @@ harm.1091 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1091.c.tt.failure send_interface_toast = { title = harm.1091.c.tt.failure @@ -7372,7 +7485,8 @@ harm.1101 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1101.a.tt.success send_interface_toast = { title = harm.1101.a.tt.success @@ -7382,7 +7496,8 @@ harm.1101 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1101.a.tt.failure send_interface_toast = { title = harm.1101.a.tt.failure @@ -7440,7 +7555,8 @@ harm.1101 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1101.c.tt.success send_interface_toast = { title = harm.1101.c.tt.success @@ -7450,7 +7566,8 @@ harm.1101 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1101.c.tt.failure send_interface_toast = { title = harm.1101.c.tt.failure @@ -7682,7 +7799,6 @@ harm.1111 = { # Alright, welcome to the world, scope:killer! ## Now you die. scope:killer = { - trigger_race_giving_no_gene_effect = yes #Assigns race trait override_death_effect = { death_reason = death_slaughtered_by_guards } log_harm_event_death_as_variable_effect = yes } @@ -7700,7 +7816,8 @@ harm.1111 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1111.a.tt.success send_interface_toast = { title = harm.1111.a.tt.success @@ -7710,12 +7827,13 @@ harm.1111 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1111.a.tt.failure send_interface_toast = { title = harm.1111.a.tt.failure left_icon = root - override_death_killer_effect = { + override_death_effect = { death_reason = death_murder killer = scope:killer } @@ -7765,7 +7883,8 @@ harm.1111 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1111.c.tt.success send_interface_toast = { title = harm.1111.c.tt.success @@ -7775,7 +7894,8 @@ harm.1111 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1111.c.tt.failure send_interface_toast = { title = harm.1111.c.tt.failure @@ -7972,7 +8092,8 @@ harm.2001 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2001.a.tt.success send_interface_toast = { title = harm.2001.a.tt.success @@ -7982,7 +8103,8 @@ harm.2001 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2001.a.tt.failure send_interface_toast = { title = harm.2001.a.tt.failure @@ -8034,7 +8156,8 @@ harm.2001 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2001.c.tt.success send_interface_toast = { title = harm.2001.c.tt.success @@ -8044,7 +8167,8 @@ harm.2001 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2001.c.tt.failure send_interface_toast = { title = harm.2001.c.tt.failure @@ -8149,7 +8273,8 @@ harm.2011 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2011.a.tt.success send_interface_toast = { title = harm.2011.a.tt.success @@ -8159,7 +8284,8 @@ harm.2011 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2011.a.tt.failure send_interface_toast = { title = harm.2011.a.tt.failure @@ -8230,7 +8356,8 @@ harm.2011 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2011.c.tt.success send_interface_toast = { title = harm.2011.c.tt.success @@ -8240,7 +8367,8 @@ harm.2011 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2011.c.tt.failure send_interface_toast = { title = harm.2011.c.tt.failure @@ -8357,7 +8485,8 @@ harm.2021 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2021.a.tt.success send_interface_toast = { title = harm.2021.a.tt.success @@ -8367,7 +8496,8 @@ harm.2021 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2021.a.tt.failure send_interface_toast = { title = harm.2021.a.tt.failure @@ -8419,7 +8549,8 @@ harm.2021 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2021.c.tt.success send_interface_toast = { title = harm.2021.c.tt.success @@ -8429,7 +8560,8 @@ harm.2021 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2021.c.tt.failure send_interface_toast = { title = harm.2021.c.tt.failure @@ -8546,7 +8678,8 @@ harm.2031 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2031.a.tt.success send_interface_toast = { title = harm.2031.a.tt.success @@ -8556,7 +8689,8 @@ harm.2031 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2031.a.tt.failure send_interface_toast = { title = harm.2031.a.tt.failure @@ -8608,7 +8742,8 @@ harm.2031 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2031.c.tt.success send_interface_toast = { title = harm.2031.c.tt.success @@ -8618,7 +8753,8 @@ harm.2031 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2031.c.tt.failure send_interface_toast = { title = harm.2031.c.tt.failure @@ -8728,7 +8864,8 @@ harm.2041 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2041.a.tt.success send_interface_toast = { title = harm.2041.a.tt.success @@ -8738,7 +8875,8 @@ harm.2041 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2041.a.tt.failure send_interface_toast = { title = harm.2041.a.tt.failure @@ -8798,7 +8936,8 @@ harm.2041 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2041.c.tt.success send_interface_toast = { title = harm.2041.c.tt.success @@ -8808,7 +8947,8 @@ harm.2041 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2041.c.tt.failure send_interface_toast = { title = harm.2041.c.tt.failure @@ -8902,7 +9042,8 @@ harm.2051 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2051.a.tt.success send_interface_toast = { title = harm.2051.a.tt.success @@ -8912,7 +9053,8 @@ harm.2051 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2051.a.tt.failure send_interface_toast = { title = harm.2051.a.tt.failure @@ -9022,7 +9164,8 @@ harm.2051 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2051.c.tt.success send_interface_toast = { title = harm.2051.c.tt.success @@ -9032,7 +9175,8 @@ harm.2051 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2051.c.tt.failure send_interface_toast = { title = harm.2051.c.tt.failure @@ -9128,7 +9272,8 @@ harm.2061 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2061.a.tt.success send_interface_toast = { title = harm.2061.a.tt.success @@ -9138,7 +9283,8 @@ harm.2061 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2061.a.tt.failure send_interface_toast = { title = harm.2061.a.tt.failure @@ -9190,7 +9336,8 @@ harm.2061 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2061.c.tt.success send_interface_toast = { title = harm.2061.c.tt.success @@ -9200,7 +9347,8 @@ harm.2061 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2061.c.tt.failure send_interface_toast = { title = harm.2061.c.tt.failure @@ -9296,7 +9444,8 @@ harm.2071 = { random_list = { # You survive. - 20 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2071.a.tt.success send_interface_toast = { title = harm.2071.a.tt.success @@ -9306,7 +9455,8 @@ harm.2071 = { } } # You perish. - 80 = { + 0 = { + modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2071.a.tt.failure send_interface_toast = { title = harm.2071.a.tt.failure @@ -9358,7 +9508,8 @@ harm.2071 = { random_list = { # You survive. - 60 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2071.c.tt.success send_interface_toast = { title = harm.2071.c.tt.success @@ -9368,7 +9519,8 @@ harm.2071 = { } } # You perish. - 40 = { + 0 = { + modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2071.c.tt.failure send_interface_toast = { title = harm.2071.c.tt.failure diff --git a/events/interaction_events/alliance_interaction_events.txt b/events/interaction_events/alliance_interaction_events.txt index 23765d25fc..e34aab0bed 100644 --- a/events/interaction_events/alliance_interaction_events.txt +++ b/events/interaction_events/alliance_interaction_events.txt @@ -107,6 +107,9 @@ call_ally.0101 = { add_dynasty_prestige = medium_dynasty_prestige_loss } } + + # If we're a clan this interaction affects unity - Let's show that in the tooltip + refuse_call_to_arms_add_clan_unity_effect = yes } } diff --git a/events/interaction_events/character_interaction_events.txt b/events/interaction_events/character_interaction_events.txt index b800c1f276..3bb26b66eb 100644 --- a/events/interaction_events/character_interaction_events.txt +++ b/events/interaction_events/character_interaction_events.txt @@ -136,6 +136,68 @@ char_interaction.0040 = { } } +# Accused of Decadence +char_interaction.0041 = { + type = letter_event + opening = { + desc = char_interaction.0020.opening + } + desc = char_interaction.0041.desc + + sender = { + character = scope:actor + animation = dismissal + } + + option = { + name = char_interaction.0041.a + show_as_tooltip = { + if = { + limit = { + NOT = { + has_trait = decadent + } + } + remove_trait_force_tooltip = extolled + } + else = { + add_trait_force_tooltip = decadent + } + } + } +} + +# Virtuousness Extoled +char_interaction.0042 = { + type = letter_event + opening = { + desc = char_interaction.0030.opening + } + desc = char_interaction.0042.desc + + sender = { + character = scope:actor + animation = throne_room_cheer_1 + } + + option = { + name = char_interaction.0042.a + show_as_tooltip = { + if = { + limit = { + NOT = { + has_trait = extolled + } + } + remove_trait_force_tooltip = decadent + } + else = { + add_trait_force_tooltip = extolled + } + } + } +} + # Forgiven by the Dynast char_interaction.0050 = { type = letter_event @@ -925,30 +987,30 @@ char_interaction.0171 = { } # Notification that you have been converted to another Faith -char_interaction.0180 = { - type = letter_event - opening = { - desc = char_interaction.0070.opening - } - desc = { - first_valid = { - triggered_desc = { - trigger = { - exists = root.house.house_head - scope:actor = root.house.house_head - } - desc = char_interaction.0180.desc - } - desc = char_interaction.0180.desc.liege - } - } +# char_interaction.0180 = { +# type = letter_event +# opening = { +# desc = char_interaction.0070.opening +# } +# desc = { +# first_valid = { +# triggered_desc = { +# trigger = { +# exists = root.house.house_head +# scope:actor = root.house.house_head +# } +# desc = char_interaction.0180.desc +# } +# desc = char_interaction.0180.desc.liege +# } +# } - sender = scope:actor +# sender = scope:actor - option = { - name = char_interaction.0180.a - } -} +# option = { +# name = char_interaction.0180.a +# } +# } # House Head Conversion: Accepted char_interaction.0181 = { @@ -1230,7 +1292,7 @@ char_interaction.0232 = { scope:recipient = { add_opinion = { target = root - modifier = helped_me_agaisnt_tyrant_opinion + modifier = helped_me_against_tyrant_opinion } } } diff --git a/events/interaction_events/vassal_interaction_events.txt b/events/interaction_events/vassal_interaction_events.txt index d071449267..b04409f4d6 100644 --- a/events/interaction_events/vassal_interaction_events.txt +++ b/events/interaction_events/vassal_interaction_events.txt @@ -317,6 +317,9 @@ vassal_interaction.0002 = { opinion = 10 } } + + # If we're a clan this event affects unity + stop_attacker_vassal_war_add_clan_unity_effect = yes } } @@ -361,6 +364,10 @@ vassal_interaction.0003 = { opinion = 10 } } + + # If we're a clan this event affects unity + stop_attacker_vassal_war_add_clan_unity_effect = yes + ai_chance = { base = 100 modifier = { @@ -413,6 +420,9 @@ vassal_interaction.0003 = { opinion = 10 } } + + # If we're a clan this event affects unity + stop_attacker_vassal_war_add_clan_unity_effect = yes } } @@ -454,6 +464,10 @@ vassal_interaction.0004 = { opinion = 10 } } + + # If we're a clan this event affects unity + stop_attacker_vassal_war_add_clan_unity_effect = yes + ai_chance = { base = 100 modifier = { @@ -510,6 +524,9 @@ vassal_interaction.0004 = { opinion = 10 } } + + # If we're a clan this event affects unity + stop_attacker_vassal_war_add_clan_unity_effect = yes } } @@ -946,6 +963,9 @@ vassal_interaction.0012 = { modifier = pleased_opinion opinion = low_positive_opinion } + + # If we're a clan this event affects unity + stop_defender_vassal_war_add_clan_unity_effect = yes } } @@ -983,6 +1003,10 @@ vassal_interaction.0013 = { days = 1 } } + + # If we're a clan this event affects unity + stop_defender_vassal_war_add_clan_unity_effect = yes + ai_chance = { base = 100 modifier = { @@ -1028,6 +1052,9 @@ vassal_interaction.0013 = { scope:target = { end_war = white_peace } + + # If we're a clan this event affects unity + stop_defender_vassal_war_add_clan_unity_effect = yes } } @@ -1062,6 +1089,10 @@ vassal_interaction.0014 = { days = 1 } } + + # If we're a clan this event affects unity + stop_defender_vassal_war_add_clan_unity_effect = yes + ai_chance = { base = 100 modifier = { @@ -1111,6 +1142,9 @@ vassal_interaction.0014 = { scope:target = { end_war = white_peace } + + # If we're a clan this event affects unity + stop_defender_vassal_war_add_clan_unity_effect = yes } } diff --git a/events/jester_stress_relief_events.txt b/events/jester_stress_relief_events.txt index e651b44d46..5855818580 100644 --- a/events/jester_stress_relief_events.txt +++ b/events/jester_stress_relief_events.txt @@ -22,28 +22,28 @@ jester.100 = { # My Rival Fool, Covered in Stool add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } @@ -102,28 +102,28 @@ jester.200 = { # Laughter is the Best Medicine add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } @@ -211,28 +211,28 @@ jester.300 = { # Masterful Juggling add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } @@ -330,28 +330,28 @@ jester.400 = { # A Flatulist and a Gentleman add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } @@ -568,28 +568,28 @@ jester.600 = { # Food Fight add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } @@ -720,28 +720,28 @@ jester.700 = { # Sunday Roast add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } @@ -961,28 +961,28 @@ jester.800 = { # Slapstick add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } @@ -1141,28 +1141,28 @@ jester.900 = { # Several Fools in One Coat add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } @@ -1281,28 +1281,28 @@ jester.1000 = { # A Good Story add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } @@ -1682,28 +1682,28 @@ jester.1200 = { # The Rumor Mill add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 2 + aptitude:court_jester_court_position >= 1 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 3 + aptitude:court_jester_court_position >= 2 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 4 + aptitude:court_jester_court_position >= 3 } } modifier = { add = 0.25 any_court_position_holder = { type = court_jester_court_position - aptitude:court_jester_court_position >= 5 + aptitude:court_jester_court_position >= 4 } } } diff --git a/events/lifestyles/sell_titles_events.txt b/events/lifestyles/sell_titles_events.txt index 20e48c2c89..996a72cd80 100644 --- a/events/lifestyles/sell_titles_events.txt +++ b/events/lifestyles/sell_titles_events.txt @@ -728,20 +728,7 @@ sell_titles.1001 = { is_ai = no is_landed = yes - # TODO_CD: Add back in when set_mother effect is done exists = father - #OR = { - # AND = { - # exists = father - # exists = father.dynasty - # dynasty = father.dynasty - # } - # AND = { - # exists = mother - # exists = mother.dynasty - # dynasty = mother.dynasty - # } - #} } weight_multiplier = { @@ -759,26 +746,6 @@ sell_titles.1001 = { immediate = { add_character_flag = had_sell_titles_merchant_event - - # TODO_CD: Add back in when set_mother effect is done - #if = { - # limit = { - # exists = father - # exists = father.dynasty - # dynasty = father.dynasty - # } - # save_scope_value_as = { - # name = parent - # value = flag:father - # } - #} - #else = { - # save_scope_value_as = { - # name = parent - # value = flag:mother - # } - #} - create_character = { template = merchant_template location = root.capital_province @@ -829,22 +796,7 @@ sell_titles.1002 = { } set_house = root.house hidden_effect = { - # TODO_CD: Add back in when set_mother effect is done - #if = { - # limit = { - # scope:parent = flag:father - # } - set_father = root.father - #} - #else_if = { - # limit = { - # scope:parent = flag:mother - # } - # set_mother = root.mother - #} - #else = { - # debug_log = "Could not set father or mother for Merchant in sell_titles.1002" - #} + set_father = root.father } } hidden_effect = { @@ -1070,4 +1022,4 @@ sell_titles.1007 = { } } } -} \ No newline at end of file +} diff --git a/events/relations_events/lover_events.txt b/events/relations_events/lover_events.txt index b1d2df4311..f39803f760 100644 --- a/events/relations_events/lover_events.txt +++ b/events/relations_events/lover_events.txt @@ -1115,7 +1115,7 @@ lover.0104 = { remove_relation_lover = scope:war_lover random_character_war = { limit = { - casus_belli = { + casus_belli = { primary_attacker = root primary_defender = scope:war_lover any_target_title = { count >= 1 } diff --git a/events/religion_events/faith_creation_events.txt b/events/religion_events/faith_creation_events.txt index cb4862c483..84bf39c0eb 100644 --- a/events/religion_events/faith_creation_events.txt +++ b/events/religion_events/faith_creation_events.txt @@ -130,7 +130,6 @@ faith_creation.0012 = { else = { create_character = { location = root.capital_province - # Warcraft age = { 30 50 } gender_female_chance = root_faith_clergy_gender_female_chance trait = education_learning_4 @@ -194,7 +193,7 @@ faith_creation.1000 = { } } - every_ruler = { + every_player = { trigger_event = { id = faith_creation.1001 days = 1 diff --git a/events/religion_events/false_conversion_events.txt b/events/religion_events/false_conversion_events.txt index d6537adbfc..c7aa1aa141 100644 --- a/events/religion_events/false_conversion_events.txt +++ b/events/religion_events/false_conversion_events.txt @@ -17,24 +17,24 @@ # Flag characters that might be falsely converted. # by Ewan Cowhig Croft -false_conversion.0001 = { - hidden = yes +# false_conversion.0001 = { +# hidden = yes - trigger = { - scope:old_faith = { has_doctrine_parameter = sanctioned_false_conversion } - NOT = { - has_variable = false_convert - #has_variable = forbid_crypto_reconversion - } - } +# trigger = { +# scope:old_faith = { has_doctrine_parameter = sanctioned_false_conversion } +# NOR = { +# any_secret = { secret_type = secret_crypto_religionist } +# has_variable = forbid_crypto_reconversion +# } +# } - immediate = { - set_variable = { - name = false_convert - value = scope:old_faith - } - } -} +# immediate = { +# set_variable = { +# name = false_convert +# value = scope:old_faith +# } +# } +# } # Flag counties that might be falsely converted. # by Ewan Cowhig Croft @@ -44,22 +44,14 @@ false_conversion.0002 = { trigger = { scope:old_faith = { has_doctrine_parameter = sanctioned_false_conversion } - NOT = { + NOR = { has_variable = false_convert - #has_variable = forbid_crypto_reconversion + has_variable = forbid_crypto_reconversion } } immediate = { - set_variable = { - name = false_convert - value = scope:old_faith - days = 18250 - } - add_county_modifier = { - modifier = false_convert_modifier - years = 50 - } + make_county_crypto_religionists_effect = { FAITH = scope:old_faith } } } @@ -81,7 +73,7 @@ false_conversion.0003 = { ################################################## # Revoke False Conversion Decision Events # by Ewan Cowhig Croft -# 0020 +# 0020-0021 ################################################## # Crypto-Faithism @@ -99,13 +91,14 @@ false_conversion.0020 = { } immediate = { - var:false_convert = { save_scope_as = old_faith } #For loc. - faith = { save_scope_as = current_faith } #For loc. + secret_faith = { save_scope_as = old_faith } # For loc. + faith = { save_scope_as = current_faith } # For loc. } - option = { #You return to your original faith. Huzzah for secret cults! + option = { # You return to your original faith. Huzzah for secret cults! name = false_conversion.0020.a - set_character_faith_with_conversion = var:false_convert + set_character_faith_with_conversion = secret_faith + remove_character_secret_faith = yes if = { #If independent, also grab any counties in your realm that still have crypto-religious communities. limit = { is_independent_ruler = yes @@ -145,7 +138,15 @@ false_conversion.0020 = { desc = event_false_converts_counties_only.desc } } - add_piety = major_piety_loss #Deduct piety cost. + # Deduct piety, but only if faith doesn't sanction false conversions + if = { + limit = { + faith = { + NOT = { has_doctrine_parameter = sanctioned_false_conversion } + } + } + add_piety = major_piety_loss + } if = { limit = { is_independent_ruler = no } liege = { @@ -165,6 +166,48 @@ false_conversion.0020 = { right_icon = root } } + # Fp3 Struggle Catalyst + if = { + limit = { + highest_held_title_tier >= tier_county + faith.religion = religion:islam_religion + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_revealed_secret_faith_islam + } + } + every_character_struggle = { + involvement = involved + limit = { + phase_has_catalyst = catalyst_revealed_secret_faith_islam + } + activate_struggle_catalyst = { + catalyst = catalyst_revealed_secret_faith_islam + character = root + } + } + } + else_if = { + limit = { + highest_held_title_tier >= tier_county + NOT = { faith.religion = religion:islam_religion } + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_revealed_secret_faith_non_islam + } + } + every_character_struggle = { + involvement = involved + limit = { + phase_has_catalyst = catalyst_revealed_secret_faith_non_islam + } + activate_struggle_catalyst = { + catalyst = catalyst_revealed_secret_faith_non_islam + character = root + } + } + } + stress_impact = { zealous = medium_stress_impact_gain #Damn it, I was passionate about my openly-practiced faith! cynical = medium_stress_impact_gain #Damn it, they're all basically the same! Probably! @@ -185,8 +228,14 @@ false_conversion.0020 = { } } } - option = { #On seconds thoughts... + option = { # On seconds thoughts... name = false_conversion.0020.b + + if = { # Return cost when backing out + limit = { scope:decision_piety_cost > 0 } + add_piety = scope:decision_piety_cost + } + ai_chance = { base = 40 ai_value_modifier = { @@ -243,8 +292,10 @@ false_conversion.0030 = { immediate = { if = { - limit = { has_variable = false_convert } - var:false_convert = { save_scope_as = old_faith } #For loc. + limit = { + exists = secret_faith + } + secret_faith = { save_scope_as = old_faith } # For loc. } set_variable = { #Initialise counting for the number of landed converts. name = num_false_converts_vassal @@ -265,16 +316,15 @@ false_conversion.0030 = { every_vassal = { limit = { #Providing they are equal-to-or-less in hostility. is_ai = yes - has_variable = false_convert - NOR = { #And not super-committed to their public religion/has already converted. + exists = secret_faith + NOR = { #And not super-committed to their public religion. has_trait = zealous this = faith.religious_head - var:false_convert = faith } save_temporary_scope_as = current_character root.faith = { #Public conversion must be advantageous, or at least not harmful. faith_hostility_level_comparison = { - scope:current_character.var:false_convert <= scope:current_character.faith + secret_faith <= scope:current_character.faith } } OR = { #The vassals should either be trusting, or else have an iron-clad reason to believe the amnesty. @@ -282,7 +332,7 @@ false_conversion.0030 = { has_trait = deceitful has_trait = paranoid } - var:false_convert = root.faith + secret_faith = root.faith } } add_to_list = converting_vassals_list @@ -296,12 +346,12 @@ false_conversion.0030 = { every_courtier_or_guest = { #Grab courtiers and such too. limit = { is_ai = yes - has_variable = false_convert + exists = secret_faith NOT = { has_trait = zealous } save_temporary_scope_as = current_character root.faith = { faith_hostility_level_comparison = { - scope:current_character.var:false_convert <= scope:current_character.faith + secret_faith <= scope:current_character.faith } } OR = { @@ -309,7 +359,7 @@ false_conversion.0030 = { has_trait = deceitful has_trait = paranoid } - var:false_convert = root.faith + secret_faith = root.faith } } add_to_list = converting_landless_list @@ -349,15 +399,23 @@ false_conversion.0030 = { } else = { #Otherwise, only check for within your own faith. Crypto-religionists don't want to come out of hiding for just anybody. every_vassal = { + if = { + limit = { + any_secret = { secret_type = secret_crypto_religionist } + } + random_secret = { + limit = { secret_type = secret_crypto_religionist } + save_scope_as = convert_crypto_secret + } + } limit = { is_ai = yes - has_variable = false_convert + exists = secret_faith NOR = { has_trait = zealous this = faith.religious_head - var:false_convert = faith } - var:false_convert = root.faith + secret_faith = root.faith } add_to_list = converting_vassals_list root = { @@ -368,11 +426,20 @@ false_conversion.0030 = { } } every_courtier_or_guest = { #And any courtiers or hangers-on. + if = { + limit = { + any_secret = { secret_type = secret_crypto_religionist } + } + random_secret = { + limit = { secret_type = secret_crypto_religionist } + save_scope_as = convert_crypto_secret + } + } limit = { is_ai = yes - has_variable = false_convert + exists =secret_faith NOT = { has_trait = zealous } - var:false_convert = root.faith + secret_faith = root.faith } add_to_list = converting_landless_list root = { @@ -411,7 +478,8 @@ false_conversion.0030 = { hidden_effect = { every_in_list = { #Convert the vassals. list = converting_vassals_list - set_character_faith_with_conversion = var:false_convert + set_character_faith_with_conversion = secret_faith + remove_character_secret_faith = yes save_temporary_scope_as = reconverter every_vassal = { #Notify your vassals' vassals of the change. send_interface_message = { @@ -428,7 +496,8 @@ false_conversion.0030 = { } every_in_list = { #And the dregs. list = converting_landless_list - set_character_faith_with_conversion = var:false_convert + set_character_faith_with_conversion = secret_faith + remove_character_secret_faith = yes add_opinion = { #Huzzah! I can go to church! Shame I don't own any! modifier = religious_freedom_opinion target = root @@ -469,7 +538,7 @@ false_conversion.0030 = { every_vassal = { limit = { is_ai = no - has_variable = false_convert + any_secret = { secret_type = secret_crypto_religionist } } trigger_event = false_conversion.0031 } @@ -478,13 +547,22 @@ false_conversion.0030 = { every_vassal = { limit = { is_ai = no - var:false_convert = root.faith + exists = secret_faith + secret_faith = root.faith } trigger_event = false_conversion.0031 } } } - add_piety = major_piety_loss #Deduct piety cost. + # Piety loss, but not if has false conversion sanction tenet + if = { + limit = { + secret_faith = { + NOT = { has_doctrine = tenet_false_conversion_sanction } + } + } + add_piety = major_piety_loss + } stress_impact = { honest = minor_stress_impact_loss trusting = minor_stress_impact_loss @@ -508,12 +586,16 @@ false_conversion.0030 = { name = { text = false_conversion.0030.b_no_secret_faith trigger = { - NOT = { has_variable = false_convert } + NOT = { + any_secret = { secret_type = secret_crypto_religionist } + } } } name = { text = false_conversion.0030.b_has_secret_faith - trigger = { has_variable = false_convert } + trigger = { + any_secret = { secret_type = secret_crypto_religionist } + } } ai_chance = { base = 60 @@ -546,11 +628,12 @@ false_conversion.0031 = { root.liege = { save_scope_as = background_temple_scope } + secret_faith = { save_scope_as = old_faith } } option = { #I hop on board the faith-train to Conversion City. name = false_conversion.0031.a - set_character_faith_with_conversion = var:false_convert + set_character_faith_with_conversion = scope:old_faith liege = { send_interface_message = { type = revealed_crypto_faith @@ -595,3 +678,767 @@ false_conversion.0031 = { } } } + +########################################################################### +# Conversion request events +# Decide to refuse the request, agree, or agree and keep a secret religion +########################################################################### + +# Decide what type of false conversion event to fire +false_conversion.0900 = { + hidden = yes + + immediate = { + grab_spouses_and_family_to_convert_effect = yes + # If the recipient already has a crypto religion, then just convert them and the family without any fuss + if = { + limit = { + any_secret = { secret_type = secret_crypto_religionist } + } + convert_family_to_faith_effect = { + FALSE_CONVERSION = no + FORCED = yes + } + } + # Otherwise give them a choice + else = { + if = { + limit = { + is_married = yes + is_imprisoned = no + primary_spouse = { + is_imprisoned = no + is_ai = yes + } + # Spouse cannot suggest to keep a faith they weren't following as a secret faith + primary_spouse.faith = root.faith + } + trigger_event = false_conversion.1010 + } + else = { + trigger_event = false_conversion.1000 + } + } + } +} + + +# Default conversion event for if you have no spouse or are imprisoned +false_conversion.1000 = { + type = character_event + title = false_conversion.1000.t + desc = { + desc = false_conversion.1000.desc_intro + triggered_desc = { + trigger = { + any_in_list = { + list = spouses_and_family_to_convert + count > 1 + } + } + desc = false_conversion.1000.desc_has_family + } + desc = false_conversion.1000.desc_convert + first_valid = { + # If a hook is being used, then lament this blackmail + triggered_desc = { + trigger = { exists = scope:forcibly_converted } + desc = false_conversion.1000.desc_forced + } + desc = false_conversion.1000.desc_voluntary + } + first_valid = { + triggered_desc = { + trigger = { ai_boldness > low_positive_ai_value } + desc = false_conversion.1000.desc_forced + } + desc = false_conversion.1000.desc_cowardly + } + desc = false_conversion.1000.desc_outro + } + override_background = { + trigger = { scope:recipient = { is_imprisoned = yes } } + reference = dungeon + } + theme = faith + left_portrait = root + + option = { # Accept conversion + name = false_conversion.1000.a + convert_family_to_faith_effect = { + FALSE_CONVERSION = no + FORCED = yes + } + ai_chance = { + base = 25 + } + } + + option = { # Keep old faith as a secret + name = { + text = { + first_valid = { + triggered_desc = { + trigger = { + faith = { has_doctrine_parameter = sanctioned_false_conversion } + any_in_list = { + list = spouses_and_family_to_convert + count > 1 + } + } + desc = false_conversion.1000.b_sanctioned_plural + } + triggered_desc = { + trigger = { + faith = { has_doctrine_parameter = sanctioned_false_conversion } + } + desc = false_conversion.1000.b_sanctioned_single + } + triggered_desc = { + trigger = { + any_in_list = { + list = spouses_and_family_to_convert + faith = root.faith + count > 1 + } + } + desc = false_conversion.1000.b_plural + } + desc = false_conversion.1000.b_single + } + } + } + trigger = { + #faith = { has_doctrine_parameter = sanctioned_false_conversion } + # Don't override old secret faiths + NOR = { + any_secret = { secret_type = secret_crypto_religionist } + has_variable = forbid_crypto_reconversion + } + } + convert_family_to_faith_effect = { + FALSE_CONVERSION = yes + FORCED = yes + } + ai_chance = { + base = 0 + religion_adopt_secret_faith_modifier = { + TARGET = root + FORCED = yes + FAITH = root.faith + } + } + } +} + +# If your whole family is being asked to convert, consult with spouse +false_conversion.1010 = { + type = character_event + title = false_conversion.1000.t + desc = { + desc = false_conversion.1000.desc_intro + first_valid = { + triggered_desc = { + trigger = { + any_in_list = { + list = spouses_and_family_to_convert + count > 2 + } + } + desc = false_conversion.1000.desc_has_family + } + desc = false_conversion.1010.desc_has_no_family + } + desc = false_conversion.1000.desc_convert + desc = false_conversion.1010.desc_spouse_intro + # Spouse's reaction: + first_valid = { + triggered_desc = { + trigger = { exists = scope:spouse_wants_secret_faith } + desc = false_conversion.1010.desc_spouse_advises_secrecy + } + triggered_desc = { + trigger = { + exists = scope:spouse_wants_to_convert + scope:spouse = { has_trait = cynical } + } + desc = false_conversion.1010.desc_spouse_advises_conversion_cynical + } + triggered_desc = { + trigger = { exists = scope:spouse_wants_to_convert } + desc = false_conversion.1010.desc_spouse_advises_conversion_neutral + } + } + desc = false_conversion.1010.desc_outro_demure + triggered_desc = { + trigger = { + opinion = { + target = scope:spouse + value >= 10 + } + } + desc = false_conversion.1010.desc_spouse_liked + } + triggered_desc = { + trigger = { + opinion = { + target = scope:spouse + value <= -40 + } + } + desc = false_conversion.1010.desc_spouse_disliked + } + desc = false_conversion.1010.desc_outro_wife_husband + } + theme = faith + left_portrait = root + right_portrait = primary_spouse + + immediate = { + primary_spouse = { + save_scope_as = spouse + } + # Determine whether spouse wants to convert + random_list = { + 100 = { + save_scope_value_as = { + name = spouse_wants_to_convert + value = yes + } + } + 0 = { + religion_adopt_secret_faith_modifier = { + TARGET = root + FORCED = yes + FAITH = root.faith + } + save_scope_value_as = { + name = spouse_wants_secret_faith + value = yes + } + } + } + } + + option = { # Accept conversion + name = false_conversion.1000.a + convert_family_to_faith_effect = { + FALSE_CONVERSION = no + FORCED = yes + } + if = { + limit = { exists = scope:spouse_wants_to_convert } + reverse_add_opinion = { + target = primary_spouse + modifier = pleased_opinion + opinion = 20 + } + } + else = { + reverse_add_opinion = { + target = primary_spouse + modifier = disappointed_opinion + opinion = -20 + } + } + ai_chance = { + base = 25 + } + } + + option = { # Keep old faith as a secret + name = { + text = { + first_valid = { + triggered_desc = { + trigger = { + faith = { has_doctrine_parameter = sanctioned_false_conversion } + } + desc = false_conversion.1000.b_sanctioned_plural + } + desc = false_conversion.1000.b_plural + } + } + } + convert_family_to_faith_effect = { + FALSE_CONVERSION = yes + FORCED = yes + } + if = { + limit = { exists = scope:spouse_wants_secret_faith } + reverse_add_opinion = { + target = primary_spouse + modifier = pleased_opinion + opinion = 20 + } + } + else = { + reverse_add_opinion = { + target = primary_spouse + modifier = disappointed_opinion + opinion = -20 + } + } + ai_chance = { + base = 0 + religion_adopt_secret_faith_modifier = { + TARGET = root + FORCED = yes + FAITH = root.faith + } + } + } +} + +# Secret-Faith Yearlies +# ===================== +## A Moment of Weakness +## Someone close to you is in pain, attempt to convert them to your crypto-religion as a coping method? +scripted_trigger false_conversion_2000_is_vulnerable_trigger = { + NOT = { exists = secret_faith } + age >= 12 # For narrative purposes + is_available = yes + OR = { + stress_level >= 1 + AND = { + has_character_modifier = stress_frozen_grief + # We need memories in order to grab who died that we're sad about + OR = { + has_memory_type = friend_died + has_memory_type = best_friend_died + has_memory_type = lover_died + has_memory_type = soulmate_died + has_memory_type = relative_died + has_memory_type = spouse_died + has_memory_type = dog_died + } + } + has_trait = depressed_1 + } +} + +# Converts a target and ameliorates their grief/stress/depression +scripted_effect false_conversion_2000_convert = { + # Buff relation + if = { + limit = { scope:crypto_opportunist = { has_character_flag = false_conversion_2000_grief } } + scope:vulnerable_relation = { remove_character_modifier = stress_frozen_grief } + scope:crypto_opportunist = { remove_character_flag = false_conversion_2000_grief } + } + else_if = { + limit = { scope:crypto_opportunist = { has_character_flag = false_conversion_2000_depression } } + scope:vulnerable_relation = { add_character_modifier = fp3_higher_purpose_modifier } + } + else_if = { + limit = { scope:crypto_opportunist = { has_character_flag = false_conversion_2000_stress } } + scope:vulnerable_relation = { add_stress = major_stress_impact_loss } + } + send_interface_toast = { + title = false_conversion.2000.a_success + left_icon = scope:vulnerable_relation + scope:crypto_opportunist = { + random_secret = { + limit = { secret_type = secret_crypto_religionist } + # This is necessary for spread_crypto_religion_to_target_effect + save_scope_as = owner_crypto_secret + } + spread_crypto_religion_to_target_effect = { TARGET = scope:vulnerable_relation } + } + } +} + +## A Moment of Weakness +## Take advantage of your target's grief to push your religion +false_conversion.2000 = { + type = character_event + title = false_conversion.2000.t + desc = { + desc = false_conversion.2000.desc_intro + first_valid = { + triggered_desc = { + trigger = { has_character_flag = false_conversion_2000_grief } + desc = false_conversion.2000.desc_descriptor_grief + } + triggered_desc = { + trigger = { has_character_flag = false_conversion_2000_depression } + desc = false_conversion.2000.desc_descriptor_depression + } + triggered_desc = { + trigger = { has_character_flag = false_conversion_2000_stress } + desc = false_conversion.2000.desc_descriptor_stress + } + } + desc = false_conversion.2000.desc_bridge + first_valid = { + triggered_desc = { + trigger = { has_character_flag = false_conversion_2000_grief } + desc = false_conversion.2000.desc_quote_grief + } + triggered_desc = { + trigger = { has_character_flag = false_conversion_2000_depression } + desc = false_conversion.2000.desc_quote_depression + } + triggered_desc = { + trigger = { has_character_flag = false_conversion_2000_stress } + desc = false_conversion.2000.desc_quote_stress + } + } + desc = false_conversion.2000.desc_outro + } + left_portrait = { + character = scope:vulnerable_relation + animation = grief + } + theme = faith + override_background = { reference = corridor_night } + cooldown = { years = 1 } + + # Only target the vulnerable + trigger = { + # Runs through most characters covered by get_characters_of_interest_effect + # Yup, it's necessary to do it like this. Sorry. + exists = secret_faith + OR = { + any_close_or_extended_family_member = { false_conversion_2000_is_vulnerable_trigger = yes } + any_powerful_vassal = { false_conversion_2000_is_vulnerable_trigger = yes } + any_consort = { false_conversion_2000_is_vulnerable_trigger = yes } + any_concubine = { false_conversion_2000_is_vulnerable_trigger = yes } + any_normal_councillor = { false_conversion_2000_is_vulnerable_trigger = yes } + any_ally = { false_conversion_2000_is_vulnerable_trigger = yes } + betrothed ?= { false_conversion_2000_is_vulnerable_trigger = yes } + # I hate my life + trigger_if = { + limit = { + exists = liege + is_powerful_vassal = yes + } + liege = { false_conversion_2000_is_vulnerable_trigger = yes } + } + + trigger_if = { + limit = { is_ai = no } + OR = { + any_relation = { + type = lover + false_conversion_2000_is_vulnerable_trigger = yes + } + any_relation = { + type = ward + false_conversion_2000_is_vulnerable_trigger = yes + } + any_relation = { + type = friend + false_conversion_2000_is_vulnerable_trigger = yes + } + # Skipping courtiers because minor_interest_skilled_courtiers_trigger requires a list as input + trigger_if = { + limit = { + age >= 12 + } + any_relation = { + type = guardian + false_conversion_2000_is_vulnerable_trigger = yes + } + } + } + } + any_knight = { false_conversion_2000_is_vulnerable_trigger = yes } + } + } + + immediate = { + save_scope_as = crypto_opportunist + save_scope_as = owner # For spread_crypto_religion_to_target_effect + get_characters_of_interest_effect = { LISTNAME = vulnerable_relations } + # Prioritize characters of high interest before those of low interest + random_in_list = { + list = vulnerable_relations + limit = { + is_of_major_interest_to_root_trigger = yes + false_conversion_2000_is_vulnerable_trigger = yes + } + save_scope_as = vulnerable_relation + } + # If we weren't able to find anyone of major interest, then any ol' minor relation will do + if = { + limit = { NOT = { exists = scope:vulnerable_relation } } + random_in_list = { + list = vulnerable_relations + limit = { false_conversion_2000_is_vulnerable_trigger = yes } + save_scope_as = vulnerable_relation + } + } + # Also for the effect + scope:vulnerable_relation = { save_scope_as = target } + # Determine which weakness we will capitalize on + # Rarer conditions first for more visibility + if = { + limit = { + scope:vulnerable_relation = { + AND = { + has_character_modifier = stress_frozen_grief + OR = { + has_memory_type = friend_died + has_memory_type = best_friend_died + has_memory_type = lover_died + has_memory_type = soulmate_died + has_memory_type = relative_died + has_memory_type = spouse_died + has_memory_type = dog_died + } + } + } + } + add_character_flag = { + flag = false_conversion_2000_grief + } + # Grab the most recent person who died that the relation remembers. Hopefully they actually care about them. + ordered_memory = { + limit = { + OR = { + has_memory_type = friend_died + has_memory_type = best_friend_died + has_memory_type = lover_died + has_memory_type = soulmate_died + has_memory_type = relative_died + has_memory_type = spouse_died + has_memory_type = dog_died + } + } + order_by = memory_creation_date + random_memory_participant = { + limit = { NOT = { this = root } } + save_scope_as = deceased_character + } + } + } + else_if = { + limit = { scope:vulnerable_relation = { has_trait = depressed_1 } } + add_character_flag = { + flag = false_conversion_2000_depression + days = 1 + } + } + else = { + add_character_flag = { + flag = false_conversion_2000_stress + days = 1 + } + } + } + + option = { # Glory to Ohrmazd + name = false_conversion.2000.a + if = { + # If relation is a player, then let them decide whether to accept the your secret faith + limit = { scope:vulnerable_relation = { is_ai = no } } + scope:vulnerable_relation = { trigger_event = false_conversion.2001 } + custom_tooltip = false_conversion.2000.a_flavor + } + else = { + duel = { + skill = learning + target = scope:vulnerable_relation + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 2.5 + } + desc = false_conversion.2000.a_success + opinion_modifier = { + who = scope:vulnerable_relation + opinion_target = scope:crypto_opportunist + multiplier = 0.1 + } + # Convert the relation and take away (some of) their pain + false_conversion_2000_convert = yes + } + 50 = { # Relation declines + desc = false_conversion.2000.a_failure + compare_modifier = { + value = scope:duel_value + multiplier = -2.5 + } + opinion_modifier = { + who = scope:vulnerable_relation + opinion_target = scope:crypto_opportunist + multiplier = -0.1 + } + send_interface_toast = { + title = false_conversion.2000.a_failure + left_icon = scope:vulnerable_relation + reverse_add_opinion = { + target = scope:vulnerable_relation + modifier = fp2_questioned_my_faith_opinion + } + } + } + } + } + stress_impact = { + honest = minor_stress_impact_gain + } + + ai_chance = { + base = 10 + ai_value_modifier = { + ai_boldness = 0.1 + ai_compassion = -0.2 + ai_honor = -0.1 + ai_rationality = 0.1 + ai_sociability = -0.1 + ai_zeal = 0.2 + } + } + } + + option = { # Just comfort them instead + name = false_conversion.2000.b + reverse_add_opinion = { + target = scope:vulnerable_relation + modifier = comforted_opinion + } + stress_impact = { + compassionate = minor_stress_impact_loss + } + + ai_chance = { + base = 10 + ai_value_modifier = { + ai_boldness = -0.1 + ai_compassion = 0.2 + ai_honor = 0.1 + ai_rationality = -0.1 + ai_sociability = 0.1 + ai_zeal = -0.2 + } + } + } +} + +## My Time of Need +## Convert to someone's crypto-faith and ameliorate your grief/stress/depression +false_conversion.2001 = { + type = character_event + title = false_conversion.2001.t + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:crypto_opportunist = { has_character_flag = false_conversion_2000_grief } } + desc = false_conversion.2001.desc_grief + } + triggered_desc = { + trigger = { scope:crypto_opportunist = { has_character_flag = false_conversion_2000_depression } } + desc = false_conversion.2001.desc_depression + } + triggered_desc = { + trigger = { scope:crypto_opportunist = { has_character_flag = false_conversion_2000_stress } } + desc = false_conversion.2001.desc_stress + } + } + desc = false_conversion.2001.desc_outro + } + theme = faith + override_background = { reference = corridor_night } + left_portrait = scope:crypto_opportunist + + option = { # Convert + name = false_conversion.2001.a + false_conversion_2000_convert = yes + stress_impact = { + honest = major_stress_impact_gain + craven = medium_stress_impact_gain + paranoid = medium_stress_impact_gain + } + # No AI chance as AI should never encounter this event + } + + option = { # Refuse + name = false_conversion.2001.b + flavor = false_conversion.2001.b_flavor + } +} + +# Bonus event: Avoid a holy war by converting to the aggressor's religion +# TO-DO + +# Your secret religion has been exposed, do you openly convert to it or abandon it? +false_conversion.8000 = { + type = character_event + title = false_conversion.8000.t + desc = { + desc = false_conversion.8000.desc_intro + first_valid = { + triggered_desc = { + trigger = { exists = scope:disapproving_chaplain } + desc = false_conversion.8000.desc_disapproving_chaplain + } + triggered_desc = { + trigger = { exists = scope:silent_chaplain } + desc = false_conversion.8000.desc_silent_chaplain + } + } + desc = false_conversion.8000.desc_outro + } + theme = secret + left_portrait = root + right_portrait = scope:secret_exposer + + trigger = { + NOT = { root = scope:secret_exposer } + } + + immediate = { + save_scope_as = owner + # Have the realm priest chastise you unless they also practice the same secret religion + if = { + limit = { + exists = cp:councillor_court_chaplain + cp:councillor_court_chaplain = { + exists = secret_faith + secret_faith = root.secret_faith + } + } + cp:councillor_court_chaplain = { save_scope_as = silent_chaplain } + } + else_if = { + limit = { + exists = cp:councillor_court_chaplain + } + cp:councillor_court_chaplain = { save_scope_as = disapproving_chaplain } + } + secret_exposed_owner_effects_effect = { SECRET = scope:secret POV = root } + secret_exposed_owner_opinion_effects_effect = yes + play_music_cue = "mx_cue_secret" + } + + option = { # Abandon secret faith + name = false_conversion.8000.a + add_piety = medium_piety_loss + add_piety_level = -1 + + stress_impact = { + zealous = major_stress_impact_gain + content = minor_stress_impact_loss + arbitrary = minor_stress_impact_loss + } + ai_chance = { + base = 5 + } + } + + option = { # Convert back to secret faith + name = false_conversion.8000.b + set_character_faith_with_conversion = secret_faith + remove_character_secret_faith = yes + + stress_impact = { + cynical = minor_stress_impact_gain + zealous = medium_stress_impact_loss + honest = minor_stress_impact_loss + } + ai_chance = { + base = 5 + } + } +} diff --git a/events/religion_events/fervor_events.txt b/events/religion_events/fervor_events.txt index 675de6301c..20c9857404 100644 --- a/events/religion_events/fervor_events.txt +++ b/events/religion_events/fervor_events.txt @@ -77,30 +77,19 @@ fervor.1001 = { limit = { has_doctrine_parameter = theocracy_temple_lease } - AND = { - any_ruler = { - faith = root - exists = cp:councillor_court_chaplain - cp:councillor_court_chaplain = { - valid_scandal_target = yes - } - } + any_faith_ruler = { + cp:councillor_court_chaplain ?= { valid_scandal_target = yes } } } trigger_if = { # Lay Clergy: Sinful Temple Holder limit = { has_doctrine_parameter = theocracy_temple_ownership } - AND = { - any_ruler = { - valid_scandal_target = yes - any_held_title = { - tier = tier_barony - exists = title_province - title_province = { - has_holding_type = church_holding - } - } + any_faith_ruler = { + valid_scandal_target = yes + any_held_title = { + tier = tier_barony + title_province ?= { has_holding_type = church_holding } } } } @@ -243,34 +232,22 @@ fervor.1001 = { 60 = { trigger = { # Theocracy: Sinful Bishop has_doctrine_parameter = theocracy_temple_lease - any_ruler = { - exists = cp:councillor_court_chaplain - cp:councillor_court_chaplain = { - valid_scandal_target = yes - } + any_faith_ruler = { + cp:councillor_court_chaplain ?= { valid_scandal_target = yes } } } - random_ruler = { + random_faith_ruler = { limit = { - exists = cp:councillor_court_chaplain - cp:councillor_court_chaplain = { - valid_scandal_target = yes - } - highest_held_title_tier >= 3 + cp:councillor_court_chaplain ?= { valid_scandal_target = yes } + highest_held_title_tier >= tier_duchy } alternative_limit = { - exists = cp:councillor_court_chaplain - cp:councillor_court_chaplain = { - valid_scandal_target = yes - } - highest_held_title_tier >= 2 + cp:councillor_court_chaplain ?= { valid_scandal_target = yes } + highest_held_title_tier >= tier_county } alternative_limit = { - exists = cp:councillor_court_chaplain - cp:councillor_court_chaplain = { - valid_scandal_target = yes - } - highest_held_title_tier >= 1 + cp:councillor_court_chaplain ?= { valid_scandal_target = yes } + highest_held_title_tier >= tier_barony } weight = { @@ -317,18 +294,15 @@ fervor.1001 = { 60 = { # Lay Clergy: Sinful Temple Holder trigger = { has_doctrine_parameter = theocracy_temple_ownership - any_ruler = { + any_faith_ruler = { valid_scandal_target = yes any_held_title = { tier = tier_barony - exists = title_province - title_province = { - has_holding_type = church_holding - } + title_province ?= { has_holding_type = church_holding } } } } - random_ruler = { + random_faith_ruler = { limit = { valid_scandal_target = yes any_held_title = { @@ -338,7 +312,7 @@ fervor.1001 = { has_holding_type = church_holding } } - highest_held_title_tier >= 3 + highest_held_title_tier >= tier_duchy } alternative_limit = { valid_scandal_target = yes @@ -349,7 +323,7 @@ fervor.1001 = { has_holding_type = church_holding } } - highest_held_title_tier >= 2 + highest_held_title_tier >= tier_county } alternative_limit = { valid_scandal_target = yes @@ -360,7 +334,7 @@ fervor.1001 = { has_holding_type = church_holding } } - highest_held_title_tier >= 1 + highest_held_title_tier >= tier_barony } weight = { @@ -1032,30 +1006,19 @@ fervor.2001 = { limit = { has_doctrine_parameter = theocracy_temple_lease } - AND = { - any_ruler = { - faith = root - exists = cp:councillor_court_chaplain - cp:councillor_court_chaplain = { - suitable_theocrat_fervor_2001_trigger = yes - } - } + any_faith_ruler = { + cp:councillor_court_chaplain ?= { suitable_theocrat_fervor_2001_trigger = yes } } } trigger_if = { # Lay Clergy: Sinful Temple Holder limit = { has_doctrine_parameter = theocracy_temple_ownership } - AND = { - any_ruler = { - suitable_theocrat_fervor_2001_trigger = yes - any_held_title = { - tier = tier_barony - exists = title_province - title_province = { - has_holding_type = church_holding - } - } + any_faith_ruler = { + suitable_theocrat_fervor_2001_trigger = yes + any_held_title = { + tier = tier_barony + title_province ?= { has_holding_type = church_holding } } } } @@ -1251,34 +1214,34 @@ fervor.2001 = { 40 = { # Theocracy: Virtuous Bishop trigger = { has_doctrine_parameter = theocracy_temple_lease - any_ruler = { + any_faith_ruler = { exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { suitable_theocrat_fervor_2001_trigger = yes } } } - random_ruler = { + random_faith_ruler = { limit = { exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { suitable_theocrat_fervor_2001_trigger = yes } - highest_held_title_tier >= 3 + highest_held_title_tier >= tier_duchy } alternative_limit = { exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { suitable_theocrat_fervor_2001_trigger = yes } - highest_held_title_tier >= 2 + highest_held_title_tier >= tier_county } alternative_limit = { exists = cp:councillor_court_chaplain cp:councillor_court_chaplain = { suitable_theocrat_fervor_2001_trigger = yes } - highest_held_title_tier >= 1 + highest_held_title_tier >= tier_barony } weight = { @@ -1327,7 +1290,7 @@ fervor.2001 = { 40 = { # Lay Clergy: Any Virtuous Ruler with a Temple Holding trigger = { has_doctrine_parameter = theocracy_temple_ownership - any_ruler = { + any_faith_ruler = { suitable_theocrat_fervor_2001_trigger = yes any_held_title = { tier = tier_barony @@ -1338,7 +1301,7 @@ fervor.2001 = { } } } - random_ruler = { + random_faith_ruler = { limit = { suitable_theocrat_fervor_2001_trigger = yes highest_held_title_tier >= 2 @@ -1368,11 +1331,11 @@ fervor.2001 = { } modifier = { add = 10 - highest_held_title_tier >= 3 + highest_held_title_tier >= tier_duchy } modifier = { add = 10 - highest_held_title_tier >= 4 + highest_held_title_tier >= tier_kingdom } modifier = { add = 20 diff --git a/events/religion_events/great_holy_war_events.txt b/events/religion_events/great_holy_war_events.txt index 42ef80c160..57c0ff5a4e 100644 --- a/events/religion_events/great_holy_war_events.txt +++ b/events/religion_events/great_holy_war_events.txt @@ -223,9 +223,8 @@ great_holy_war.0001 = { } #Attackers Pledge to the Crusade. (AI only) - every_ruler = { + every_faith_ruler = { limit = { - faith = scope:the_faith is_ai = yes is_landed = yes highest_held_title_tier >= tier_county @@ -250,23 +249,26 @@ great_holy_war.0001 = { } #Defenders Pledge to the Crusade. (AI only) - every_ruler = { - limit = { - faith.religion = scope:target_character.faith.religion - is_ai = yes - is_landed = yes - highest_held_title_tier >= tier_county - NOT = { - root.great_holy_war = { has_pledged_defender = prev } + scope:target_character = { + religion = { + every_faith = { + every_faith_ruler = { + limit = { + is_ai = yes + is_landed = yes + highest_held_title_tier >= tier_county + NOT = { + root.great_holy_war = { has_pledged_defender = prev } + } + } + trigger_event = { + #AI counterpledging. Unlike attackers, defenders should be selected much faster during the preparation phase and then stop. + id = great_holy_war.0021 + days = { 25 150 } + } + } } } - trigger_event = { - #AI counterpledging. Unlike attackers, defenders should be selected much faster during the preparation phase and then stop. - id = great_holy_war.0021 - days = { 25 150 } - } - } - scope:target_character = { faith = { every_faith_holy_order = { trigger_event = { @@ -478,8 +480,11 @@ scripted_trigger great_holy_war_0010_jerusalem_reason_trigger = { } scripted_trigger great_holy_war_0010_rome_reason_trigger = { - # Warcraft - always = no + title:c_roma.holder.top_liege = { + NOT = { + faith.religion = scope:awakening_faith.religion + } + } } scripted_trigger great_holy_war_0010_byzantion_reason_trigger = { @@ -488,23 +493,81 @@ scripted_trigger great_holy_war_0010_byzantion_reason_trigger = { } scripted_trigger great_holy_war_0010_europe_reason_trigger = { - # Warcraft - always = no + OR = { + title:c_venaissin.holder.top_liege.religion = { # Provence + NOT = { + this = religion:christianity_religion + } + } + title:c_toulouse.holder.top_liege.religion = { # Toulouse + NOT = { + this = religion:christianity_religion + } + } + title:c_ile_de_france.holder.top_liege.religion = { # Paris + NOT = { + this = religion:christianity_religion + } + } + title:c_cologne.holder.top_liege.religion = { # Cologne + NOT = { + this = religion:christianity_religion + } + } + title:c_halberstadt.holder.top_liege.religion = { # Halberstadt + NOT = { + this = religion:christianity_religion + } + } + } } scripted_trigger great_holy_war_0010_mecca_reason_trigger = { - # Warcraft - always = no + title:c_mecca.holder.top_liege = { + NOT = { + faith.religion = scope:awakening_faith.religion + } + } } scripted_trigger great_holy_war_0010_centre_reason_trigger = { - # Warcraft - always = no + OR = { + title:c_baghdad.holder.top_liege.religion = { # Baghdad + NOT = { + this = religion:christianity_religion + } + } + title:c_damascus.holder.top_liege.religion = { # Damascus + NOT = { + this = religion:christianity_religion + } + } + title:c_cairo.holder.top_liege.religion = { # Cairo + NOT = { + this = religion:christianity_religion + } + } + } } scripted_trigger great_holy_war_0010_africa_reason_trigger = { - # Warcraft - always = no + OR = { + title:c_marrakesh.holder.top_liege.religion = { # Marrakesh + NOT = { + this = religion:christianity_religion + } + } + title:c_tunis.holder.top_liege.religion = { # Tunis + NOT = { + this = religion:christianity_religion + } + } + title:c_algier.holder.top_liege.religion = { # Algier + NOT = { + this = religion:christianity_religion + } + } + } } great_holy_war.0010 = { @@ -521,38 +584,34 @@ great_holy_war.0010 = { religious_head = { is_imprisoned = no } num_county_followers >= 35 # Faith must have at least SOME legitimacy. OR = { - # Warcraft - # AND = { # Historical setup. - # title:c_jerusalem.holder = { - # NOT = { - # faith.religion = root.religion - # } - # } - # current_date >= 1095.1.1 - # faith:catholic = root - # } - # AND = { # Historical setup. - # great_holy_war_0010_byzantion_reason_trigger = yes - # current_date >= 1000.1.1 - # faith:catholic = root - # } - # AND = { # Historical setup. - # great_holy_war_0010_europe_reason_trigger = yes - # current_date >= 800.1.1 - # faith:catholic = root - # } - # AND = { # Historical setup. - # title:c_roma.holder.top_liege = { - # NOT = { - # faith.religion = root.religion - # } - # } - # faith:catholic = root - # } - - # Warcraft - free_ghw_year_trigger = yes # Free for all after Historical years - + AND = { # Historical setup. + title:c_jerusalem.holder = { + NOT = { + faith.religion = root.religion + } + } + current_date >= 1095.1.1 + faith:catholic = root + } + AND = { # Historical setup. + great_holy_war_0010_byzantion_reason_trigger = yes + current_date >= 1000.1.1 + faith:catholic = root + } + AND = { # Historical setup. + great_holy_war_0010_europe_reason_trigger = yes + current_date >= 800.1.1 + faith:catholic = root + } + AND = { # Historical setup. + title:c_roma.holder.top_liege = { + NOT = { + faith.religion = root.religion + } + } + faith:catholic = root + } + current_date >= 1100.1.1 # Free for all after Historical years AND = { # Any Faith is seriously under attack. any_holy_site = { holder.top_liege = { @@ -560,65 +619,59 @@ great_holy_war.0010 = { } count >= 2 } - - # Warcraft - under_attack_ghw_year_trigger = yes - } - - # Warcraft - # AND = { # I learned it from you! - Muslims second. - # religion:christianity_religion = { - # exists = var:variable_ghw_unlocked - # } - # religion:islam_religion = root.religion - # any_holy_site = { - # holder.top_liege = { - # NOT = { faith.religion = root.religion } - # } - # count >= 1 - # } - # } - # AND = { # And we learned it from you! - Everyone else last. - # religion:christianity_religion = { - # exists = var:variable_ghw_unlocked - # } - # religion:islam_religion = { - # exists = var:variable_ghw_unlocked - # } - # any_holy_site = { - # holder.top_liege = { - # NOT = { faith.religion = root.religion } - # } - # count >= 1 - # } - # NOR = { - # like_christianity_religion_trigger = yes - # like_islam_religion_trigger = yes - # } - # } + current_date >= 800.1.1 + } + AND = { # I learned it from you! - Muslims second. + religion:christianity_religion = { + exists = var:variable_ghw_unlocked + } + religion:islam_religion = root.religion + any_holy_site = { + holder.top_liege = { + NOT = { faith.religion = root.religion } + } + count >= 1 + } + } + AND = { # And we learned it from you! - Everyone else last. + religion:christianity_religion = { + exists = var:variable_ghw_unlocked + } + religion:islam_religion = { + exists = var:variable_ghw_unlocked + } + any_holy_site = { + holder.top_liege = { + NOT = { faith.religion = root.religion } + } + count >= 1 + } + NOR = { + religion = religion:christianity_religion + religion = religion:islam_religion + } + } } } weight_multiplier = { base = 1 - - # Warcraft - # modifier = { # Historical push for local Christian control. - # add = 2 - # title:c_jerusalem.holder = { - # NOT = { like_christianity_religion_trigger = yes } - # } - # current_date >= 1095.1.1 - # root = { like_christianity_religion_trigger = yes } - # } - # modifier = { # Historical push for overall Islamic control. - # add = 2 - # title:c_jerusalem.holder.top_liege = { - # NOT = { like_islam_religion_trigger = yes } - # } - # current_date >= 1095.1.1 - # root = { like_islam_religion_trigger = yes } - # } + modifier = { # Historical push for local Christian control. + add = 2 + title:c_jerusalem.holder = { + NOT = { faith.religion = religion:christianity_religion } + } + current_date >= 1095.1.1 + root.religion = religion:christianity_religion + } + modifier = { # Historical push for overall Islamic control. + add = 2 + title:c_jerusalem.holder.top_liege = { + NOT = { faith.religion = religion:islam_religion } + } + current_date >= 1095.1.1 + root.religion = religion:islam_religion + } } immediate = { @@ -677,40 +730,114 @@ great_holy_war.0011 = { first_valid = { triggered_desc = { trigger = { - # Warcraft - scope:awakening_faith.religion = { like_christianity_religion_trigger = yes } + scope:awakening_faith.religion = religion:christianity_religion } desc = great_holy_war.0011.christian.t } - - # Warcraft - + triggered_desc = { + trigger = { + scope:awakening_faith.religion = religion:islam_religion + } + desc = great_holy_war.0011.muslim.t + } + triggered_desc = { #Pagan Polytheists + trigger = { + scope:awakening_faith.religion = { + is_in_family = rf_pagan + } + } + desc = great_holy_war.0011.pagans.t + } desc = great_holy_war.0011.fallback.t } } desc = { first_valid = { #Christian Flavor - - # Warcraft - + triggered_desc = { #Catholic Crusades, because of Rome. + trigger = { + scope:awakening_faith = faith:catholic + exists = scope:ghw_first_sponsor + great_holy_war_0010_rome_reason_trigger = yes + } + desc = great_holy_war.0011.catholic.rome.desc + } + triggered_desc = { #Christian Crusades, because of fall of Europe. + trigger = { + scope:awakening_faith.religion = religion:christianity_religion + exists = scope:ghw_first_sponsor + great_holy_war_0010_europe_reason_trigger = yes + } + desc = great_holy_war.0011.christian.europe.desc + } + triggered_desc = { #Christian Crusades, because of fall of Byzantium. + trigger = { + scope:awakening_faith.religion = religion:christianity_religion + exists = scope:ghw_first_sponsor + great_holy_war_0010_byzantion_reason_trigger = yes + } + desc = great_holy_war.0011.christian.byzantion.desc + } + triggered_desc = { #Catholic Crusades, because of Jerusalem. + trigger = { + scope:awakening_faith = faith:catholic + exists = scope:ghw_first_sponsor + great_holy_war_0010_jerusalem_reason_trigger = yes + } + desc = great_holy_war.0011.catholic.jerusalem.desc + } triggered_desc = { #Christian Crusades, fallback. trigger = { - # Warcraft - scope:awakening_faith.religion = { like_christianity_religion_trigger = yes } + scope:awakening_faith.religion = religion:christianity_religion } desc = great_holy_war.0011.christian.fallback.desc } - # Warcraft - + #Muslim Flavor + triggered_desc = { #Jihads, because of Mecca. + trigger = { + scope:awakening_faith.religion = religion:islam_religion + exists = scope:ghw_first_sponsor + great_holy_war_0010_mecca_reason_trigger = yes + } + desc = great_holy_war.0011.muslim.mecca.desc + } + triggered_desc = { #Jihads, because of Jerusalem. + trigger = { + scope:awakening_faith.religion = religion:islam_religion + exists = scope:ghw_first_sponsor + great_holy_war_0010_mecca_reason_trigger = yes + } + desc = great_holy_war.0011.muslim.jerusalem.desc + } + triggered_desc = { #Jihads, because of Arabia/Egypt. + trigger = { + scope:awakening_faith.religion = religion:islam_religion + exists = scope:ghw_first_sponsor + great_holy_war_0010_centre_reason_trigger = yes + } + desc = great_holy_war.0011.muslim.arabia.desc + } + triggered_desc = { #Jihads, because of Africa. + trigger = { + scope:awakening_faith.religion = religion:islam_religion + exists = scope:ghw_first_sponsor + great_holy_war_0010_africa_reason_trigger = yes + } + desc = great_holy_war.0011.muslim.africa.desc + } + triggered_desc = { #Jihads, fallback. + trigger = { + scope:awakening_faith.religion = religion:islam_religion + } + desc = great_holy_war.0011.muslim.fallback.desc + } #Generic Flavor triggered_desc = { #Generic, with Head. trigger = { NOR = { - # Warcraft - like_christianity_religion_trigger = yes - like_islam_religion_trigger = yes + scope:awakening_faith.religion = religion:islam_religion + scope:awakening_faith.religion = religion:christianity_religion } exists = scope:ghw_first_sponsor } @@ -802,15 +929,28 @@ great_holy_war.0011 = { } } - # Warcraft - + option = { #God's will + name = great_holy_war.0011.a + trigger = { + root.faith = scope:awakening_faith + scope:awakening_faith.religion = religion:christianity_religion + } + } + option = { #Allahu Akhbar + name = great_holy_war.0011.b + trigger = { + root.faith = scope:awakening_faith + scope:awakening_faith.religion = religion:islam_religion + } + } option = { #PaganGodName is with us. name = great_holy_war.0011.c trigger = { root.faith = scope:awakening_faith - - # Warcraft - + NOR = { + scope:awakening_faith.religion = religion:christianity_religion + scope:awakening_faith.religion = religion:islam_religion + } } } option = { #Infidels incoming. @@ -1091,16 +1231,14 @@ great_holy_war.0017 = { first_valid = { triggered_desc = { trigger = { - # Warcraft - scope:scoped_pope = { like_catholic_faith_trigger = yes } + scope:scoped_pope = { faith = faith:catholic } } desc = great_holy_war.0017.desc.a } triggered_desc = { trigger = { NOT = { - # Warcraft - scope:scoped_pope = { like_catholic_faith_trigger = yes } + scope:scoped_pope = { faith = faith:catholic } } } desc = great_holy_war.0017.desc.b @@ -1236,7 +1374,7 @@ great_holy_war.0020 = { is_at_war = no is_imprisoned = no highest_held_title_tier >= tier_county - NOT = { is_incapable_trigger = yes } + NOT = { has_trait = incapable } ai_zeal >= 0 root.faith = scope:the_faith NOT = { target_is_liege_or_above = scope:target_character } @@ -1491,7 +1629,7 @@ great_holy_war.0092 = { is_at_war = no is_imprisoned = no highest_held_title_tier >= tier_county - NOT = { is_incapable_trigger = yes } + NOT = { has_trait = incapable } ai_zeal >= 0 root.faith = scope:the_faith NOT = { target_is_liege_or_above = scope:ghw_defender } #scope:target_character isn't created in the holy war decision where this event is called @@ -1700,7 +1838,7 @@ great_holy_war.0021 = { is_at_war = no is_imprisoned = no highest_held_title_tier >= tier_county - NOT = { is_incapable_trigger = yes } + NOT = { has_trait = incapable } root.faith = scope:the_faith.great_holy_war.ghw_target_character.faith scope:the_faith = { #Crusade still exists exists = great_holy_war @@ -1907,7 +2045,7 @@ great_holy_war.0093 = { is_at_war = no is_imprisoned = no highest_held_title_tier >= tier_county - NOT = { is_incapable_trigger = yes } + NOT = { has_trait = incapable } root.faith = scope:target_faith scope:the_faith = { #Crusade still exists exists = great_holy_war @@ -2511,7 +2649,7 @@ great_holy_war.0025 = { scripted_trigger great_holy_war_0026_valid_beneficiary_trigger = { NOR = { has_trait = excommunicated - is_incapable_trigger = yes + has_trait = incapable has_trait = devoted has_serious_disease_trigger = yes } @@ -2570,10 +2708,7 @@ great_holy_war.0026 = { } } is_close_family_or_spouse_of_root_trigger = yes - - # Warcraft - age <= age_40_value - + age <= 40 NOT = { has_relation_rival = root } is_married = no culture = root.culture @@ -2595,10 +2730,7 @@ great_holy_war.0026 = { } } is_close_family_or_spouse_of_root_trigger = yes - - # Warcraft - age <= age_40_value - + age <= 40 NOT = { has_relation_rival = root } is_married = no } @@ -2619,10 +2751,7 @@ great_holy_war.0026 = { } } is_close_family_or_spouse_of_root_trigger = yes - - # Warcraft - age <= age_40_value - + age <= 40 NOT = { has_relation_rival = root } } alternative_limit = { @@ -2641,9 +2770,7 @@ great_holy_war.0026 = { faith = { has_doctrine = doctrine_gender_female_dominated } } } - - # Warcraft - age <= age_40_value + age <= 40 } alternative_limit = { great_holy_war_0026_valid_beneficiary_trigger = yes @@ -2844,7 +2971,7 @@ great_holy_war.0030 = { exists = ghw_beneficiary ghw_beneficiary = { OR = { - is_incapable_trigger = yes + has_trait = incapable has_trait = excommunicated has_trait = devoted has_serious_disease_trigger = yes @@ -2863,7 +2990,7 @@ great_holy_war.0030 = { exists = ghw_beneficiary ghw_beneficiary = { OR = { - is_incapable_trigger = yes + has_trait = incapable has_trait = excommunicated has_trait = devoted has_serious_disease_trigger = yes @@ -2880,7 +3007,7 @@ great_holy_war.0030 = { limit = { is_ai = no #Send notification to player. scope:former_beneficiary = { - is_incapable_trigger = yes + has_trait = incapable } } send_interface_toast = { @@ -3172,9 +3299,7 @@ great_holy_war.0051 = { scope:attacker.faith.great_holy_war = { has_pledged_attacker = root } - - # Warcraft - like_catholic_faith_trigger = yes + scope:the_faith = faith:catholic } desc = great_holy_war.0051.catholic.attackers.desc } @@ -3184,9 +3309,7 @@ great_holy_war.0051 = { scope:attacker.faith.great_holy_war = { has_pledged_attacker = root } - - # Warcraft - NOT = { like_catholic_faith_trigger = yes } + NOT = { scope:the_faith = faith:catholic } } desc = great_holy_war.0051.generic.attackers.desc } @@ -3223,14 +3346,32 @@ great_holy_war.0051 = { play_music_cue = "mx_cue_combat_3" } - # Warcraft option = { - name = great_holy_war.0011.c + name = great_holy_war.0011.a trigger = { scope:attacker.faith.great_holy_war = { has_pledged_attacker = root } + root.faith.religion = religion:christianity_religion + } - # Warcraft + custom_tooltip = great_holy_war.0051.generic.start.tt + } + option = { + name = great_holy_war.0011.b + trigger = { + scope:attacker.faith.great_holy_war = { has_pledged_attacker = root } + root.faith.religion = religion:islam_religion + } + custom_tooltip = great_holy_war.0051.generic.start.tt + } + option = { + name = great_holy_war.0011.c + trigger = { + scope:attacker.faith.great_holy_war = { has_pledged_attacker = root } + NOR = { + root.faith.religion = religion:christianity_religion + root.faith.religion = religion:islam_religion + } } custom_tooltip = great_holy_war.0051.generic.start.tt @@ -3320,17 +3461,32 @@ great_holy_war.0071 = { scope:attacker.faith.great_holy_war = { pledge_defender = root } } - # Warcraft - - # custom_tooltip = great_holy_war.0051.generic.start.tt -# } option = { - name = great_holy_war.0011.c + name = great_holy_war.0011.a trigger = { scope:attacker.faith.great_holy_war = { has_pledged_attacker = root } + root.faith.religion = religion:christianity_religion + } - # Warcraft + custom_tooltip = great_holy_war.0051.generic.start.tt + } + option = { + name = great_holy_war.0011.b + trigger = { + scope:attacker.faith.great_holy_war = { has_pledged_attacker = root } + root.faith.religion = religion:islam_religion + } + custom_tooltip = great_holy_war.0051.generic.start.tt + } + option = { + name = great_holy_war.0011.c + trigger = { + scope:attacker.faith.great_holy_war = { has_pledged_attacker = root } + NOR = { + root.faith.religion = religion:christianity_religion + root.faith.religion = religion:islam_religion + } } custom_tooltip = great_holy_war.0051.generic.start.tt @@ -3673,23 +3829,18 @@ great_holy_war.0057 = { desc = { first_valid = { triggered_desc = { #Crusaders - # Warcraft - trigger = { like_christianity_religion_trigger = yes } - + trigger = { faith.religion = religion:christianity_religion } desc = great_holy_war.0057.crusader.desc } triggered_desc = { #Muslims - # Warcraft - trigger = { like_islam_religion_trigger = yes } - + trigger = { faith.religion = religion:islam_religion } desc = great_holy_war.0057.mujahid.desc } triggered_desc = { #Everybody else trigger = { NOR = { - # Warcraft - like_christianity_religion_trigger = yes - like_islam_religion_trigger = yes + faith.religion = religion:christianity_religion + faith.religion = religion:islam_religion } } desc = great_holy_war.0057.generic.outsiders.desc @@ -3758,7 +3909,7 @@ great_holy_war.0058 = { is_knight = no is_imprisoned = no #Don't penalise captured faith_warriors. NOR = { - is_incapable_trigger = yes + has_trait = incapable has_serious_disease_trigger = yes } OR = { #Character or liege must still be at war, obviously. @@ -3856,9 +4007,7 @@ great_holy_war.0061 = { } } if = { - # Warcraft - limit = { like_christianity_religion_trigger = yes } - + limit = { faith.religion = religion:christianity_religion } house = { add_house_modifier = { modifier = house_beneficiary_won_ghw_crusade @@ -3867,9 +4016,7 @@ great_holy_war.0061 = { } } else_if = { - # Warcraft - limit = { like_islam_religion_trigger = yes } - + limit = { faith.religion = religion:islam_religion } house = { add_house_modifier = { modifier = house_beneficiary_won_ghw_jihad @@ -4049,13 +4196,14 @@ great_holy_war.0084 = { limit = { NOT = { exists = scope:old_faith.great_holy_war.ghw_war_declarer.capital_province } } - random_ruler = { - limit = { - is_landed = yes - faith = scope:old_faith - highest_held_title_tier > 1 + scope:old_faith = { + random_faith_ruler = { + limit = { + is_landed = yes + highest_held_title_tier > tier_barony + } + save_scope_as = fallback_host } - save_scope_as = fallback_host } } diff --git a/events/religion_events/heresy_events.txt b/events/religion_events/heresy_events.txt index 77979be6ff..5456ec7f94 100644 --- a/events/religion_events/heresy_events.txt +++ b/events/religion_events/heresy_events.txt @@ -24,11 +24,11 @@ heresy.0001 = { immediate = { #Look for a valid Duke of this Faith to be our heresiarch. - random_ruler = { + random_faith_ruler = { #Prefer Dukes with only 1 or 2 Duchies. limit = { is_valid_heresiarch = yes - highest_held_title_tier = 3 + highest_held_title_tier = tier_duchy any_held_title = { tier = tier_duchy count < 3 #Limit the influence of Mega-Dukes @@ -37,7 +37,7 @@ heresy.0001 = { #Then accept any valid Duke. alternative_limit = { is_valid_heresiarch = yes - highest_held_title_tier = 3 + highest_held_title_tier = tier_duchy } #If no Dukes exist, accept a Count. alternative_limit = { @@ -605,73 +605,74 @@ heresy.0011 = { immediate = { clear_saved_scope = convert_ruler - random_ruler = { - limit = { - highest_held_title_tier > 1 #No Barons, they're inconsequential. - faith = scope:origin_faith - highest_held_title_tier < 4 #No AI Kings/Emperors, they're too powerful. - is_landed = yes - exists = capital_county - is_capable_adult_ai = yes - no_heretical_hof_faith_0011_trigger = yes - recently_converted_faith_trigger = no # As amusing as it may be, rulers shouldn't 'flip-flop' between Faiths, so we need to enforce a cooldown on heresy conversions. - } + scope:origin_faith = { + random_faith_ruler = { + limit = { + highest_held_title_tier > tier_barony #No Barons, they're inconsequential. + highest_held_title_tier < tier_kingdom #No AI Kings/Emperors, they're too powerful. + is_landed = yes + exists = capital_county + is_capable_adult_ai = yes + no_heretical_hof_faith_0011_trigger = yes + recently_converted_faith_trigger = no # As amusing as it may be, rulers shouldn't 'flip-flop' between Faiths, so we need to enforce a cooldown on heresy conversions. + } - weight = { - base = 1000 # 100% weight + weight = { + base = 1000 # 100% weight - #Rulers of counties close to the Heresiarch's are more likely to join their Heresy. - modifier = { - add = -900 # 10% weight - capital_county = { - squared_distance = { - target = scope:heretic_capital - value > squared_distance_small + #Rulers of counties close to the Heresiarch's are more likely to join their Heresy. + modifier = { + add = -900 # 10% weight + capital_county = { + squared_distance = { + target = scope:heretic_capital + value > squared_distance_small + } } } - } - modifier = { - add = -90 # 1% weight - capital_county = { - squared_distance = { - target = scope:heretic_capital - value > squared_distance_medium + modifier = { + add = -90 # 1% weight + capital_county = { + squared_distance = { + target = scope:heretic_capital + value > squared_distance_medium + } } } - } - modifier = { - add = -10 # 0% weight (fallback only) - capital_county = { - squared_distance = { - target = scope:heretic_capital - value > squared_distance_large - } + modifier = { + add = -10 # 0% weight (fallback only) + capital_county = { + squared_distance = { + target = scope:heretic_capital + value > squared_distance_large + } + } } - } - #Rulers of the same(or similar) culture are more likely to join Heresies. - modifier = { - factor = 3 - culture = { has_same_culture_heritage = scope:heretic_ruler.culture } - } - modifier = { - factor = 4 - has_same_culture_as = scope:heretic_ruler - } + #Rulers of the same(or similar) culture are more likely to join Heresies. + modifier = { + factor = 3 + culture = { has_same_culture_heritage = scope:heretic_ruler.culture } + } + modifier = { + factor = 4 + has_same_culture_as = scope:heretic_ruler + } - #Counts are less likely to join a heresy than a Duke (though it's still possible if they're nearby) - modifier = { - factor = 0.25 - highest_held_title_tier = 2 + #Counts are less likely to join a heresy than a Duke (though it's still possible if they're nearby) + modifier = { + factor = 0.25 + highest_held_title_tier = 2 + } } - } - save_scope_as = convert_ruler - primary_title = { - save_scope_as = convert_title - } - capital_county = { - save_scope_as = convert_capital + save_scope_as = convert_ruler + primary_title = { + save_scope_as = convert_title + } + capital_county = { + save_scope_as = convert_capital + } } } @@ -691,7 +692,7 @@ heresy.0011 = { if = { limit = { scope:heretic_ruler = { - highest_held_title_tier >= 3 + highest_held_title_tier >= tier_duchy } } #If we're a Duke, consume more heresy power. @@ -735,7 +736,7 @@ heresy.0011 = { faith = scope:heretic_faith } scope:convert_ruler = { - highest_held_title_tier >= 3 + highest_held_title_tier >= tier_duchy } } #If we're physically close to the character, we also get notified. diff --git a/events/religion_events/holy_order_events.txt b/events/religion_events/holy_order_events.txt index 6c1aa6f108..a9f829bf91 100644 --- a/events/religion_events/holy_order_events.txt +++ b/events/religion_events/holy_order_events.txt @@ -698,7 +698,7 @@ holy_order.1000 = { any_faith_holy_order = { holy_order_1000_holy_order_trigger = yes } - any_ruler = { + any_faith_ruler = { holy_order_1000_request_target_trigger = yes } } diff --git a/events/scheme_events/court_scheme/court_scheme_outcome_events.txt b/events/scheme_events/court_scheme/court_scheme_outcome_events.txt index 4301d6b709..3821772980 100644 --- a/events/scheme_events/court_scheme/court_scheme_outcome_events.txt +++ b/events/scheme_events/court_scheme/court_scheme_outcome_events.txt @@ -844,7 +844,9 @@ court_outcome.1100 = { #by Mathilda Bjarnehed name = court_outcome.1100.b if = { - limit = { exists = scope:target_host + limit = { + exists = scope:target_host + NOT = { this = scope:target_host } NOT = { scope:owner = scope:target.host } } reverse_add_opinion = { diff --git a/events/scheme_events/fabricate_hook_scheme/fabricate_hook_outcome_events.txt b/events/scheme_events/fabricate_hook_scheme/fabricate_hook_outcome_events.txt index 71a42d2b5b..abcdeff155 100644 --- a/events/scheme_events/fabricate_hook_scheme/fabricate_hook_outcome_events.txt +++ b/events/scheme_events/fabricate_hook_scheme/fabricate_hook_outcome_events.txt @@ -283,12 +283,6 @@ fabricate_hook_outcome.1003 = { is_travelling = no } - immediate = { - scope:target.court_owner = { # For use in loc - save_scope_as = court_owner - } - } - option = { name = fabricate_hook_outcome.1003.a remove_short_term_gold = medium_gold_value diff --git a/events/scheme_events/intrigue_scheme_ongoing_events.txt b/events/scheme_events/intrigue_scheme_ongoing_events.txt index 74bed4641a..2dddcdd7ed 100644 --- a/events/scheme_events/intrigue_scheme_ongoing_events.txt +++ b/events/scheme_events/intrigue_scheme_ongoing_events.txt @@ -1773,6 +1773,7 @@ intrigue_scheme_ongoing.3003 = { #by Mathilda Bjarnehed } left_portrait = scope:hunter right_portrait = scope:target + lower_left_portrait = scope:assassin widget = { gui = "event_window_widget_scheme" container = "custom_widgets_container" @@ -3004,9 +3005,10 @@ intrigue_scheme_ongoing.5001 = { intrigue_scheme_ongoing.5002 = { type = character_event title = intrigue_scheme_ongoing.5002.t - desc = intrigue_scheme_ongoing.5002.desc + desc = intrigue_scheme_ongoing.5002.desc theme = generic_intrigue_scheme left_portrait = scope:target + lower_right_portrait = scope:assassin widget = { gui = "event_window_widget_scheme" container = "custom_widgets_container" @@ -3024,6 +3026,15 @@ intrigue_scheme_ongoing.5002 = { } immediate = { + + if = { #for use in the assassin version of the event + limit = { employs_court_position = master_assassin_court_position } + random_court_position_holder = { + type = master_assassin_court_position + save_scope_as = assassin + } + } + scope:scheme = { set_variable = { name = had_omen_scheme_event @@ -3639,7 +3650,18 @@ intrigue_scheme_ongoing.5013 = { ########################################### intrigue_scheme_ongoing.5014 = { type = character_event - title = intrigue_scheme_ongoing.5014.t + title = { + first_valid = { + triggered_desc = { + trigger = { + has_fp3_dlc_trigger = yes + culture = { has_cultural_pillar = heritage_iranian } + } + desc = intrigue_scheme_ongoing.5014.t_persian + } + desc = intrigue_scheme_ongoing.5014.t + } + } desc = intrigue_scheme_ongoing.5014.desc theme = generic_intrigue_scheme left_portrait = scope:target @@ -3677,12 +3699,7 @@ intrigue_scheme_ongoing.5014 = { show_chance = no desc = intrigue_scheme_ongoing.5014.a.success scope:scheme = { add_scheme_progress = scheme_progress_gain } - scope:target = { - add_character_modifier = { - modifier = has_plush_carpet_modifier - days = 3650 - } - } + scope:target = { add_carpet_modifier_effect = yes } } 50 = { show_chance = no @@ -3703,10 +3720,7 @@ intrigue_scheme_ongoing.5014 = { # Use it yourself option = { name = intrigue_scheme_ongoing.5014.b - add_character_modifier = { - modifier = has_plush_carpet_modifier - days = 3650 - } + add_carpet_modifier_effect = yes ai_chance = { base = 0 ai_value_modifier = { @@ -3723,7 +3737,18 @@ intrigue_scheme_ongoing.5014 = { #For target - Accept gift? intrigue_scheme_ongoing.5015 = { type = character_event - title = intrigue_scheme_ongoing.5014.t + title = { + first_valid = { + triggered_desc = { + trigger = { + has_fp3_dlc_trigger = yes + culture = { has_cultural_pillar = heritage_iranian } + } + desc = intrigue_scheme_ongoing.5014.t_persian + } + desc = intrigue_scheme_ongoing.5014.t + } + } desc = intrigue_scheme_ongoing.5015.desc theme = friendly left_portrait = scope:owner @@ -3741,26 +3766,14 @@ intrigue_scheme_ongoing.5015 = { # ooh, fancy! option = { name = intrigue_scheme_ongoing.5015.a - scope:target = { - add_character_modifier = { - modifier = has_plush_carpet_modifier - days = 3650 - } - } + scope:target = { add_carpet_modifier_effect = yes } hidden_effect = { scope:owner = { send_interface_toast = { title = intrigue_scheme_ongoing.5014.a.success right_icon = scope:target scope:scheme = { add_scheme_progress = scheme_progress_gain } - show_as_tooltip = { - scope:target = { - add_character_modifier = { - modifier = has_plush_carpet_modifier - days = 3650 - } - } - } + show_as_tooltip = { scope:target = { add_carpet_modifier_effect = yes } } } } } @@ -4073,7 +4086,9 @@ intrigue_scheme_ongoing.5018 = { title = intrigue_scheme_ongoing.5018.t desc = intrigue_scheme_ongoing.5018.desc theme = generic_intrigue_scheme + override_background = { reference = army_camp } #fix for FP3, felt highly appropriate left_portrait = scope:target + lower_left_portrait = scope:assassin widget = { gui = "event_window_widget_scheme" container = "custom_widgets_container" @@ -4614,7 +4629,7 @@ intrigue_scheme_ongoing.5024 = { short_term_gold >= medium_gold_value scope:scheme = { NOT = { has_variable = had_local_celebration_event } - scheme_number_of_agents > 0 + scheme_number_of_agents > 0 } scope:target = { OR = { @@ -4646,7 +4661,8 @@ intrigue_scheme_ongoing.5024 = { location = { save_scope_as = province } } } - scope:scheme = { + + scope:scheme = { random_scheme_agent = { limit = { is_alive = yes diff --git a/events/scheme_events/murder_scheme/murder_outcome_events.txt b/events/scheme_events/murder_scheme/murder_outcome_events.txt index dd982646be..d58a6dfdaf 100644 --- a/events/scheme_events/murder_scheme/murder_outcome_events.txt +++ b/events/scheme_events/murder_scheme/murder_outcome_events.txt @@ -1,4 +1,4 @@ -#Events for Murder Scheme Outcomes +#events for Murder Scheme Outcomes # System by Petter Vilberg and Linnéa Thimrén @@ -331,7 +331,7 @@ murder_outcome.0108 = { has_trait = drunkard } } - + modifier = { # More likely if you are growing poisonous plants add = 1 has_character_modifier = poisonous_plants @@ -522,7 +522,7 @@ murder_outcome.0302 = { barony = { save_scope_as = target_home } - } + } } trigger_event = { on_action = murder_setup } } @@ -1552,7 +1552,7 @@ murder_outcome.2500 = { left_portrait = scope:target trigger = { - scope:target = { + scope:target = { NOT = { in_diplomatic_range = scope:owner } } } @@ -1774,7 +1774,7 @@ murder_outcome.2002 = { immediate = { scope:target.location = { save_scope_as = background_terrain_scope } murder_success_effect = yes - + random_memory = { limit = { has_memory_category = negative @@ -1913,7 +1913,7 @@ murder_outcome.2003 = { left_portrait = { character = scope:target animation = poison - + } @@ -2296,7 +2296,7 @@ murder_outcome.2006 = { override_background = { reference = bp1_wine_cellar } - + trigger = { scope:murder_method = flag:bricked @@ -2784,7 +2784,7 @@ murder_outcome.2202 = { } trait = sadistic exclusive = yes - + successful_murder_outcome_event_option_effect = yes stress_impact = { base = minor_stress_loss @@ -3453,7 +3453,7 @@ murder_outcome.4001 = { title = murder_outcome.4001.t ### START DESC desc = { - + # Start off with declaration of failure # Include Target's name! random_valid = { @@ -3461,7 +3461,7 @@ murder_outcome.4001 = { desc = murder_outcome.4001.failure_declaration_2 desc = murder_outcome.4001.failure_declaration_3 } - + desc = murder_outcome.4001.desc first_valid = { @@ -3572,7 +3572,7 @@ murder_outcome.4002 = { desc = murder_outcome.4001.failure_declaration_2 desc = murder_outcome.4001.failure_declaration_3 } - + desc = murder_outcome.4002.desc first_valid = { diff --git a/events/scheme_events/murder_scheme/murder_saves/murder_save_events.txt b/events/scheme_events/murder_scheme/murder_saves/murder_save_events.txt index aaed4868ed..215ea7ac9d 100644 --- a/events/scheme_events/murder_scheme/murder_saves/murder_save_events.txt +++ b/events/scheme_events/murder_scheme/murder_saves/murder_save_events.txt @@ -53,7 +53,7 @@ murder_save.0001 = { } desc = murder_save.0001.end } - + theme = murder_scheme left_portrait = { character = scope:target @@ -67,7 +67,7 @@ murder_save.0001 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:hired_assassin scope:target = { @@ -225,7 +225,7 @@ murder_save.0002 = { } desc = murder_save.0002.end } - + theme = murder_scheme left_portrait = { character = scope:target @@ -239,7 +239,7 @@ murder_save.0002 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:creepy_crawly scope:target = { @@ -370,7 +370,7 @@ murder_save.0003 = { type = character_event title = murder_save.0003.t desc = murder_save.0003.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -384,7 +384,7 @@ murder_save.0003 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:hired_assassin scope:target = { @@ -485,7 +485,7 @@ murder_save.0004 = { type = character_event title = murder_save.0004.t desc = murder_save.0004.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -495,7 +495,7 @@ murder_save.0004 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:hired_thugs scope:target = { @@ -594,7 +594,7 @@ murder_save.0005 = { type = character_event title = murder_save.0005.t desc = murder_save.0005.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -604,7 +604,7 @@ murder_save.0005 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:beat_to_death_in_dungeon scope:target = { @@ -694,7 +694,7 @@ murder_save.0006 = { } desc = murder_save.0006.end } - + theme = murder_scheme left_portrait = { character = scope:target @@ -704,7 +704,7 @@ murder_save.0006 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:hired_thugs scope:target = { @@ -795,7 +795,7 @@ murder_save.0007 = { type = character_event title = murder_save.0007.t desc = murder_save.0007.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -805,7 +805,7 @@ murder_save.0007 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:creepy_crawly scope:target = { @@ -901,7 +901,7 @@ murder_save.0008 = { type = character_event title = murder_save.0008.t desc = murder_save.0008.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -911,7 +911,7 @@ murder_save.0008 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:hired_assassin scope:target = { @@ -992,7 +992,7 @@ murder_save.0009 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:target = { exists = dynasty @@ -1097,7 +1097,7 @@ murder_save.0010 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:hired_assassin scope:target = { @@ -1230,7 +1230,7 @@ murder_save.0011 = { type = character_event title = murder_save.0011.t desc = murder_save.0011.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -1240,7 +1240,7 @@ murder_save.0011 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:used_poison scope:target = { @@ -1325,7 +1325,7 @@ murder_save.0012 = { type = character_event title = murder_save.0012.t desc = murder_save.0012.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -1335,7 +1335,7 @@ murder_save.0012 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:used_poison scope:target = { @@ -1419,7 +1419,7 @@ murder_save.0013 = { type = character_event title = murder_save.0013.t desc = murder_save.0013.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -1429,7 +1429,7 @@ murder_save.0013 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:used_poison scope:target = { @@ -1499,7 +1499,7 @@ murder_save.0014 = { type = character_event title = murder_save.0014.t desc = murder_save.0014.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -1509,7 +1509,7 @@ murder_save.0014 = { gui = "event_window_widget_scheme" container = "custom_widgets_container" } - + trigger = { scope:murder_method = flag:hired_assassin scope:target = { @@ -1584,7 +1584,7 @@ murder_save.0015 = { type = character_event title = murder_save.0015.t desc = murder_save.0015.desc - + theme = murder_scheme left_portrait = { character = scope:target @@ -1595,11 +1595,11 @@ murder_save.0015 = { container = "custom_widgets_container" } - artifact = { - target = scope:this_artifact - position = lower_center_portrait + artifact = { + target = scope:this_artifact + position = lower_center_portrait } - + trigger = { exists = scope:murder_method scope:murder_method = flag:hired_assassin @@ -1607,7 +1607,7 @@ murder_save.0015 = { is_available_healthy_adult = yes has_any_artifact = yes any_character_artifact = { - NOT = { + NOT = { has_variable = saved_from_assassination } } @@ -1623,7 +1623,7 @@ murder_save.0015 = { scope:target = { random_character_artifact = { limit = { - NOT = { + NOT = { has_variable = saved_from_assassination } } @@ -1654,7 +1654,7 @@ murder_save.0015 = { scope:scheme = { end_scheme = yes } - + ai_chance = { base = 100 } @@ -2488,9 +2488,9 @@ murder_save.1009 = { type = event_spymaster_task_good title = murder_save.dynasty_member_used_guile_legacy_5_save desc = murder_save.dynasty_member_used_guile_legacy_5_save_desc - + left_icon = scope:target - + } } } @@ -2876,7 +2876,7 @@ murder_save.1015 = { #has_variable = christian_loincloth #has_variable = christian_girdle } - + } } desc = murder_save.1015.strangling_artifact.desc @@ -3090,7 +3090,6 @@ murder_save.1015 = { # Warcraft override_death_killer_artifact_effect = { death_reason = death_murder killer = scope:target artifact = scope:this_artifact } } - if = { limit = { scope:target = { diff --git a/events/scheme_events/murder_scheme/murder_scheme_maintenance_events.txt b/events/scheme_events/murder_scheme/murder_scheme_maintenance_events.txt index fc741624b8..0d09546f33 100644 --- a/events/scheme_events/murder_scheme/murder_scheme_maintenance_events.txt +++ b/events/scheme_events/murder_scheme/murder_scheme_maintenance_events.txt @@ -113,6 +113,21 @@ murder_scheme_maintenance.1 = { exposed_cheating_on_spouse_trigger = { SPOUSE = root } } } + modifier = { + add = 10 + has_trait = extolled + house ?= root.house + root = { + ai_greed >= 0 + ai_vengefulness >= 0 + ai_compassion <= medium_negative_ai_value + house.house_head ?= { + is_ruler = yes + government_has_flag = government_is_clan + } + ai_wants_low_unity = yes + } + } modifier = { add = root.ai_greed root.ai_greed > 0 @@ -134,6 +149,25 @@ murder_scheme_maintenance.1 = { } } } + modifier = { + add = root.ai_greed + root.ai_greed > 0 + root = { + is_ruler = yes + is_independent_ruler = no + liege ?= { + any_tax_collector = { + any_tax_collector_vassal = { + this = root + } + check_tax_collector_aptitude = { + CHARACTER = this + VALUE >= 4 + } + } + } + } + } modifier = { # If you're really good at murdering, killing claimants makes a lot of sense add = 50 root = { @@ -185,22 +219,23 @@ murder_scheme_maintenance.1 = { # } #} #Scope:target has caused internal strife in the realm - character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + character_hates_scope_due_to_strife_modifier = { TARGET = this } modifier = { # Family Feud add = 50 - exists = scope:actor.house - exists = scope:recipient.house - scope:actor = { + exists = root.house + exists = house + save_temporary_scope_as = the_murder_target + root = { house.house_head = { any_owned_story = { story_type = story_cycle_house_feud has_variable = house_feud_house - var:house_feud_house = scope:recipient.house + var:house_feud_house = scope:the_murder_target.house } } has_opinion_modifier = { modifier = house_feud_opinion - target = scope:recipient.house.house_head + target = scope:the_murder_target.house.house_head } } } diff --git a/events/travel_events/travel_danger_events_arky.txt b/events/travel_events/travel_danger_events_arky.txt index 4bd3aa4a4e..591ea1a95a 100644 --- a/events/travel_events/travel_danger_events_arky.txt +++ b/events/travel_events/travel_danger_events_arky.txt @@ -1185,7 +1185,6 @@ scripted_effect runaway_lost_effect = { add_courtier = scope:runaway_character if = { #make sure they are knighted by the new liege limit = { - scope:runaway_character ?= { exists = liege } scope:runaway_character.var:runaway_type ?= flag:runaway_knight scope:runaway_character ?= { is_potential_knight = yes } } diff --git a/events/travel_events/travel_danger_events_joe.txt b/events/travel_events/travel_danger_events_joe.txt index 056276ab11..46beedf477 100644 --- a/events/travel_events/travel_danger_events_joe.txt +++ b/events/travel_events/travel_danger_events_joe.txt @@ -119,6 +119,9 @@ travel_danger_events.6000 = { #Animal attack } } } + current_travel_plan = { + any_entourage_character = { count >= 1 } + } } cooldown = { months = 1 } @@ -153,6 +156,7 @@ travel_danger_events.6000 = { #Animal attack #Save travel leader if = { limit = { + exists = travel_leader NOT = { travel_leader ?= scope:beast_victim } } travel_leader ?= { save_scope_as = travel_leader } @@ -420,6 +424,14 @@ travel_danger_events.6010 = { #Siege NOT = { any_army_in_location = { army_owner = root } } + any_army_in_location = { + OR = { + is_army_in_siege = yes + is_army_in_raid = yes + } + exists = army_commander + save_temporary_scope_as = battle_army_1_temp + } } } @@ -437,6 +449,7 @@ travel_danger_events.6010 = { #Siege is_army_in_siege = yes is_army_in_raid = yes } + exists = army_commander } order_by = army_size save_scope_as = siege_army @@ -682,33 +695,40 @@ travel_danger_events.6010 = { #Siege } } else = { remove_short_term_gold = minor_gold_value } - random = { - chance = 50 - custom_tooltip = travel_danger_events.6010.c.wound - hidden_effect = { - current_travel_plan = { - random_entourage_character = { - limit = { is_adult = yes } - weight = { - base = 1 - modifier = { add = prowess } - modifier = { - add = 10 - has_court_position = bodyguard_court_position + current_travel_plan = { + if = { + limit = { + any_entourage_character = { is_adult = yes } + } + random = { + chance = 50 + custom_tooltip = travel_danger_events.6010.c.wound + hidden_effect = { + random_entourage_character = { + limit = { is_adult = yes } + weight = { + base = 1 + modifier = { add = prowess } + modifier = { + add = 10 + has_court_position = bodyguard_court_position + } + modifier = { + add = 10 + is_knight_of = root + } } - modifier = { - add = 10 - is_knight_of = root + save_scope_as = woundee + } + root = { + send_interface_toast = { + title = travel_danger_events.6010.c.wound + left_icon = scope:woundee + scope:woundee = { + increase_wounds_effect = { REASON = battle } + } } } - save_scope_as = woundee - } - } - send_interface_toast = { - title = travel_danger_events.6010.c.wound - left_icon = scope:woundee - scope:woundee = { - increase_wounds_effect = { REASON = battle } } } } @@ -868,10 +888,21 @@ travel_danger_events.6011 = { #Battal NOT = { any_army_in_location = { army_owner = root } } - # Removes an occasional hoard of run-time errors. - any_army_in_location = { - count >= 2 + any_army_in_location = { + is_army_in_combat = yes + exists = army_commander + save_temporary_scope_as = battle_army_1_temp + } + any_army_in_location = { + NOT = { this = scope:battle_army_1_temp } + is_army_in_combat = yes exists = army_commander + army_owner ?= { + OR = { + is_at_war_with = scope:battle_army_1_temp.army_owner + any_hostile_raider = { this = scope:battle_army_1_temp.army_owner } + } + } } } } @@ -1364,6 +1395,10 @@ travel_danger_events.6012 = { #Army type = battle } } + any_army_in_location = { + exists = army_owner + exists = army_commander + } NOT = { any_army_in_location = { army_owner = root } } @@ -1760,6 +1795,7 @@ travel_danger_events.6013 = { #Occupation is_location_valid_for_travel_event_on_land = yes location = { exists = province_owner + province_owner != barony.barony_controller travel_danger_type = { travel_plan = root.current_travel_plan type = occupation @@ -2965,13 +3001,7 @@ travel_danger_events.6040 = { #Disease next_destination_province = { save_scope_as = destination } } if = { #add a physician if you have one - limit = { - any_court_position_holder = { - type = court_physician_court_position - is_physically_able_ai_adult = yes - is_travel_entourage_character = yes - } - } + limit = { court_physician_available_trigger = yes } save_court_physician_as_effect = { SCOPE_NAME = physician } } hidden_effect = { @@ -3037,7 +3067,12 @@ travel_danger_events.6040 = { #Disease option = { #Treatment name = travel_danger_events.6040.b - trigger = { exists = scope:physician } + trigger = { + custom_tooltip = { + text = court_physician_not_employed_or_away_tt + court_physician_available_trigger = yes + } + } show_as_unavailable = { always = yes } safe_disease_treatment_effect = { PATIENT = root TREATMENT_PICKER = root } ai_chance = { @@ -3047,6 +3082,7 @@ travel_danger_events.6040 = { #Disease option = { #Press on name = travel_danger_events.6040.c + trigger = { court_physician_available_trigger = no } ai_chance = { base = 25 ai_value_modifier = { diff --git a/events/travel_events/travel_danger_events_klank.txt b/events/travel_events/travel_danger_events_klank.txt index e40a2657ee..c564d168b8 100644 --- a/events/travel_events/travel_danger_events_klank.txt +++ b/events/travel_events/travel_danger_events_klank.txt @@ -680,7 +680,9 @@ travel_danger_events.3001 = { #Avalanche, Highlands terrain. Based on Gesta Abba location.culture = { has_cultural_parameter = mountain_trait_bonuses } } } - + root = { + save_scope_as = avalanche_traveler + } location = { save_scope_as = avalanche_location } @@ -690,9 +692,7 @@ travel_danger_events.3001 = { #Avalanche, Highlands terrain. Based on Gesta Abba days = 7 } } - root = { - save_scope_as = avalanche_traveler - } + @@ -906,18 +906,34 @@ travel_danger_events.3002 = { #follow up letter event to province owner opening = travel_danger_events.3002.opening desc = travel_danger_events.3002.desc - sender = cp:councillor_steward + sender = scope:news_bearer + + immediate = { + if = { + limit = { exists = cp:councillor_steward } + cp:councillor_steward = { save_scope_as = news_bearer } + } + else_if = { + limit = { + any_councillor = { count > 0 } + } + random_councillor = { save_scope_as = news_bearer } + } + else = { + random_courtier = { save_scope_as = news_bearer } + } + } option = { name = { trigger = { - prev = root + scope:avalanche_traveler = root } text = travel_danger_events.3002.a.special #I WAS THERE } name = { trigger = { - NOT = { prev = root } + NOT = { scope:avalanche_traveler = root } } text = travel_danger_events.3002.a.default #oh no } diff --git a/events/travel_events/travel_events_filippa.txt b/events/travel_events/travel_events_filippa.txt index 5d006997fe..435122a0f5 100644 --- a/events/travel_events/travel_events_filippa.txt +++ b/events/travel_events/travel_events_filippa.txt @@ -10178,15 +10178,15 @@ travel_events.2029 = { has_building_or_higher = cereal_fields_01 } location_has_winter_trigger = no - NOT = { has_character_flag = had_travel_cereal_field_event_recently } + NOR = { + has_character_flag = had_travel_cereal_field_event_recently + faith = location.county.faith + } } immediate = { #Chaplain won't look kindly on you blaspheming your religion if = { limit = { - location.county = { - faith = root.faith - } current_travel_plan = { any_entourage_character = { has_council_position = councillor_court_chaplain diff --git a/events/travel_events/travel_events_james.txt b/events/travel_events/travel_events_james.txt index 7b34943315..af52118350 100644 --- a/events/travel_events/travel_events_james.txt +++ b/events/travel_events/travel_events_james.txt @@ -176,6 +176,15 @@ travel_events.4000 = { root.current_travel_plan = { add_companion = scope:mystic_scope } + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } stress_impact = { lifestyle_mystic = minor_stress_impact_loss paranoid = medium_stress_impact_gain @@ -4023,6 +4032,15 @@ travel_events.4022 = { zealous = medium_stress_impact_gain } } + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } ai_chance = { base = 100 modifier = { @@ -4158,6 +4176,15 @@ travel_events.4022 = { zealous = major_piety_gain } } + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } if = { limit = { root = culture.culture_head @@ -6842,6 +6869,15 @@ travel_events.4037 = { } } } + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } stress_impact = { arrogant = medium_stress_impact_gain lazy = medium_stress_impact_gain @@ -7028,6 +7064,15 @@ travel_events.4038 = { } custom_tooltip = cheaper_to_convert_to_priest_faith_tt add_learning_lifestyle_xp = minor_lifestyle_xp + if = { + limit = { + has_trait = lifestyle_mystic + } + add_trait_xp = { + trait = lifestyle_mystic + value = lifestyle_mystic_xp_gain_minor_value + } + } stress_impact = { shy = medium_stress_impact_gain arrogant = medium_stress_impact_gain diff --git a/events/travel_events/travel_events_veronica.txt b/events/travel_events/travel_events_veronica.txt index 75e7bd57f5..3b7ddb9c27 100644 --- a/events/travel_events/travel_events_veronica.txt +++ b/events/travel_events/travel_events_veronica.txt @@ -4192,6 +4192,7 @@ travel_events.3090 = { is_available_travelling_adult = yes is_location_valid_for_travel_event_on_land = yes exists = location.barony.holder + NOT = { location.barony.holder = root } exists = involved_activity #there must be something there for the temples to prepare for involved_activity.activity_host = { NOT = { this = root } } #you're not the host exists = involved_activity.activity_location.barony.lessee diff --git a/events/war_events/raid_events.txt b/events/war_events/raid_events.txt index 414d551476..b44851d782 100644 --- a/events/war_events/raid_events.txt +++ b/events/war_events/raid_events.txt @@ -946,8 +946,11 @@ raiding.0014 = { scope:barony.holder = { every_court_position_holder = { type = antiquarian_court_position - limit = { is_available_ai_adult = yes } - divide = this.aptitude:antiquarian_court_position + limit = { + is_available_ai_adult = yes + aptitude:antiquarian_court_position > 0 + } + divide = aptitude:antiquarian_court_position } } } From e6f1853061d543c1ca52a87c71471a6338b63d4e Mon Sep 17 00:00:00 2001 From: Grekopithikos Date: Sun, 12 Nov 2023 11:51:05 +0200 Subject: [PATCH 04/82] traits --- common/traits/00_traits.txt | 114 ++++++++++++++++++++++++++++++++---- common/traits/_traits.info | 2 +- 2 files changed, 104 insertions(+), 12 deletions(-) diff --git a/common/traits/00_traits.txt b/common/traits/00_traits.txt index 1df247bddd..3ffb9183f9 100644 --- a/common/traits/00_traits.txt +++ b/common/traits/00_traits.txt @@ -1678,6 +1678,13 @@ scholar = { church_holding_holding_build_gold_cost = -0.05 } + culture_modifier = { #for FP3's "Irrigation Expert" tradition + parameter = innovative_traits_more_valued + drylands_tax_mult = 0.1 + desert_tax_mult = 0.1 + desert_mountains_tax_mult = 0.1 + } + ai_rationality = 30 compatibility = { @@ -2024,6 +2031,13 @@ lifestyle_gardener = { stewardship = 2 stress_gain_mult = -0.2 courtier_and_guest_opinion = 10 + + culture_modifier = { #for FP3's "Irrigation Expert" tradition + parameter = innovative_traits_more_valued + drylands_tax_mult = 0.1 + desert_tax_mult = 0.1 + desert_mountains_tax_mult = 0.1 + } ruler_designer_cost = 50 @@ -2410,6 +2424,11 @@ diligent = { farmlands_tax_mult = 0.2 floodplains_tax_mult = 0.2 } + + culture_modifier = { + parameter = pragmatic_traits_county_opinion_modifiers + county_opinion_add = 10 + } same_opinion = 10 opposite_opinion = -10 @@ -2658,6 +2677,13 @@ patient = { farmlands_tax_mult = 0.2 floodplains_tax_mult = 0.2 } + + culture_modifier = { #for FP3's "Irrigation Expert" tradition + parameter = innovative_traits_more_valued + drylands_tax_mult = 0.1 + desert_tax_mult = 0.1 + desert_mountains_tax_mult = 0.1 + } opposite_opinion = -15 @@ -6959,6 +6985,11 @@ shrewd = { physical = yes ruler_designer_cost = 50 + + culture_modifier = { + parameter = pragmatic_traits_county_opinion_modifiers + county_opinion_add = 10 + } desc = { first_valid = { @@ -8038,6 +8069,11 @@ faith_warrior = { category = fame martial = 2 prowess = 3 + + culture_modifier = { + parameter = faith_warrior_traits_more_valued + monthly_prestige = 1 + } clergy_opinion = 15 same_faith_opinion = 5 @@ -8113,6 +8149,11 @@ order_member = { martial = 1 prowess = 4 + culture_modifier = { + parameter = faith_warrior_traits_more_valued + monthly_prestige = 1 + } + same_opinion_if_same_faith = 15 shown_in_ruler_designer = no @@ -8136,12 +8177,6 @@ order_member = { ########### FAME ########## berserker = { - #potential = { - #OR = { - #religion = norse_pagan - #religion = norse_pagan_reformed - #} - #} category = fame diplomacy = -2 @@ -8242,6 +8277,7 @@ varangian = { } poet = { + category = fame diplomacy_per_prestige_level = 1 stress_loss_mult = 0.1 @@ -9187,11 +9223,6 @@ disinherited = { denounced = { category = fame - - potential = { - exists = dynasty.dynast - faith = dynasty.dynast.faith - } diplomacy = -1 monthly_prestige = -1 @@ -9217,6 +9248,59 @@ denounced = { } } +decadent = { + category = fame + opposites = { + extolled + } + + dynasty_house_opinion = -15 + same_opinion = 25 + monthly_piety = -1 + stress_gain_mult = 0.25 + owned_hostile_scheme_success_chance_add = 10 + owned_scheme_secrecy_add = 10 + + shown_in_ruler_designer = no + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_decadent_desc + } + desc = trait_decadent_character_desc + } + } +} + +extolled = { + category = fame + opposites = { + decadent + } + + dynasty_house_opinion = 15 + monthly_piety = 1 + enemy_hostile_scheme_success_chance_add = 25 + + shown_in_ruler_designer = no + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_extolled_desc + } + desc = trait_extolled_character_desc + } + } +} + loyal = { category = fame opposites = { @@ -10167,6 +10251,14 @@ greatest_of_khans = { archer_cavalry_siege_value_add = 0.5 light_cavalry_siege_value_add = 0.5 + archer_cavalry_toughness_mult = 1 + light_cavalry_toughness_mult = 1 + heavy_cavalry_toughness_mult = 1 + + archer_cavalry_damage_mult = 1 + light_cavalry_damage_mult = 1 + heavy_cavalry_damage_mult = 1 + shown_in_ruler_designer = no desc = { diff --git a/common/traits/_traits.info b/common/traits/_traits.info index b035a0cd83..b6ab4fab39 100644 --- a/common/traits/_traits.info +++ b/common/traits/_traits.info @@ -57,7 +57,7 @@ valid_sex = all/male/female # Defaults to all, trait can only be had by characte minimum_age = int # Min age required to have this trait maximum_age = int # Max age allowed to have this trait -potential = { # Triggers that must be met to be allowed to have this trait +potential = { # Triggers that must be met for this trait to be givento a character. This is not checked during runtime. } From 852c83ad4d51962d14a1668e6884e8506a104b2a Mon Sep 17 00:00:00 2001 From: Grekopithikos Date: Sun, 12 Nov 2023 22:25:41 +0200 Subject: [PATCH 05/82] building update --- common/buildings/00_castle_buildings.txt | 158 ++++- common/buildings/00_city_buildings.txt | 109 ++- .../buildings/00_duchy_capital_buildings.txt | 151 +++-- .../00_standard_economy_buildings.txt | 626 ++++++++++++++---- .../00_standard_fortification_buildings.txt | 64 +- .../00_standard_military_buildings.txt | 180 ++--- common/buildings/00_temple_buildings.txt | 130 +++- .../99_background_graphics_buildings.txt | 40 ++ common/buildings/_buildings.info | 13 + .../00_debug_triggers.txt | 4 + .../00_landed_title_triggers.txt | 1 + .../01_decision_triggers.txt | 10 + .../vassal_contracts/_vassal_contracts.info | 15 +- common/vassal_contracts/clan.txt | 127 +--- common/vassal_stances/_vassal_stances.info | 9 + 15 files changed, 1190 insertions(+), 447 deletions(-) diff --git a/common/buildings/00_castle_buildings.txt b/common/buildings/00_castle_buildings.txt index 213c6acd68..5a3f1292dd 100644 --- a/common/buildings/00_castle_buildings.txt +++ b/common/buildings/00_castle_buildings.txt @@ -4,6 +4,7 @@ @holding_illustration_mediterranean = "gfx/interface/illustrations/holding_types/castle_mediterranean.dds" @holding_illustration_norse = "gfx/interface/illustrations/holding_types/fp1_castle_norse.dds" @holding_illustration_iberian= "gfx/interface/illustrations/holding_types/fp2_castle_iberian.dds" +@holding_illustration_iranian = "gfx/interface/illustrations/holding_types/fp3_castle_iranian.dds" castle_01 = { construction_time = slow_construction_time @@ -196,6 +197,41 @@ castle_01 = { graphical_regions = { graphical_mediterranean } } + ### FP3 Iranian ### + asset = { + type = pdxmesh + name = "fp3_building_persian_castle_01_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + name = "fp3_building_persian_castle_01_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + name = "building_mena_castle_01_mesh" + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + name = "building_indian_castle_01_mesh" + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } can_construct_potential = { barony_cannot_construct_holding = no } @@ -207,7 +243,7 @@ castle_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no building_requirement_tribal_holding_in_county = yes } @@ -492,10 +528,46 @@ castle_02 = { graphical_cultures = { iberian_building_gfx } graphical_regions = { graphical_mediterranean } } - - + + ### FP3 Iranian ### + asset = { + type = pdxmesh + name = "fp3_building_persian_castle_02_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 1 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + name = "fp3_building_persian_castle_02_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 1 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + name = "building_mena_castle_02_mesh" + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + name = "building_indian_castle_02_mesh" + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } + can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct = { culture = { @@ -791,8 +863,45 @@ castle_03 = { graphical_regions = { graphical_mediterranean } } + ### FP3 Iranian ### + asset = { + type = pdxmesh + name = "fp3_building_persian_castle_03_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 2 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + name = "fp3_building_persian_castle_03_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 2 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + name = "building_mena_castle_03_mesh" + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + name = "building_indian_castle_03_mesh" + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } + can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct = { culture = { @@ -1079,8 +1188,45 @@ castle_04 = { graphical_regions = { graphical_mediterranean } } + ### FP3 Iranian ### + asset = { + type = pdxmesh + name = "fp3_building_persian_castle_04_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 3 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + name = "fp3_building_persian_castle_04_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 3 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + name = "building_mena_castle_04_mesh" + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + name = "building_indian_castle_04_mesh" + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Castle/mena_castle" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } + can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct = { culture = { diff --git a/common/buildings/00_city_buildings.txt b/common/buildings/00_city_buildings.txt index 25e503d9b0..3a74724acb 100644 --- a/common/buildings/00_city_buildings.txt +++ b/common/buildings/00_city_buildings.txt @@ -4,6 +4,7 @@ @holding_illustration_mena = "gfx/interface/illustrations/holding_types/city_mena.dds" @holding_illustration_norse = "gfx/interface/illustrations/holding_types/fp1_city_norse.dds" @holding_illustration_iberian = "gfx/interface/illustrations/holding_types/fp2_city_iberian.dds" +@holding_illustration_iranian = "gfx/interface/illustrations/holding_types/fp3_city_iranian.dds" city_01 = { construction_time = slow_construction_time @@ -230,6 +231,27 @@ city_01 = { graphical_cultures = { iberian_building_gfx } graphical_regions = { graphical_mediterranean } } + + ### FP3 Iranian ### + asset = { + type = pdxmesh + name = "fp3_building_persian_city_01_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + name = "fp3_building_persian_city_01_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } can_construct_potential = { barony_cannot_construct_holding = no @@ -242,7 +264,7 @@ city_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no building_requirement_tribal_holding_in_county = yes } cost_gold = main_building_tier_1_cost @@ -585,9 +607,29 @@ city_02 = { graphical_regions = { graphical_mediterranean } } + ### FP3 Iranian ### + asset = { + type = pdxmesh + name = "fp3_building_persian_city_01_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 1} } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + name = "fp3_building_persian_city_01_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 1} } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct = { culture = { @@ -913,9 +955,30 @@ city_03 = { graphical_cultures = { iberian_building_gfx } graphical_regions = { graphical_mediterranean } } + + ### FP3 Iranian ### + asset = { + type = pdxmesh + name = "fp3_building_persian_city_02_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 2 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + name = "fp3_building_persian_city_02_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 2 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct = { culture = { @@ -1234,9 +1297,29 @@ city_04 = { graphical_regions = { graphical_mediterranean } } - + ### FP3 Iranian ### + asset = { + type = pdxmesh + name = "fp3_building_persian_city_02_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 2 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + name = "fp3_building_persian_city_02_a_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @holding_illustration_iranian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 2 } } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_india } + } + can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct = { culture = { @@ -1353,7 +1436,7 @@ guild_halls_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -1395,7 +1478,7 @@ guild_halls_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -1448,7 +1531,7 @@ guild_halls_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -1502,7 +1585,7 @@ guild_halls_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -1555,7 +1638,7 @@ guild_halls_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -1608,7 +1691,7 @@ guild_halls_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -1661,7 +1744,7 @@ guild_halls_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -1714,7 +1797,7 @@ guild_halls_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost diff --git a/common/buildings/00_duchy_capital_buildings.txt b/common/buildings/00_duchy_capital_buildings.txt index 997eb470f5..e1e0ff48a6 100644 --- a/common/buildings/00_duchy_capital_buildings.txt +++ b/common/buildings/00_duchy_capital_buildings.txt @@ -13,8 +13,8 @@ royal_garden_01 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes - culture = { has_cultural_parameter = enable_garden_duchy_building } + building_requirement_tribal = no + county.holder.culture = { has_cultural_parameter = enable_garden_duchy_building } NOR = { terrain = desert_mountains terrain = mountains @@ -51,7 +51,7 @@ royal_garden_01 = { next_building = royal_garden_02 - type_icon = "icon_building_royal_forest.dds" + type_icon = "icon_building_royal_gardens.dds" type = duchy_capital @@ -74,14 +74,12 @@ royal_garden_02 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { - culture = { - has_innovation = innovation_windmills - has_cultural_parameter = enable_garden_duchy_building - } + county.holder.culture = { has_cultural_parameter = enable_garden_duchy_building } + culture = { has_innovation = innovation_windmills } } is_enabled = { @@ -124,14 +122,12 @@ royal_garden_03 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { - culture = { - has_innovation = innovation_cranes - has_cultural_parameter = enable_garden_duchy_building - } + county.holder.culture = { has_cultural_parameter = enable_garden_duchy_building } + culture = { has_innovation = innovation_cranes } } is_enabled = { @@ -176,7 +172,7 @@ military_academy_01 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -226,7 +222,7 @@ military_academy_02 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -270,7 +266,7 @@ military_academy_03 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -313,7 +309,7 @@ march_01 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -368,7 +364,7 @@ march_02 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -417,7 +413,7 @@ march_03 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -466,7 +462,7 @@ siege_works_01 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -521,7 +517,7 @@ siege_works_02 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -571,7 +567,7 @@ siege_works_03 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -627,7 +623,7 @@ royal_armory_01 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -699,7 +695,7 @@ royal_armory_02 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -764,7 +760,7 @@ royal_armory_03 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -833,7 +829,7 @@ jousting_lists_01 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -934,7 +930,7 @@ jousting_lists_02 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1004,7 +1000,7 @@ jousting_lists_03 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1077,7 +1073,7 @@ blacksmiths_01 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1178,7 +1174,7 @@ blacksmiths_02 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1251,7 +1247,7 @@ blacksmiths_03 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1318,7 +1314,7 @@ archery_ranges_01 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1411,7 +1407,7 @@ archery_ranges_02 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1468,7 +1464,7 @@ archery_ranges_03 = { } can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1520,7 +1516,7 @@ tax_assessor_01 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1580,7 +1576,7 @@ tax_assessor_02 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1619,7 +1615,7 @@ tax_assessor_03 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1659,7 +1655,7 @@ leisure_palace_01 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1724,7 +1720,7 @@ leisure_palace_02 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1772,7 +1768,7 @@ leisure_palace_03 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1820,7 +1816,7 @@ royal_forest_01 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no NOR = { terrain = steppe terrain = desert @@ -1878,7 +1874,7 @@ royal_forest_02 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1922,7 +1918,7 @@ royal_forest_03 = { can_construct_potential = { building_requirement_castle_city_church = { LEVEL = 01 } - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { @@ -1970,7 +1966,7 @@ great_megalith_01 = { type_icon = "icon_megalith.dds" can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no building_requirement_castle_city_church = { LEVEL = 01 } scope:holder = { faith = { @@ -2018,3 +2014,70 @@ great_megalith_01 = { flag = fully_upgraded_duchy_capital_building } + + +################## +# Tower of Silence +################## +tower_of_silence_01 = { + + construction_time = very_quick_construction_time + + type_icon = "icon_building_tower_of_silence.dds" + + can_construct_potential = { + building_requirement_tribal = no + building_requirement_castle_city_church = { LEVEL = 01 } + scope:holder = { + faith = { has_doctrine_parameter = can_build_towers_of_silence_active } + } + } + + is_enabled = { + custom_tooltip = { + text = tower_of_silence_01.tt.county_not_tos_users + county.faith = { has_doctrine_parameter = can_build_towers_of_silence_active } + } + custom_tooltip = { + text = tower_of_silence_01.tt.liege_not_approve_of_burial + scope:holder.liege ?= { + faith = { + NOT = { has_doctrine_parameter = can_build_towers_of_silence_active } + } + } + } + county.holder = { + has_title = prev.duchy + faith = { has_doctrine_parameter = can_build_towers_of_silence_active } + } + } + show_disabled = yes + + cost_gold = normal_building_tier_1_cost + + character_modifier = { + same_faith_opinion = 10 + zealot_opinion = 10 + zealot_tax_contribution_mult = 0.2 + zealot_levy_contribution_mult = 0.2 + monthly_piety = 0.5 + } + + duchy_capital_county_modifier = { + county_opinion_add = 30 + monthly_county_control_change_add = 0.25 + } + + ai_value = { + base = 100 + # Fill all building slots before going for duchy buildings + modifier = { + factor = 0 + free_building_slots > 0 + } + } + + type = duchy_capital + + flag = fully_upgraded_duchy_capital_building +} diff --git a/common/buildings/00_standard_economy_buildings.txt b/common/buildings/00_standard_economy_buildings.txt index 14042fb5ee..d5030cfb0c 100644 --- a/common/buildings/00_standard_economy_buildings.txt +++ b/common/buildings/00_standard_economy_buildings.txt @@ -17,6 +17,7 @@ # Caravanserai - Late Game Building - Massive Tax, Defender Advantage, Dev Growth % and flat value, MaA maintenance and Merc hire cost # Windmills - Late Game Building - Massive Tax, Supply Limit, Holding Taxes, Dev Growth % and flat value # Watermills - Late Game Building - Massive Tax, Supply Limit, Building and Holding construction cost reduction, Holding Taxes, Dev Growth % and flat value +# Qanats - Cultural Building - Dev Growth % and flat value, Supply Limit, Travel bonus ### caravanserai @@ -33,7 +34,7 @@ caravanserai_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } is_enabled = { @@ -114,7 +115,7 @@ caravanserai_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_2_cost @@ -161,7 +162,7 @@ caravanserai_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_3_cost @@ -206,7 +207,7 @@ caravanserai_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_4_cost @@ -251,7 +252,7 @@ caravanserai_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_5_cost @@ -296,7 +297,7 @@ caravanserai_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_6_cost @@ -342,7 +343,7 @@ caravanserai_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_7_cost @@ -388,7 +389,7 @@ caravanserai_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_8_cost @@ -432,7 +433,7 @@ watermills_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } is_enabled = { @@ -495,7 +496,7 @@ watermills_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_2_cost @@ -537,7 +538,7 @@ watermills_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_3_cost @@ -577,7 +578,7 @@ watermills_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_4_cost @@ -617,7 +618,7 @@ watermills_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_5_cost @@ -657,7 +658,7 @@ watermills_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_6_cost @@ -697,7 +698,7 @@ watermills_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_7_cost @@ -737,7 +738,7 @@ watermills_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_8_cost @@ -776,7 +777,7 @@ windmills_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } is_enabled = { @@ -843,7 +844,7 @@ windmills_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_2_cost @@ -885,7 +886,7 @@ windmills_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_3_cost @@ -923,7 +924,7 @@ windmills_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_4_cost @@ -961,7 +962,7 @@ windmills_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_5_cost @@ -999,7 +1000,7 @@ windmills_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_6_cost @@ -1037,7 +1038,7 @@ windmills_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_7_cost @@ -1075,7 +1076,7 @@ windmills_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_8_cost @@ -1125,7 +1126,8 @@ common_tradeport_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + # building_requirement_tribal = no + } @@ -1247,7 +1249,7 @@ common_tradeport_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + # building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -1316,11 +1318,11 @@ common_tradeport_03 = { } is_enabled = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct_showing_failures_only = { - building_requirement_civilized = yes + # building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -1385,7 +1387,7 @@ common_tradeport_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -1450,7 +1452,7 @@ common_tradeport_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -1515,7 +1517,7 @@ common_tradeport_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -1580,7 +1582,7 @@ common_tradeport_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -1645,7 +1647,7 @@ common_tradeport_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -1689,7 +1691,7 @@ pastures_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -1756,7 +1758,7 @@ pastures_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -1769,7 +1771,6 @@ pastures_02 = { character_culture_modifier = { parameter = pastures_building_bonuses light_cavalry_maintenance_mult = -0.02 - light_aerial_maintenance_mult = -0.02 } province_culture_modifier = { parameter = pastures_building_bonuses @@ -1812,7 +1813,7 @@ pastures_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -1865,7 +1866,7 @@ pastures_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -1921,7 +1922,7 @@ pastures_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -1978,7 +1979,7 @@ pastures_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -2036,7 +2037,7 @@ pastures_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -2094,7 +2095,7 @@ pastures_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -2147,7 +2148,7 @@ hunting_grounds_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -2213,7 +2214,7 @@ hunting_grounds_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -2266,7 +2267,7 @@ hunting_grounds_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -2315,7 +2316,7 @@ hunting_grounds_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -2364,7 +2365,7 @@ hunting_grounds_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -2418,7 +2419,7 @@ hunting_grounds_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -2472,7 +2473,7 @@ hunting_grounds_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -2530,7 +2531,7 @@ hunting_grounds_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -2582,7 +2583,7 @@ orchards_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -2633,7 +2634,7 @@ orchards_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -2681,7 +2682,7 @@ orchards_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -2727,7 +2728,7 @@ orchards_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -2773,7 +2774,7 @@ orchards_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -2820,7 +2821,7 @@ orchards_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -2868,7 +2869,7 @@ orchards_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -2919,7 +2920,7 @@ orchards_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -2964,7 +2965,7 @@ farm_estates_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -3021,7 +3022,7 @@ farm_estates_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -3066,7 +3067,7 @@ farm_estates_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -3111,7 +3112,7 @@ farm_estates_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -3156,7 +3157,7 @@ farm_estates_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -3202,7 +3203,7 @@ farm_estates_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -3249,7 +3250,7 @@ farm_estates_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -3297,7 +3298,7 @@ farm_estates_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -3338,7 +3339,7 @@ cereal_fields_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -3404,7 +3405,7 @@ cereal_fields_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -3451,7 +3452,7 @@ cereal_fields_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -3495,7 +3496,7 @@ cereal_fields_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -3540,7 +3541,7 @@ cereal_fields_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -3586,7 +3587,7 @@ cereal_fields_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -3633,7 +3634,7 @@ cereal_fields_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -3681,7 +3682,7 @@ cereal_fields_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -3723,7 +3724,7 @@ logging_camps_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -3778,7 +3779,7 @@ logging_camps_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -3830,7 +3831,7 @@ logging_camps_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -3883,7 +3884,7 @@ logging_camps_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -3937,7 +3938,7 @@ logging_camps_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -3992,7 +3993,7 @@ logging_camps_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -4047,7 +4048,7 @@ logging_camps_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -4102,7 +4103,7 @@ logging_camps_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -4151,7 +4152,7 @@ peat_quarries_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -4196,7 +4197,7 @@ peat_quarries_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -4248,7 +4249,7 @@ peat_quarries_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -4297,7 +4298,7 @@ peat_quarries_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -4347,7 +4348,7 @@ peat_quarries_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -4398,7 +4399,7 @@ peat_quarries_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -4450,7 +4451,7 @@ peat_quarries_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -4502,7 +4503,7 @@ peat_quarries_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -4548,7 +4549,7 @@ hill_farms_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -4604,7 +4605,7 @@ hill_farms_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -4656,7 +4657,7 @@ hill_farms_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -4708,7 +4709,7 @@ hill_farms_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -4760,7 +4761,7 @@ hill_farms_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -4813,7 +4814,7 @@ hill_farms_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -4867,7 +4868,7 @@ hill_farms_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -4921,7 +4922,7 @@ hill_farms_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -4969,7 +4970,7 @@ elephant_pens_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -5016,7 +5017,7 @@ elephant_pens_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -5067,7 +5068,7 @@ elephant_pens_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -5117,7 +5118,7 @@ elephant_pens_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -5167,7 +5168,7 @@ elephant_pens_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -5217,7 +5218,7 @@ elephant_pens_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -5267,7 +5268,7 @@ elephant_pens_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -5318,7 +5319,7 @@ elephant_pens_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -5364,7 +5365,7 @@ plantations_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -5438,7 +5439,7 @@ plantations_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -5488,7 +5489,7 @@ plantations_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -5535,7 +5536,7 @@ plantations_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -5582,7 +5583,7 @@ plantations_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -5633,7 +5634,7 @@ plantations_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -5684,7 +5685,7 @@ plantations_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -5735,7 +5736,7 @@ plantations_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -5779,7 +5780,7 @@ quarries_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -5835,7 +5836,7 @@ quarries_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -5888,7 +5889,7 @@ quarries_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -5940,7 +5941,7 @@ quarries_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -5993,7 +5994,7 @@ quarries_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -6046,7 +6047,7 @@ quarries_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -6100,7 +6101,7 @@ quarries_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -6157,7 +6158,7 @@ quarries_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -6197,3 +6198,384 @@ quarries_08 = { ai_economical_building_preference_modifier = yes } } + + +# Qanats + +qanats_01 = { + construction_time = standard_construction_time + + can_construct_potential = { + building_qanat_requirement_terrain = yes + building_requirement_castle_city_church = { LEVEL = 01 } + culture = { + has_cultural_parameter = unlocks_qanat_building + } + } + + is_enabled = { + is_county_capital = yes + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = normal_building_tier_1_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_1 + supply_limit = normal_building_supply_limit_tier_1 + } + + county_modifier = { + development_growth_factor = good_building_development_growth_factor_tier_1 + development_growth = good_building_development_growth_tier_1 + travel_danger = -1 + } + + next_building = qanats_02 + + type_icon = "icon_building_qanats.dds" + + ai_value = { + base = 20 + ai_tier_1_building_modifier = yes + ai_tier_1_economical_building_preference_modifier = yes + ai_general_building_modifier = yes + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} + +qanats_02 = { + construction_time = standard_construction_time + + can_construct_potential = { + building_qanat_requirement_terrain = yes + building_requirement_castle_city_church = { LEVEL = 01 } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = normal_building_tier_2_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_2 + supply_limit = normal_building_supply_limit_tier_2 + } + + + county_modifier = { + development_growth_factor = good_building_development_growth_factor_tier_2 + development_growth = good_building_development_growth_tier_2 + travel_danger = -2 + } + + next_building = qanats_03 + + type_icon = "icon_building_qanats.dds" + + ai_value = { + base = 9 + ai_general_building_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} + +qanats_03 = { + construction_time = standard_construction_time + + can_construct_potential = { + building_qanat_requirement_terrain = yes + building_requirement_castle_city_church = { LEVEL = 02 } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = normal_building_tier_3_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_3 + supply_limit = normal_building_supply_limit_tier_3 + build_speed = normal_building_build_speed_tier_3 + } + + + county_modifier = { + development_growth_factor = good_building_development_growth_factor_tier_3 + development_growth = good_building_development_growth_tier_3 + travel_danger = -3 + } + + next_building = qanats_04 + + type_icon = "icon_building_qanats.dds" + + ai_value = { + base = 8 + ai_general_building_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} + +qanats_04 = { + construction_time = standard_construction_time + + can_construct_potential = { + building_qanat_requirement_terrain = yes + building_requirement_castle_city_church = { LEVEL = 02 } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = normal_building_tier_4_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_4 + supply_limit = normal_building_supply_limit_tier_4 + build_speed = normal_building_build_speed_tier_4 + } + + + county_modifier = { + development_growth_factor = good_building_development_growth_factor_tier_4 + development_growth = good_building_development_growth_tier_4 + travel_danger = -4 + } + + next_building = qanats_05 + + type_icon = "icon_building_qanats.dds" + + ai_value = { + base = 7 + ai_general_building_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} + +qanats_05 = { + construction_time = standard_construction_time + + can_construct_potential = { + building_qanat_requirement_terrain = yes + building_requirement_castle_city_church = { LEVEL = 03 } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = normal_building_tier_5_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_5 + supply_limit = normal_building_supply_limit_tier_5 + build_speed = normal_building_build_speed_tier_5 + } + + + county_modifier = { + development_growth_factor = good_building_development_growth_factor_tier_5 + development_growth = good_building_development_growth_tier_5 + travel_danger = -5 + } + + effect_desc = unlocks_cereal_fields_and_orchards + + next_building = qanats_06 + + type_icon = "icon_building_qanats.dds" + + ai_value = { + base = 6 + ai_general_building_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} + +qanats_06 = { + construction_time = standard_construction_time + + can_construct_potential = { + building_qanat_requirement_terrain = yes + building_requirement_castle_city_church = { LEVEL = 03 } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = normal_building_tier_6_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_6 + supply_limit = normal_building_supply_limit_tier_6 + build_speed = normal_building_build_speed_tier_6 + } + + + county_modifier = { + development_growth_factor = good_building_development_growth_factor_tier_6 + development_growth = good_building_development_growth_tier_6 + travel_danger = -6 + } + + effect_desc = unlocks_cereal_fields_and_orchards + + next_building = qanats_07 + + type_icon = "icon_building_qanats.dds" + + ai_value = { + base = 5 + ai_general_building_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} + +qanats_07 = { + construction_time = standard_construction_time + + can_construct_potential = { + building_qanat_requirement_terrain = yes + building_requirement_castle_city_church = { LEVEL = 04 } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = normal_building_tier_7_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_7 + supply_limit = normal_building_supply_limit_tier_7 + build_speed = normal_building_build_speed_tier_7 + } + + character_modifier = { + negate_health_penalty_add = 0.1 + } + + county_modifier = { + development_growth_factor = good_building_development_growth_factor_tier_7 + development_growth = good_building_development_growth_tier_7 + travel_danger = -7 + } + + effect_desc = unlocks_cereal_fields_and_orchards + + next_building = qanats_08 + + type_icon = "icon_building_qanats.dds" + + ai_value = { + base = 4 + ai_general_building_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} + +qanats_08 = { + construction_time = standard_construction_time + + can_construct_potential = { + building_qanat_requirement_terrain = yes + building_requirement_castle_city_church = { LEVEL = 04 } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = normal_building_tier_8_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_8 + supply_limit = normal_building_supply_limit_tier_8 + build_speed = normal_building_build_speed_tier_8 + } + + character_modifier = { + negate_health_penalty_add = 0.2 + } + + county_modifier = { + development_growth_factor = good_building_development_growth_factor_tier_8 + development_growth = good_building_development_growth_tier_8 + travel_danger = -8 + } + + effect_desc = unlocks_cereal_fields_and_orchards + + + type_icon = "icon_building_qanats.dds" + + ai_value = { + base = 3 + ai_general_building_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} diff --git a/common/buildings/00_standard_fortification_buildings.txt b/common/buildings/00_standard_fortification_buildings.txt index f12d94e34e..45125417e2 100644 --- a/common/buildings/00_standard_fortification_buildings.txt +++ b/common/buildings/00_standard_fortification_buildings.txt @@ -18,7 +18,7 @@ ramparts_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -71,7 +71,7 @@ ramparts_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -123,7 +123,7 @@ ramparts_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -172,7 +172,7 @@ ramparts_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -224,7 +224,7 @@ ramparts_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -276,7 +276,7 @@ ramparts_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -328,7 +328,7 @@ ramparts_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -380,7 +380,7 @@ ramparts_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -426,7 +426,7 @@ curtain_walls_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -487,7 +487,7 @@ curtain_walls_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -543,7 +543,7 @@ curtain_walls_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -595,7 +595,7 @@ curtain_walls_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -647,7 +647,7 @@ curtain_walls_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -700,7 +700,7 @@ curtain_walls_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -754,7 +754,7 @@ curtain_walls_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -808,7 +808,7 @@ curtain_walls_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -857,7 +857,7 @@ watchtowers_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -922,7 +922,7 @@ watchtowers_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -982,7 +982,7 @@ watchtowers_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -1038,7 +1038,7 @@ watchtowers_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -1095,7 +1095,7 @@ watchtowers_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -1152,7 +1152,7 @@ watchtowers_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -1210,7 +1210,7 @@ watchtowers_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -1268,7 +1268,7 @@ watchtowers_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -1319,7 +1319,7 @@ hill_forts_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -1371,7 +1371,7 @@ hill_forts_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -1417,7 +1417,7 @@ hill_forts_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -1459,7 +1459,7 @@ hill_forts_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -1502,7 +1502,7 @@ hill_forts_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -1545,7 +1545,7 @@ hill_forts_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -1588,7 +1588,7 @@ hill_forts_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -1631,7 +1631,7 @@ hill_forts_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost diff --git a/common/buildings/00_standard_military_buildings.txt b/common/buildings/00_standard_military_buildings.txt index 0e9c555f95..206d664a91 100644 --- a/common/buildings/00_standard_military_buildings.txt +++ b/common/buildings/00_standard_military_buildings.txt @@ -35,7 +35,7 @@ wind_furnace_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -81,7 +81,7 @@ wind_furnace_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -122,7 +122,7 @@ wind_furnace_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -160,7 +160,7 @@ wind_furnace_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -198,7 +198,7 @@ wind_furnace_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -236,7 +236,7 @@ wind_furnace_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -274,7 +274,7 @@ wind_furnace_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -312,7 +312,7 @@ wind_furnace_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -346,7 +346,7 @@ workshops_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_1_cost @@ -398,7 +398,7 @@ workshops_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_2_cost @@ -440,7 +440,7 @@ workshops_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_3_cost @@ -482,7 +482,7 @@ workshops_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_4_cost @@ -524,7 +524,7 @@ workshops_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_5_cost @@ -567,7 +567,7 @@ workshops_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_6_cost @@ -610,7 +610,7 @@ workshops_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_7_cost @@ -653,7 +653,7 @@ workshops_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_8_cost @@ -822,7 +822,7 @@ horse_pastures_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -866,7 +866,7 @@ horse_pastures_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -910,7 +910,7 @@ horse_pastures_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -954,7 +954,7 @@ horse_pastures_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -998,7 +998,7 @@ horse_pastures_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -1042,7 +1042,7 @@ horse_pastures_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -1193,7 +1193,7 @@ hillside_grazing_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -1236,7 +1236,7 @@ hillside_grazing_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -1279,7 +1279,7 @@ hillside_grazing_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -1322,7 +1322,7 @@ hillside_grazing_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -1365,7 +1365,7 @@ hillside_grazing_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -1408,7 +1408,7 @@ hillside_grazing_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -1585,7 +1585,7 @@ warrior_lodges_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -1633,7 +1633,7 @@ warrior_lodges_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -1681,7 +1681,7 @@ warrior_lodges_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -1729,7 +1729,7 @@ warrior_lodges_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -1777,7 +1777,7 @@ warrior_lodges_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -1825,7 +1825,7 @@ warrior_lodges_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -1867,7 +1867,7 @@ military_camps_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -1991,7 +1991,7 @@ military_camps_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -2037,7 +2037,7 @@ military_camps_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -2082,7 +2082,7 @@ military_camps_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -2132,7 +2132,7 @@ military_camps_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -2186,7 +2186,7 @@ military_camps_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -2240,7 +2240,7 @@ military_camps_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -2294,7 +2294,7 @@ military_camps_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -2342,7 +2342,7 @@ regimental_grounds_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_1_cost @@ -2406,7 +2406,7 @@ regimental_grounds_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_2_cost @@ -2460,7 +2460,7 @@ regimental_grounds_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_3_cost @@ -2510,7 +2510,7 @@ regimental_grounds_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_4_cost @@ -2561,7 +2561,7 @@ regimental_grounds_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_5_cost @@ -2613,7 +2613,7 @@ regimental_grounds_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_6_cost @@ -2665,7 +2665,7 @@ regimental_grounds_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_7_cost @@ -2718,7 +2718,7 @@ regimental_grounds_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = expensive_building_tier_8_cost @@ -2762,7 +2762,7 @@ outposts_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_1_cost @@ -2868,7 +2868,7 @@ outposts_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_2_cost @@ -2931,7 +2931,7 @@ outposts_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_3_cost @@ -2990,7 +2990,7 @@ outposts_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_4_cost @@ -3049,7 +3049,7 @@ outposts_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_5_cost @@ -3109,7 +3109,7 @@ outposts_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_6_cost @@ -3169,7 +3169,7 @@ outposts_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_7_cost @@ -3229,7 +3229,7 @@ outposts_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = cheap_building_tier_8_cost @@ -3284,7 +3284,7 @@ barracks_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no #higher innovation req? } @@ -3351,7 +3351,7 @@ barracks_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -3397,7 +3397,7 @@ barracks_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -3442,7 +3442,7 @@ barracks_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -3490,7 +3490,7 @@ barracks_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -3540,7 +3540,7 @@ barracks_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -3590,7 +3590,7 @@ barracks_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -3640,7 +3640,7 @@ barracks_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -3683,7 +3683,7 @@ camel_farms_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -3750,7 +3750,7 @@ camel_farms_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -3799,7 +3799,7 @@ camel_farms_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -3849,7 +3849,7 @@ camel_farms_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -3899,7 +3899,7 @@ camel_farms_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -3949,7 +3949,7 @@ camel_farms_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -4000,7 +4000,7 @@ camel_farms_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -4051,7 +4051,7 @@ camel_farms_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -4099,7 +4099,7 @@ stables_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -4221,7 +4221,7 @@ stables_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -4270,7 +4270,7 @@ stables_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -4319,7 +4319,7 @@ stables_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -4368,7 +4368,7 @@ stables_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -4424,7 +4424,7 @@ stables_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -4480,7 +4480,7 @@ stables_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -4536,7 +4536,7 @@ stables_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -4592,7 +4592,7 @@ smiths_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -4719,7 +4719,7 @@ smiths_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -4767,7 +4767,7 @@ smiths_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -4812,7 +4812,7 @@ smiths_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -4853,7 +4853,7 @@ smiths_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -4894,7 +4894,7 @@ smiths_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -4935,7 +4935,7 @@ smiths_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -4976,7 +4976,7 @@ smiths_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost diff --git a/common/buildings/00_temple_buildings.txt b/common/buildings/00_temple_buildings.txt index c7eb2b8e92..9ad8d16af1 100644 --- a/common/buildings/00_temple_buildings.txt +++ b/common/buildings/00_temple_buildings.txt @@ -7,6 +7,7 @@ @illustration_northern_pagan = "gfx/interface/illustrations/holding_types/temple_northern_pagan.dds" @illustration_iberian_christian = "gfx/interface/illustrations/holding_types/fp2_temple_iberian_christian.dds" @illustration_iberian_islamic = "gfx/interface/illustrations/holding_types/fp2_temple_iberian_islamic.dds" +@illustration_iranian_zoroastrian = "gfx/interface/illustrations/holding_types/fp3_temple_iranian_zoroastrian.dds" temple_01 = { construction_time = slow_construction_time @@ -203,6 +204,28 @@ temple_01 = { graphical_cultures = { iberian_building_gfx } graphical_regions = { graphical_mediterranean } } + + # FP3 Zoroastrian + asset = { + type = pdxmesh + name = "building_mena_temple_islamic_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @illustration_islamic + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Temples/mosque_temple" soundparameter = { "Tier" = 0 } } + graphical_faiths = { "islamic_gfx" } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = entity + name = "fp3_building_persian_temple_01_a_01_entity" + requires_dlc_flag = legacy_of_persia + illustration = @illustration_iranian_zoroastrian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Temples/mosque_temple" soundparameter = { "Tier" = 0 } } ##todo_cd_polish fix + graphical_faiths = { "zoroastrian_gfx" } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } can_construct_potential = { barony_cannot_construct_holding = no @@ -215,7 +238,7 @@ temple_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no building_requirement_tribal_holding_in_county = yes } cost_gold = main_building_tier_1_cost @@ -614,8 +637,30 @@ temple_02 = { graphical_regions = { graphical_mediterranean } } + # FP3 Zoroastrian + asset = { + type = pdxmesh + name = "building_mena_temple_islamic_01_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @illustration_islamic + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Temples/mosque_temple" soundparameter = { "Tier" = 0 } } + graphical_faiths = { "islamic_gfx" } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = entity + name = "fp3_building_persian_temple_01_a_01_entity" + requires_dlc_flag = legacy_of_persia + illustration = @illustration_iranian_zoroastrian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Temples/mosque_temple" soundparameter = { "Tier" = 0 } } ##todo_cd_polish fix + graphical_faiths = { "zoroastrian_gfx" } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct = { culture = { @@ -940,9 +985,31 @@ temple_03 = { graphical_cultures = { iberian_building_gfx } graphical_regions = { graphical_mediterranean } } + + # FP3 Zoroastrian + asset = { + type = pdxmesh + name = "building_mena_temple_islamic_02_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @illustration_islamic + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Temples/mosque_temple" soundparameter = { "Tier" = 1 } } + graphical_faiths = { "islamic_gfx" } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = entity + name = "fp3_building_persian_temple_02_a_01_entity" + requires_dlc_flag = legacy_of_persia + illustration = @illustration_iranian_zoroastrian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Temples/mosque_temple" soundparameter = { "Tier" = 1 } } ##todo_cd_polish fix + graphical_faiths = { "zoroastrian_gfx" } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct = { culture = { @@ -1257,10 +1324,31 @@ temple_04 = { graphical_cultures = { iberian_building_gfx } graphical_regions = { graphical_mediterranean } } - + + # FP3 Zoroastrian + asset = { + type = pdxmesh + name = "building_mena_temple_islamic_02_mesh" + requires_dlc_flag = legacy_of_persia + illustration = @illustration_islamic + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Temples/mosque_temple" soundparameter = { "Tier" = 1 } } + graphical_faiths = { "islamic_gfx" } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = entity + name = "fp3_building_persian_temple_02_a_01_entity" + requires_dlc_flag = legacy_of_persia + illustration = @illustration_iranian_zoroastrian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/Temples/mosque_temple" soundparameter = { "Tier" = 1 } } ##todo_cd_polish fix + graphical_faiths = { "zoroastrian_gfx" } + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena } + } can_construct_potential = { - building_requirement_civilized = yes + building_requirement_tribal = no } can_construct = { culture = { @@ -1397,7 +1485,7 @@ monastic_schools_01 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_1_cost @@ -1447,7 +1535,7 @@ monastic_schools_02 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_2_cost @@ -1485,7 +1573,7 @@ monastic_schools_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_3_cost @@ -1523,7 +1611,7 @@ monastic_schools_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_4_cost @@ -1561,7 +1649,7 @@ monastic_schools_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_5_cost @@ -1599,7 +1687,7 @@ monastic_schools_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_6_cost @@ -1637,7 +1725,7 @@ monastic_schools_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_7_cost @@ -1675,7 +1763,7 @@ monastic_schools_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } cost_gold = normal_building_tier_8_cost @@ -1714,7 +1802,7 @@ megalith_01 = { } can_construct_showing_failures_only = { - #building_requirement_civilized = yes + #building_requirement_tribal = no } is_enabled = { @@ -1773,7 +1861,7 @@ megalith_02 = { } can_construct_showing_failures_only = { - #building_requirement_civilized = yes + #building_requirement_tribal = no } is_enabled = { @@ -1815,7 +1903,7 @@ megalith_03 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } is_enabled = { @@ -1857,7 +1945,7 @@ megalith_04 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } is_enabled = { @@ -1900,7 +1988,7 @@ megalith_05 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } is_enabled = { @@ -1944,7 +2032,7 @@ megalith_06 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } is_enabled = { @@ -1988,7 +2076,7 @@ megalith_07 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } is_enabled = { @@ -2032,7 +2120,7 @@ megalith_08 = { } can_construct_showing_failures_only = { - building_requirement_civilized = yes + building_requirement_tribal = no } is_enabled = { diff --git a/common/buildings/99_background_graphics_buildings.txt b/common/buildings/99_background_graphics_buildings.txt index b699332a00..1139dec628 100644 --- a/common/buildings/99_background_graphics_buildings.txt +++ b/common/buildings/99_background_graphics_buildings.txt @@ -107,6 +107,16 @@ walls_01 = { } } + asset = { + type = pdxmesh + requires_dlc_flag = legacy_of_persia + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena graphical_india graphical_steppe } + names = { + "fp3_building_persian_walls_01_a_01_mesh" + } + } + is_enabled = { OR = { # These buildings will trigger the visual "upgrade" to this wall asset @@ -185,6 +195,16 @@ walls_02 = { } } + asset = { + type = pdxmesh + requires_dlc_flag = legacy_of_persia + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena graphical_india } + names = { + "fp3_building_persian_walls_02_a_01_mesh" + } + } + is_enabled = { OR = { # These buildings will trigger the visual "upgrade" to this wall asset @@ -261,6 +281,16 @@ walls_03 = { } } + asset = { + type = pdxmesh + requires_dlc_flag = legacy_of_persia + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena graphical_india } + names = { + "fp3_building_persian_walls_03_a_01_mesh" + } + } + is_enabled = { scope:holder = { NOT = { government_has_flag = government_is_tribal } @@ -340,6 +370,16 @@ walls_04 = { } } + asset = { + type = pdxmesh + requires_dlc_flag = legacy_of_persia + graphical_cultures = { iranian_building_gfx } + graphical_regions = { graphical_mena graphical_india } + names = { + "fp3_building_persian_walls_04_a_01_mesh" + } + } + is_enabled = { scope:holder = { NOT = { government_has_flag = government_is_tribal } diff --git a/common/buildings/_buildings.info b/common/buildings/_buildings.info index 002934b73d..167f23fbef 100644 --- a/common/buildings/_buildings.info +++ b/common/buildings/_buildings.info @@ -149,4 +149,17 @@ name_of_the_building = { # If this is set to yes, the building will be used for figuring out which background asset (walls/no walls etc) should be shown is_graphical_background = no + + ### Brief: on_start/on_cancelled/on_complete + # Effects that happen when construction of the building + # starts/cancels/finishes. + # + # Supported scopes: + # root (Province) + # The province the construction took place in. + # character + The character that paid for the construction, if available + on_start = { ... } + on_cancelled = { ... } + on_complete = { ... } } diff --git a/common/trigger_localization/00_debug_triggers.txt b/common/trigger_localization/00_debug_triggers.txt index 7ea6a7104e..14aaed459a 100644 --- a/common/trigger_localization/00_debug_triggers.txt +++ b/common/trigger_localization/00_debug_triggers.txt @@ -314,6 +314,10 @@ witchcraft_scheme_blocked = { global = witchcraft_scheme_blocked_trigger } +crypto_religion_scheme_blocked = { + global = crypto_religion_scheme_blocked_trigger +} + has_game_rule = { global = has_game_rule_trigger } diff --git a/common/trigger_localization/00_landed_title_triggers.txt b/common/trigger_localization/00_landed_title_triggers.txt index 00ceb56929..46c2188ef8 100644 --- a/common/trigger_localization/00_landed_title_triggers.txt +++ b/common/trigger_localization/00_landed_title_triggers.txt @@ -131,6 +131,7 @@ is_titular = { title_held_years = { global = TITLE_HELD_YEARS + first = TITLE_HELD_YEARS third = TITLE_HELD_YEARS global_not = TITLE_NOT_HELD_YEARS } diff --git a/common/trigger_localization/01_decision_triggers.txt b/common/trigger_localization/01_decision_triggers.txt index 16fc748930..b43b670bef 100644 --- a/common/trigger_localization/01_decision_triggers.txt +++ b/common/trigger_localization/01_decision_triggers.txt @@ -260,3 +260,13 @@ at_least_10_jewish_counties_tt = { first = at_least_10_jewish_counties_tt first_not = at_least_10_jewish_counties_tt } + +lackluster_diet_hindrance_desc = { + first = lackluster_diet_hindrance_desc + first_not = lackluster_diet_hindrance_desc +} + +create_cadet_branch_decision_in_another_realm = { + first = I_NOT_CREATE_CADET_BRANCH_DECISION_IN_ANOTHER_REALM + first_not = I_CREATE_CADET_BRANCH_DECISION_IN_ANOTHER_REALM +} diff --git a/common/vassal_contracts/_vassal_contracts.info b/common/vassal_contracts/_vassal_contracts.info index 314e74fa32..1cee61ce67 100644 --- a/common/vassal_contracts/_vassal_contracts.info +++ b/common/vassal_contracts/_vassal_contracts.info @@ -9,13 +9,20 @@ vassal_contract = { # Or: Modifiable contract with multiple levels: obligation_levels = { + # Scopes available: + # scope:liege the liege in the contract + # scope:vassal the vassal in the contract + # scope:opinion_of_liege set if uses_opinion_of_liege = yes + # scope:tax_slot the slot they are in/are being considered to be placed in + # scope:tax_collector the collector for the above/the potential new collector + vassal_obligation_low = { # choose a key for the level, it will be used for localization - levies = 0.5 # % of levies (0..1), default 0; can also use script math (scope:liege and scope:vassal are defined, scope:opinion_of_liege is defined if uses_opinion_of_liege = yes) - tax = 0.2 # % of gold income (0..1), default 0; can also use script math (scope:liege and scope:vassal are defined, scope:opinion_of_liege is defined if uses_opinion_of_liege = yes) + levies = 0.5 # % of levies (0..1), default 0; can also use script math + tax = 0.2 # % of gold income (0..1), default 0; can also use script math min_levies = 0.1 # optional min cap on tax, can alsu use script math as levies and tax min_tax = 0.0 # optional min cap on levies, can alsu use script math as levies and tax - contribution_desc = { ... } # optional dynamic description used for the breakdown of the tax & levies contribution (scope:liege and scope:vassal are defined) + contribution_desc = { ... } # optional dynamic description used for the breakdown of the tax & levies contribution tax_contribution_postfix = "..." # Optional postfix added to the tax contribution breakdown levies_contribution_postfix = "..." # Optional postfix added to the levies contribution breakdown @@ -38,7 +45,7 @@ vassal_contract = { liege_modifier = { } # Modifiers applied to the liege in the contract vassal_modifier = { } # Modifiers applied to the vassal in the contract - is_valid = { } # Is this obligation level valid for a vassal, scope:liege and scope:vassal are present, validity is checked every month for AI only contracts, daily for those involving the player + is_valid = { } # Is this obligation level valid for a vassal # Multiplier against the total tax/levies in a contract, be careful you do not get weird stacking beavhour if multiple are on at once tax_factor =