diff --git a/common/bookmarks/bookmarks/00_bookmarks.txt b/common/bookmarks/bookmarks/00_bookmarks.txt index 6b7027ea..abfa14f7 100644 --- a/common/bookmarks/bookmarks/00_bookmarks.txt +++ b/common/bookmarks/bookmarks/00_bookmarks.txt @@ -45,7 +45,7 @@ type = male birth = 2524.6.18 title = k_venice - government = administrative_government + government = urbanrepublic_government culture = venetian religion = "roman_catholic" difficulty = "BOOKMARK_CHARACTER_DIFFICULTY_MEDIUM" @@ -105,7 +105,7 @@ type = male birth = 2513.1.1 title = k_ireland - government = feudal_government + government = peasantrepublic_government culture = high_irish religion = "celtic" difficulty = "BOOKMARK_CHARACTER_DIFFICULTY_HARD" diff --git a/common/buildings/00_castle_buildings.txt b/common/buildings/00_castle_buildings.txt index c5d61c4f..0092255f 100644 --- a/common/buildings/00_castle_buildings.txt +++ b/common/buildings/00_castle_buildings.txt @@ -435,6 +435,10 @@ castle_01 = { is_coastal = yes defender_holding_advantage = 2 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -1 + } flag = castle @@ -923,6 +927,10 @@ castle_02 = { is_coastal = yes defender_holding_advantage = 3 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -2 + } character_modifier = { men_at_arms_cap = 1 @@ -1384,6 +1392,10 @@ castle_03 = { is_coastal = yes defender_holding_advantage = 4 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -3 + } character_modifier = { men_at_arms_cap = 1 @@ -1835,6 +1847,10 @@ castle_04 = { is_coastal = yes defender_holding_advantage = 5 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -4 + } character_modifier = { men_at_arms_cap = 1 diff --git a/common/buildings/00_city_buildings.txt b/common/buildings/00_city_buildings.txt index a99e1c98..0e4a6b1a 100644 --- a/common/buildings/00_city_buildings.txt +++ b/common/buildings/00_city_buildings.txt @@ -450,6 +450,10 @@ city_01 = { county_holder_dynasty_perk = fp2_urbanism_legacy_1 # check if the dynasty of the county holder has a specific perk development_growth_factor = fp2_urbanism_legacy_1_bonus_value } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -1 + } character_modifier = { men_at_arms_cap = 1 @@ -973,6 +977,10 @@ city_02 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -2 + } flag = city next_building = city_03 @@ -1459,6 +1467,10 @@ city_03 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -3 + } flag = city on_complete = { @@ -1933,6 +1945,10 @@ city_04 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -4 + } flag = city on_complete = { @@ -2001,7 +2017,18 @@ guild_halls_01 = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes } - + + + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.1 + } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.2 + } + + next_building = guild_halls_02 type_icon = "icon_building_guild_halls.dds" @@ -2050,7 +2077,15 @@ guild_halls_02 = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes } - + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.2 + } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.4 + } + next_building = guild_halls_03 ai_value = { base = 9 @@ -2104,6 +2139,15 @@ guild_halls_03 = { county_modifier = { development_growth_factor = 0.15 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.6 + } + on_complete = { #Mandala Creator Aspect @@ -2164,6 +2208,15 @@ guild_halls_04 = { county_modifier = { development_growth_factor = 0.2 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.8 + } + on_complete = { #Mandala Creator Aspect @@ -2223,6 +2276,15 @@ guild_halls_05 = { county_modifier = { development_growth_factor = 0.25 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 1 + } + on_complete = { #Mandala Creator Aspect @@ -2282,6 +2344,15 @@ guild_halls_06 = { county_modifier = { development_growth_factor = 0.3 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 1.2 + } + on_complete = { #Mandala Creator Aspect @@ -2341,6 +2412,15 @@ guild_halls_07 = { county_modifier = { development_growth_factor = 0.35 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 1.4 + } + on_complete = { #Mandala Creator Aspect @@ -2400,6 +2480,15 @@ guild_halls_08 = { county_modifier = { development_growth_factor = 0.4 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 1.6 + } + on_complete = { #Mandala Creator Aspect diff --git a/common/buildings/00_monotown_buildings.txt b/common/buildings/00_monotown_buildings.txt new file mode 100644 index 00000000..65dcd204 --- /dev/null +++ b/common/buildings/00_monotown_buildings.txt @@ -0,0 +1,1940 @@ +@holding_illustration_western = "gfx/interface/illustrations/holding_types/city_western.dds" +@holding_illustration_india = "gfx/interface/illustrations/holding_types/city_india.dds" +@holding_illustration_seasia = "gfx/interface/illustrations/holding_types/tgp_tgp_city_se_asia.dds" +@holding_illustration_china = "gfx/interface/illustrations/holding_types/tgp_city_china.dds" +@holding_illustration_japan = "gfx/interface/illustrations/holding_types/tgp_city_japan.dds" +@holding_illustration_mediterranean = "gfx/interface/illustrations/holding_types/city_mediterranean.dds" +@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" +@holding_illustration_byzantine = "gfx/interface/illustrations/holding_types/ep3_city_byzantine.dds" + +monotown_01 = { + construction_time = slow_construction_time + effect_desc = city_1_effect_desc + + #Meshes (Indented for readability) + asset = { + type = pdxmesh + names = { + "western_city_01_a_mesh" + "western_city_01_b_mesh" + "western_city_01_c_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + } + asset = { + type = pdxmesh + names = { + "western_city_01_mena_a_mesh" + "western_city_01_mena_b_mesh" + "western_city_01_mena_c_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "western_city_01_indian_a_mesh" + "western_city_01_indian_b_mesh" + "western_city_01_indian_c_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "western_city_01_mediterranean_a_mesh" + "western_city_01_mediterranean_b_mesh" + "western_city_01_mediterranean_c_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_mena_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_indian_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mediterranean_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_india_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mena_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mediterranean_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mena_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_indian_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + ### FP1 Norse ### + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_a_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" } + graphical_cultures = { norse_building_gfx } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_mena_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_mediterranean_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_indian_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_india } + } + + ### FP2 Iberian ### + asset = { + type = pdxmesh + name = "fp2_building_iberian_city_01_mesh" + requires_dlc_flag = the_fate_of_iberia + illustration = @holding_illustration_iberian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/iberian_city" soundparameter = { "Tier" = 0 } } + 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 } + } + + ### EP3 Byzantine ### + asset = { + type = pdxmesh + name = "ep3_byzantine_city_01_mesh" + requires_dlc_flag = roads_to_power + illustration = @holding_illustration_byzantine + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { byzantine_building_gfx caucasian_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + #Steppe fallbacks + #In steppe + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_steppe } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_siberia } + } + + #Elsewhere + asset = { + type = pdxmesh + names = { + "western_city_01_a_mesh" + "western_city_01_b_mesh" + "western_city_01_c_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_western } + graphical_cultures = { steppe_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_mediterranean } + } + asset = { + type = pdxmesh + name = "tgp_building_chinese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_china + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/chinese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_east_asia } + } + # TGP China + asset = { + type = pdxmesh + name = "tgp_building_chinese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_china + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/chinese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { chinese_building_gfx } + graphical_regions = { graphical_east_asia graphical_india } + } + # TGP Southeast Asia + asset = { + type = pdxmesh + name = "tgp_building_se_asia_city_01_a_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_seasia + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/sea_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { southeast_asian_building_gfx } + graphical_regions = { graphical_east_asia graphical_india } + } + # TGP Japan + asset = { + type = pdxmesh + name = "tgp_building_japanese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_japan + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/japanese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { japanese_building_gfx } + graphical_regions = { graphical_east_asia } + } + + can_construct_potential = { + barony_cannot_construct_holding = no + } + + can_construct = { + culture = { + has_innovation = innovation_city_planning + } + government has_flag = government_is_urepublic + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + building_requirement_tribal_holding_in_county = yes + building_requirement_nomad = no + building_requirement_nomad_holding_in_county = yes + building_requirement_herder = no + building_requirement_herder_holding_in_county = yes + } + cost_gold = main_building_tier_1_cost + + levy = poor_building_levy_tier_1 + max_garrison = normal_building_max_garrison_tier_1 + garrison_reinforcement_factor = building_garrison_reinforcement_factor_tier_1 + province_modifier = { + monthly_income = good_building_tax_tier_5 + travel_danger = -10 + monthly_barter_goods = 1 + } + county_modifier = { + development_growth_factor = 0.05 + } + + province_terrain_modifier = { + parameter = maritime_mercantilism_coastal_holdings + is_coastal = yes + tax_mult = maritime_mercantilism_coastal_holdings_value + } + + character_modifier = { + men_at_arms_cap = 1 + } + + province_terrain_modifier = { + parameter = coastal_holding_bonuses + is_coastal = yes + build_speed = -0.1 + } + + county_dynasty_modifier = { + county_holder_dynasty_perk = fp2_urbanism_legacy_1 # check if the dynasty of the county holder has a specific perk + development_growth_factor = fp2_urbanism_legacy_1_bonus_value + } + character_modifier = { + men_at_arms_cap = 1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -1 + } + + flag = city + next_building = monotown_02 + + type_icon = "icon_building_blacksmiths.dds" + + on_complete = { + county.holder = { + if = { + limit = { + any_vassal = { + vassal_stance = parochial + } + save_temporary_scope_as = holder_scope + } + custom_tooltip = parochial_vassal_approves_holding_construction + hidden_effect = { + every_vassal = { + vassal_stance = parochial + add_opinion = { + target = prev + modifier = parochial_approves_holding_construction_opinion + } + } + } + } + } + #Mandala Creator Aspect + creator_mandala_built_regular_holding_piety_effect = yes + + # Building Oath + hidden_effect = { + if = { + limit = { + county.holder = { + has_character_modifier = oath_of_buildings + } + } + county.holder = { save_scope_as = holder } + add_random_economic_building_effect = yes + add_random_military_building_effect = yes + add_random_fortification_building_effect = yes + } + } + } + + ai_value = { + base = 0 + modifier = { + add = 100 + scope:holder = { + domain_limit_available < 1 + } + } + modifier = { + factor = 0 + scope:holder = { + government_has_flag = government_is_theocracy + } + } + modifier = { + add = 50 + county = { + NOT = { + any_county_province = { + has_building_or_higher = monotown_01 + } + } + } + } + modifier = { + factor = 5 + scope:holder.culture = { has_cultural_parameter = ai_more_likely_to_city } + } + } +} + +monotown_02 = { + construction_time = slow_construction_time + + + #Meshes (Indented for readability) + asset = { + type = pdxmesh + names = { + "western_city_01_a_mesh" + "western_city_01_b_mesh" + "western_city_01_c_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + } + asset = { + type = pdxmesh + names = { + "western_city_01_mena_a_mesh" + "western_city_01_mena_b_mesh" + "western_city_01_mena_c_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "western_city_01_indian_a_mesh" + "western_city_01_indian_b_mesh" + "western_city_01_indian_c_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "western_city_01_mediterranean_a_mesh" + "western_city_01_mediterranean_b_mesh" + "western_city_01_mediterranean_c_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_mena_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_indian_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mediterranean_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_india_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mena_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mediterranean_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mena_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_indian_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + ### FP1 Norse ### + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_a_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" } + graphical_cultures = { norse_building_gfx } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_mena_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_mediterranean_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_indian_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_india } + } + + ### FP2 Iberian ### + asset = { + type = pdxmesh + name = "fp2_building_iberian_city_01_mesh" + requires_dlc_flag = the_fate_of_iberia + illustration = @holding_illustration_iberian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/iberian_city" soundparameter = { "Tier" = 0 } } + 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 } + } + + ### EP3 Byzantine ### + asset = { + type = pdxmesh + name = "ep3_byzantine_city_01_mesh" + requires_dlc_flag = roads_to_power + illustration = @holding_illustration_byzantine + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { byzantine_building_gfx caucasian_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + #Steppe fallbacks + #In steppe + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_steppe } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_siberia } + } + + #Elsewhere + asset = { + type = pdxmesh + names = { + "western_city_01_a_mesh" + "western_city_01_b_mesh" + "western_city_01_c_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_western } + graphical_cultures = { steppe_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_mediterranean } + } + asset = { + type = pdxmesh + name = "tgp_building_chinese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_china + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/chinese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_east_asia } + } + # TGP China + asset = { + type = pdxmesh + name = "tgp_building_chinese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_china + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/chinese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { chinese_building_gfx } + graphical_regions = { graphical_east_asia graphical_india } + } + # TGP Southeast Asia + asset = { + type = pdxmesh + name = "tgp_building_se_asia_city_01_a_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_seasia + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/sea_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { southeast_asian_building_gfx } + graphical_regions = { graphical_east_asia graphical_india } + } + # TGP Japan + asset = { + type = pdxmesh + name = "tgp_building_japanese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_japan + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/japanese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { japanese_building_gfx } + graphical_regions = { graphical_east_asia } + } + + can_construct_potential = { + building_requirement_tribal = no + } + can_construct = { + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_cities + } + } + } + culture = { + has_innovation = innovation_manorialism + } + } + trigger_else = { + culture = { + has_cultural_parameter = next_level_cities + } + } + government has_flag = government_is_urepublic + } + cost_gold = main_building_tier_2_cost + + levy = poor_building_levy_tier_1 + max_garrison = normal_building_max_garrison_tier_1 + garrison_reinforcement_factor = building_garrison_reinforcement_factor_tier_1 + province_modifier = { + monthly_income = good_building_tax_tier_6 + travel_danger = -12 + monthly_barter_goods = 2 + } + + province_terrain_modifier = { + parameter = maritime_mercantilism_coastal_holdings + is_coastal = yes + tax_mult = maritime_mercantilism_coastal_holdings_value + } + + county_modifier = { + development_growth_factor = 0.1 + } + + province_terrain_modifier = { + parameter = coastal_holding_bonuses + is_coastal = yes + build_speed = -0.1 + } + + county_dynasty_modifier = { + county_holder_dynasty_perk = fp2_urbanism_legacy_1 # check if the dynasty of the county holder has a specific perk + development_growth_factor = fp2_urbanism_legacy_1_bonus_value + } + + character_modifier = { + men_at_arms_cap = 1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -2 + } + flag = city + next_building = monotown_03 + + on_complete = { + barony.holder = { + if = { + limit = { + any_vassal = { + vassal_stance = parochial + } + save_temporary_scope_as = holder_scope + } + custom_tooltip = parochial_vassal_approves_holding_upgrade + hidden_effect = { + every_vassal = { + vassal_stance = parochial + add_opinion = { + target = prev + modifier = parochial_approves_holding_upgrade_opinion + } + } + } + } + } + #Mandala Creator Aspect + creator_mandala_upgraded_regular_holding_piety_effect = yes + } + ai_value = { + base = 6 + modifier = { + add = 1 + scope:holder.culture = { has_cultural_parameter = ai_more_likely_to_city } + } + modifier = { + factor = 2 + scope:holder.capital_province = this + } + modifier = { + factor = 0.1 + free_building_slots >= 1 + } + modifier = { + factor = 0.3 + years_from_game_start <= 0.01 + } + } +} + +monotown_03 = { + construction_time = slow_construction_time + effect_desc = city_2_effect_desc + + #Meshes (Indented for readability) + asset = { + type = pdxmesh + names = { + "western_city_01_a_mesh" + "western_city_01_b_mesh" + "western_city_01_c_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + } + asset = { + type = pdxmesh + names = { + "western_city_01_mena_a_mesh" + "western_city_01_mena_b_mesh" + "western_city_01_mena_c_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "western_city_01_indian_a_mesh" + "western_city_01_indian_b_mesh" + "western_city_01_indian_c_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "western_city_01_mediterranean_a_mesh" + "western_city_01_mediterranean_b_mesh" + "western_city_01_mediterranean_c_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_mena_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_indian_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mediterranean_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_india_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mena_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mediterranean_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mena_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_indian_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + ### FP1 Norse ### + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_a_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" } + graphical_cultures = { norse_building_gfx } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_mena_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_mediterranean_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_indian_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_india } + } + + ### FP2 Iberian ### + asset = { + type = pdxmesh + name = "fp2_building_iberian_city_01_mesh" + requires_dlc_flag = the_fate_of_iberia + illustration = @holding_illustration_iberian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/iberian_city" soundparameter = { "Tier" = 0 } } + 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 } + } + + ### EP3 Byzantine ### + asset = { + type = pdxmesh + name = "ep3_byzantine_city_01_mesh" + requires_dlc_flag = roads_to_power + illustration = @holding_illustration_byzantine + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { byzantine_building_gfx caucasian_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + #Steppe fallbacks + #In steppe + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_steppe } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_siberia } + } + + #Elsewhere + asset = { + type = pdxmesh + names = { + "western_city_01_a_mesh" + "western_city_01_b_mesh" + "western_city_01_c_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_western } + graphical_cultures = { steppe_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_mediterranean } + } + asset = { + type = pdxmesh + name = "tgp_building_chinese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_china + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/chinese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_east_asia } + } + # TGP China + asset = { + type = pdxmesh + name = "tgp_building_chinese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_china + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/chinese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { chinese_building_gfx } + graphical_regions = { graphical_east_asia graphical_india } + } + # TGP Southeast Asia + asset = { + type = pdxmesh + name = "tgp_building_se_asia_city_01_a_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_seasia + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/sea_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { southeast_asian_building_gfx } + graphical_regions = { graphical_east_asia graphical_india } + } + # TGP Japan + asset = { + type = pdxmesh + name = "tgp_building_japanese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_japan + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/japanese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { japanese_building_gfx } + graphical_regions = { graphical_east_asia } + } + + can_construct_potential = { + building_requirement_tribal = no + } + can_construct = { + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_cities + } + } + } + culture = { + has_innovation = innovation_windmills + } + } + trigger_else = { + culture = { + has_cultural_parameter = next_level_cities + } + culture = { + has_innovation = innovation_manorialism + } + } + government has_flag = government_is_urepublic + } + cost_gold = main_building_tier_3_cost + next_building = monotown_04 + + levy = poor_building_levy_tier_1 + max_garrison = normal_building_max_garrison_tier_1 + garrison_reinforcement_factor = building_garrison_reinforcement_factor_tier_1 + province_modifier = { + monthly_income = good_building_tax_tier_7 + travel_danger = -14 + monthly_barter_goods = 3 + } + + + province_terrain_modifier = { + parameter = maritime_mercantilism_coastal_holdings + is_coastal = yes + tax_mult = maritime_mercantilism_coastal_holdings_value + } + + county_modifier = { + development_growth_factor = 0.15 + } + + county_culture_modifier = { + parameter = city_buildings_less_control + monthly_county_control_growth_factor = -0.25 + } + + province_terrain_modifier = { + parameter = coastal_holding_bonuses + is_coastal = yes + build_speed = -0.1 + } + + + county_dynasty_modifier = { + county_holder_dynasty_perk = fp2_urbanism_legacy_1 # check if the dynasty of the county holder has a specific perk + development_growth_factor = fp2_urbanism_legacy_1_bonus_value + } + + character_modifier = { + men_at_arms_cap = 1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -3 + } + flag = city + + on_complete = { + barony.holder = { + if = { + limit = { + any_vassal = { + vassal_stance = parochial + } + save_temporary_scope_as = holder_scope + } + custom_tooltip = parochial_vassal_approves_holding_upgrade + hidden_effect = { + every_vassal = { + vassal_stance = parochial + add_opinion = { + target = prev + modifier = parochial_approves_holding_upgrade_opinion + } + } + } + } + } + #Mandala Creator Aspect + creator_mandala_upgraded_regular_holding_piety_effect = yes + } + ai_value = { + base = 5 + modifier = { + add = 1 + scope:holder.culture = { has_cultural_parameter = ai_more_likely_to_city } + } + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} + +monotown_04 = { + construction_time = slow_construction_time + + #Meshes (Indented for readability) + + #Meshes (Indented for readability) + asset = { + type = pdxmesh + names = { + "western_city_01_a_mesh" + "western_city_01_b_mesh" + "western_city_01_c_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + } + asset = { + type = pdxmesh + names = { + "western_city_01_mena_a_mesh" + "western_city_01_mena_b_mesh" + "western_city_01_mena_c_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "western_city_01_indian_a_mesh" + "western_city_01_indian_b_mesh" + "western_city_01_indian_c_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "western_city_01_mediterranean_a_mesh" + "western_city_01_mediterranean_b_mesh" + "western_city_01_mediterranean_c_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_mena_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_indian_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mediterranean_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mena_building_gfx arabic_group_building_gfx berber_group_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_india_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mena_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mediterranean_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { indian_building_gfx tibetan_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_western_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mena_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_indian_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { mediterranean_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + ### FP1 Norse ### + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_a_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" } + graphical_cultures = { norse_building_gfx } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_mena_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_mena } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_mediterranean_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + asset = { + type = pdxmesh + names = { + "fp1_building_norse_city_01_indian_mesh" + } + requires_dlc_flag = the_northern_lords + illustration = @holding_illustration_norse + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/nordic_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { norse_building_gfx } + graphical_regions = { graphical_india } + } + + ### FP2 Iberian ### + asset = { + type = pdxmesh + name = "fp2_building_iberian_city_01_mesh" + requires_dlc_flag = the_fate_of_iberia + illustration = @holding_illustration_iberian + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/iberian_city" soundparameter = { "Tier" = 0 } } + 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 } + } + + ### EP3 Byzantine ### + asset = { + type = pdxmesh + name = "ep3_byzantine_city_01_mesh" + requires_dlc_flag = roads_to_power + illustration = @holding_illustration_byzantine + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { byzantine_building_gfx caucasian_building_gfx } + graphical_regions = { graphical_mediterranean } + } + + #Steppe fallbacks + #In steppe + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_steppe } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_siberia } + } + + #Elsewhere + asset = { + type = pdxmesh + names = { + "western_city_01_a_mesh" + "western_city_01_b_mesh" + "western_city_01_c_mesh" + } + illustration = @holding_illustration_western + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/western_city" soundparameter = { "Tier" = 0 } } + graphical_regions = { graphical_western } + graphical_cultures = { steppe_building_gfx } + } + asset = { + type = pdxmesh + names = { + "building_mena_city_01_mesh" + } + illustration = @holding_illustration_mena + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mena_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_mena } + } + asset = { + type = pdxmesh + names = { + "building_india_city_01_mesh" + } + illustration = @holding_illustration_india + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/indian_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_india } + } + asset = { + type = pdxmesh + names = { + "building_mediterranean_city_01_mesh" + } + illustration = @holding_illustration_mediterranean + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/mediterranean_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_mediterranean } + } + asset = { + type = pdxmesh + name = "tgp_building_chinese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_china + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/chinese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { steppe_building_gfx } + graphical_regions = { graphical_east_asia } + } + # TGP China + asset = { + type = pdxmesh + name = "tgp_building_chinese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_china + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/chinese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { chinese_building_gfx } + graphical_regions = { graphical_east_asia graphical_india } + } + # TGP Southeast Asia + asset = { + type = pdxmesh + name = "tgp_building_se_asia_city_01_a_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_seasia + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/sea_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { southeast_asian_building_gfx } + graphical_regions = { graphical_east_asia graphical_india } + } + # TGP Japan + asset = { + type = pdxmesh + name = "tgp_building_japanese_city_01_mesh" + requires_dlc_flag = all_under_heaven + illustration = @holding_illustration_japan + soundeffect = { soundeffect = "event:/SFX/Ambience/3DMapEmitters/Holdings/City/japanese_city" soundparameter = { "Tier" = 0 } } + graphical_cultures = { japanese_building_gfx } + graphical_regions = { graphical_east_asia } + } + + can_construct_potential = { + building_requirement_tribal = no + } + can_construct = { + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_cities + } + } + } + culture = { + has_innovation = innovation_cranes + } + } + trigger_else = { + culture = { + has_cultural_parameter = next_level_cities + } + culture = { + has_innovation = innovation_windmills + } + } + government has_flag = government_is_urepublic + + } + cost_gold = main_building_tier_4_cost + + levy = poor_building_levy_tier_1 + max_garrison = normal_building_max_garrison_tier_1 + garrison_reinforcement_factor = building_garrison_reinforcement_factor_tier_1 + province_modifier = { + monthly_income = good_building_tax_tier_8 + travel_danger = -16 + monthly_barter_goods = 4 + } + + province_terrain_modifier = { + parameter = maritime_mercantilism_coastal_holdings + is_coastal = yes + tax_mult = maritime_mercantilism_coastal_holdings_value + } + + county_modifier = { + development_growth_factor = 0.2 + } + + province_terrain_modifier = { + parameter = coastal_holding_bonuses + is_coastal = yes + build_speed = -0.1 + } + + county_dynasty_modifier = { + county_holder_dynasty_perk = fp2_urbanism_legacy_1 # check if the dynasty of the county holder has a specific perk + development_growth_factor = fp2_urbanism_legacy_1_bonus_value + } + + character_modifier = { + men_at_arms_cap = 1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -4 + } + flag = city + + on_complete = { + barony.holder = { + if = { + limit = { + any_vassal = { + vassal_stance = parochial + } + save_temporary_scope_as = holder_scope + } + custom_tooltip = parochial_vassal_approves_holding_upgrade + hidden_effect = { + every_vassal = { + vassal_stance = parochial + add_opinion = { + target = prev + modifier = parochial_approves_holding_upgrade_opinion + } + } + } + } + } + #Mandala Creator Aspect + creator_mandala_upgraded_regular_holding_piety_effect = yes + } + ai_value = { + base = 4 + modifier = { + add = 1 + scope:holder.culture = { has_cultural_parameter = ai_more_likely_to_city } + } + modifier = { + factor = 2 + scope:holder.capital_province = this + } + } +} diff --git a/common/buildings/00_special_buildings.txt b/common/buildings/00_special_buildings.txt index b399e300..29152c29 100644 --- a/common/buildings/00_special_buildings.txt +++ b/common/buildings/00_special_buildings.txt @@ -1330,304 +1330,6 @@ holy_site_cologne_cathedral_01 = { flag = travel_point_of_interest_religious } -########## -# Canterbury Cathedral -########## - -holy_site_canterbury_cathedral_01 = { - effect_desc = { - triggered_desc = { - trigger = { has_dlc_feature = legends_of_the_dead } - desc = building_funeral_effect_desc - } - } - construction_time = very_slow_construction_time - - asset = { - type = pdxmesh - name = "ep2_building_special_canterbury_01_mesh" - } - - type_icon = "icon_structure_canterbury_cathedral.dds" - - can_construct_potential = { - building_requirement_tribal = no - } - - can_construct = { - OR = { - scope:holder = { - OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } - } - custom_description = { - text = holy_site_building_trigger - barony = { - is_holy_site_of = scope:holder.faith - } - } - } - scope:holder = { - culture = { - has_innovation = innovation_crop_rotation - } - } - } - - is_enabled = { - custom_description = { - text = holy_site_christian_or_holy_site_trigger - OR = { - scope:holder = { - OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } - } - custom_description = { - text = holy_site_building_trigger - barony = { - is_holy_site_of = scope:holder.faith - } - } - } - } - } - - show_disabled = yes - - cost_gold = 1000 - - character_modifier = { - monthly_piety = 0.25 - monthly_dynasty_prestige_mult = 0.05 - monthly_county_control_growth_factor = 0.05 - monthly_piety_gain_per_happy_powerful_vassal_add = 0.1 - } - - county_modifier = { - tax_mult = 0.2 - development_growth_factor = 0.1 - development_growth = 0.1 - } - - province_modifier = { - monthly_income = 3 - } - - on_complete = { - #Regular Mandala Boon - mandala_built_piety_duchy_building_t3_effect = yes - } - - next_building = holy_site_canterbury_cathedral_02 - - ai_value = { - base = 100 - ai_pious_building_preference_modifier = yes - modifier = { # Fill all building slots before going for special buildings - factor = 0 - free_building_slots > 0 - } - } - - type = special - - flag = travel_point_of_interest_religious -} - -holy_site_canterbury_cathedral_02 = { - effect_desc = { - triggered_desc = { - trigger = { has_dlc_feature = legends_of_the_dead } - desc = building_funeral_effect_desc - } - } - construction_time = very_slow_construction_time - - asset = { - type = pdxmesh - name = "ep2_building_special_canterbury_02_mesh" - } - - type_icon = "icon_structure_canterbury_cathedral.dds" - - can_construct_potential = { - building_requirement_tribal = no - } - - can_construct = { - OR = { - scope:holder = { - OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } - } - custom_description = { - text = holy_site_building_trigger - barony = { - is_holy_site_of = scope:holder.faith - } - } - } - scope:holder = { - culture = { - has_innovation = innovation_crop_rotation - } - } - } - - is_enabled = { - custom_description = { - text = holy_site_christian_or_holy_site_trigger - OR = { - scope:holder = { - OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } - } - custom_description = { - text = holy_site_building_trigger - barony = { - is_holy_site_of = scope:holder.faith - } - } - } - } - } - - show_disabled = yes - - cost_gold = 1000 - - character_modifier = { - monthly_piety = 0.5 - monthly_dynasty_prestige_mult = 0.05 - monthly_county_control_growth_factor = 0.1 - monthly_piety_gain_per_happy_powerful_vassal_add = 0.2 - } - - county_modifier = { - tax_mult = 0.2 - development_growth_factor = 0.2 - development_growth = 0.2 - } - - province_modifier = { - monthly_income = 5 - } - - on_complete = { - #Regular Mandala Boon - mandala_built_piety_duchy_building_t3_effect = yes - } - - next_building = holy_site_canterbury_cathedral_03 - - ai_value = { - base = 100 - ai_pious_building_preference_modifier = yes - modifier = { # Fill all building slots before going for special buildings - factor = 0 - free_building_slots > 0 - } - } - - type = special - - flag = travel_point_of_interest_religious -} - -holy_site_canterbury_cathedral_03 = { - effect_desc = { - triggered_desc = { - trigger = { has_dlc_feature = legends_of_the_dead } - desc = building_funeral_effect_desc - } - } - construction_time = very_slow_construction_time - - asset = { - type = pdxmesh - name = "ep2_building_special_canterbury_03_mesh" - } - - type_icon = "icon_structure_canterbury_cathedral.dds" - - can_construct_potential = { - building_requirement_tribal = no - } - - can_construct = { - OR = { - scope:holder = { - OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } - } - custom_description = { - text = holy_site_building_trigger - barony = { - is_holy_site_of = scope:holder.faith - } - } - } - scope:holder = { - culture = { - has_innovation = innovation_crop_rotation - } - } - } - - is_enabled = { - custom_description = { - text = holy_site_christian_or_holy_site_trigger - OR = { - scope:holder = { - OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } - } - custom_description = { - text = holy_site_building_trigger - barony = { - is_holy_site_of = scope:holder.faith - } - } - } - } - } - - show_disabled = yes - - cost_gold = 1000 - - character_modifier = { - monthly_piety = 1 - monthly_dynasty_prestige_mult = 0.05 - monthly_county_control_growth_factor = 0.25 - monthly_piety_gain_per_happy_powerful_vassal_add = 0.3 - } - - county_modifier = { - tax_mult = 0.3 - development_growth_factor = 0.30 - development_growth = 0.3 - county_opinion_add = 5 - } - - province_modifier = { - monthly_income = 6 - } - - on_complete = { - #Regular Mandala Boon - mandala_built_piety_duchy_building_t3_effect = yes - } - - ai_value = { - base = 100 - ai_pious_building_preference_modifier = yes - modifier = { # Fill all building slots before going for special buildings - factor = 0 - free_building_slots > 0 - } - } - - type = special - - flag = travel_point_of_interest_religious -} - - ########## # Prophetic Mosque ########## @@ -2024,52 +1726,6 @@ the_pyramids_01 = { flag = travel_point_of_interest_wonder } -########## -# Stonehenge -########## - -stonehenge_01 = { - - asset = { - type = pdxmesh - name = "building_special_stonehenge_mesh" - } - - construction_time = very_slow_construction_time - - type_icon = "icon_structure_stonehenge.dds" - - can_construct_potential = { - building_requirement_tribal = no - } - - cost_gold = 3000 - - character_modifier = { - learning = 2 - monthly_learning_lifestyle_xp_gain_mult = 0.15 - faith_conversion_piety_cost_mult = -0.2 - } - - on_complete = { - #Regular Mandala Boon - mandala_built_piety_duchy_building_t3_effect = yes - } - - ai_value = { - base = 100 - ai_pious_building_preference_modifier = yes - modifier = { # Fill all building slots before going for special buildings - factor = 0 - free_building_slots > 0 - } - } - - type = special - - flag = travel_point_of_interest_religious -} - ########## # Offa's Dyke ########## @@ -2104,38 +1760,6 @@ offas_dyke_01 = { # For Matt Frary flag = travel_point_of_interest_martial_minor } -########## -# Hadrian's Wall -########## - -hadrians_wall_01 = { - construction_time = very_slow_construction_time - - type_icon = "icon_structure_hadrians_wall.dds" - - can_construct_potential = { - building_requirement_tribal = no - } - - cost_gold = 3000 - - province_modifier = { - build_gold_cost = -0.1 - } - - ai_value = { - base = 100 - modifier = { # Fill all building slots before going for special buildings - factor = 0 - free_building_slots > 0 - } - } - - type = special - - flag = travel_point_of_interest_martial_minor -} - ########## # Petra ########## @@ -2476,131 +2100,6 @@ house_of_wisdom_01 = { flag = special_university } -########## -# The Tower of London -########## - -the_tower_of_london_01 = { - - asset = { - type = pdxmesh - name = "building_special_tower_of_london_mesh" - } - - effect_desc = { - triggered_desc = { - trigger = { has_dlc_feature = roads_to_power } - desc = tower_of_london_pacification_effect - } - } - - construction_time = very_slow_construction_time - - type_icon = "icon_structure_tower_of_london.dds" - - can_construct_potential = { - building_requirement_tribal = no - } - - can_construct = { - scope:holder.culture = { - has_innovation = innovation_battlements - } - } - - cost_gold = 1000 - - character_modifier = { - dread_gain_mult = 0.3 - } - max_garrison = good_building_max_garrison_tier_3 - province_modifier = { - defender_holding_advantage = normal_building_advantage_tier_3 - fort_level = good_building_fort_level_tier_3 - stationed_maa_damage_mult = normal_maa_damage_tier_2 - stationed_maa_toughness_mult = normal_maa_toughness_tier_2 - stationed_siege_weapon_siege_value_mult = normal_maa_siege_value_tier_2 - travel_danger = -20 - } - county_modifier = { - development_growth = 0.2 - development_growth_factor = 0.1 - tax_mult = 0.05 - } - - ai_value = { - base = 8 - culture_likely_to_fortify_modifier = yes - modifier = { - factor = 5 - scope:holder = { - culture = { - has_cultural_parameter = ai_more_likely_to_castle - } - } - } - modifier = { # Fill all building slots before going for special buildings - factor = 0 - free_building_slots > 0 - } - } - - type = special - - flag = travel_point_of_interest_martial -} - -########## -# London Bridge -########## - -london_bridge_01 = { - - construction_time = very_slow_construction_time - - type_icon = "icon_structure_london_bridge.dds" - - can_construct_potential = { - building_requirement_tribal = no - } - - can_construct = { - scope:holder.culture = { - has_innovation = innovation_development_03 - } - } - - cost_gold = 1000 - - character_modifier = { - cultural_head_fascination_mult = 0.10 - parochial_opinion = 5 - legitimacy_gain_mult = 0.1 - } - province_modifier = { - travel_danger = -30 - } - county_modifier = { - development_growth = 0.25 - development_growth_factor = 0.15 - tax_mult = 0.1 - county_opinion_add = 10 - } - - ai_value = { - base = 100 - modifier = { # Fill all building slots before going for special buildings - factor = 0 - free_building_slots > 0 - } - } - - type = special - - flag = travel_point_of_interest_learning -} - - ########## # Notre Dame ########## diff --git a/common/buildings/00_standard_economy_buildings.txt b/common/buildings/00_standard_economy_buildings.txt index 1efa950f..969d0d30 100644 --- a/common/buildings/00_standard_economy_buildings.txt +++ b/common/buildings/00_standard_economy_buildings.txt @@ -2281,6 +2281,10 @@ murex_farm_01 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.1 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -2343,6 +2347,10 @@ murex_farm_02 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.2 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -2394,6 +2402,10 @@ murex_farm_03 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.3 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -2445,6 +2457,10 @@ murex_farm_04 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.4 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -2496,6 +2512,10 @@ murex_farm_05 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.5 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -2547,6 +2567,10 @@ murex_farm_06 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.6 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -2598,6 +2622,10 @@ murex_farm_07 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.7 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -2649,6 +2677,10 @@ murex_farm_08 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.8 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -2747,6 +2779,14 @@ paddy_fields_01 = { parameter = brewery_farming_bonus county_opinion_add = 2 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.5 + } on_complete = { #Mandala Creator Aspect @@ -2843,6 +2883,14 @@ paddy_fields_02 = { stationed_maa_damage_mult = normal_maa_damage_tier_2 stationed_maa_toughness_mult = normal_maa_toughness_tier_2 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.2 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.6 + } on_complete = { #Mandala Creator Aspect @@ -2942,6 +2990,14 @@ paddy_fields_03 = { stationed_maa_damage_mult = normal_maa_damage_tier_3 stationed_maa_toughness_mult = normal_maa_toughness_tier_3 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.7 + } on_complete = { #Mandala Creator Aspect @@ -3038,6 +3094,15 @@ paddy_fields_04 = { stationed_maa_damage_mult = normal_maa_damage_tier_4 stationed_maa_toughness_mult = normal_maa_toughness_tier_4 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.8 + } + on_complete = { #Mandala Creator Aspect @@ -3138,6 +3203,15 @@ paddy_fields_05 = { stationed_maa_damage_mult = normal_maa_damage_tier_5 stationed_maa_toughness_mult = normal_maa_toughness_tier_5 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.9 + } + on_complete = { #Mandala Creator Aspect @@ -3239,6 +3313,14 @@ paddy_fields_06 = { stationed_maa_damage_mult = normal_maa_damage_tier_6 stationed_maa_toughness_mult = normal_maa_toughness_tier_6 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1 + } on_complete = { #Mandala Creator Aspect @@ -3341,6 +3423,14 @@ paddy_fields_07 = { stationed_maa_damage_mult = normal_maa_damage_tier_7 stationed_maa_toughness_mult = normal_maa_toughness_tier_7 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.1 + } on_complete = { #Mandala Creator Aspect @@ -3443,6 +3533,14 @@ paddy_fields_08 = { stationed_maa_damage_mult = normal_maa_damage_tier_8 stationed_maa_toughness_mult = normal_maa_toughness_tier_8 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.2 + } on_complete = { #Mandala Creator Aspect @@ -3470,6 +3568,10 @@ spice_plantation_01 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.1 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -3532,6 +3634,10 @@ spice_plantation_02 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.2 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -3583,6 +3689,10 @@ spice_plantation_03 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.3 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -3634,6 +3744,10 @@ spice_plantation_04 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.4 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -3686,6 +3800,10 @@ spice_plantation_05 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.5 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -3738,6 +3856,10 @@ spice_plantation_06 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.6 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -3790,6 +3912,10 @@ spice_plantation_07 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.7 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -3842,6 +3968,10 @@ spice_plantation_08 = { is_enabled = { } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = 0.8 + } can_construct_showing_failures_only = { building_requirement_tribal = no county = { NOT = { has_county_modifier = backwater_county_modifier } } @@ -4419,6 +4549,11 @@ common_tradeport_01 = { cost_gold = normal_building_tier_1_cost + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = -0.3 + monthly_income = 0.1 + } province_modifier = { monthly_income = normal_building_tax_tier_1 } @@ -4537,6 +4672,11 @@ common_tradeport_02 = { } } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = -0.6 + monthly_income = 0.2 + } can_construct_showing_failures_only = { # building_requirement_tribal = no } @@ -4612,6 +4752,11 @@ common_tradeport_03 = { } } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = -0.9 + monthly_income = 0.3 + } is_enabled = { building_requirement_tribal = no } @@ -4687,6 +4832,11 @@ common_tradeport_04 = { } } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = -1.2 + monthly_income = 0.4 + } can_construct_showing_failures_only = { building_requirement_tribal = no } @@ -4762,6 +4912,11 @@ common_tradeport_05 = { } } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = -1.5 + monthly_income = 0.5 + } can_construct_showing_failures_only = { building_requirement_tribal = no } @@ -4837,6 +4992,11 @@ common_tradeport_06 = { } } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = -1.8 + monthly_income = 0.6 + } can_construct_showing_failures_only = { building_requirement_tribal = no } @@ -4912,6 +5072,11 @@ common_tradeport_07 = { } } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = -2.1 + monthly_income = 0.7 + } can_construct_showing_failures_only = { building_requirement_tribal = no } @@ -4987,6 +5152,11 @@ common_tradeport_08 = { } } + province_government_modifier = { + parameter = government_is_urepublic + monthly_barter_goods = -2.4 + monthly_income = 0.8 + } can_construct_showing_failures_only = { building_requirement_tribal = no } @@ -5069,7 +5239,15 @@ pastures_01 = { tax_mult = 0.01 levy_size = 0.01 } - + + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.5 + } on_complete = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes @@ -5147,7 +5325,15 @@ pastures_02 = { tax_mult = 0.01 levy_size = 0.01 } - + + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.2 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.6 + } on_complete = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes @@ -5209,6 +5395,15 @@ pastures_03 = { tax_mult = 0.02 levy_size = 0.02 } + + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.7 + } on_complete = { #Mandala Creator Aspect @@ -5270,6 +5465,15 @@ pastures_04 = { tax_mult = 0.02 levy_size = 0.02 } + + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.8 + } on_complete = { #Mandala Creator Aspect @@ -5333,6 +5537,14 @@ pastures_05 = { development_growth_factor = 0.02 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.9 + } on_complete = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes @@ -5396,6 +5608,14 @@ pastures_06 = { levy_size = 0.03 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1 + } on_complete = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes @@ -5458,7 +5678,14 @@ pastures_07 = { tax_mult = 0.04 levy_size = 0.04 } - + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.1 + } on_complete = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes @@ -5521,6 +5748,15 @@ pastures_08 = { tax_mult = 0.04 levy_size = 0.04 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.2 + } + on_complete = { #Mandala Creator Aspect @@ -6203,6 +6439,14 @@ orchards_01 = { is_coastal = yes tax_mult = 0.01 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.5 + } on_complete = { #Mandala Creator Aspect @@ -6267,6 +6511,14 @@ orchards_02 = { is_coastal = yes tax_mult = 0.02 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.2 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.6 + } on_complete = { #Mandala Creator Aspect @@ -6323,6 +6575,15 @@ orchards_03 = { tax_mult = 0.03 supply_limit_mult = 0.1 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.7 + } + on_complete = { #Mandala Creator Aspect @@ -6375,6 +6636,15 @@ orchards_04 = { tax_mult = 0.04 supply_limit_mult = 0.1 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.8 + } + on_complete = { #Mandala Creator Aspect @@ -6428,6 +6698,14 @@ orchards_05 = { tax_mult = 0.05 supply_limit_mult = 0.1 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.9 + } on_complete = { #Mandala Creator Aspect @@ -6482,6 +6760,14 @@ orchards_06 = { tax_mult = 0.06 supply_limit_mult = 0.1 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1 + } on_complete = { #Mandala Creator Aspect @@ -6539,6 +6825,14 @@ orchards_07 = { character_modifier = { monthly_prestige = 0.1 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.1 + } on_complete = { #Mandala Creator Aspect @@ -6596,6 +6890,15 @@ orchards_08 = { character_modifier = { monthly_prestige = 0.1 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.2 + } + on_complete = { #Mandala Creator Aspect @@ -6664,6 +6967,14 @@ farm_estates_01 = { parameter = brewery_farming_bonus county_opinion_add = 2 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.5 + } on_complete = { #Mandala Creator Aspect @@ -6749,6 +7060,14 @@ farm_estates_02 = { parameter = brewery_farming_bonus county_opinion_add = 4 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.2 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.6 + } on_complete = { #Mandala Creator Aspect @@ -6812,6 +7131,14 @@ farm_estates_03 = { parameter = brewery_farming_bonus county_opinion_add = 6 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.7 + } on_complete = { #Mandala Creator Aspect @@ -6866,6 +7193,15 @@ farm_estates_04 = { county_modifier = { development_growth_factor = 0.02 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.8 + } + province_culture_modifier = { parameter = brewery_farming_bonus @@ -6940,6 +7276,14 @@ farm_estates_05 = { parameter = brewery_farming_bonus county_opinion_add = 10 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.9 + } on_complete = { #Mandala Creator Aspect @@ -7010,6 +7354,14 @@ farm_estates_06 = { parameter = brewery_farming_bonus county_opinion_add = 12 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1 + } on_complete = { #Mandala Creator Aspect @@ -7081,6 +7433,14 @@ farm_estates_07 = { parameter = brewery_farming_bonus county_opinion_add = 14 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.1 + } on_complete = { #Mandala Creator Aspect @@ -7151,6 +7511,15 @@ farm_estates_08 = { parameter = brewery_farming_bonus county_opinion_add = 16 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.2 + } + on_complete = { #Mandala Creator Aspect @@ -7199,6 +7568,14 @@ cereal_fields_01 = { parameter = brewery_farming_bonus county_opinion_add = 2 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.5 + } on_complete = { #Mandala Creator Aspect @@ -7301,6 +7678,14 @@ cereal_fields_02 = { parameter = brewery_farming_bonus county_opinion_add = 4 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.2 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.6 + } on_complete = { #Mandala Creator Aspect @@ -7382,6 +7767,15 @@ cereal_fields_03 = { parameter = brewery_farming_bonus county_opinion_add = 6 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.7 + } + on_complete = { #Mandala Creator Aspect @@ -7461,6 +7855,14 @@ cereal_fields_04 = { parameter = brewery_farming_bonus county_opinion_add = 8 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.8 + } on_complete = { #Mandala Creator Aspect @@ -7540,7 +7942,14 @@ cereal_fields_05 = { parameter = brewery_farming_bonus county_opinion_add = 10 } - + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.9 + } on_complete = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes @@ -7620,6 +8029,14 @@ cereal_fields_06 = { parameter = brewery_farming_bonus county_opinion_add = 12 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1 + } on_complete = { #Mandala Creator Aspect @@ -7701,7 +8118,14 @@ cereal_fields_07 = { parameter = brewery_farming_bonus county_opinion_add = 14 } - + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.1 + } on_complete = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes @@ -7782,6 +8206,15 @@ cereal_fields_08 = { parameter = brewery_farming_bonus county_opinion_add = 16 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.2 + } + on_complete = { #Mandala Creator Aspect @@ -8762,6 +9195,14 @@ hill_farms_01 = { parameter = hill_farms_building_bonuses levy_size = 0.01 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.5 + } on_complete = { #Mandala Creator Aspect @@ -8832,6 +9273,14 @@ hill_farms_02 = { parameter = hill_farms_building_bonuses levy_size = 0.01 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.2 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.6 + } on_complete = { #Mandala Creator Aspect @@ -8894,6 +9343,15 @@ hill_farms_03 = { parameter = hill_farms_building_bonuses levy_size = 0.02 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.7 + } + on_complete = { #Mandala Creator Aspect @@ -8952,6 +9410,14 @@ hill_farms_04 = { parameter = hill_farms_building_bonuses levy_size = 0.02 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.8 + } on_complete = { #Mandala Creator Aspect @@ -9011,6 +9477,14 @@ hill_farms_05 = { parameter = hill_farms_building_bonuses levy_size = 0.03 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.9 + } on_complete = { #Mandala Creator Aspect @@ -9071,6 +9545,14 @@ hill_farms_06 = { parameter = hill_farms_building_bonuses levy_size = 0.03 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1 + } on_complete = { #Mandala Creator Aspect @@ -9131,6 +9613,14 @@ hill_farms_07 = { parameter = hill_farms_building_bonuses levy_size = 0.04 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.1 + } on_complete = { #Mandala Creator Aspect @@ -9191,6 +9681,14 @@ hill_farms_08 = { parameter = hill_farms_building_bonuses levy_size = 0.04 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.2 + } on_complete = { #Mandala Creator Aspect @@ -9664,6 +10162,10 @@ plantations_01 = { cost_gold = cheap_building_tier_1_cost + province_government_modifier = { + parameter = government_is_urepublic + monthly_income = 0.1 + } province_modifier = { monthly_income = poor_building_tax_tier_1 } @@ -9678,6 +10180,14 @@ plantations_01 = { parameter = plantations_building_bonuses monthly_income = poor_building_extra_tax_tier_1 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.5 + } on_complete = { #Mandala Creator Aspect @@ -9738,6 +10248,10 @@ plantations_02 = { } } + province_government_modifier = { + parameter = government_is_urepublic + monthly_income = 0.2 + } can_construct_showing_failures_only = { building_requirement_tribal = no } @@ -9759,6 +10273,14 @@ plantations_02 = { parameter = plantations_building_bonuses monthly_income = poor_building_extra_tax_tier_2 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.2 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.6 + } on_complete = { #Mandala Creator Aspect @@ -9794,6 +10316,10 @@ plantations_03 = { } } + province_government_modifier = { + parameter = government_is_urepublic + monthly_income = 0.3 + } can_construct_showing_failures_only = { building_requirement_tribal = no } @@ -9816,6 +10342,15 @@ plantations_03 = { parameter = plantations_building_bonuses monthly_income = poor_building_extra_tax_tier_3 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.7 + } + on_complete = { #Mandala Creator Aspect @@ -9851,6 +10386,10 @@ plantations_04 = { building_requirement_tribal = no } + province_government_modifier = { + parameter = government_is_urepublic + monthly_income = 0.4 + } cost_gold = cheap_building_tier_4_cost province_modifier = { @@ -9869,6 +10408,15 @@ plantations_04 = { parameter = plantations_building_bonuses monthly_income = poor_building_extra_tax_tier_4 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.8 + } + on_complete = { #Mandala Creator Aspect @@ -9906,6 +10454,10 @@ plantations_05 = { cost_gold = cheap_building_tier_5_cost + province_government_modifier = { + parameter = government_is_urepublic + monthly_income = 0.5 + } province_modifier = { monthly_income = poor_building_tax_tier_5 tax_mult = 0.02 @@ -9926,6 +10478,14 @@ plantations_05 = { parameter = plantations_building_bonuses monthly_income = poor_building_extra_tax_tier_5 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.9 + } on_complete = { #Mandala Creator Aspect @@ -9963,6 +10523,10 @@ plantations_06 = { cost_gold = cheap_building_tier_6_cost + province_government_modifier = { + parameter = government_is_urepublic + monthly_income = 0.6 + } province_modifier = { monthly_income = poor_building_tax_tier_6 tax_mult = 0.02 @@ -9983,6 +10547,14 @@ plantations_06 = { parameter = plantations_building_bonuses monthly_income = poor_building_extra_tax_tier_6 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1 + } on_complete = { #Mandala Creator Aspect @@ -10020,6 +10592,10 @@ plantations_07 = { cost_gold = cheap_building_tier_7_cost + province_government_modifier = { + parameter = government_is_urepublic + monthly_income = 0.7 + } province_modifier = { monthly_income = poor_building_tax_tier_7 tax_mult = 0.02 @@ -10040,6 +10616,14 @@ plantations_07 = { parameter = plantations_building_bonuses monthly_income = poor_building_extra_tax_tier_7 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.1 + } on_complete = { #Mandala Creator Aspect @@ -10077,6 +10661,10 @@ plantations_08 = { cost_gold = cheap_building_tier_8_cost + province_government_modifier = { + parameter = government_is_urepublic + monthly_income = 0.8 + } province_modifier = { monthly_income = poor_building_tax_tier_8 tax_mult = 0.02 @@ -10097,6 +10685,15 @@ plantations_08 = { parameter = plantations_building_bonuses monthly_income = poor_building_extra_tax_tier_8 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.2 + } + on_complete = { #Mandala Creator Aspect diff --git a/common/buildings/00_temple_buildings.txt b/common/buildings/00_temple_buildings.txt index 1ef7db8c..717f2a60 100644 --- a/common/buildings/00_temple_buildings.txt +++ b/common/buildings/00_temple_buildings.txt @@ -775,6 +775,10 @@ temple_01 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -1 + } flag = temple type_icon = "icon_building_monastic_schools.dds" @@ -1732,6 +1736,10 @@ temple_02 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -2 + } flag = temple on_complete = { @@ -2559,6 +2567,10 @@ temple_03 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -3 + } flag = temple on_complete = { @@ -3378,6 +3390,10 @@ temple_04 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -4 + } flag = temple on_complete = { diff --git a/common/buildings/N3OW_standard_economy_buildings.txt b/common/buildings/N3OW_standard_economy_buildings.txt index 08e6337b..0d8cd242 100644 --- a/common/buildings/N3OW_standard_economy_buildings.txt +++ b/common/buildings/N3OW_standard_economy_buildings.txt @@ -1064,6 +1064,14 @@ potato_fields_01 = { parameter = brewery_farming_bonus county_opinion_add = 2 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.1 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.5 + } on_complete = { #Mandala Creator Aspect @@ -1182,6 +1190,14 @@ potato_fields_02 = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.2 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.6 + } next_building = potato_fields_03 type_icon = "building_potato.dds" @@ -1277,6 +1293,14 @@ potato_fields_03 = { stationed_maa_damage_mult = normal_maa_damage_tier_3 stationed_maa_toughness_mult = normal_maa_toughness_tier_3 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.7 + } on_complete = { #Mandala Creator Aspect creator_mandala_built_regular_building_piety_effect = yes @@ -1373,6 +1397,14 @@ potato_fields_04 = { stationed_maa_damage_mult = normal_maa_damage_tier_4 stationed_maa_toughness_mult = normal_maa_toughness_tier_4 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.8 + } on_complete = { #Mandala Creator Aspect @@ -1471,6 +1503,14 @@ potato_fields_05 = { stationed_maa_damage_mult = normal_maa_damage_tier_5 stationed_maa_toughness_mult = normal_maa_toughness_tier_5 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 0.9 + } on_complete = { #Mandala Creator Aspect @@ -1569,6 +1609,19 @@ potato_fields_06 = { stationed_maa_damage_mult = normal_maa_damage_tier_6 stationed_maa_toughness_mult = normal_maa_toughness_tier_6 } + province_government_modifier = { + parameter = government_is_prepublic + county_fertility_growth_add = 1.0 + monthly_barter_goods = 0.6 + } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1 + } on_complete = { #Mandala Creator Aspect @@ -1669,6 +1722,14 @@ potato_fields_07 = { stationed_maa_damage_mult = normal_maa_damage_tier_7 stationed_maa_toughness_mult = normal_maa_toughness_tier_7 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.1 + } on_complete = { #Mandala Creator Aspect @@ -1769,6 +1830,14 @@ potato_fields_08 = { stationed_maa_damage_mult = normal_maa_damage_tier_8 stationed_maa_toughness_mult = normal_maa_toughness_tier_8 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_growth_add = 1.2 + } on_complete = { #Mandala Creator Aspect @@ -1782,3 +1851,647 @@ potato_fields_08 = { ai_economical_building_preference_modifier = yes } } + +### Doggerland Ivory Deposits + +doggerland_ivory_deposits_01 = { + construction_time = quick_construction_time + + can_construct_potential = { + building_doggerland_ivory_deposits_requirement_terrain = yes + trigger_if = { # Sometimes tribals can into botes + limit = { + NOT = { + culture = { + has_cultural_parameter = trade_ports_enabled_for_tribals + } + } + } + + building_requirement_castle_city_church = { LEVEL = 01 } + } + trigger_else = { + OR = { + has_building_or_higher = tribe_01 + building_requirement_castle_city_church = { LEVEL = 01 } + } + } + } + + can_construct_showing_failures_only = { + # building_requirement_tribal = no + + } + + cost_gold = normal_building_tier_1_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_1 + } + county_modifier = { + development_growth_factor = 0.05 + } + + county_culture_modifier = { + parameter = trade_ports_give_control_growth + monthly_county_control_growth_add = 0.1 + } + province_culture_modifier = { + parameter = trade_ports_give_levies + levy_size = 0.02 + } + province_culture_modifier = { + parameter = trade_ports_stationed_maa_bonus + stationed_maa_toughness_mult = normal_maa_toughness_tier_1 + } + + on_complete = { + #Mandala Creator Aspect + creator_mandala_built_regular_building_piety_effect = yes + } + + next_building = doggerland_ivory_deposits_02 + + type_icon = "icon_building_quarries.dds" + + ai_value = { + base = 10 + ai_tier_1_building_modifier = yes + ai_tier_1_economical_building_preference_modifier = yes + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + + modifier = { + add = 5 + culture = { + has_cultural_parameter = trade_ports_enabled_for_tribals + } + } + modifier = { + add = 5 + culture = { + has_cultural_parameter = trade_ports_stationed_maa_bonus + } + } + modifier = { + factor = 2 + AND = { + building_watermills_requirement_terrain = yes + building_windmills_requirement_terrain = yes + } + } + modifier = { + factor = 0 + building_farm_estates_requirement_terrain = yes + NOT = { + has_building_or_higher = farm_estates_01 + } + } + modifier = { + factor = 0 + building_orchards_requirement_terrain = yes + NOT = { + has_building_or_higher = orchards_01 + } + } + + } +} + +doggerland_ivory_deposits_02 = { + construction_time = quick_construction_time + + can_construct_potential = { + building_doggerland_ivory_deposits_requirement_terrain = yes + + + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = trade_ports_enabled_for_tribals + } + } + + } + building_requirement_castle_city_church = { LEVEL = 01 } + } + trigger_else = { + OR = { + has_building_or_higher = tribe_01 + building_requirement_castle_city_church = { LEVEL = 01 } + } + } + + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_trade_ports + } + } + } + culture = { + has_innovation = innovation_crop_rotation + } + } + trigger_else = { + culture = { + has_cultural_parameter = next_level_trade_ports + + } + } + } + + can_construct_showing_failures_only = { + # building_requirement_tribal = no + } + + cost_gold = normal_building_tier_2_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_2 + } + county_modifier = { + development_growth_factor = 0.1 + } + + county_culture_modifier = { + parameter = trade_ports_give_control_growth + monthly_county_control_growth_add = 0.1 + } + province_culture_modifier = { + parameter = trade_ports_give_levies + levy_size = 0.04 + } + province_culture_modifier = { + parameter = trade_ports_stationed_maa_bonus + stationed_maa_toughness_mult = normal_maa_toughness_tier_2 + } + + on_complete = { + #Mandala Creator Aspect + creator_mandala_built_regular_building_piety_effect = yes + } + + next_building = doggerland_ivory_deposits_03 + ai_value = { + base = 9 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for upgrades + factor = 0 + free_building_slots > 0 + } + } +} + +doggerland_ivory_deposits_03 = { + construction_time = quick_construction_time + + can_construct_potential = { + building_doggerland_ivory_deposits_requirement_terrain = yes + } + can_construct = { + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_trade_ports + } + } + } + culture = { + has_innovation = innovation_manorialism + } + building_requirement_castle_city_church = { LEVEL = 02 } + } + trigger_else = { + culture = { + has_innovation = innovation_crop_rotation + } + culture = { + has_cultural_parameter = next_level_trade_ports + } + building_requirement_castle_city_church = { LEVEL = 01 } + } + } + + is_enabled = { + building_requirement_tribal = no + } + + can_construct_showing_failures_only = { + # building_requirement_tribal = no + } + + cost_gold = normal_building_tier_3_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_3 + } + county_modifier = { + development_growth_factor = 0.15 + } + + county_culture_modifier = { + parameter = trade_ports_give_control_growth + monthly_county_control_growth_add = 0.15 + } + province_culture_modifier = { + parameter = trade_ports_give_levies + levy_size = 0.06 + } + province_culture_modifier = { + parameter = trade_ports_stationed_maa_bonus + stationed_maa_toughness_mult = normal_maa_toughness_tier_3 + } + + on_complete = { + #Mandala Creator Aspect + creator_mandala_built_regular_building_piety_effect = yes + } + + next_building = doggerland_ivory_deposits_04 + ai_value = { + base = 8 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + } +} + +doggerland_ivory_deposits_04 = { + construction_time = quick_construction_time + + can_construct_potential = { + building_doggerland_ivory_deposits_requirement_terrain = yes + } + can_construct = { + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_trade_ports + } + } + } + culture = { + has_innovation = innovation_manorialism + } + building_requirement_castle_city_church = { LEVEL = 02 } + } + trigger_else = { + culture = { + has_innovation = innovation_crop_rotation + } + culture = { + has_cultural_parameter = next_level_trade_ports + } + building_requirement_castle_city_church = { LEVEL = 01 } + } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + cost_gold = normal_building_tier_4_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_4 + } + county_modifier = { + development_growth_factor = 0.2 + } + + county_culture_modifier = { + parameter = trade_ports_give_control_growth + monthly_county_control_growth_add = 0.15 + } + province_culture_modifier = { + parameter = trade_ports_give_levies + levy_size = 0.08 + } + character_culture_modifier = { + parameter = trade_ports_give_levies + men_at_arms_limit = 1 + } + province_culture_modifier = { + parameter = trade_ports_stationed_maa_bonus + stationed_maa_toughness_mult = normal_maa_toughness_tier_4 + } + + on_complete = { + #Mandala Creator Aspect + creator_mandala_built_regular_building_piety_effect = yes + } + + next_building = doggerland_ivory_deposits_05 + ai_value = { + base = 7 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + } +} + +doggerland_ivory_deposits_05 = { + construction_time = quick_construction_time + + can_construct_potential = { + building_doggerland_ivory_deposits_requirement_terrain = yes + } + can_construct = { + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_trade_ports + } + } + } + culture = { + has_innovation = innovation_guilds + } + building_requirement_castle_city_church = { LEVEL = 03 } + } + trigger_else = { + culture = { + has_innovation = innovation_manorialism + } + culture = { + has_cultural_parameter = next_level_trade_ports + } + building_requirement_castle_city_church = { LEVEL = 02 } + } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + cost_gold = normal_building_tier_5_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_5 + } + county_modifier = { + development_growth_factor = 0.25 + } + + county_culture_modifier = { + parameter = trade_ports_give_control_growth + monthly_county_control_growth_add = 0.2 + } + province_culture_modifier = { + parameter = trade_ports_give_levies + levy_size = 0.1 + } + character_culture_modifier = { + parameter = trade_ports_give_levies + men_at_arms_limit = 1 + } + province_culture_modifier = { + parameter = trade_ports_stationed_maa_bonus + stationed_maa_toughness_mult = normal_maa_toughness_tier_5 + } + + on_complete = { + #Mandala Creator Aspect + creator_mandala_built_regular_building_piety_effect = yes + } + + next_building = doggerland_ivory_deposits_06 + ai_value = { + base = 6 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + } +} + +doggerland_ivory_deposits_06 = { + construction_time = quick_construction_time + + can_construct_potential = { + building_doggerland_ivory_deposits_requirement_terrain = yes + } + can_construct = { + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_trade_ports + } + } + } + culture = { + has_innovation = innovation_guilds + } + building_requirement_castle_city_church = { LEVEL = 03 } + } + trigger_else = { + culture = { + has_innovation = innovation_manorialism + } + culture = { + has_cultural_parameter = next_level_trade_ports + } + building_requirement_castle_city_church = { LEVEL = 02 } + } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + cost_gold = normal_building_tier_6_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_6 + } + county_modifier = { + development_growth_factor = 0.3 + } + + county_culture_modifier = { + parameter = trade_ports_give_control_growth + monthly_county_control_growth_add = 0.2 + } + province_culture_modifier = { + parameter = trade_ports_give_levies + levy_size = 0.12 + } + character_culture_modifier = { + parameter = trade_ports_give_levies + men_at_arms_limit = 2 + } + province_culture_modifier = { + parameter = trade_ports_stationed_maa_bonus + stationed_maa_toughness_mult = normal_maa_toughness_tier_6 + } + + on_complete = { + #Mandala Creator Aspect + creator_mandala_built_regular_building_piety_effect = yes + } + + next_building = doggerland_ivory_deposits_07 + ai_value = { + base = 5 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + } +} + +doggerland_ivory_deposits_07 = { + construction_time = quick_construction_time + + can_construct_potential = { + building_doggerland_ivory_deposits_requirement_terrain = yes + } + can_construct = { + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_trade_ports + } + } + } + culture = { + has_innovation = innovation_cranes + } + building_requirement_castle_city_church = { LEVEL = 04 } + } + trigger_else = { + culture = { + has_innovation = innovation_guilds + } + culture = { + has_cultural_parameter = next_level_trade_ports + } + building_requirement_castle_city_church = { LEVEL = 03 } + } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + cost_gold = normal_building_tier_7_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_7 + } + county_modifier = { + development_growth_factor = 0.35 + } + + county_culture_modifier = { + parameter = trade_ports_give_control_growth + monthly_county_control_growth_add = 0.25 + } + province_culture_modifier = { + parameter = trade_ports_give_levies + levy_size = 0.14 + } + character_culture_modifier = { + parameter = trade_ports_give_levies + men_at_arms_limit = 2 + } + province_culture_modifier = { + parameter = trade_ports_stationed_maa_bonus + stationed_maa_toughness_mult = normal_maa_toughness_tier_7 + } + + on_complete = { + #Mandala Creator Aspect + creator_mandala_built_regular_building_piety_effect = yes + } + + next_building = doggerland_ivory_deposits_08 + ai_value = { + base = 4 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + } +} + +doggerland_ivory_deposits_08 = { + construction_time = quick_construction_time + + can_construct_potential = { + building_doggerland_ivory_deposits_requirement_terrain = yes + } + can_construct = { + trigger_if = { + limit = { + NOT = { + culture = { + has_cultural_parameter = next_level_trade_ports + } + } + } + culture = { + has_innovation = innovation_cranes + } + building_requirement_castle_city_church = { LEVEL = 04 } + } + trigger_else = { + culture = { + has_innovation = innovation_guilds + } + culture = { + has_cultural_parameter = next_level_trade_ports + } + building_requirement_castle_city_church = { LEVEL = 03 } + } + } + + can_construct_showing_failures_only = { + building_requirement_tribal = no + } + + cost_gold = normal_building_tier_8_cost + + province_modifier = { + monthly_income = normal_building_tax_tier_8 + } + county_modifier = { + development_growth_factor = 0.4 + } + + county_culture_modifier = { + parameter = trade_ports_give_control_growth + monthly_county_control_growth_add = 0.25 + } + province_culture_modifier = { + parameter = trade_ports_give_levies + levy_size = 0.16 + } + character_culture_modifier = { + parameter = trade_ports_give_levies + men_at_arms_limit = 3 + } + province_culture_modifier = { + parameter = trade_ports_stationed_maa_bonus + stationed_maa_toughness_mult = normal_maa_toughness_tier_8 + } + + on_complete = { + #Mandala Creator Aspect + creator_mandala_built_regular_building_piety_effect = yes + } + + ai_value = { + base = 3 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + } +} \ No newline at end of file diff --git a/common/buildings/NEOW_special_buildings.txt b/common/buildings/NEOW_special_buildings.txt index 88efeffd..a7d12167 100644 --- a/common/buildings/NEOW_special_buildings.txt +++ b/common/buildings/NEOW_special_buildings.txt @@ -579,7 +579,7 @@ zone_rouge_01 = { type = special - flag = travel_point_of_interest_martial + flag = travel_point_of_interest_natural_feature } ########## @@ -1905,7 +1905,7 @@ mont_saint_michel_01 = { constrcution_time = very_slow_construction_time - type_icon = "icon_structure_maiden_tower.dds" + type_icon = "icon_structure_mont_st_michel.dds" can_construct_potential = { building_requirement_tribal = no @@ -4650,6 +4650,8 @@ doges_palace_01 = { # Should technically be burnt down/rebuilt, but this is most text = government_is_not_republic_or_admin_desc OR = { government_has_flag = government_is_republic + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic government_has_flag = government_is_administrative } } @@ -6889,9 +6891,2100 @@ croke_park_02 = { } ########## -# TEMPLATE +# Westminster Pyramids ########## +westminster_pyramids_01 = { + + asset = { + type = pdxmesh + name = "building_special_pyramids_giza_mesh" + } + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_the_pyramids.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = 500 + + county_holder_character_modifier = { + monthly_piety = 0.25 + learning_per_piety_level = 1 + } + + county_modifier = { + county_opinion_add = 5 + tax_mult = 0.10 + development_growth = 0.10 + development_growth_factor = 0.05 + } + + province_modifier = { + monthly_income = 1 + build_speed = -0.05 + } + + next_building = westminster_pyramids_02 + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_religious + flag = travel_point_of_interest_learning +} + +westminster_pyramids_02 = { + + asset = { + type = pdxmesh + name = "building_special_pyramids_giza_mesh" + } + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_the_pyramids.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { has_innovation = innovation_manorialism } + building_requirement_castle_city_church = { LEVEL = 02 } + } + + cost_gold = 1000 + + county_holder_character_modifier = { + monthly_piety = 0.50 + monthly_piety_gain_mult = 0.10 + monthly_influence = 0.25 + learning_per_piety_level = 1 + stewardship_per_influence_level = 1 + } + + county_modifier = { + county_opinion_add = 10 + tax_mult = 0.15 + development_growth = 0.15 + development_growth_factor = 0.10 + } + + province_modifier = { + monthly_income = 3 + build_speed = -0.10 + } + + next_building = westminster_pyramids_03 + + ai_value = { + base = 100 + ai_pious_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_religious + flag = travel_point_of_interest_learning +} + +westminster_pyramids_03 = { + + asset = { + type = pdxmesh + name = "building_special_pyramids_giza_mesh" + } + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_the_pyramids.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { has_innovation = innovation_windmills } + building_requirement_castle_city_church = { LEVEL = 03 } + } + + cost_gold = 2000 + + county_holder_character_modifier = { + monthly_piety = 1 + monthly_piety_gain_mult = 0.20 + monthly_influence = 0.25 + monthly_prestige = 0.25 + learning_per_piety_level = 1 + stewardship_per_influence_level = 1 + martial_per_prestige_level = 1 + } + + county_modifier = { + county_opinion_add = 10 + tax_mult = 0.25 + development_growth = 0.20 + development_growth_factor = 0.20 + } + + province_modifier = { + monthly_income = 5 + build_speed = -0.20 + } + + ai_value = { + base = 100 + ai_pious_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_religious + flag = travel_point_of_interest_learning +} + +########## +# The Tower of London +########## + +the_tower_of_london_01 = { + + asset = { + type = pdxmesh + name = "building_special_tower_of_london_mesh" + } + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_tower_of_london.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = 1000 + + county_holder_character_modifier = { + dread_gain_mult = 0.15 + } + + province_modifier = { + defender_holding_advantage = 3 + fort_level = 3 + stationed_maa_damage_mult = 0.10 + stationed_maa_toughness_mult = 0.10 + stationed_siege_weapon_siege_value_mult = 0.10 + travel_danger = -10 + monthly_income = 1 + } + + county_modifier = { + development_growth = 0.05 + development_growth_factor = 0.05 + } + + max_garrison = 350 + + next_building = the_tower_of_london_02 + + ai_value = { + base = 100 + } + + type = special + + flag = travel_point_of_interest_martial +} + +the_tower_of_london_02 = { + + asset = { + type = pdxmesh + name = "building_special_tower_of_london_mesh" + } + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_tower_of_london.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { + has_innovation = innovation_hoardings + has_innovation = innovation_castle_baileys + } + building_requirement_castle_city_church = { LEVEL = 03 } + } + + cost_gold = 1500 + + county_holder_character_modifier = { + dread_gain_mult = 0.3 + } + + province_modifier = { + defender_holding_advantage = 6 + fort_level = 6 + stationed_maa_damage_mult = 0.25 + stationed_maa_toughness_mult = 0.25 + stationed_siege_weapon_siege_value_mult = 0.25 + travel_danger = -20 + monthly_income = 3.50 + } + + county_modifier = { + development_growth = 0.2 + development_growth_factor = 0.2 + tax_mult = 0.1 + } + + max_garrison = 1000 + + ai_value = { + ai_value = { + base = 10 + culture_likely_to_fortify_modifier = yes + modifier = { + factor = 5 + scope:holder = { + culture = { + has_cultural_parameter = ai_more_likely_to_castle + } + } + } + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + } + + type = special + + flag = travel_point_of_interest_martial +} + +########## +# Tower Bridge +########## + +#tower_bridge_01 = { +# +# construction_time = very_slow_construction_time +# +# type_icon = "icon_structure_london_bridge.dds" +# +# can_construct_potential = { +# building_requirement_tribal = no +# } +# +# can_construct = { +# } +# +# cost_gold = 1000 +# +# character_modifier = { +# cultural_head_fascination_mult = 0.10 +# parochial_opinion = 5 +# legitimacy_gain_mult = 0.1 +# } +# province_modifier = { +# travel_danger = -30 +# } +# county_modifier = { +# development_growth = 0.25 +# development_growth_factor = 0.15 +# tax_mult = 0.1 +# county_opinion_add = 10 +# } +# +# ai_value = { +# base = 100 +# modifier = { # Fill all building slots before going for special buildings +# factor = 0 +# free_building_slots > 0 +# } +# } +# +# type = special +# +# flag = travel_point_of_interest_economic +#} + +########## +# Windsor Castle +########## + +windsor_castle_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_aurelian_walls.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = 1000 + + county_holder_character_modifier = { + martial_per_influence_level = 1 + monthly_influence = 0.50 + monthly_influence_mult = 0.10 + } + + county_modifier = { + development_growth = 0.10 + development_growth_factor = 0.05 + } + + province_modifier = { + defender_holding_advantage = 3 + fort_level = 3 + monthly_income = 0.50 + stationed_maa_damage_mult = 0.10 + stationed_maa_toughness_mult = 0.10 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_martial +} + +########## +# Harlech Castle +########## + +harlech_castle_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_kassiopi_castle.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = 1000 + + county_holder_character_modifier = { + martial_per_prestige_level = 1 + monthly_prestige = 0.05 + } + + county_modifier = { + tax_mult = 0.05 + development_growth = 0.05 + development_growth_factor = 0.05 + } + + province_modifier = { + defender_holding_advantage = 4 + fort_level = 2 + monthly_income = 0.35 + stationed_maa_damage_mult = 0.10 + stationed_maa_toughness_mult = 0.10 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + next_building = harlech_castle_02 + + type = special + + flag = travel_point_of_interest_martial +} + +harlech_castle_02 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_kassiopi_castle.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { has_innovation = innovation_castle_baileys } + building_requirement_castle_city_church = { LEVEL = 03 } + } + + cost_gold = 1000 + + county_holder_character_modifier = { + martial_per_prestige_level = 2 + monthly_prestige = 0.35 + monthly_prestige_gain_mult = 0.10 + prestige_level_impact_mult = 0.05 + } + + county_modifier = { + tax_mult = 0.15 + development_growth = 0.15 + development_growth_factor = 0.10 + } + + province_modifier = { + defender_holding_advantage = 8 + fort_level = 6 + monthly_income = 2 + stationed_maa_damage_mult = 0.25 + stationed_maa_toughness_mult = 0.25 + stationed_siege_weapon_siege_value_mult = 0.15 + } + + ai_value = { + base = 100 + culture_likely_to_fortify_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_martial +} + +########## +# Edinburgh Castle +########## + +edinburgh_castle_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_building_legendary_palace.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + building_requirement_castle_city_church = { LEVEL = 03 } + scope:holder.culture = { + has_innovation = innovation_castle_baileys + } + } + + cost_gold = 1000 + + character_modifier = { + monthly_prestige = 0.15 + } + + county_modifier = { + tax_mult = 0.20 + development_growth = 0.20 + development_growth_factor = 0.15 + monthly_county_control_growth_add = 0.10 + } + + province_modifier = { + defender_holding_advantage = 5 + fort_level = 5 + stationed_maa_damage_mult = 0.20 + stationed_maa_toughness_mult = 0.20 + stationed_siege_weapon_siege_value_mult = 0.20 + travel_danger = -15 + } + + max_garrison = 750 + + ai_value = { + base = 100 + culture_likely_to_fortify_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_martial +} + +########## +# Canterbury Cathedral +########## + +holy_site_canterbury_cathedral_01 = { + + construction_time = very_slow_construction_time + + asset = { + type = pdxmesh + name = "ep2_building_special_canterbury_02_mesh" + } + + type_icon = "icon_structure_canterbury_cathedral.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + } + + show_disabled = yes + + cost_gold = 100 + + character_modifier = { + monthly_piety = 0.05 + monthly_county_control_growth_factor = -0.05 + christianity_religion_opinion = -10 + } + + county_modifier = { + tax_mult = -0.05 + development_growth_factor = -0.10 + development_growth = -0.05 + county_opinion_add = -5 + } + + on_complete = { + #Regular Mandala Boon + mandala_built_piety_duchy_building_t3_effect = yes + } + + next_building = holy_site_canterbury_cathedral_02 + + ai_value = { + base = 100 + ai_pious_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_religious +} + +holy_site_canterbury_cathedral_02 = { + effect_desc = { + triggered_desc = { + trigger = { has_dlc_feature = legends_of_the_dead } + desc = building_funeral_effect_desc + } + } + construction_time = very_slow_construction_time + + asset = { + type = pdxmesh + name = "ep2_building_special_canterbury_02_mesh" + } + + type_icon = "icon_structure_canterbury_cathedral.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + OR = { + scope:holder = { + OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } + } + custom_description = { + text = holy_site_building_trigger + barony = { + is_holy_site_of = scope:holder.faith + } + } + } + scope:holder = { + culture = { + has_innovation = innovation_crop_rotation + } + } + } + + is_enabled = { + custom_description = { + text = holy_site_christian_or_holy_site_trigger + OR = { + scope:holder = { + OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } + } + custom_description = { + text = holy_site_building_trigger + barony = { + is_holy_site_of = scope:holder.faith + } + } + } + } + } + + show_disabled = yes + + cost_gold = 1000 + + character_modifier = { + monthly_piety = 0.3 + monthly_dynasty_prestige_mult = 0.05 + monthly_county_control_growth_factor = 0.1 + monthly_piety_gain_per_happy_powerful_vassal_add = 0.1 + } + + county_modifier = { + tax_mult = 0.15 + development_growth_factor = 0.15 + development_growth = 0.15 + } + + province_modifier = { + monthly_income = 3 + } + + on_complete = { + #Regular Mandala Boon + mandala_built_piety_duchy_building_t3_effect = yes + } + + next_building = holy_site_canterbury_cathedral_03 + + ai_value = { + base = 100 + ai_pious_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_religious +} + +holy_site_canterbury_cathedral_03 = { + effect_desc = { + triggered_desc = { + trigger = { has_dlc_feature = legends_of_the_dead } + desc = building_funeral_effect_desc + } + } + construction_time = very_slow_construction_time + + asset = { + type = pdxmesh + name = "ep2_building_special_canterbury_03_mesh" + } + + type_icon = "icon_structure_canterbury_cathedral.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + OR = { + scope:holder = { + OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } + } + custom_description = { + text = holy_site_building_trigger + barony = { + is_holy_site_of = scope:holder.faith + } + } + } + scope:holder = { + culture = { + has_innovation = innovation_windmills + } + } + } + + is_enabled = { + custom_description = { + text = holy_site_christian_or_holy_site_trigger + OR = { + scope:holder = { + OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } + } + custom_description = { + text = holy_site_building_trigger + barony = { + is_holy_site_of = scope:holder.faith + } + } + } + } + } + + show_disabled = yes + + cost_gold = 1000 + + character_modifier = { + monthly_piety = 0.75 + monthly_dynasty_prestige_mult = 0.05 + monthly_county_control_growth_factor = 0.2 + monthly_piety_gain_per_happy_powerful_vassal_add = 0.15 + } + + county_modifier = { + tax_mult = 0.3 + development_growth_factor = 0.3 + development_growth = 0.3 + county_opinion_add = 5 + } + + province_modifier = { + monthly_income = 5 + } + + on_complete = { + #Regular Mandala Boon + mandala_built_piety_duchy_building_t3_effect = yes + } + + ai_value = { + base = 100 + ai_pious_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_religious +} + +########## +# Portsmouth Royal Dockyard +########## + +portsmouth_royal_dockyard_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_swahili_port.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = 350 + + county_holder_character_modifier = { + embarkation_cost_mult = -0.10 + naval_movement_speed_mult = 0.10 + } + + county_modifier = { + tax_mult = 0.10 + development_growth = 0.10 + development_growth_factor = 0.10 + hostile_raid_time = 0.35 + } + + province_modifier = { + monthly_income = 2 + fort_level = 2 + defender_holding_advantage = 2 + stationed_maa_damage_mult = 0.05 + stationed_maa_toughness_mult = 0.10 + garrison_size = 0.15 + travel_danger = -15 + } + + next_building = portsmouth_royal_dockyard_02 + + ai_value = { + base = 100 + directive_to_build_economy_modifier = yes + culture_likely_to_fortify_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic + flag = travel_point_of_interest_martial +} + +portsmouth_royal_dockyard_02 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_swahili_port.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { has_innovation = innovation_windmills } + building_requirement_castle_city_church = { LEVEL = 03 } + } + + cost_gold = 800 + + county_holder_character_modifier = { + martial_per_prestige_level = 1 + embarkation_cost_mult = -0.25 + naval_movement_speed_mult = 0.25 + } + + county_modifier = { + tax_mult = 0.20 + development_growth = 0.20 + development_growth_factor = 0.15 + hostile_raid_time = 0.50 + } + + province_modifier = { + monthly_income = 5 + fort_level = 4 + defender_holding_advantage = 6 + stationed_maa_damage_mult = 0.15 + stationed_maa_toughness_mult = 0.25 + garrison_size = 0.25 + travel_danger = -25 + } + + ai_value = { + base = 100 + culture_likely_to_fortify_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic + flag = travel_point_of_interest_martial +} + +########## +# Devonport +########## + +devonport_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_swahili_port.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = 350 + + county_holder_character_modifier = { + embarkation_cost_mult = -0.05 + naval_movement_speed_mult = 0.05 + } + + county_modifier = { + tax_mult = 0.10 + development_growth = 0.10 + development_growth_factor = 0.10 + hostile_raid_time = 0.25 + } + + province_modifier = { + monthly_income = 1 + fort_level = 1 + defender_holding_advantage = 2 + stationed_maa_damage_mult = 0.10 + stationed_maa_toughness_mult = 0.10 + garrison_size = 0.10 + travel_danger = -10 + } + + next_building = devonport_02 + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic + flag = travel_point_of_interest_martial +} + +devonport_02 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_swahili_port.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { has_innovation = innovation_windmills } + building_requirement_castle_city_church = { LEVEL = 03 } + } + + cost_gold = 800 + + county_holder_character_modifier = { + martial_per_prestige_level = 1 + embarkation_cost_mult = -0.15 + naval_movement_speed_mult = 0.15 + } + + county_modifier = { + tax_mult = 0.15 + development_growth = 0.15 + development_growth_factor = 0.15 + hostile_raid_time = 0.35 + } + + province_modifier = { + monthly_income = 3 + fort_level = 3 + defender_holding_advantage = 3 + stationed_maa_damage_mult = 0.20 + stationed_maa_toughness_mult = 0.20 + garrison_size = 0.20 + travel_danger = -20 + } + + ai_value = { + base = 100 + culture_likely_to_fortify_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic + flag = travel_point_of_interest_martial +} + +########## +# Stonehenge +########## + +stonehenge_01 = { + + asset = { + type = pdxmesh + name = "building_special_stonehenge_mesh" + } + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_stonehenge.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + cost_gold = 3000 + + character_modifier = { + learning = 2 + monthly_learning_lifestyle_xp_gain_mult = 0.15 + faith_conversion_piety_cost_mult = -0.2 + } + + on_complete = { + #Regular Mandala Boon + mandala_built_piety_duchy_building_t3_effect = yes + } + + ai_value = { + base = 100 + ai_pious_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_religious +} + +########## +# Cardiff Castle +########## + +cardiff_castle_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_kassiopi_castle.dds" + + can_construct = { + } + + cost_gold = 1000 + + character_modifier = { + monthly_dynasty_prestige = 0.10 + monthly_dynasty_prestige_mult = 0.10 + martial_per_prestige_level = 1 + } + + county_modifier = { + tax_mult = 0.10 + } + + province_modifier = { + defender_holding_advantage = 4 + fort_level = 2 + stationed_maa_damage_mult = 0.20 + stationed_maa_toughness_mult = 0.20 + stationed_siege_weapon_siege_value_mult = 0.10 + travel_danger = -20 + } + + max_garrison = 500 + + ai_value = { + base = 100 + culture_likely_to_fortify_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_martial +} + +########## +# Krowfymply Castle +########## + +krowfymply_castle_01 = { + + construction_time = very_slow_construction_time + + type_icon = "alcazar_segovia.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + } + + cost_gold = 1000 + + county_holder_character_modifier = { + martial_per_influence_level = 1 + monthly_influence = 0.35 + monthly_influence_mult = 0.10 + } + + county_modifier = { + tax_mult = 0.10 + development_growth = 0.10 + development_growth_factor = 0.10 + } + + province_modifier = { + defender_holding_advantage = 1 + fort_level = 2 + monthly_income = 1 + stationed_maa_damage_mult = 0.10 + stationed_maa_toughness_mult = 0.10 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + next_building = krowfymply_castle_02 + + type = special + + flag = travel_point_of_interest_martial +} + +krowfymply_castle_02 = { + + construction_time = very_slow_construction_time + + type_icon = "alcazar_segovia.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { has_innovation = innovation_castle_baileys } + building_requirement_castle_city_church = { LEVEL = 03 } + } + + cost_gold = 1000 + + county_holder_character_modifier = { + martial_per_influence_level = 1 + monthly_influence = 1 + monthly_influence_mult = 0.25 + } + + county_modifier = { + tax_mult = 0.20 + development_growth = 0.20 + development_growth_factor = 0.15 + } + + province_modifier = { + defender_holding_advantage = 4 + fort_level = 4 + monthly_income = 3.50 + stationed_maa_damage_mult = 0.25 + stationed_maa_toughness_mult = 0.25 + stationed_siege_weapon_siege_value_mult = 0.10 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_martial +} + +########## +# Fortified Port of Bristol +########## + +fortified_port_of_bristol_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_drassanes.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { has_innovation = innovation_manorialism } + scope:holder = { highest_held_title_tier >= tier_duchy } + } + + cost_gold = 350 + + county_holder_character_modifier = { + embarkation_cost_mult = -0.05 + naval_movement_speed_mult = 0.05 + } + + county_modifier = { + tax_mult = 0.10 + development_growth = 0.10 + development_growth_factor = 0.10 + hostile_raid_time = 0.25 + } + + province_modifier = { + monthly_income = 1 + fort_level = 1 + defender_holding_advantage = 2 + stationed_maa_damage_mult = 0.05 + stationed_maa_toughness_mult = 0.05 + garrison_size = 0.10 + travel_danger = -10 + } + + next_building = fortified_port_of_bristol_02 + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic +} + +fortified_port_of_bristol_02 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_drassanes.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { has_innovation = innovation_windmills } + scope:holder = { highest_held_title_tier >= tier_duchy } + building_requirement_castle_city_church = { LEVEL = 02 } + } + + cost_gold = 800 + + county_holder_character_modifier = { + embarkation_cost_mult = -0.10 + naval_movement_speed_mult = 0.10 + } + + county_modifier = { + tax_mult = 0.20 + development_growth = 0.15 + development_growth_factor = 0.20 + hostile_raid_time = 0.35 + } + + province_modifier = { + monthly_income = 3 + fort_level = 2 + defender_holding_advantage = 3 + stationed_maa_damage_mult = 0.10 + stationed_maa_toughness_mult = 0.10 + garrison_size = 0.15 + travel_danger = -15 + } + + next_building = fortified_port_of_bristol_03 + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic +} + +fortified_port_of_bristol_03 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_drassanes.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + can_construct = { + scope:holder.culture = { has_innovation = innovation_windmills } + scope:holder = { highest_held_title_tier >= tier_duchy } + building_requirement_castle_city_church = { LEVEL = 03 } + } + + cost_gold = 1500 + + county_holder_character_modifier = { + stewardship_per_prestige_level = 1 + embarkation_cost_mult = -0.20 + naval_movement_speed_mult = 0.20 + } + + county_modifier = { + tax_mult = 0.35 + development_growth = 0.25 + development_growth_factor = 0.35 + hostile_raid_time = 0.50 + } + + province_modifier = { + monthly_income = 7.50 + fort_level = 4 + defender_holding_advantage = 5 + stationed_maa_damage_mult = 0.15 + stationed_maa_toughness_mult = 0.15 + garrison_size = 0.25 + travel_danger = -20 + } + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic +} + +########## +# Belfast Cathedral +########## + +belfast_cathedral_01 = { + + effect_desc = { + triggered_desc = { + trigger = { has_dlc_feature = legends_of_the_dead } + desc = building_funeral_effect_desc + } + } + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_cologne_cathedral.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + is_enabled = { + scope:holder = { + OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } + } + } + + cost_gold = 750 + + county_holder_character_modifier = { + monthly_piety = 0.25 + monthly_piety_gain_mult = 0.15 + holy_order_hire_cost_mult = -0.10 + clergy_opinion = 5 + } + + county_modifier = { + tax_mult = 0.10 + development_growth_factor = 0.10 + development_growth = 0.10 + county_opinion_add = 5 + } + + province_modifier = { + monthly_income = 1.50 + } + + ai_value = { + base = 100 + ai_pious_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_religious +} + +########## +# Glasgow Cathedral +########## + +glasgow_cathedral_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_cologne_cathedral.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + is_enabled = { + custom_description = { + OR = { + scope:holder = { + OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } + } + custom_description = { + text = holy_site_building_trigger + barony = { + is_holy_site_of = scope:holder.faith + } + } + } + } + } + + cost_gold = 1000 + + character_modifier = { + monthly_piety = 0.20 + monthly_piety_gain_mult = 0.20 + holy_order_hire_cost_mult = -0.10 + clergy_opinion = 10 + } + + county_modifier = { + tax_mult = 0.15 + development_growth_factor = 0.15 + development_growth = 0.15 + county_opinion_add = 5 + } + + province_modifier = { + monthly_income = 2 + } + + ai_value = { + base = 100 + ai_pious_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_religious +} + +########## +# Oxford University +########## + +oxford_university_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_cluny_abbey.dds" + + can_construct_potential = { + scope:holder = { + highest_held_title_tier >= tier_duchy + prestige_level >= 4 + } + county = { + development_level >=30 + } + } + + cost_gold = 1500 + + effect_desc = { + desc = unlocks_building_desc + triggered_desc = { + trigger = { has_dlc_feature = tours_and_tournaments } + desc = university_toto_effect_desc + } + triggered_desc = { + trigger = { has_dlc_feature = royal_court } + desc = university_roco_effect_desc + } + desc = university_effect_desc + } + + county_holder_character_modifier = { + learning_per_piety_level = 1 + intrigue_per_prestige_level = 1 + monthly_dynasty_prestige = 0.30 + prestige_level_impact_mult = 0.10 + monthly_lifestyle_xp_gain_mult = 0.15 + cultural_head_fascination_mult = 0.10 + } + + county_modifier = { + development_growth = 0.25 + development_growth_factor = 0.20 + } + + province_modifier = { + monthly_income = 2 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_learning + flag = special_university +} + +########## +# Cambridge University +########## + +cambridge_university_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_temple_of_uppsala.dds" + + can_construct_potential = { + scope:holder = { + highest_held_title_tier >= tier_duchy + prestige_level >= 4 + } + county = { + development_level >=30 + } + } + + cost_gold = 1500 + + effect_desc = { + desc = unlocks_building_desc + triggered_desc = { + trigger = { has_dlc_feature = tours_and_tournaments } + desc = university_toto_effect_desc + } + triggered_desc = { + trigger = { has_dlc_feature = royal_court } + desc = university_roco_effect_desc + } + desc = university_effect_desc + } + + county_holder_character_modifier = { + stewardship_per_prestige_level = 1 + monthly_prestige = 0.30 + prestige_level_impact_mult = 0.15 + monthly_lifestyle_xp_gain_mult = 0.1 + cultural_head_fascination_mult = 0.1 + } + + county_modifier = { + development_growth = 0.2 + development_growth_factor = 0.2 + } + + province_modifier = { + monthly_income = 0.50 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_learning + flag = special_university +} + +########## +# Liverpool University +########## + +livepool_university_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_temple_of_uppsala.dds" + + can_construct_potential = { + scope:holder = { + highest_held_title_tier >= tier_duchy + prestige_level >= 4 + } + county = { + development_level >=30 + } + } + + cost_gold = 1500 + + effect_desc = { + desc = unlocks_building_desc + triggered_desc = { + trigger = { has_dlc_feature = tours_and_tournaments } + desc = university_toto_effect_desc + } + triggered_desc = { + trigger = { has_dlc_feature = royal_court } + desc = university_roco_effect_desc + } + desc = university_effect_desc + } + + county_holder_character_modifier = { + martial_per_influence_level = 1 + monthly_influence = 0.30 + monthly_influence_mult = 0.10 + monthly_lifestyle_xp_gain_mult = 0.15 + cultural_head_fascination_mult = 0.05 + } + + county_modifier = { + development_growth = 0.25 + development_growth_factor = 0.20 + } + + province_modifier = { + monthly_income = 1 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_learning + flag = special_university +} + +########## +# British coal mines +########## + +#coal_mines_01 = { +# effect_desc = mines_effect_desc +# +# asset = { +# type = pdxmesh +# name = "building_special_mines_mesh" +# } +# +# type_icon = "icon_structure_mines.dds" +# +# can_construct_potential = { +# building_requirement_tribal = no +# } +# +# can_construct = { +# building_requirement_castle_city_church = { LEVEL = 01 } +# culture = { +# has_innovation = innovation_crop_rotation +# } +# } +# +# cost_gold = 400 +# +# county_modifier = { +# tax_mult = 0.025 +# development_growth_factor = 0.025 +# } +# +# province_modifier = { +# monthly_income = 0.25 +# stationed_airship_damage_mult = 0.10 +# stationed_airship_toughness_mult = 0.10 +# stationed_siege_weapon_siege_value_mult = 0.15 +# stationed_gunpowder_damage_mult = 0.15 +# stationed_gunpowder_toughness_mult = 0.15 +# } +# +# province_culture_modifier = { +# parameter = cupellation_mine_building_bonuses +# tax_mult = innovation_cupellation_mine_tax_bonus_value +# } +# +# next_building = coal_mines_02 +# +# ai_value = { +# base = 100 +# } +# +# type = special +# +# flag = travel_point_of_interest_economic +# flag = special_mine +#} +# +#coal_mines_02 = { +# effect_desc = mines_effect_desc +# +# asset = { +# type = pdxmesh +# name = "building_special_mines_mesh" +# } +# +# type_icon = "icon_structure_mines.dds" +# +# can_construct_potential = { +# building_requirement_tribal = no +# } +# +# can_construct = { +# building_requirement_castle_city_church = { LEVEL = 02 } +# culture = { +# has_innovation = innovation_manorialism +# } +# } +# +# cost_gold = 500 +# +# county_modifier = { +# tax_mult = 0.05 +# development_growth_factor = 0.05 +# } +# +# province_modifier = { +# monthly_income = 0.75 +# stationed_airship_damage_mult = 0.15 +# stationed_airship_toughness_mult = 0.15 +# stationed_siege_weapon_siege_value_mult = 0.25 +# stationed_gunpowder_damage_mult = 0.25 +# stationed_gunpowder_toughness_mult = 0.25 +# } +# +# province_culture_modifier = { +# parameter = cupellation_mine_building_bonuses +# tax_mult = innovation_cupellation_mine_tax_bonus_value +# } +# +# next_building = coal_mines_03 +# +# ai_value = { +# base = 100 +# } +# +# type = special +# +# flag = travel_point_of_interest_economic +# flag = special_mine +#} +# +#coal_mines_03 = { +# effect_desc = mines_effect_desc +# +# asset = { +# type = pdxmesh +# name = "building_special_mines_mesh" +# } +# +# type_icon = "icon_structure_mines.dds" +# +# can_construct_potential = { +# building_requirement_tribal = no +# } +# +# can_construct = { +# building_requirement_castle_city_church = { LEVEL = 03 } +# culture = { +# has_innovation = innovation_windmills +# } +# } +# +# cost_gold = 600 +# +# county_modifier = { +# tax_mult = 0.075 +# development_growth_factor = 0.075 +# } +# +# province_modifier = { +# monthly_income = 1.50 +# stationed_airship_damage_mult = 0.25 +# stationed_airship_toughness_mult = 0.25 +# stationed_siege_weapon_siege_value_mult = 0.40 +# stationed_gunpowder_damage_mult = 0.40 +# stationed_gunpowder_toughness_mult = 0.40 +# } +# +# province_culture_modifier = { +# parameter = cupellation_mine_building_bonuses +# tax_mult = innovation_cupellation_mine_tax_bonus_value +# } +# +# next_building = coal_mines_04 +# +# ai_value = { +# base = 100 +# } +# +# type = special +# +# flag = travel_point_of_interest_economic +# flag = special_mine +#} +# +#coal_mines_04 = { +# effect_desc = mines_effect_desc +# +# asset = { +# type = pdxmesh +# name = "building_special_mines_mesh" +# } +# +# type_icon = "icon_structure_mines.dds" +# +# can_construct_potential = { +# building_requirement_tribal = no +# } +# +# can_construct = { +# building_requirement_castle_city_church = { LEVEL = 04 } +# culture = { +# has_innovation = innovation_cranes +# } +# } +# +# cost_gold = 700 +# county_modifier = { +# tax_mult = 0.10 +# development_growth_factor = 0.10 +# } +# +# province_modifier = { +# monthly_income = 2.50 +# stationed_airship_damage_mult = 0.50 +# stationed_airship_toughness_mult = 0.50 +# stationed_siege_weapon_siege_value_mult = 0.75 +# stationed_gunpowder_damage_mult = 0.75 +# stationed_gunpowder_toughness_mult = 0.75 +# } +# +# province_culture_modifier = { +# parameter = cupellation_mine_building_bonuses +# tax_mult = innovation_cupellation_mine_tax_bonus_value +# } +# +# ai_value = { +# base = 100 +# } +# +# type = special +# +# flag = travel_point_of_interest_economic +# flag = special_mine +#} + +########## +# Giant's Causeway +########## + +giants_causeway_01 = { + + asset = { + type = pdxmesh + name = "fp2_building_special_rock_of_gibraltar_01_a_mesh" + } + + construction_time = very_slow_construction_time + + type_icon = "gibraltar.dds" + + can_construct_potential = { + } + + cost_gold = 300 + + character_modifier = { + stewardship = 1 + learning = 1 + diplomatic_range_mult = 0.2 + monthly_prestige = 0.15 + } + + county_modifier = { + development_growth_factor = 0.1 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_natural_feature + flag = is_mountain +} + +########## +# Loch Ness +########## + +loch_ness_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_maharloo_lake.dds" + + can_construct_potential = { + } + + cost_gold = 300 + + character_modifier = { + intrigue = 3 + stress_gain_mult = 0.35 + } + + county_modifier = { + county_opinion_add = -5 + development_growth = -0.05 + tax_mult = -0.05 + } + + province_modifier = { + travel_danger = 20 + build_gold_cost = 0.05 + build_speed = 0.05 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_natural_feature # lake +} + +########## +# Hadrian's Wall +########## + +hadrians_wall_01 = { + construction_time = very_slow_construction_time + + type_icon = "icon_structure_hadrians_wall.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + cost_gold = 3000 + + province_modifier = { + build_gold_cost = -0.05 + travel_danger = -5 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_martial_minor +} + ######################################## # GERMANIA ######################################## @@ -6907,6 +9000,11 @@ croke_park_02 = { ######################################## # SPECIAL MILITARY BUILDINGS ######################################## + +########## +# Chemistry Workshop - unlocks chemical weapons +########## + chemistry_workshop_01 = { construction_time = standard_construction_time effect_desc = chemistry_workshop_1_effect_desc @@ -7081,6 +9179,10 @@ chemistry_workshop_04 = { } } +########## +# Air Dock - unlocks airships +########## + air_dock_01 = { construction_time = standard_construction_time effect_desc = air_dock_1_effect_desc diff --git a/common/buildings/temple_citadel_buildings.txt b/common/buildings/temple_citadel_buildings.txt index 81e9a9be..ffb304b0 100644 --- a/common/buildings/temple_citadel_buildings.txt +++ b/common/buildings/temple_citadel_buildings.txt @@ -689,6 +689,10 @@ temple_citadel_01 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -1 + } flag = temple_citadel type_icon = "tgp_icon_building_mandala_capital_tier_02.dds" @@ -1570,6 +1574,10 @@ temple_citadel_02 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -2 + } flag = temple_citadel on_complete = { @@ -2364,6 +2372,10 @@ temple_citadel_03 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -3 + } flag = temple_citadel on_complete = { @@ -3136,6 +3148,10 @@ temple_citadel_04 = { character_modifier = { men_at_arms_cap = 1 } + county_culture_modifier = { + parameter = use_farmer_republics + county_fertility_decline_add = -4 + } flag = temple_citadel on_complete = { diff --git a/common/casus_belli_types/00_religious_war.txt b/common/casus_belli_types/00_religious_war.txt new file mode 100644 index 00000000..84e68189 --- /dev/null +++ b/common/casus_belli_types/00_religious_war.txt @@ -0,0 +1,4546 @@ +minor_religious_war = { + icon = minor_religious_war + group = religious + + defender_faith_can_join = yes + + 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 = { + scope:attacker.faith = { + NOT = { has_doctrine_parameter = unreformed } + NOT = { has_doctrine_parameter = holy_wars_forbidden } + } + NOR = { + government_has_flag = government_is_landless_adventurer + government_has_flag = government_is_nomadic + government_has_flag = government_is_celestial + } + } + + allowed_for_character_display_regardless = { + trigger_if = { + limit = { + highest_held_title_tier >= tier_kingdom + } + NOT = { piety_level = -1 } + } + trigger_else = { + trigger_if = { + limit = { + is_alive = yes + has_variable_list = humsacd_hofs + is_target_in_variable_list = { + name = humsacd_hofs + target = scope:attacker.faith + } + } + trigger_if = { + limit = { + OR = { + culture = { + has_cultural_parameter = cb_lower_piety_level_requirement + } + # Iberian Struggle Hostility Reward + house ?= { + OR = { + has_house_modifier = fp2_struggle_hostility_house_faith_modifier + has_house_modifier = fp2_struggle_hostility_house_combined_modifier + } + } + } + } + piety_level >= 0 + } + trigger_else = { + piety_level >= 0 + } + } + trigger_else = { + trigger_if = { + limit = { + OR = { + culture = { + has_cultural_parameter = cb_lower_piety_level_requirement + } + # Iberian Struggle Hostility Reward + house ?= { + OR = { + has_house_modifier = fp2_struggle_hostility_house_faith_modifier + has_house_modifier = fp2_struggle_hostility_house_combined_modifier + } + } + } + } + piety_level >= 0 + } + trigger_else = { + piety_level >= 1 + } + } + } + tgp_japan_offensive_wars_ban_trigger = yes + } + + allowed_against_character = { + scope:attacker = { + faith = { + faith_hostility_level = { + target = scope:defender.faith + value >= religious_cb_enabled_hostility_level + } + } + ALL_FALSE = { + top_liege = scope:defender.top_liege + liege = scope:defender + } + } + } + target_titles = neighbor_land_or_water + target_title_tier = all + target_de_jure_regions_above = yes + ignore_effect = change_title_holder + + valid_to_start = { + scope:target = { + tier = tier_county + is_landless_type_title = no + } + # Filter for struggles + trigger_if = { + limit = { + scope:defender = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + } + } + } + are_holy_wars_disabled_in_struggle_phase_trigger = yes + } + are_holy_wars_disabled_by_struggle_conciliation_trigger = no # Disabled against other involved faiths in FP2 Conciliation ending + + } + + should_invalidate = { + OR = { + NOT = { + any_in_list = { + list = target_titles + any_in_de_jure_hierarchy = { + tier = tier_county + holder = { + OR = { + this = scope:defender + target_is_liege_or_above = scope:defender + } + } + } + } + } + #Faith change does not immediately invalidate, it's run through event war_event.3100 + scope:war = { exists = var:invalidate_defender_faith_change } + scope:war = { exists = var:invalidate_attacker_faith_change } + } + } + + on_invalidated_desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { + any_in_list = { + list = target_titles + any_in_de_jure_hierarchy = { + tier = tier_county + holder = { + OR = { + this = scope:defender + target_is_liege_or_above = scope:defender + } + } + } + } + } + } + desc = msg_religious_war_invalidation_region_message + } + triggered_desc = { + trigger = { + scope:war = { + OR = { + exists = var:invalidate_defender_faith_change + exists = var:invalidate_attacker_faith_change + } + } + } + desc = msg_religious_war_invalidated_hostility_level_message + } + } + } + + on_invalidated = { + } + + ai_score_mult = { + value = 1 + # Increase odds if the character is a vassal with Ghazi Contract + add = { + if = { + limit = { + scope:attacker = { + top_liege != this + vassal_contract_has_flag = vassal_contract_cheaper_religious_war + } + } + add = 1 + } + } + + # As a feudal gov, do not attack owner of tribal holdings if you have a tribal holding to convert already + add = { + every_in_list = { + list = target_titles + if = { + limit = { feudal_clan_tribal_conquest_constraints = yes } + add = -1000 + } + } + } + + # Holy War are limited to connected neighbour to limit big empire expansions over weak realms. + add = { + if = { + limit = { religious_war_vassals_constraints = yes } + add = -1000 + } + } + # HOUSE RELATIONS + add = house_relation_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 + # Tell the Romans to stop going adventuring into the steppe for no gods-damned reason. + multiply = byzantium_conquests_ai_score_value + + add = frankokratia_leader_protection_value #Set back to 0. Declaring war on the frankokratia leader can really ruin the whole thing + } + + cost = { + piety = { + add = { + value = 100 + desc = CB_BASE_COST + } + multiply = common_cb_piety_cost_multiplier + multiply = holy_war_cb_piety_cost_multiplier + if = { + limit = { + scope:attacker = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + multiply = accolade_piety_reduction_value + min = 10 + } + if = { + limit = { + scope:attacker = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + multiply = accolade_piety_reduction_value_high + min = 10 + } + } + } + + on_declaration = { + on_declared_war = yes + } + + on_victory_desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:attacker.faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + } + desc = religious_war_victory_desc_doctrine_pluralism + } + desc = religious_war_victory_desc + } + } + + on_victory = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_victory_effect = yes + + #EP2 accolade glory gain from winning against higher ranked enemy + scope:attacker = { accolade_attacker_war_end_glory_gain_low_effect = yes } + + create_title_and_vassal_change = { + type = conquest_holy_war + save_scope_as = change + add_claim_on_loss = yes + } + + # EP3 Laamp possibility warning + scope:defender = { ep3_war_loss_adventurer_tt_effect = yes } + + # go through the dejure hierarchy under target titles, transfer titles with same or worse tolerance holders (their religion equaly or less tolerated than the defender's), + # take the holder as vassal otherwise and don't go deeper + every_in_list = { + list = target_titles + custom_tooltip = RELIGIOUS_CB_TITLE + + conquest_cb_title_transfer = { + RELIGIOUS_WAR = yes + } + } + + every_in_list = { + list = vassals_taken + change_liege = { + liege = scope:attacker + change = scope:change + } + } + + every_in_list = { + list = titles_taken + change_title_holder = { + holder = scope:attacker + change = scope:change + take_baronies = yes + } + } + + resolve_title_and_vassal_change = scope:change + + # 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 = religious_cb_ally_prestige_county + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # Piety Progress for the Attacker + every_in_list = { + list = target_titles + scope:attacker = { + add_piety_experience = { + add = religious_cb_piety_gain_county + if = { + limit = { + scope:attacker.faith = { + has_doctrine_parameter = bonus_holy_war_piety_active + } + } + multiply = 1.5 + } + } + } + } + + ordered_in_list = { + list = target_titles + order_by = tier + max = 1 + + save_scope_as = war_goal_title + } + + scope:attacker.faith = { + change_fervor = { + value = -1 + desc = fervor_loss_religious_war + } + } + scope:defender.faith = { + change_fervor = { + value = 3 + desc = fervor_gain_religious_war + } + } + + # Truce + add_truce_attacker_victory_effect = yes + + # FP1: note the victory for future memorialisation via stele (if applicable). + scope:attacker = { fp1_remember_recent_conquest_victory_effect = yes } + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_victory_effects = yes + } + + on_white_peace_desc = { + desc = religious_war_white_peace_desc + } + + on_white_peace = { + scope:attacker = { show_pow_release_message_effect = yes } + + # 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 # Not important as the scales are identical + FAME_BASE = religious_cb_ally_prestige_county + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # Truce + add_truce_white_peace_effect = yes + + scope:attacker = { + add_piety = religious_cb_piety_white_peace + stress_impact = { + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } + } + + scope:defender = { + stress_impact = { + arrogant = medium_stress_impact_gain + } + } + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + } + + on_defeat_desc = { + desc = religious_war_defeat_desc + } + + on_defeat = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_defeat_effect = yes + + scope:defender = { + mandala_peacemaker_perk_serenity_effect = yes + #EP2 accolade glory gain for winning against higher ranked enemy + accolade_defender_war_end_glory_gain_high_effect = yes + } + + scope:attacker = { + every_vassal = { + limit = { faith = scope:attacker.faith } + custom = all_attackers_vassals_same_faith + add_opinion = { + modifier = liege_lost_declared_religious_war + target = scope:attacker + } + } + } + + # 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 = religious_cb_ally_prestige_county + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # piety change + every_in_list = { + list = target_titles + + scope:defender = { + add_piety = { + add = religious_cb_piety_gain_county + if = { + limit = { + scope:defender.faith = { + has_doctrine_parameter = bonus_holy_war_piety_active + } + } + multiply = 1.5 + } + } + } + + scope:attacker = { + if = { + limit = { + monthly_character_income > 0 + } + pay_short_term_income = { + years = 2 + target = scope:defender + } + } + else = { + pay_short_term_gold = { + target = scope:defender + gold = medium_gold_value + } + } + } + } + + # Truce + add_truce_attacker_defeat_effect = yes + + scope:attacker = { + save_temporary_scope_as = loser + } + on_lost_aggression_war_discontent_loss = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_defeat_effects = yes + } + + on_primary_attacker_death = inherit + on_primary_defender_death = inherit + + transfer_behavior = transfer + + attacker_allies_inherit = yes + defender_allies_inherit = yes + + war_name = "RELIGIOUS_WAR_NAME" + cb_name = "HOLY_WAR_COUNTY_NAME" + + is_holy_war = yes + + interface_priority = 80 + + use_de_jure_wargoal_only = yes + + attacker_wargoal_percentage = 0.8 + + max_defender_score_from_occupation = 150 + max_attacker_score_from_occupation = 150 + + max_ai_diplo_distance_to_title = 500 +} + +religious_war = { + icon = minor_religious_war + group = religious + + defender_faith_can_join = yes + + 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 = { + scope:attacker.faith = { + NOT = { has_doctrine_parameter = unreformed } + NOT = { has_doctrine_parameter = holy_wars_forbidden } + } + NOR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_celestial + } + } + + allowed_for_character_display_regardless = { + trigger_if = { + limit = { + highest_held_title_tier >= tier_kingdom + } + NOT = { piety_level = -1 } + } + trigger_else = { + trigger_if = { + limit = { + is_alive = yes + has_variable_list = humsacd_hofs + is_target_in_variable_list = { + name = humsacd_hofs + target = scope:attacker.faith + } + } + trigger_if = { + limit = { + OR = { + culture = { + has_cultural_parameter = cb_lower_piety_level_requirement + } + # Iberian Struggle Hostility Reward + house ?= { + OR = { + has_house_modifier = fp2_struggle_hostility_house_faith_modifier + has_house_modifier = fp2_struggle_hostility_house_combined_modifier + } + } + } + } + piety_level >= 0 + } + trigger_else = { + piety_level >= 1 + } + } + trigger_else = { + trigger_if = { + limit = { + OR = { + culture = { + has_cultural_parameter = cb_lower_piety_level_requirement + } + # Iberian Struggle Hostility Reward + house ?= { + OR = { + has_house_modifier = fp2_struggle_hostility_house_faith_modifier + has_house_modifier = fp2_struggle_hostility_house_combined_modifier + } + } + } + } + piety_level >= 1 + } + trigger_else = { + piety_level >= 2 + } + } + } + tgp_japan_offensive_wars_ban_trigger = yes + } + + allowed_against_character = { + scope:attacker = { + faith = { + faith_hostility_level = { + target = scope:defender.faith + value >= religious_cb_enabled_hostility_level + } + } + ALL_FALSE = { + top_liege = scope:defender.top_liege + liege = scope:defender + } + } + } + target_titles = neighbor_land_or_water + target_title_tier = all + target_de_jure_regions_above = yes + ignore_effect = change_title_holder + + valid_to_start = { + scope:target = { + tier = tier_duchy + is_landless_type_title = no + } + scope:target = { + trigger_if = { + limit = { + scope:attacker = { + is_ai = yes + } + } + any_in_de_jure_hierarchy = { + continue = { tier > tier_county } + count >= 2 + tier = tier_county + holder ?= { + OR = { + this = scope:defender + is_vassal_or_below_of = scope:defender + } + } + } + } + } + # Filter for struggles + trigger_if = { + limit = { + scope:defender = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + } + } + } + are_holy_wars_disabled_in_struggle_phase_trigger = yes + } + are_holy_wars_disabled_by_struggle_conciliation_trigger = no # Disabled against other involved faiths in FP2 Conciliation ending + + } + + should_invalidate = { + OR = { + NOT = { + any_in_list = { + list = target_titles + any_in_de_jure_hierarchy = { + tier = tier_county + holder = { + OR = { + this = scope:defender + target_is_liege_or_above = scope:defender + } + } + } + } + } + #Faith change does not immediately invalidate, it's run through event war_event.3100 + scope:war = { exists = var:invalidate_defender_faith_change } + scope:war = { exists = var:invalidate_attacker_faith_change } + } + } + + on_invalidated_desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { + any_in_list = { + list = target_titles + any_in_de_jure_hierarchy = { + tier = tier_county + holder = { + OR = { + this = scope:defender + target_is_liege_or_above = scope:defender + } + } + } + } + } + } + desc = msg_religious_war_invalidation_region_message + } + triggered_desc = { + trigger = { + scope:war = { + OR = { + exists = var:invalidate_defender_faith_change + exists = var:invalidate_attacker_faith_change + } + } + } + desc = msg_religious_war_invalidated_hostility_level_message + } + } + } + + on_invalidated = { + + } + + cost = { + piety = { + add = { + value = 200 + desc = CB_BASE_COST + } + multiply = common_cb_piety_cost_multiplier + multiply = holy_war_cb_piety_cost_multiplier + # Half price for mean Iberians + if = { + limit = { + scope:attacker.house = { + OR = { + has_house_modifier = fp2_struggle_hostility_house_faith_modifier + has_house_modifier = fp2_struggle_hostility_house_combined_modifier + } + } + any_in_global_list = { + variable = fp2_struggle_ending_faith_list + this = scope:attacker.faith + } + any_in_global_list = { + variable = fp2_struggle_ending_faith_list + this = scope:defender.faith + } + } + divide = { + value = 2 + desc = CB_COST_FP2_STRUGGLE_HOSTILITY_FAITH_DISCOUNT + } + } + # Double price for failure Iberians + if = { + limit = { + has_global_variable = fp2_struggle_compromise_ending + any_in_global_list = { + variable = fp2_struggle_ending_faith_list + this = scope:attacker.faith + } + any_in_global_list = { + variable = fp2_struggle_ending_faith_list + this = scope:defender.faith + } + } + multiply = { + value = 2 + desc = CB_COST_FP2_STRUGGLE_COMPROMISE_MULTIPLIER + } + } + if = { + limit = { + scope:attacker = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + multiply = accolade_piety_reduction_value + min = 25 + } + if = { + limit = { + scope:attacker = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + multiply = accolade_piety_reduction_value_high + min = 25 + } + } + } + + on_declaration = { + on_declared_war = yes + } + + on_victory_desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:attacker.faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + } + desc = religious_war_victory_desc_doctrine_pluralism + } + desc = religious_war_victory_desc + } + } + + on_victory = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_victory_effect = yes + + #EP2 accolade glory gain for winning against higher ranked enemy + scope:attacker = { accolade_attacker_war_end_glory_gain_med_effect = yes } + + create_title_and_vassal_change = { + type = conquest_holy_war + save_scope_as = change + add_claim_on_loss = yes + } + + # EP3 Laamp possibility warning + scope:defender = { ep3_war_loss_adventurer_tt_effect = yes } + + # go through the dejure hierarchy under target titles, transfer titles with same or worse tolerance holders (their religion equaly or less tolerated than the defender's), + # take the holder as vassal otherwise and don't go deeper + every_in_list = { + list = target_titles + custom_tooltip = RELIGIOUS_CB_TITLE + + conquest_cb_title_transfer = { + RELIGIOUS_WAR = yes + } + } + + every_in_list = { + list = vassals_taken + change_liege = { + liege = scope:attacker + change = scope:change + } + } + + every_in_list = { + list = titles_taken + change_title_holder = { + holder = scope:attacker + change = scope:change + take_baronies = yes + } + } + + + resolve_title_and_vassal_change = scope:change + + # 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:attacker + FAME_BASE = religious_cb_ally_prestige_duchy + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # Piety Progress for the Attacker + every_in_list = { + list = target_titles + scope:attacker = { + add_piety_experience = { + add = religious_cb_piety_gain_duchy + if = { + limit = { + scope:attacker.faith = { + has_doctrine_parameter = bonus_holy_war_piety_active + } + } + multiply = 1.5 + } + } + } + } + + ordered_in_list = { + list = target_titles + order_by = tier + max = 1 + + save_scope_as = war_goal_title + } + + scope:attacker.faith = { + change_fervor = { + value = -2 + desc = fervor_loss_religious_war + } + } + scope:defender.faith = { + change_fervor = { + value = 4 + desc = fervor_gain_religious_war + } + } + + # Truce + add_truce_attacker_victory_effect = yes + + # FP1: note the victory for future memorialisation via stele (if applicable). + scope:attacker = { fp1_remember_recent_conquest_victory_effect = yes } + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_victory_effects = yes + } + + on_white_peace_desc = { + desc = religious_war_white_peace_desc + } + + on_white_peace = { + scope:attacker = { show_pow_release_message_effect = yes } + + #EP2 accolade glory gain for sort of winning + scope:defender = { accolade_defender_war_end_glory_gain_low_effect = yes } + + # 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:attacker # Not important as the scales are identical + FAME_BASE = religious_cb_ally_prestige_duchy + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # Truce + add_truce_white_peace_effect = yes + + scope:attacker = { + add_piety = religious_cb_piety_white_peace + stress_impact = { + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } + } + + scope:defender = { + stress_impact = { + arrogant = medium_stress_impact_gain + } + } + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + } + + on_defeat_desc = { + desc = religious_war_defeat_desc + } + + on_defeat = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_defeat_effect = yes + + scope:defender = { + mandala_peacemaker_perk_serenity_effect = yes + #EP2 accolade glory gain for winning against higher ranked enemy + accolade_defender_war_end_glory_gain_high_effect = yes + } + + # 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 = religious_cb_ally_prestige_duchy + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # piety change + every_in_list = { + list = target_titles + + scope:defender = { + add_piety = { + add = religious_cb_piety_gain_duchy + if = { + limit = { + scope:defender.faith = { + has_doctrine_parameter = bonus_holy_war_piety_active + } + } + multiply = 1.5 + } + } + } + + scope:attacker = { + if = { + limit = { + monthly_character_income > 0 + } + pay_short_term_income = { + years = 3 + target = scope:defender + } + } + else = { + pay_short_term_gold = { + target = scope:defender + gold = medium_gold_value + } + } + } + } + + scope:attacker = { + every_vassal = { + limit = { faith = scope:attacker.faith } + custom = all_attackers_vassals_same_faith + add_opinion = { + modifier = liege_lost_declared_religious_war + target = scope:attacker + } + } + } + + # Truce + add_truce_attacker_defeat_effect = yes + + scope:attacker = { + save_temporary_scope_as = loser + } + on_lost_aggression_war_discontent_loss = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_defeat_effects = yes + } + + on_primary_attacker_death = inherit + on_primary_defender_death = inherit + + transfer_behavior = transfer + + attacker_allies_inherit = yes + defender_allies_inherit = yes + + war_name = "RELIGIOUS_WAR_NAME" + cb_name = "HOLY_WAR_DUCHY_NAME" + + is_holy_war = yes + + interface_priority = 80 + + use_de_jure_wargoal_only = yes + + attacker_wargoal_percentage = 0.8 + + max_defender_score_from_occupation = 150 + max_attacker_score_from_occupation = 150 + + max_ai_diplo_distance_to_title = 500 + + ai_score_mult = { + value = 1 + # Increase odds if the character is a vassal with Ghazi Contract + add = { + if = { + limit = { + scope:attacker = { + top_liege != this + vassal_contract_has_flag = vassal_contract_cheaper_religious_war + } + } + add = 1 + } + } + + # As a feudal gov, do not attack owner of tribal holdings if you have a tribal holding to convert already + add = { + every_in_list = { + list = target_titles + if = { + limit = { feudal_clan_tribal_conquest_constraints = yes } + add = -1000 + } + } + } + + # Holy War are limited to connected neighbour to limit big empire expansions over weak realms. + add = { + if = { + limit = { religious_war_vassals_constraints = yes } + add = -1000 + } + } + # HOUSE RELATIONS + add = house_relation_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 + # Tell the Romans to stop going adventuring into the steppe for no gods-damned reason. + multiply = byzantium_conquests_ai_score_value + + add = frankokratia_leader_protection_value #Set back to 0. Declaring war on the frankokratia leader can really ruin the whole thing + } +} + +major_religious_war = { + icon = major_religious_war + group = religious + + defender_faith_can_join = yes + + combine_into_one = yes + should_show_war_goal_subview = yes + mutually_exclusive_titles = { always = yes } + + # Additional requirements to the defines in 00_casus_belli_groups.txt + allowed_for_character = { + scope:attacker.faith = { + NOT = { has_doctrine_parameter = unreformed } + } + NOR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_celestial + } + } + + allowed_for_character_display_regardless = { + trigger_if = { + limit = { + is_alive = yes + has_variable_list = humsacd_hofs + is_target_in_variable_list = { + name = humsacd_hofs + target = scope:attacker.faith + } + } + trigger_if = { + limit = { + OR = { + culture = { + has_cultural_parameter = cb_lower_piety_level_requirement + } + # Iberian Struggle Hostility Reward + AND = { + house ?= { + OR = { + has_house_modifier = fp2_struggle_hostility_house_faith_modifier + has_house_modifier = fp2_struggle_hostility_house_combined_modifier + } + } + } + } + } + piety_level >= 1 + } + trigger_else = { + piety_level >= 2 + } + } + trigger_else = { + trigger_if = { + limit = { + OR = { + culture = { + has_cultural_parameter = cb_lower_piety_level_requirement + } + # Iberian Struggle Hostility Reward + AND = { + 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 + } + } + trigger_if = { + limit = { + culture = { + NOT = { + has_cultural_parameter = no_limit_to_kingdom_level_holy_wars + } + } + } + custom_description = { + text = declared_major_religious_war_flag_tt + OR = { + has_character_flag = bonus_major_holy_war + NOT = { has_character_flag = declared_major_religious_war_flag } + } + } + } + tgp_japan_offensive_wars_ban_trigger = yes + } + + allowed_against_character = { + scope:attacker = { + faith = { + faith_hostility_level = { + target = scope:defender.faith + value >= religious_cb_enabled_hostility_level + } + } + ALL_FALSE = { + top_liege = scope:defender.top_liege + liege = scope:defender + } + } + } + target_titles = neighbor_land_or_water + target_title_tier = all + target_de_jure_regions_above = yes + ignore_effect = change_title_holder + + valid_to_start = { + scope:target = { + tier = tier_kingdom + is_landless_type_title = no + } + # Filter for struggles + trigger_if = { + limit = { + scope:defender = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + } + } + } + are_holy_wars_disabled_in_struggle_phase_trigger = yes + } + are_holy_wars_disabled_by_struggle_conciliation_trigger = no # Disabled against other involved faiths in FP2 Conciliation ending + + scope:target = { + trigger_if = { + limit = { + scope:attacker = { + is_ai = yes + } + } + any_in_de_jure_hierarchy = { + continue = { tier > tier_county } + count >= 5 + tier = tier_county + holder ?= { + OR = { + this = scope:defender + is_vassal_or_below_of = scope:defender + } + } + } + } + } + } + + should_invalidate = { + OR = { + NOT = { + any_in_list = { + list = target_titles + any_in_de_jure_hierarchy = { + tier = tier_county + holder = { + OR = { + this = scope:defender + target_is_liege_or_above = scope:defender + } + } + } + } + } + #Faith change does not immediately invalidate, it's run through event war_event.3100 + scope:war = { exists = var:invalidate_defender_faith_change } + scope:war = { exists = var:invalidate_attacker_faith_change } + } + } + + on_invalidated_desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { + any_in_list = { + list = target_titles + any_in_de_jure_hierarchy = { + tier = tier_county + holder = { + OR = { + this = scope:defender + target_is_liege_or_above = scope:defender + } + } + } + } + } + } + desc = msg_religious_war_invalidation_region_message + } + triggered_desc = { + trigger = { + scope:war = { + OR = { + exists = var:invalidate_defender_faith_change + exists = var:invalidate_attacker_faith_change + } + } + } + desc = msg_religious_war_invalidated_hostility_level_message + } + } + } + + on_invalidated = { + scope:attacker = { remove_character_flag = declared_major_religious_war_flag } + } + + cost = { + piety = { + add = { + value = 750 + desc = CB_BASE_COST + } + multiply = common_cb_piety_cost_multiplier + multiply = holy_war_cb_piety_cost_multiplier + if = { + limit = { + scope:attacker = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + multiply = accolade_piety_reduction_value + min = 90 + } + if = { + limit = { + scope:attacker = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + multiply = accolade_piety_reduction_value_high + min = 90 + } + } + } + + on_declaration = { + on_declared_war = yes + scope:attacker = { + if = { + limit = { + has_character_flag = bonus_major_holy_war + } + remove_character_flag = bonus_major_holy_war + } + else = { + add_character_flag = declared_major_religious_war_flag + } + } + } + + on_victory_desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:attacker.faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + } + desc = religious_war_victory_desc_doctrine_pluralism + } + desc = religious_war_victory_desc + } + triggered_desc = { + trigger = { + scope:attacker = { + is_local_player = yes + OR = { + AND = { + NOT = { has_character_flag = bonus_major_holy_war } + NOT = { has_character_flag = declared_major_religious_war_flag } + } + AND = { + has_character_flag = bonus_major_holy_war + has_character_flag = declared_major_religious_war_flag + } + } + } + } + desc = major_religious_war_warning_desc + } + } + + on_victory = { + scope:attacker = { + if = { + limit = { + has_variable = k_holy_war_crusader + } + add_trait = faith_warrior + } + } + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_victory_effect = yes + + #EP2 accolade glory gain for winning against higher ranked enemy + scope:attacker = { accolade_attacker_war_end_glory_gain_high_effect = yes } + + create_title_and_vassal_change = { + type = conquest_holy_war + save_scope_as = change + add_claim_on_loss = yes + } + + # EP3 Laamp possibility warning + scope:defender = { ep3_war_loss_adventurer_tt_effect = yes } + + # go through the dejure hierarchy under target titles, transfer titles with same or worse tolerance holders (their religion equaly or less tolerated than the defender's), + # take the holder as vassal otherwise and don't go deeper + every_in_list = { + list = target_titles + custom_tooltip = RELIGIOUS_CB_TITLE + + conquest_cb_title_transfer = { + RELIGIOUS_WAR = yes + } + } + + every_in_list = { + list = vassals_taken + change_liege = { + liege = scope:attacker + change = scope:change + } + } + + every_in_list = { + list = titles_taken + change_title_holder = { + holder = scope:attacker + change = scope:change + take_baronies = yes + } + } + + resolve_title_and_vassal_change = scope:change + + # 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:attacker + FAME_BASE = religious_cb_ally_prestige_kingdom + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # Piety Progress for the Attacker + every_in_list = { + list = target_titles + scope:attacker = { + add_piety_experience = { + add = religious_cb_piety_gain_kingdom + if = { + limit = { + scope:attacker.faith = { + has_doctrine_parameter = bonus_holy_war_piety_active + } + } + multiply = 1.5 + } + } + } + } + + ordered_in_list = { + list = target_titles + order_by = tier + max = 1 + + save_scope_as = war_goal_title + } + + scope:attacker.faith = { + change_fervor = { + value = -5 + desc = fervor_loss_religious_war + } + } + scope:defender.faith = { + change_fervor = { + value = 10 + desc = fervor_gain_religious_war + } + } + + # Truce + add_truce_attacker_victory_effect = yes + + # FP1: note the victory for future memorialisation via stele (if applicable). + scope:attacker = { fp1_remember_recent_conquest_victory_effect = yes } + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_victory_effects = yes + } + + on_white_peace_desc = { + desc = religious_war_white_peace_desc + } + + on_white_peace = { + scope:attacker = { show_pow_release_message_effect = yes } + + #EP2 accolade glory gain for doing ok against higher ranked enemy + scope:attacker = { accolade_attacker_war_end_glory_gain_low_effect = yes } + scope:defender = { accolade_defender_war_end_glory_gain_med_effect = yes } + + # 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:attacker # Not important as the scales are identical + FAME_BASE = religious_cb_ally_prestige_kingdom + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + scope:attacker = { + add_piety = religious_cb_piety_white_peace + stress_impact = { + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } + } + + scope:defender = { + stress_impact = { + arrogant = medium_stress_impact_gain + } + } + + # Truce + add_truce_white_peace_effect = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + } + + on_defeat_desc = { + desc = religious_war_defeat_desc + } + + on_defeat = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_defeat_effect = yes + + scope:defender = { + mandala_peacemaker_perk_serenity_effect = yes + #EP2 accolade glory gain for winning against higher ranked enemy + accolade_defender_war_end_glory_gain_high_effect = yes + } + + # 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 = religious_cb_ally_prestige_kingdom + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # piety change + every_in_list = { + list = target_titles + + scope:defender = { + add_piety = { + add = religious_cb_piety_gain_kingdom + if = { + limit = { + scope:defender.faith = { + has_doctrine_parameter = bonus_holy_war_piety_active + } + } + multiply = 1.5 + } + } + } + + scope:attacker = { + if = { + limit = { + monthly_character_income > 0 + } + pay_short_term_income = { + years = 4 + target = scope:defender + } + } + else = { + pay_short_term_gold = { + target = scope:defender + gold = medium_gold_value + } + } + } + } + + scope:attacker = { + every_vassal = { + limit = { faith = scope:attacker.faith } + custom = all_attackers_vassals_same_faith + add_opinion = { + modifier = liege_lost_declared_religious_war + target = scope:attacker + } + } + } + + # Truce + add_truce_attacker_defeat_effect = yes + + scope:attacker = { + save_temporary_scope_as = loser + } + on_lost_aggression_war_discontent_loss = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_defeat_effects = yes + } + + on_primary_attacker_death = inherit + on_primary_defender_death = inherit + + transfer_behavior = transfer + + attacker_allies_inherit = yes + defender_allies_inherit = yes + + war_name = "RELIGIOUS_WAR_NAME" + cb_name = "HOLY_WAR_KINGDOM_NAME" + + is_holy_war = yes + + interface_priority = 80 + + use_de_jure_wargoal_only = yes + + attacker_wargoal_percentage = 0.8 + + max_defender_score_from_occupation = 150 + max_attacker_score_from_occupation = 150 + + max_ai_diplo_distance_to_title = 500 + + ai_score_mult = { + value = 1 + # Increase odds if the character is a vassal with Ghazi Contract + add = { + if = { + limit = { + scope:attacker = { + top_liege != this + vassal_contract_has_flag = vassal_contract_cheaper_religious_war + } + } + add = 1 + } + } + + # As a feudal gov, do not attack owner of tribal holdings if you have a tribal holding to convert already + add = { + every_in_list = { + list = target_titles + if = { + limit = { feudal_clan_tribal_conquest_constraints = yes } + add = -1000 + } + } + } + + # Holy War are limited to connected neighbour to limit big empire expansions over weak realms. + add = { + if = { + limit = { religious_war_vassals_constraints = yes } + add = -1000 + } + } + # HOUSE RELATIONS + add = house_relation_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 + # Tell the Romans to stop going adventuring into the steppe for no gods-damned reason. + multiply = byzantium_conquests_ai_score_value + multiply = muslim_invasions_prefer_nonmuslims_ai_score_value + + add = frankokratia_leader_protection_value #Set back to 0. Declaring war on the frankokratia leader can really ruin the whole thing + } +} + +excommunication_war = { + icon = excommunication + group = religious + ai_only_against_neighbors = yes + allow_hostages = no + + # 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 = { + #Defender must be an excommunicated member of our faith. + has_trait = excommunicated + top_liege = this + faith = { + has_doctrine_parameter = excommunication_active + this = scope:attacker.faith + } + } + + scope:attacker = { + #We can't DoW our own liege + NOR = { + liege = scope:defender + #No pot calling the kettle black + has_trait = excommunicated + } + + trigger_if = { + limit = { is_ai = no } # Already pre-filtered by the AI due to ai_only_against_neighbors = yes. any_neighboring_top_liege_realm_owner is expensive + #We have to be neighboring the excommunicated ruler. + any_neighboring_top_liege_realm_owner = { + this = scope:defender + } + } + } + } + + target_de_jure_regions_above = yes + + valid_to_start = { + always = yes + } + + on_declaration = { + on_declared_war = yes + } + + on_victory_desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:defender = { is_local_player = yes } + } + desc = excommunication_war_victory_desc_defender + } + desc = excommunication_war_victory_desc + } + } + + on_victory = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_victory_effect = yes + + #EP2 Accolade glory gain from winning against higher ranked enemy + scope:attacker = { accolade_attacker_war_end_glory_gain_med_effect = yes } + + scope:attacker = { + reverse_add_opinion = { + modifier = pleased_opinion + target = faith.religious_head + opinion = 20 + } + } + + #Handle all piety gains/losses in scripted effects. + excommunication_cb_piety_change = { + WINNER = scope:attacker + LOSER = scope:defender + } + + # EP3 Laamp possibility warning + scope:defender = { ep3_war_loss_adventurer_tt_effect = yes } + + #This is ddown here in it's own section to control how the tooltips are ordered. + scope:defender = { + depose_effect = { DEPOSER = scope:attacker } + } + + # Truce + add_truce_attacker_victory_effect = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_victory_effects = yes + } + + on_white_peace_desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:defender = { is_local_player = yes } + } + desc = excommunication_war_white_peace_desc_defender + } + desc = excommunication_war_white_peace_desc + } + } + + on_white_peace = { + scope:attacker = { show_pow_release_message_effect = yes } + + #EP2 Accolade glory gain for defender for being ok + scope:defender = { accolade_defender_war_end_glory_gain_low_effect = yes } + + scope:attacker = { + add_piety = excommunication_cb_piety_white_peace + stress_impact = { + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } + } + + scope:defender = { + stress_impact = { + arrogant = medium_stress_impact_gain + } + } + + # Truce + add_truce_white_peace_effect = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + } + + on_defeat_desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:attacker = { is_local_player = yes } + } + desc = excommunication_war_defeat_desc_attacker + } + triggered_desc = { + trigger = { + scope:defender = { is_local_player = yes } + } + desc = excommunication_war_defeat_desc_defender + } + desc = excommunication_war_defeat_desc + } + } + + on_defeat = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_defeat_effect = yes + + scope:defender = { + mandala_peacemaker_perk_serenity_effect = yes + #EP2 accolade glory gain for winning against higher ranked enemy + accolade_defender_war_end_glory_gain_high_effect = yes + } + + #Handle all piety gains/losses in scripted effects. + excommunication_cb_piety_change = { + LOSER = scope:attacker + WINNER = scope:defender + } + + scope:defender = { + remove_trait = excommunicated + add_character_modifier = { + modifier = excommunication_recently_lifted + years = 10 + } + } + + scope:attacker = { + reverse_add_opinion = { + modifier = disappointed_opinion + target = faith.religious_head + opinion = -20 + } + } + + # Truce + add_truce_attacker_defeat_effect = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_defeat_effects = yes + } + + should_invalidate = { + scope:defender = { + NOT = { + has_trait = excommunicated + } + } + } + + on_invalidated_desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:defender = { + NOT = { + has_trait = excommunicated + } + } + } + desc = msg_excommunication_war_invalidation_trait_message + } + desc = msg_invalidate_war_title + } + } + + on_invalidated = { + scope:attacker = { + #Used for the piety_change scripted effect. + save_scope_as = winner + } + + #Handle all piety gains/losses in scripted effects. + excommunication_cb_piety_change = { + WINNER = scope:attacker + LOSER = scope:defender + } + + scope:defender = { + + #Used for the piety_change scripted effect. + save_scope_as = loser + } + } + + on_primary_attacker_death = invalidate + on_primary_defender_death = inherit + + transfer_behavior = transfer + + attacker_allies_inherit = yes + defender_allies_inherit = yes + + war_name = "EXCOMMUNICATION_WAR_NAME" + + interface_priority = 80 + + use_de_jure_wargoal_only = yes + + attacker_wargoal_percentage = 0.8 + + max_defender_score_from_occupation = 150 + max_attacker_score_from_occupation = 150 + max_attacker_score_from_battles = 100 + max_defender_score_from_battles = 100 + + max_ai_diplo_distance_to_title = 500 + + ai_score_mult = { + value = 1 + # Increase odds if the character is a vassal with Ghazi Contract + add = { + if = { + limit = { + scope:attacker = { + top_liege != this + vassal_contract_has_flag = vassal_contract_cheaper_religious_war + } + } + add = 1 + } + } + # Holy War are limited to connected neighbour to limit big empire expansions over weak realms. + add = { + if = { + limit = { religious_war_vassals_constraints = yes } + add = -1000 + } + } + + add = frankokratia_leader_protection_value #Set back to 0. Declaring war on the frankokratia leader can really ruin the whole thing + } +} + +flowery_war_cb = { + icon = ducal_conquest_cb + group = religious_disorganised + ai_only_against_neighbors = yes + allow_hostages = no + + allowed_for_character = { + faith = { has_doctrine_parameter = flower_war_cb_active } + NOT = { #Must not have any leftover sacrificial prisoners/easy ability to get any. + any_prisoner = { has_character_modifier = designated_human_sacrifice_modifier } + } + } + + # Root is the title + # scope:attacker is the attacker + # scope:defender is the defender + allowed_against_character = { + scope:defender = { + top_liege = this + trigger_if = { + limit = { scope:attacker = { is_ai = no } } # Already pre-filtered by the AI due to ai_only_against_neighbors = yes. any_neighboring_top_liege_realm_owner is expensive + scope:attacker = { + any_neighboring_top_liege_realm_owner = { + this = scope:defender + } + } + } + } + } + + cost = { + piety = { + add = { + value = 100 + desc = CB_BASE_COST + } + multiply = common_cb_piety_cost_multiplier + } + } + + should_invalidate = { + OR = { + AND = { #A formal flowery war only invalidates if neither side is an interested participant. + scope:attacker.faith = { + NOT = { has_doctrine_parameter = human_sacrifice_active } + } + scope:defender.faith = { + NOT = { has_doctrine_parameter = human_sacrifice_active } + } + } + scope:attacker = { + any_prisoner = { has_character_modifier = designated_human_sacrifice_modifier } + } + } + } + + on_invalidated_desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:attacker = { + any_prisoner = { has_character_modifier = designated_human_sacrifice_modifier } + } + } + desc = flowery_war_cb_ended_invalid.desc_other_sacrifices_attacker + } + desc = flowery_war_cb_ended_invalid.desc_no_sacrificers + } + } + + on_invalidated = { + + } + + on_declaration = { + on_declared_war = yes + } + + on_victory_desc = { + desc = flowery_war_cb_victory_desc + } + + on_victory = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_victory_effect = yes + + #EP2 Accolade glory gain from winning against higher ranked enemy + scope:attacker = { accolade_attacker_war_end_glory_gain_low_effect = yes } + + scope:attacker = { + if = { #If the attacker enjoys human sacrifice, then this was sacred. + limit = { + faith = { has_doctrine_parameter = human_sacrifice_active } + } + if = { + limit = { scope:defender.primary_title.tier = tier_county } + add_piety = { value = minor_piety_gain } + } + if = { + limit = { scope:defender.primary_title.tier = tier_duchy } + add_piety = { value = medium_piety_gain } + } + if = { + limit = { scope:defender.primary_title.tier = tier_kingdom } + add_piety = { value = major_piety_gain } + } + if = { + limit = { scope:defender.primary_title.tier = tier_empire } + add_piety = { value = massive_piety_gain } + } + } + else = { #If the attacker has since stopped enjoying human sacrifice, then the war was just prestigious. + if = { + limit = { scope:defender.primary_title.tier = tier_county } + add_prestige = { value = minor_prestige_gain } + } + if = { + limit = { scope:defender.primary_title.tier = tier_duchy } + add_prestige = { value = medium_prestige_gain } + } + if = { + limit = { scope:defender.primary_title.tier = tier_kingdom } + add_prestige = { value = major_prestige_gain } + } + if = { + limit = { scope:defender.primary_title.tier = tier_empire } + add_prestige = { value = massive_prestige_gain } + } + } + } + scope:defender = { + if = { #If the defender shares the faith of the attacker, then this war was sacred for them too. + limit = { + faith = { this = scope:attacker.faith } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_county } + add_piety = { + value = minor_piety_gain + multiply = 0.75 + } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_duchy } + add_piety = { + value = medium_piety_gain + multiply = 0.75 + } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_kingdom } + add_piety = { + value = major_piety_gain + multiply = 0.75 + } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_empire } + add_piety = { + value = massive_piety_gain + multiply = 0.75 + } + } + } + else = { #Otherwise, the war just sucked. + if = { + limit = { scope:defender.primary_title.tier = tier_county } + add_prestige = { value = minor_prestige_loss } + } + if = { + limit = { scope:defender.primary_title.tier = tier_duchy } + add_prestige = { value = medium_prestige_loss } + } + if = { + limit = { scope:defender.primary_title.tier = tier_kingdom } + add_prestige = { value = major_prestige_loss } + } + if = { + limit = { scope:defender.primary_title.tier = tier_empire } + add_prestige = { value = massive_prestige_loss } + } + } + } + scope:attacker = { #If the attacker has the appropriate tenet, grab some suitable courtiers from the defender. + if = { + limit = { + faith = { has_doctrine_parameter = human_sacrifice_active } + } + custom_tooltip = flowery_war_cb_prisoners.tt_attacker + hidden_effect = { + scope:defender = { + every_courtier_or_guest = { add_to_list = potential_captives_list } + random_in_list = { #Nab someone related to the defender, preferring tangentials. + list = potential_captives_list + limit = { + OR = { + AND = { + has_dynasty = yes + dynasty = scope:defender.dynasty + } + is_consort_of = scope:defender + } + } + alternative_limit = { always = yes } + weight = { + base = 1 + modifier = { + add = 25 + NOT = { is_close_family_of = scope:defender } + } + modifier = { + add = 15 + NOT = { is_extended_family_of = scope:defender } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:attacker = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + random_in_list = { #Always try to grab a second person. + list = potential_captives_list + limit = { + NOT = { is_in_list = definite_captives_list } + } + weight = { + base = 1 + modifier = { + add = 40 + NOT = { + any_claim = { + useful_courtier_or_guest_claim_trigger = { RULER = scope:defender } + } + } + } + modifier = { + add = 10 + NAND = { + can_be_chancellor_trigger = { COURT_OWNER = scope:defender } + diplomacy >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_marshal_trigger = { COURT_OWNER = scope:defender } + martial >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_steward_trigger = { COURT_OWNER = scope:defender } + stewardship >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_spymaster_trigger = { COURT_OWNER = scope:defender } + intrigue >= high_skill_rating + } + } + modifier = { + add = 10 + NOT = { learning >= high_skill_rating } + } + modifier = { + add = 10 + NOT = { prowess >= high_skill_rating } + } + modifier = { + add = 50 + NOT = { is_close_or_extended_family_of = scope:defender } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:attacker = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + random_in_list = { #Always try to grab a third person. + list = potential_captives_list + limit = { + NOT = { is_in_list = definite_captives_list } + } + weight = { + base = 1 + modifier = { + add = 40 + NOT = { + any_claim = { + useful_courtier_or_guest_claim_trigger = { RULER = scope:defender } + } + } + } + modifier = { + add = 10 + NAND = { + can_be_chancellor_trigger = { COURT_OWNER = scope:defender } + diplomacy >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_marshal_trigger = { COURT_OWNER = scope:defender } + martial >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_steward_trigger = { COURT_OWNER = scope:defender } + stewardship >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_spymaster_trigger = { COURT_OWNER = scope:defender } + intrigue >= high_skill_rating + } + } + modifier = { + add = 10 + NOT = { learning >= high_skill_rating } + } + modifier = { + add = 10 + NOT = { prowess >= high_skill_rating } + } + modifier = { + add = 50 + NOT = { is_close_or_extended_family_of = scope:defender } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:attacker = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + if = { #If at least duchy-tier, try to grab a fourth person. + limit = { primary_title.tier >= tier_duchy } + random_in_list = { + list = potential_captives_list + limit = { + NOT = { is_in_list = definite_captives_list } + } + weight = { + base = 1 + modifier = { + add = 40 + NOT = { + any_claim = { + useful_courtier_or_guest_claim_trigger = { RULER = scope:defender } + } + } + } + modifier = { + add = 10 + NAND = { + can_be_chancellor_trigger = { COURT_OWNER = scope:defender } + diplomacy >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_marshal_trigger = { COURT_OWNER = scope:defender } + martial >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_steward_trigger = { COURT_OWNER = scope:defender } + stewardship >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_spymaster_trigger = { COURT_OWNER = scope:defender } + intrigue >= high_skill_rating + } + } + modifier = { + add = 10 + NOT = { learning >= high_skill_rating } + } + modifier = { + add = 10 + NOT = { prowess >= high_skill_rating } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:attacker = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + } + if = { #If at least kingdom-tier, try to grab a fifth person. + limit = { primary_title.tier >= tier_kingdom } + random_in_list = { + list = potential_captives_list + limit = { + NOT = { is_in_list = definite_captives_list } + } + weight = { + base = 1 + modifier = { + add = 40 + NOT = { + any_claim = { + useful_courtier_or_guest_claim_trigger = { RULER = scope:defender } + } + } + } + modifier = { + add = 10 + NAND = { + can_be_chancellor_trigger = { COURT_OWNER = scope:defender } + diplomacy >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_marshal_trigger = { COURT_OWNER = scope:defender } + martial >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_steward_trigger = { COURT_OWNER = scope:defender } + stewardship >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_spymaster_trigger = { COURT_OWNER = scope:defender } + intrigue >= high_skill_rating + } + } + modifier = { + add = 10 + NOT = { learning >= high_skill_rating } + } + modifier = { + add = 10 + NOT = { prowess >= high_skill_rating } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:attacker = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + } + } + every_in_list = { + list = definite_captives_list + add_character_modifier = { + modifier = designated_human_sacrifice_modifier + years = 2 + } + } + trigger_event = { + id = human_sacrifice.0001 + years = 2 + } + } + } + } + + # 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:attacker + FAME_BASE = major_prestige_value + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # Truce + add_truce_attacker_victory_effect = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_victory_effects = yes + + } + + on_white_peace_desc = { + desc = flowery_war_cb_white_peace_desc + } + + on_white_peace = { + scope:attacker = { + show_pow_release_message_effect = yes + stress_impact = { + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } + } + scope:attacker = { #Piety loss for the attacker if appropriate, otherwise prestige loss. + if = { + limit = { + faith = { has_doctrine_parameter = human_sacrifice_active } + } + add_piety = religious_cb_piety_white_peace + } + else = { + add_prestige = { + value = medium_prestige_loss + } + } + } + + + + # 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:attacker # not important as the scales are identical + FAME_BASE = major_prestige_value + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + scope:defender = { + stress_impact = { + arrogant = medium_stress_impact_gain + } + } + + # Truce + add_truce_attacker_victory_effect = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + } + + on_defeat_desc = { + desc = flowery_war_cb_defeat_desc + } + + on_defeat = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_defeat_effect = yes + + scope:defender = { + mandala_peacemaker_perk_serenity_effect = yes + #EP2 accolade glory gain for winning against higher ranked enemy + accolade_defender_war_end_glory_gain_high_effect = yes + } + + scope:attacker = { + if = { #If the attacker shares the faith of the defender, and both still enjoy human sacrifice, then this war was at least sacred for them. + limit = { + faith = { + this = scope:defender.faith + has_doctrine_parameter = human_sacrifice_active + } + } + if = { + limit = { scope:defender.primary_title.tier = tier_county } + add_piety = { + value = minor_piety_gain + multiply = 0.75 + } + } + if = { + limit = { scope:defender.primary_title.tier = tier_duchy } + add_piety = { + value = medium_piety_gain + multiply = 0.75 + } + } + if = { + limit = { scope:defender.primary_title.tier = tier_kingdom } + add_piety = { + value = major_piety_gain + multiply = 0.75 + } + } + if = { + limit = { scope:defender.primary_title.tier = tier_empire } + add_piety = { + value = massive_piety_gain + multiply = 0.75 + } + } + } + else = { #Otherwise, the war just sucked. + if = { + limit = { scope:attacker.primary_title.tier = tier_county } + add_prestige = { value = minor_prestige_loss } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_duchy } + add_prestige = { value = medium_prestige_loss } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_kingdom } + add_prestige = { value = major_prestige_loss } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_empire } + add_prestige = { value = massive_prestige_loss } + } + } + } + scope:defender = { + if = { #If the defender has the same faith as the attacker, and that faith still enjoys human sacrifice, then this was sacred. + limit = { + faith = { + this = scope:attacker.faith + has_doctrine_parameter = human_sacrifice_active + } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_county } + add_piety = { value = minor_piety_gain } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_duchy } + add_piety = { value = medium_piety_gain } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_kingdom } + add_piety = { value = major_piety_gain } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_empire } + add_piety = { value = massive_piety_gain } + } + } + else = { #Otherwise, the war was just prestigious. + if = { + limit = { scope:attacker.primary_title.tier = tier_county } + add_prestige = { value = minor_prestige_gain } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_duchy } + add_prestige = { value = medium_prestige_gain } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_kingdom } + add_prestige = { value = major_prestige_gain } + } + if = { + limit = { scope:attacker.primary_title.tier = tier_empire } + add_prestige = { value = massive_prestige_gain } + } + } + } + scope:defender = { #If the defender has the appropriate tenet, and doesn't already have sacrificial victims, grab some suitable courtiers from the attacker. + if = { + limit = { + faith = { has_doctrine_parameter = human_sacrifice_active } + NOT = { #Must not have any leftover sacrificial prisoners, lest the defender get borked sacrifice-accounting events. + any_prisoner = { has_character_modifier = designated_human_sacrifice_modifier } + } + } + custom_tooltip = flowery_war_cb_prisoners.tt_defender + hidden_effect = { + scope:attacker = { + every_courtier_or_guest = { add_to_list = potential_captives_list } + random_in_list = { #Nab someone related to the attacker, preferring tangentials. + list = potential_captives_list + limit = { + OR = { + AND = { + has_dynasty = yes + dynasty = scope:attacker.dynasty + } + is_consort_of = scope:attacker + } + } + alternative_limit = { always = yes } + weight = { + base = 1 + modifier = { + add = 25 + NOT = { is_close_family_of = scope:attacker } + } + modifier = { + add = 15 + NOT = { is_extended_family_of = scope:attacker } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:defender = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + random_in_list = { #Always try to grab a second person. + list = potential_captives_list + limit = { + NOT = { is_in_list = definite_captives_list } + } + weight = { + base = 1 + modifier = { + add = 40 + NOT = { + any_claim = { + useful_courtier_or_guest_claim_trigger = { RULER = scope:attacker } + } + } + } + modifier = { + add = 10 + NAND = { + can_be_chancellor_trigger = { COURT_OWNER = scope:attacker } + diplomacy >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_marshal_trigger = { COURT_OWNER = scope:attacker } + martial >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_steward_trigger = { COURT_OWNER = scope:attacker } + stewardship >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_spymaster_trigger = { COURT_OWNER = scope:attacker } + intrigue >= high_skill_rating + } + } + modifier = { + add = 10 + NOT = { learning >= high_skill_rating } + } + modifier = { + add = 10 + NOT = { prowess >= high_skill_rating } + } + modifier = { + add = 50 + NOT = { is_close_or_extended_family_of = scope:defender } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:defender = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + random_in_list = { #Always try to grab a third person. + list = potential_captives_list + limit = { + NOT = { is_in_list = definite_captives_list } + } + weight = { + base = 1 + modifier = { + add = 40 + NOT = { + any_claim = { + useful_courtier_or_guest_claim_trigger = { RULER = scope:attacker } + } + } + } + modifier = { + add = 10 + NAND = { + can_be_chancellor_trigger = { COURT_OWNER = scope:attacker } + diplomacy >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_marshal_trigger = { COURT_OWNER = scope:attacker } + martial >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_steward_trigger = { COURT_OWNER = scope:attacker } + stewardship >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_spymaster_trigger = { COURT_OWNER = scope:attacker } + intrigue >= high_skill_rating + } + } + modifier = { + add = 10 + NOT = { learning >= high_skill_rating } + } + modifier = { + add = 10 + NOT = { prowess >= high_skill_rating } + } + modifier = { + add = 50 + NOT = { is_close_or_extended_family_of = scope:defender } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:defender = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + if = { #If at least duchy-tier, try to grab a fourth person. + limit = { primary_title.tier >= tier_duchy } + random_in_list = { + list = potential_captives_list + limit = { + NOT = { is_in_list = definite_captives_list } + } + weight = { + base = 1 + modifier = { + add = 40 + NOT = { + any_claim = { + useful_courtier_or_guest_claim_trigger = { RULER = scope:attacker } + } + } + } + modifier = { + add = 10 + NAND = { + can_be_chancellor_trigger = { COURT_OWNER = scope:attacker } + diplomacy >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_marshal_trigger = { COURT_OWNER = scope:attacker } + martial >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_steward_trigger = { COURT_OWNER = scope:attacker } + stewardship >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_spymaster_trigger = { COURT_OWNER = scope:attacker } + intrigue >= high_skill_rating + } + } + modifier = { + add = 10 + NOT = { learning >= high_skill_rating } + } + modifier = { + add = 10 + NOT = { prowess >= high_skill_rating } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:defender = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + } + if = { #If at least kingdom-tier, try to grab a fifth person. + limit = { primary_title.tier >= tier_kingdom } + random_in_list = { + list = potential_captives_list + limit = { + NOT = { is_in_list = definite_captives_list } + } + weight = { + base = 1 + modifier = { + add = 40 + NOT = { + any_claim = { + useful_courtier_or_guest_claim_trigger = { RULER = scope:attacker } + } + } + } + modifier = { + add = 10 + NAND = { + can_be_chancellor_trigger = { COURT_OWNER = scope:attacker } + diplomacy >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_marshal_trigger = { COURT_OWNER = scope:attacker } + martial >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_steward_trigger = { COURT_OWNER = scope:attacker } + stewardship >= high_skill_rating + } + } + modifier = { + add = 10 + NAND = { + can_be_spymaster_trigger = { COURT_OWNER = scope:attacker } + intrigue >= high_skill_rating + } + } + modifier = { + add = 10 + NOT = { learning >= high_skill_rating } + } + modifier = { + add = 10 + NOT = { prowess >= high_skill_rating } + } + } + add_to_list = definite_captives_list + save_temporary_scope_as = future_captive + scope:defender = { + imprison = { + target = scope:future_captive + type = dungeon + } + } + } + } + } + every_in_list = { + list = definite_captives_list + add_character_modifier = { + modifier = designated_human_sacrifice_modifier + years = 2 + } + } + trigger_event = { + id = human_sacrifice.0001 + years = 2 + } + } + } + } + + # 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 = major_prestige_value + IS_RELIGIOUS_WAR = no + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + + # Truce + add_truce_attacker_defeat_effect = yes + + scope:attacker = { save_temporary_scope_as = loser } + on_lost_aggression_war_discontent_loss = yes + + # EP3: note gold gained from military assistance/join war contracts and their war contribution threshold + laamp_as_mercenary_payout_tooltip_effect = yes + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_defeat_effects = yes + } + + on_primary_attacker_death = inherit + on_primary_defender_death = inherit + + attacker_allies_inherit = yes + defender_allies_inherit = yes + + war_name = "FLOWERY_WAR_CB_NAME" + war_name_base = "FLOWERY_WAR_WAR_NAME_BASE" + cb_name = "FLOWERY_WAR_CB_NAME" + interface_priority = 80 + + ticking_war_score_targets_entire_realm = yes + attacker_ticking_warscore = 0 + attacker_wargoal_percentage = 0.01 + attacker_score_from_occupation_scale = 50 + defender_score_from_occupation_scale = 50 + attacker_score_from_battles_scale = 200 + defender_score_from_battles_scale = 200 + + max_attacker_score_from_battles = 200 + max_defender_score_from_battles = 200 + + max_defender_score_from_occupation = 150 + max_attacker_score_from_occupation = 150 + + max_ai_diplo_distance_to_title = 500 + + ai_score = { + value = raid_for_captives_ai_score_value + } + + ai_score_mult = { + value = 1 + # Increase odds if the character is a vassal with Ghazi Contract + add = { + if = { + limit = { + scope:attacker = { + top_liege != this + vassal_contract_has_flag = vassal_contract_cheaper_religious_war + } + } + add = 1 + } + } + # Holy War are limited to connected neighbour to limit big empire expansions over weak realms. + add = { + if = { + limit = { religious_war_vassals_constraints = yes } + add = -1000 + } + } + + add = frankokratia_leader_protection_value #Set back to 0. Declaring war on the frankokratia leader can really ruin the whole thing + } +} + +undirected_great_holy_war = { + group = religious_script_only + interface_priority = 1000 + icon = undirected_great_holy_war + + war_name = "GREAT_HOLY_WAR_WAR_NAME" + + target_titles = all + target_title_tier = all + target_de_jure_regions_above = yes + use_de_jure_wargoal_only = yes + check_all_defenders_for_ticking_war_score = yes # All defenders land in the Crusade Kingdom should count + defender_ticking_warscore = 0.125 + attacker_ticking_warscore = 0.125 + max_defender_score_from_occupation = 50 + max_attacker_score_from_occupation = 150 + full_occupation_by_defender_gives_victory = no + imprisonment_by_attacker_give_war_score = no + imprisonment_by_defender_give_war_score = no + attacker_capital_gives_war_score = no + defender_capital_gives_war_score = no + is_great_holy_war = yes + landless_attacker_needs_armies = no + allow_hostages = no + + defender_score_from_battles_scale = 125 + attacker_score_from_battles_scale = 125 + + max_defender_score_from_battles = 150 + + occupation_participation_mult = 0.5 + siege_participation_mult = 1 + battle_participation_mult = 7.5 + on_primary_attacker_death = inherit + on_primary_defender_death = inherit + transfer_behavior = transfer + + white_peace_possible = no + + allowed_for_character = { + always = yes + } + + valid_to_start = { + scope:target = { + tier = tier_kingdom + any_in_de_jure_hierarchy = { #Any ruler in the dejure of the targeted Kingdom belongs to a Faith that the HoF's Faith is hostile enough to Holy War against. + continue = { tier > tier_county } + tier = tier_county + scope:attacker.faith = { + is_hostile_enough_for_holy_war_trigger = { FAITH = prev.holder.top_liege.faith } + } + } + } + } + + on_declaration = { + scope:attacker.faith.great_holy_war = { + if = { #Clear forced participation flag. + limit = { + any_pledged_attacker = { + has_character_flag = variable_ghw_papal_hooked_pledge + } + } + every_pledged_attacker = { + limit = { + has_character_flag = variable_ghw_papal_hooked_pledge + } + remove_character_flag = variable_ghw_papal_hooked_pledge + } + } + } + scope:attacker.faith.great_holy_war.ghw_target_title = { + save_scope_as = target_kingdom + } + scope:attacker = { #Loc keys for localization fluff. + save_scope_as = ghw_sponsor + } + scope:defender = { + save_scope_as = ghw_defender + } + scope:attacker.faith = { + save_scope_as = the_faith + } + scope:attacker.faith.great_holy_war = { + save_scope_as = the_ghw + } + force_truce_GHW_defenders_effect = yes + on_declared_war = yes + #Tell non diverting-players about the crazy 4th crusade plan + if = { + limit = { + scope:attacker.faith = { this = faith:catholic } + exists = global_var:byz_claimant_champion + global_var:byz_claimant_champion = { + is_alive = yes + is_ruler = yes + any_character_war = { + using_cb = crusading_claim_cb + } + } + } + global_var:byz_claimant_champion = { + random_character_war = { + limit = { + using_cb = crusading_claim_cb + } + save_scope_as = redirected_crusade + } + } + every_player = { + limit = { + NOT = { + is_attacker_in_war = scope:redirected_crusade + } + ep3_frankokratia_notification_recipient_trigger = yes + } + trigger_event = ep3_frankokratia_events.0031 + } + } + every_player = { #Fluff for attackers/defenders + limit = { + scope:attacker.faith.great_holy_war = { + OR = { + has_pledged_attacker = prev + has_pledged_defender = prev + } + } + } + trigger_event = great_holy_war.0051 + } + scope:attacker.faith.great_holy_war = { + divide_war_chest = { + fraction = ghw_war_start_handout_percentage + } + } + # First of the Crusader Kings achievement tracking. + if = { + limit = { + scope:attacker.faith = faith:catholic + NOT = { exists = global_var:had_first_catholic_crusade } + } + # Credit where chredit is due. + scope:attacker.faith.great_holy_war = { + every_pledged_attacker = { + limit = { fp1_achievement_culture_norse_trigger = yes } + add_achievement_flag_effect = { FLAG = first_of_the_crusader_kings_achievement_flag } + } + } + # Mark the first crusade as having happened. + set_global_variable = { + name = had_first_catholic_crusade + value = yes + } + } + + debug_log = undirected_ghw_debug_loc + } + + should_invalidate = { + scope:attacker.faith = scope:defender.faith # Primary defender has converted + } + + on_invalidated_desc = msg_invalidate_war_title + + on_invalidated = { + scope:attacker.faith.great_holy_war.ghw_target_title = { + save_scope_as = target_kingdom + } + scope:attacker = { #Loc keys for localization fluff. + save_scope_as = ghw_sponsor + } + scope:defender = { + save_scope_as = ghw_defender + } + scope:attacker.faith = { + save_scope_as = the_faith + } + scope:attacker.faith.great_holy_war = { + save_scope_as = the_ghw + } + every_player = { + limit = { is_within_diplo_range = { CHARACTER = scope:defender } } + trigger_event = great_holy_war.0056 + } + hidden_effect = { + if = { #Clear pledged gold flag. + limit = { + any_player = { + has_character_flag = ghw_pledged_gold + } + } + every_player = { + limit = { + has_character_flag = ghw_pledged_gold + } + remove_character_flag = ghw_pledged_gold + } + } + } + + debug_log = "Undirected Great Holy War invalidated" + } + + on_victory_desc = { + desc = great_holy_war_victory_desc + } + + on_victory = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_victory_effect = yes + + #EP2 Accolade glory gain to the holy knights of the faith head + scope:attacker = { accolade_attacker_war_end_glory_gain_low_effect = yes } + + scope:attacker.faith.great_holy_war = { # Make sure steppe crusades do not make silly cultures + every_pledged_attacker = { + limit = { exists = ghw_beneficiary } + ghw_beneficiary = { + add_character_flag = { + flag = domicile_culture_and_faith_check + days = 1 + } + add_to_list = beneficiary_fixing_list + } + } + } + + create_title_and_vassal_change = { + type = conquest_holy_war + save_scope_as = change + add_claim_on_loss = yes + } + scope:attacker.faith.great_holy_war.ghw_target_title = { #Loc keys for localization fluff. + save_scope_as = target_kingdom + } + scope:attacker = { + save_scope_as = ghw_sponsor + } + scope:defender = { + save_scope_as = ghw_defender + } + scope:attacker.faith = { + save_scope_as = the_faith + } + scope:attacker.faith.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 } + } + } + } + + hidden_effect = { + if = { #Recipient is going to be the Papal's chosen Recipient or, if the main contributor is overriding the Papal will, his Beneficiary. + limit = { + exists = scope:attacker.faith.great_holy_war.ghw_title_recipient + } + scope:attacker.faith.great_holy_war.ghw_title_recipient = { + save_scope_as = title_recipient + } + } + else = { #If no Recipient or Beneficiary, check for any random claimants that might have cropped in the meantime. + undirected_ghw_recipient_selection_on_victory_effect = yes + } + if = { + limit = { + exists = scope:the_ghw + NOT = { exists = scope:title_recipient } + scope:the_ghw = { + has_variable = var_fallback_recipient + var:var_fallback_recipient = { + is_alive = yes + } + } + } + scope:the_ghw = { + var:var_fallback_recipient = { + save_scope_as = title_recipient + set_designated_winner = scope:title_recipient + } + } + } + if = { #If for some reason there is no title recipient selected yet, create character from scratch. + limit = { + exists = scope:the_ghw + NOT = { exists = scope:title_recipient } + NOT = { + scope:the_ghw = { + has_variable = var_fallback_recipient + } + } + } + create_character = { + location = scope:ghw_sponsor.capital_province + template = new_commander_character + faith = scope:the_faith + culture = scope:ghw_sponsor.culture + save_scope_as = title_recipient + gender_female_chance = { + if = { + limit = { scope:the_faith = { has_doctrine = doctrine_gender_male_dominated } } + add = 0 + } + else_if = { + limit = { scope:the_faith = { has_doctrine = doctrine_gender_female_dominated } } + add = 100 + } + else = { + add = 50 + } + } + } + scope:the_faith.great_holy_war = { + set_designated_winner = scope:title_recipient + } + } + if = { #Check if Recipient is landless to give him the Crusader King buff. + limit = { + exists = scope:title_recipient + scope:title_recipient = { + OR = { + is_ruler = no + government_has_flag = government_is_landless_adventurer + } + } + } + scope:title_recipient = { + add_character_flag = { + flag = ghw_recipient_will_be_crusader_king + } + # Laamps don't get to keep the trait if they pass on their chosen kingdom. + if = { + limit = { government_has_flag = government_is_landless_adventurer } + add_character_flag = laamp_is_crusader_king + } + } + } + } + every_in_list = { + list = target_titles + save_scope_as = target + } + + if = { #Tooltip explaining who gets the first title when a Recipient exists (otherwise avoid or it will show the fallback character). + limit = { + exists = scope:attacker.faith.great_holy_war.ghw_title_recipient + } + show_as_tooltip = { + scope:target = { + change_title_holder = { + holder = scope:attacker.faith.great_holy_war.ghw_title_recipient + change = scope:change + } + } + } + } + else_if = { + limit = { + exists = scope:the_ghw + scope:the_ghw = { + has_variable = var_fallback_recipient + } + } + scope:the_ghw = { + var:var_fallback_recipient = { + save_scope_as = ghw_fallback_recipient + } + } + show_as_tooltip = { + scope:target = { + change_title_holder = { + holder = scope:ghw_fallback_recipient + change = scope:change + } + } + } + } + + # Create a dynamic title if the kingdom itself can't be created/taken + if = { + limit = { #In the event that, for ex. k_jerusalem exists and is held by a foreign ruler who is not involved in the war in any way. + exists = scope:the_ghw + exists = scope:target_kingdom + exists = scope:target_kingdom.holder + scope:the_ghw = { + NOR = { + #Do not create a titular title if the target is held by a defender. + has_pledged_defender = scope:target_kingdom.holder + has_forced_defender = scope:target_kingdom.holder + #Or, if the title_recipient is the current holder of the target_kingdom. + scope:title_recipient = scope:target_kingdom.holder + } + } + } + hidden_effect = { + random_list = { + 50 = { + create_dynamic_title = { + tier = kingdom + name = CRUSADER_STATE_CRUSADER_TITLE_NAME + } + } + 50 = { + create_dynamic_title = { + tier = kingdom + name = CRUSADER_STATE_FAITH_TITLE_NAME + } + } + } + scope:new_title = { + change_title_holder = { + holder = scope:title_recipient + change = scope:change + } + } + } + scope:the_ghw = { + do_ghw_title_handout = scope:change + divide_war_chest = {} + } + scope:new_title = { generate_coa = yes } + } + else_if = { #Otherwise hand out titles normally. + limit = { + exists = scope:the_ghw + } + hidden_effect = { + if = { + limit = { + NAND = { + exists = scope:target.holder + scope:target.holder = scope:title_recipient + } + } + scope:target = { + change_title_holder = { + holder = scope:title_recipient + change = scope:change + } + } + } + } + scope:the_ghw = { + do_ghw_title_handout = scope:change + divide_war_chest = {} + } + } + + hidden_effect = { + every_player = { #Fluff for players + limit = { + OR = { + this = scope:attacker + this = scope:defender + any_war_enemy = { this = scope:attacker } + any_war_enemy = { this = scope:defender } + is_within_diplo_range = { CHARACTER = scope:defender } + } + } + trigger_event = great_holy_war.0052 #Differentiate depending on faith (compared to scope:attacker) + } + + if = { + limit = { exists = scope:title_recipient } + scope:title_recipient = { + every_realm_county = { # Crusading troops seizing control + change_county_control = 50 + } + every_realm_province = { + refill_levy = yes + refill_garrison = yes + } + if = { + limit = { + has_government = herder_government + } + every_held_title = { + limit = { + tier = tier_county + title_province = { + has_holding_type = herder_holding + } + } + title_province = { + set_holding_type = nomad_holding + } + } + change_government = nomad_government + domicile = { + set_domicile_culture = prev.capital_county.culture + set_domicile_faith = prev.capital_county.faith + } + } + } + } + if = { #If Recipient was landless give him the Crusader King buff. + limit = { + exists = scope:title_recipient + scope:title_recipient = { has_character_flag = ghw_recipient_will_be_crusader_king } + } + scope:title_recipient = { + add_trait = crusader_king + remove_character_flag = ghw_recipient_will_be_crusader_king + add_realm_law_skip_effects = crown_authority_1 + # Set the appropriate Succession Law + if = { + limit = { + can_have_single_heir_succession_law_trigger = yes + NOT = { + has_realm_law = single_heir_succession_law + } + } + add_realm_law_skip_effects = single_heir_succession_law + } + else_if = { + limit = { + can_have_high_partition_succession_law_trigger = yes + NOT = { + has_realm_law = high_partition_succession_law + } + } + add_realm_law_skip_effects = high_partition_succession_law + } + else_if = { + limit = { + can_have_partition_succession_law_trigger = yes + NOT = { + has_realm_law = partition_succession_law + } + } + 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 + scope:attacker.faith.great_holy_war = { + every_pledged_attacker = { + add = 100 + } + } + } + men_at_arms = { + type = teutonic_knights + stacks = { + value = 1 + scope:attacker.faith.great_holy_war = { + every_pledged_attacker = { + add = 0.2 + } + } + } + } + inheritable = no + uses_supply = no + location = capital_province + name = house_beneficiary_won_ghw + } + every_vassal = { # Vassals should not want to revolt too soon after inaguration + add_opinion = { + modifier = respect_opinion + target = scope:title_recipient + opinion = 50 + } + } + add_gold = 500 # Some extra plunder + add_prestige = 500 + add_piety = 500 + # Plus if we're gallowsbait, remove most/all of it. + absolve_crusaders_of_gallowsbait_effect = yes + hidden_effect = { # Because the adventurer government override is active you may end up in awkward situations unless we set your government here + if = { + limit = { + has_government = clan_government + NOT = { faith.religion = religion:islam_religion } + } + change_government = feudal_government + } + } + } + } + scope:attacker.faith.great_holy_war = { #Give Prestige/Piety modifier to Dynasty/House of the winners' Beneficiaries (only if they gained any land in the GHW). + every_pledged_attacker = { + limit = { exists = ghw_beneficiary } + ghw_beneficiary = { trigger_event = great_holy_war.0061 } + # Plus if we're gallowsbait, remove most/all of it — provided we turned up. + if = { + limit = { has_trait = faith_warrior } + absolve_crusaders_of_gallowsbait_effect = yes + } + } + if = { #Chance to switch-play to Crusader King. + limit = { + exists = scope:title_recipient + exists = scope:title_recipient.dynasty + scope:title_recipient = { + is_ai = yes + has_trait = crusader_king + } + any_pledged_attacker = { + is_ai = no + dynasty = scope:title_recipient.dynasty + } + } + random_pledged_attacker = { + limit = { + is_ai = no + dynasty = scope:title_recipient.dynasty + scope:title_recipient = { + is_ai = yes + has_trait = crusader_king + } + } + trigger_event = { id = great_holy_war.0070 days = 5 } + } + } + } + every_in_list = { + list = beneficiary_fixing_list + if = { + limit = { + has_government = herder_government + } + every_held_title = { + limit = { + tier = tier_county + title_province = { + has_holding_type = herder_holding + } + } + title_province = { + set_holding_type = nomad_holding + } + } + change_government = nomad_government + domicile = { + set_domicile_culture = prev.capital_county.culture + set_domicile_faith = prev.capital_county.faith + } + } + } + } + + #Set 30 years cooldown. + hidden_effect = { + scope:attacker.faith = { + set_variable = { + name = variable_ghw_cooldown + value = yes + years = 30 + } + } + if = { #Clear pledged gold flag. + limit = { + any_player = { + has_character_flag = ghw_pledged_gold + } + } + every_player = { + limit = { + has_character_flag = ghw_pledged_gold + } + remove_character_flag = ghw_pledged_gold + } + } + } + + ordered_in_list = { + list = target_titles + order_by = tier + max = 1 + + save_scope_as = war_goal_title + } + + scope:attacker.faith = { + change_fervor = { + value = -25 + desc = fervor_loss_great_holy_war + } + } + scope:defender.faith = { + change_fervor = { + value = 30 + desc = fervor_gain_great_holy_war + } + } + + #Truce between the chief beneficiary & all defenders + add_truce_GHW_attacker_victory_effect = yes + debug_log = undirected_ghw_victory_debug_message + + # FP1: note the victory for future memorialisation via stele (if applicable). + scope:attacker = { fp1_remember_recent_conquest_victory_effect = yes } + + scope:title_recipient = { + custom_tooltip = legend_seed_ghw.tt + } + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_victory_effects = yes + } + + on_white_peace_desc = { + desc = WHITE_PEACE_DISABLED + } + + on_defeat_desc = { + desc = great_holy_war_defeat_desc + } + + on_defeat = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_defeat_effect = yes + + scope:defender = { + mandala_peacemaker_perk_serenity_effect = yes + #EP2 accolade glory gain for winning against higher ranked enemy + accolade_defender_war_end_glory_gain_high_effect = yes + } + + scope:attacker.faith.great_holy_war = { + divide_war_chest = { + defenders = yes + gold = no + } + } + + scope:attacker.faith.great_holy_war.ghw_target_title = { #Loc keys for localization fluff. + save_scope_as = target_kingdom + } + scope:attacker = { + save_scope_as = ghw_sponsor + } + scope:defender = { + save_scope_as = ghw_defender + } + scope:attacker.faith = { + save_scope_as = the_faith + } + scope:attacker.faith.great_holy_war = { + save_scope_as = the_ghw + } + + scope:attacker = { + faith = { + change_fervor = { + value = -15 + desc = fervor_loss_lost_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 = { + this = scope:attacker + this = scope:defender + any_war_enemy = { this = scope:attacker } + any_war_enemy = { this = scope:defender } + is_within_diplo_range = { CHARACTER = scope:defender } + } + } + trigger_event = great_holy_war.0053 #Differentiate depending on faith (compared to scope:attacker) + } + + # Truce + add_truce_attacker_defeat_effect = yes + + #Set 30 years cooldown. + hidden_effect = { + if = { + limit = { exists = scope:title_recipient } + scope:title_recipient = { + if = { + limit = { + has_government = herder_government + } + every_held_title = { + limit = { + tier = tier_county + title_province = { + has_holding_type = herder_holding + } + } + title_province = { + set_holding_type = nomad_holding + } + } + change_government = nomad_government + domicile = { + set_domicile_culture = prev.capital_county.culture + set_domicile_faith = prev.capital_county.faith + } + } + } + } + scope:attacker.faith = { + set_variable = { + name = variable_ghw_cooldown + value = yes + years = 30 + } + } + if = { #Clear pledged gold flag. + limit = { + any_player = { + has_character_flag = ghw_pledged_gold + } + } + every_player = { + limit = { + has_character_flag = ghw_pledged_gold + } + remove_character_flag = ghw_pledged_gold + } + } + } + debug_log = undirected_ghw_defeat_debug_message + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_defeat_effects = yes + } +} + +directed_great_holy_war = { + group = religious + icon = directed_great_holy_war + interface_priority = 1000 + + war_name = "GREAT_HOLY_WAR_WAR_NAME" + cb_name = "GREAT_HOLY_WAR_WAR_CB_NAME" + + combine_into_one = yes + should_show_war_goal_subview = yes + mutually_exclusive_titles = { always = yes } + + target_titles = all + target_title_tier = all + target_de_jure_regions_above = yes + use_de_jure_wargoal_only = yes + check_all_defenders_for_ticking_war_score = yes # All defenders land in the Crusade Kingdom should count + defender_ticking_warscore = 0.05 + attacker_ticking_warscore = 0.05 + max_defender_score_from_occupation = 50 + max_attacker_score_from_occupation = 150 + imprisonment_by_attacker_give_war_score = no + defender_capital_gives_war_score = no + is_great_holy_war = yes + ai_only_against_neighbors = yes + allow_hostages = no + + occupation_participation_mult = 0.5 + siege_participation_mult = 1 + battle_participation_mult = 7.5 + + white_peace_possible = no + gui_attacker_faith_might_join = yes + gui_defender_faith_might_join = yes + on_primary_attacker_death = inherit + on_primary_defender_death = inherit + transfer_behavior = transfer + + allowed_for_character = { + faith = { + exists = religious_head + suitable_faith_for_directed_ghw_trigger = yes #Right Doctrines + OR = { + scope:attacker = this.religious_head + scope:attacker = { + any_vassal = { + this = scope:attacker.faith.religious_head + } + } + } + scope:attacker.religious_head = { + piety_level >= 2 + } + religion = { exists = var:variable_ghw_unlocked } #Activated by event for every religion. + } + } + + allowed_for_character_display_regardless = { + custom_description = { + text = great_holy_war_cooldown + NOT = { scope:attacker.faith = { exists = var:variable_ghw_cooldown }} + } + tgp_japan_offensive_wars_ban_trigger = yes + } + + allowed_against_character = { + scope:attacker.faith = { + is_hostile_enough_for_holy_war_trigger = { FAITH = scope:defender.faith } + } + } + + valid_to_start = { + scope:attacker.faith = { + NOR = { + # No active GHW already. + exists = great_holy_war + + # If GHWs have just been unlocked, AI rulers will wait a little bit before declaring them. + trigger_if = { + limit = { scope:attacker = { is_ai = yes } } + religion = { exists = var:variable_first_ghw_cooldown } + } + } + } + + scope:target = { + tier = tier_kingdom + trigger_if = { + limit = { + scope:attacker = { + is_ai = yes + } + } + any_in_de_jure_hierarchy = { #Any ruler in the dejure of the targeted Kingdom belongs to a Faith that the Caliph's Faith is hostile enough to Holy War against. + continue = { tier > tier_county } + count >= 5 # The AI doesn't Jihad for an area of less than 5 Counties, for reference, Jerusalem is 8 Counties + tier = tier_county + scope:attacker.faith = { + is_hostile_enough_for_holy_war_trigger = { FAITH = prev.holder.top_liege.faith } + } + } + } + trigger_else = { + any_in_de_jure_hierarchy = { #Any ruler in the dejure of the targeted Kingdom belongs to a Faith that the Caliph's Faith is hostile enough to Holy War against. + continue = { tier > tier_county } + tier = tier_county + scope:attacker.faith = { + is_hostile_enough_for_holy_war_trigger = { FAITH = prev.holder.top_liege.faith } + } + } + } + } + + #The war seems to be launching without a valid defender sometimes, so we double-check that one is set here + exists = scope:defender + } + + on_declaration = { + every_in_list = { + list = target_titles + save_scope_as = target + } + hidden_effect = { + scope:attacker.faith = { + start_great_holy_war = { + target_character = scope:defender + target_title = scope:target + war = root.war + } + great_holy_war = { + pledge_attacker = scope:attacker + } + } + scope:attacker.religious_head = { + add_piety_level = -1 + } + } + scope:attacker.faith.great_holy_war = { + every_pledged_attacker = { #Add Beneficiary automatically on victory of direct GHW for any attacker that doesn't have one already. + limit = { + NOT = { + exists = ghw_beneficiary + } + } + trigger_event = great_holy_war.0026 + } + } + scope:attacker.faith.great_holy_war.ghw_target_title = { + save_scope_as = target_kingdom + } + scope:attacker = { #Loc keys for localization fluff. + save_scope_as = ghw_sponsor + } + scope:defender = { + save_scope_as = ghw_defender + } + scope:defender.faith = { + save_scope_as = target_faith + } + scope:attacker.faith = { + save_scope_as = the_faith + } + scope:attacker.faith.great_holy_war = { + save_scope_as = the_ghw + } + force_truce_GHW_defenders_effect = yes + hidden_effect = { + every_ruler = { + limit = { + faith = scope:attacker.faith + is_ai = yes + is_playable_character = yes + highest_held_title_tier >= tier_county + this != scope:ghw_sponsor + exists = scope:attacker.faith.great_holy_war + NOT = { scope:attacker.faith.great_holy_war = { has_pledged_attacker = prev } } + } + trigger_event = great_holy_war.0092 #AI pledging. + } + every_ruler = { + limit = { + faith = scope:defender.faith + is_ai = yes + is_playable_character = yes + highest_held_title_tier >= tier_county + exists = scope:attacker.faith.great_holy_war + NOT = { scope:attacker.faith.great_holy_war = { has_pledged_defender = prev } } + scope:defender != top_liege + } + trigger_event = great_holy_war.0093 #AI counterpledging. + } + scope:attacker.faith = { + every_faith_holy_order = { + trigger_event = great_holy_war.0090 # Holy orders always join + } + } + scope:defender.faith = { + every_faith_holy_order = { + trigger_event = great_holy_war.0091 # Holy orders always join + } + } + } + + every_player = { #Fluff for attackers/defenders + limit = { + OR = { + faith = scope:the_faith + faith = scope:ghw_defender.faith + is_vassal_of = scope:attacker + is_vassal_of = scope:defender + } + } + trigger_event = great_holy_war.0071 + } + on_declared_war = yes + + debug_log = directed_ghw_debug_loc + } + + should_invalidate = { + scope:attacker.faith = scope:defender.faith # Primary defender has converted + } + + on_invalidated_desc = msg_invalidate_war_title + + on_victory_desc = { + desc = great_holy_war_directed_victory_desc + } + + on_victory = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_victory_effect = yes + + #EP2 Accolade glory gain to the holy warriors of the faith head + scope:attacker = { accolade_attacker_war_end_glory_gain_low_effect = yes } + + scope:attacker.faith.great_holy_war = { # Make sure steppe crusades do not make silly cultures + every_pledged_attacker = { + limit = { exists = ghw_beneficiary } + ghw_beneficiary = { + add_character_flag = { + flag = domicile_culture_and_faith_check + days = 1 + } + add_to_list = beneficiary_fixing_list + } + } + } + + scope:attacker.faith.great_holy_war.ghw_target_title = { #Loc keys for localization fluff. + save_scope_as = target_kingdom + } + scope:attacker = { + save_scope_as = ghw_sponsor + } + scope:defender = { + save_scope_as = ghw_defender + } + scope:attacker.faith = { + save_scope_as = the_faith + } + scope:attacker.faith.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 = { + save_scope_as = title_recipient + } + } + else = { + scope:attacker = { + save_scope_as = title_recipient + } + } + + create_title_and_vassal_change = { + type = conquest_holy_war + save_scope_as = change + add_claim_on_loss = yes + } + every_in_list = { + list = target_titles + save_scope_as = target + } + scope:attacker.faith.great_holy_war = { + show_as_tooltip = { #Otherwise hand out titles normally. + scope:target = { + change_title_holder = { + holder = scope:title_recipient + change = scope:change + } + } + do_ghw_title_handout = scope:change + } + } + # Create a dynamic title if the kingdom itself can't be created/taken + hidden_effect = { + if = { + limit = { #In the event that, for ex. k_jerusalem exists and is held by a foreign ruler who is not involved in the war in any way. + exists = scope:target + exists = scope:target.holder + scope:target.holder = { + is_alive = yes + faith = scope:attacker.faith + } + } + random_list = { + 50 = { + create_dynamic_title = { + tier = kingdom + name = CRUSADER_STATE_CRUSADER_TITLE_NAME + } + } + 50 = { + create_dynamic_title = { + tier = kingdom + name = CRUSADER_STATE_FAITH_TITLE_NAME + } + } + } + scope:attacker.faith.great_holy_war = { + scope:new_title = { + change_title_holder = { + holder = scope:title_recipient + change = scope:change + } + } + do_ghw_title_handout = scope:change + } + scope:new_title = { generate_coa = yes } + } + else = { #Otherwise hand out titles normally. + scope:attacker.faith.great_holy_war = { + scope:target = { + change_title_holder = { + holder = scope:title_recipient + change = scope:change + } + } + do_ghw_title_handout = scope:change + } + } + scope:title_recipient = { + every_realm_province = { + refill_levy = yes + refill_garrison = yes + } + } + } + #Set 30 years cooldown. + hidden_effect = { + scope:attacker = { + faith = { + set_variable = { + name = variable_ghw_cooldown + value = yes + years = 40 + } + } + } + scope:attacker.faith.great_holy_war = { #Give Prestige/Piety modifier to Dynasty/House of the winners' Beneficiaries (only if they gained any land in the GHW). + every_pledged_attacker = { + limit = { exists = ghw_beneficiary } + ghw_beneficiary = { trigger_event = great_holy_war.0061 } + } + } + } + + ordered_in_list = { + list = target_titles + order_by = tier + max = 1 + + save_scope_as = war_goal_title + } + + scope:attacker.faith = { + change_fervor = { + value = -25 + desc = fervor_loss_great_holy_war + } + } + scope:defender.faith = { + change_fervor = { + value = 30 + desc = fervor_gain_great_holy_war + } + } + + #Truce between the chief beneficiary & all defenders + add_truce_GHW_attacker_victory_effect = yes + + every_player = { #Fluff for players + limit = { + OR = { + this = scope:attacker + this = scope:defender + any_war_enemy = { this = scope:attacker } + any_war_enemy = { this = scope:defender } + is_within_diplo_range = { CHARACTER = scope:defender } + } + } + trigger_event = great_holy_war.0052 #Differentiate depending on faith (compared to scope:attacker) + } + + # FP1: note the victory for future memorialisation via stele (if applicable). + scope:attacker = { fp1_remember_recent_conquest_victory_effect = yes } + + scope:title_recipient = { + custom_tooltip = legend_seed_ghw.tt + } + + hidden_effect = { + every_in_list = { + list = beneficiary_fixing_list + if = { + limit = { + has_government = herder_government + } + every_held_title = { + limit = { + tier = tier_county + title_province = { + has_holding_type = herder_holding + } + } + title_province = { + set_holding_type = nomad_holding + } + } + change_government = nomad_government + domicile = { + set_domicile_culture = prev.capital_county.culture + set_domicile_faith = prev.capital_county.faith + } + } + } + } + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_victory_effects = yes + } + + on_white_peace_desc = { + desc = WHITE_PEACE_DISABLED + } + + on_defeat_desc = { + desc = great_holy_war_defeat_desc + } + + on_defeat = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_defeat_effect = yes + + scope:defender = { + mandala_peacemaker_perk_serenity_effect = yes + #EP2 accolade glory gain for winning against higher ranked enemy + accolade_defender_war_end_glory_gain_high_effect = yes + } + + scope:attacker.faith.great_holy_war.ghw_target_title = { #Loc keys for localization fluff. + save_scope_as = target_kingdom + } + scope:attacker = { + save_scope_as = ghw_sponsor + } + scope:defender = { + save_scope_as = ghw_defender + } + scope:attacker.faith = { + save_scope_as = the_faith + } + scope:attacker.faith.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 = { + this = scope:attacker + this = scope:defender + any_war_enemy = { this = scope:attacker } + any_war_enemy = { this = scope:defender } + is_within_diplo_range = { CHARACTER = scope:defender } + } + } + trigger_event = great_holy_war.0053 #Differentiate depending on faith (compared to scope:attacker) + } + + # Truce + add_truce_attacker_defeat_effect = yes + + scope:attacker = { + faith = { + change_fervor = { + value = -15 + desc = fervor_loss_lost_great_holy_war + } + } + } + + #Set 30 years cooldown. + hidden_effect = { + scope:attacker = { + faith = { + set_variable = { + name = variable_ghw_cooldown + value = yes + years = 30 + } + } + } + } + + #Mandalas gain or lose piety/devotion depending on Decree + mandala_war_defeat_effects = yes + } + + max_ai_diplo_distance_to_title = 750 +} diff --git a/common/character_interactions/00_alliance.txt b/common/character_interactions/00_alliance.txt new file mode 100644 index 00000000..d2fdf175 --- /dev/null +++ b/common/character_interactions/00_alliance.txt @@ -0,0 +1,4136 @@ +call_ally_interaction = { + category = interaction_category_diplomacy + desc = call_ally_interaction_desc + interface_priority = 60 + interface = call_ally + special_interaction = call_ally_interaction + popup_on_receive = yes + pause_on_receive = yes + icon = alliance + + greeting = positive + notification_text = CALL_ALLY_NOTIFICATION + + is_shown = { + scope:actor = { + is_at_war = yes + trigger_if = { # Avoid calling Adventurers without armies or landed rulers who have been devastated + limit = { + is_ai = yes + } + scope:recipient.current_military_strength >= 100 + } + trigger_if = { + limit = { + liege = scope:recipient # The recipient is actor's liege + } + subject_contract_has_flag = vassal_contract_liege_forced_war_override + } + trigger_if = { + limit = { + scope:recipient = { + is_tributary_of = scope:actor + NOT = { is_allied_to = scope:actor } + } + } + piety >= 50 + has_realm_law_flag = can_call_tributaries_for_piety + } + } + scope:recipient = { + OR = { + is_allied_to = scope:actor + AND = { + this ?= scope:actor.diarch + scope:actor = { + any_character_war = { diarch_callable_in_internal_war_trigger = yes } + } + } + scope:actor = { + is_vassal_of = prev + subject_contract_has_flag = vassal_contract_liege_forced_war_override + } + scope:actor = { + is_tributary_of = prev + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + AND = { + is_tributary_of = scope:actor + scope:actor = { + piety >= 50 + has_realm_law_flag = can_call_tributaries_for_piety + } + } + } + } + scope:actor = { #If you can call them as a House Member then do that + NOT = { + is_character_interaction_valid = { + recipient = scope:recipient + interaction = call_house_member_to_war_interaction + } + } + } + } + + has_valid_target = { + exists = scope:target + } + + has_valid_target_showing_failures_only = { + scope:target = { + is_war_leader = scope:actor + } + + scope:actor = { + trigger_if = { + limit = { # if you're invoking your suzerain's defensive guarantee, it has to be for a defensive war + NOT = { is_allied_to = scope:recipient } + suzerain = scope:recipient + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + scope:target = { + primary_defender = scope:actor + } + } + + trigger_if = { + limit = { + scope:target = { + OR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + } + + trigger_if = { + limit = { + this = scope:target.casus_belli.primary_attacker + } + #if it's a religious war the recipient has to be of the same faith + custom_description = { + text = is_of_wrong_faith_for_holy_war + subject = scope:actor + object = scope:recipient + faith = scope:recipient.faith + } + } + trigger_else = { + custom_description = { + text = is_of_attacker_faith_in_holy_war + subject = scope:actor + object = scope:recipient + scope:target = { primary_attacker.faith != scope:recipient.faith } + } + } + } + } + + joiner_not_already_in_another_war_with_any_target_war_participants_trigger = { + WARRIOR = scope:actor + JOINER = scope:recipient + } + } + + + is_valid_showing_failures_only = { + + scope:recipient = { + is_ruler = yes + + # Only rulers of a high enough rank may call a hegemon into wars + custom_tooltip = { + text = too_low_rank_to_call_hegemon + trigger_if = { + limit = { highest_held_title_tier = tier_hegemony } + scope:actor = { highest_held_title_tier >= tier_empire } + } + } + } + + scope:actor = { + # Only War Leaders can call allies + custom_description = { + text = must_be_war_leader + any_character_war = { + is_war_leader = scope:actor + } + } + + # Cannot call the same character multiple times + custom_description = { + text = cannot_call_same_character_multiple_times + subject = scope:recipient + any_character_war = { + ALL_FALSE = { + was_called = scope:recipient + is_participant = scope:recipient + } + } + } + + # Cannot call a character of the "wrong" religion to a Great Holy War + trigger_if = { + limit = { + faith != scope:recipient.faith + } + custom_description = { + text = is_of_wrong_faith_for_holy_war + subject = scope:actor + object = scope:recipient + any_character_war = { + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + } + } + } + + can_potentially_call_ally_trigger = { + WARRIOR = scope:actor + JOINER = scope:recipient + } + } + + can_be_picked = { + can_join_war_liege_vassal_check_trigger = { WARRIOR = scope:actor JOINER = scope:recipient } + + scope:target = { + is_war_leader = scope:actor + + # not already in target war + custom_description = { + text = join_war_interaction_already_in_target_war + NOR = { + any_war_attacker = { this = scope:recipient } + any_war_defender = { this = scope:recipient } + } + } + + # Diarchs can only be called to internal wars. + custom_tooltip = { + text = call_ally_interaction.tt.diarchs_called_to_internal_wars + trigger_if = { + limit = { scope:recipient ?= scope:actor.diarch } + primary_defender = scope:actor + diarch_callable_in_internal_war_trigger = yes + } + } + } + + # You cannot call a suzerain against their own tributary + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + scope:target.casus_belli.primary_attacker = { is_tributary_of_suzerain_or_above = scope:recipient } + } + NOT = { + scope:target.casus_belli.primary_attacker = { is_tributary_of_suzerain_or_above = scope:recipient } + } + } + trigger_else_if = { + limit = { + scope:target.casus_belli.primary_attacker = scope:actor + scope:target.casus_belli.primary_defender = { is_tributary_of_suzerain_or_above = scope:recipient } + } + NOT = { + scope:target.casus_belli.primary_defender = { is_tributary_of_suzerain_or_above = scope:recipient } + } + } + trigger_else = {} + + # You cannot call a tributary against their suzerain + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_attacker } + } + NOT = { + scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_attacker } + } + } + trigger_else_if = { + limit = { + scope:target.casus_belli.primary_attacker = scope:actor + scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_defender } + } + NOT = { + scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_defender } + } + } + trigger_else = {} + } + + on_auto_accept = { + scope:recipient = { + trigger_event = call_ally.0001 + } + scope:target = { + if = { + limit = { + is_religious_war = yes + scope:recipient = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + scope:recipient = { + add_piety = miniscule_piety_gain + } + } + if = { + limit = { + is_religious_war = yes + scope:recipient = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + scope:recipient = { + add_piety = minor_piety_gain + } + } + } + } + + on_accept = { + call_ally_interaction_effect = yes + + save_scope_value_as = { + name = call_ally_interaction + value = yes + } + + scope:actor = { + hidden_effect = { #To nudge friendship + if = { + limit = { + NOR = { + has_relation_friend = scope:recipient + has_relation_potential_friend = scope:recipient + } + } + set_relation_potential_friend = scope:recipient + } + } + trigger_event = call_ally.0100 + } + scope:target = { + if = { + limit = { + is_religious_war = yes + scope:recipient = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + scope:recipient = { + add_piety = minor_piety_gain + } + } + if = { + limit = { + is_religious_war = yes + scope:recipient = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + scope:recipient = { + add_piety = medium_piety_gain + } + } + } + } + + on_decline = { + #The war could theoretically end on the day the decline is sent + if = { + limit = { + exists = scope:target + } + scope:target = { + if = { + limit = { + is_attacker = scope:actor + } + scope:actor = { + add_opinion = { + modifier = rejected_call_to_offensive_war + target = scope:recipient + } + } + scope:recipient = { + #Why should Mandalas care about bickering tributaries in an offensive war + if = { + limit = { + NOT = { government_has_flag = government_is_mandala } + } + add_prestige_experience = major_prestige_loss + } + } + } + else = { + scope:actor = { + add_opinion = { + modifier = rejected_call_to_defensive_war + target = scope:recipient + } + } + scope:recipient = { + if = { + limit = { government_has_flag = government_is_mandala } + add_prestige_experience = major_prestige_loss + add_piety_level = -1 + } + else = { add_prestige_experience = massive_prestige_loss } + } + } + if = { + limit = { + scope:actor = { + has_relation_blood_brother = scope:recipient + } + } + scope:recipient = { + add_piety_experience = massive_piety_loss + add_character_modifier = { + modifier = broke_blood_brotherhood_modifier + desc = broke_blood_brotherhood_modifier_acceptance_tt + years = 25 + } + remove_relation_blood_brother = scope:actor + } + scope:actor = { + set_relation_rival = { + target = scope:recipient + reason = rival_blood_brother_refused_call_reason + } + } + } + # Nomad Vassals and Tributaries stop being Obedient if they have the Liege War Support / Suzerain Defensive Guarantee contract right + if = { + limit = { + scope:recipient = scope:actor.obedience_target + scope:actor = { + OR = { + subject_contract_has_flag = vassal_contract_liege_forced_war_override + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + } + } + scope:actor = { + set_variable = { + name = not_obedient_declined_call + value = scope:recipient + years = 5 + } + } + } + if = { + limit = { + scope:recipient = scope:actor.suzerain + is_defender = scope:actor + scope:actor = { + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + } + scope:actor = { + end_tributary = yes + } + } + hidden_effect = { + if = { + limit = { + NOT = { was_called = scope:recipient } + } + set_called_to = scope:recipient + } + } + } + scope:actor = { + trigger_event = call_ally.0101 + } + + # If we're a clan this interaction affects unity + refuse_call_to_arms_add_clan_unity_effect = yes + + scope:recipient = { + if = { + limit = { + exists = house + is_house_head = yes + exists = scope:actor.house + } + house = { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = ally_call_ignored + CHAR = scope:recipient + TARGET_CHAR = scope:actor + TITLE = scope:dummy_gender + } + } + } + } + } + } + + auto_accept = { + OR = { + # Always accept a call from a Spouse + custom_description = { + text = "recipient_is_spouse" + subject = scope:actor + object = scope:recipient + scope:recipient = { + is_spouse_of = scope:actor + is_ai = yes + } + } + # Always accept a call from the Heir + custom_description = { + text = "is_recipients_player_heir" + subject = scope:actor + object = scope:recipient + + exists = scope:recipient.player_heir + scope:recipient = { + player_heir = scope:actor + is_close_or_extended_family_of = scope:actor # Only for family + is_ai = yes + } + } + # Always accept a call from the one you are heir of + custom_description = { + text = "is_player_heir" + subject = scope:recipient + object = scope:actor + + exists = scope:actor.player_heir + scope:actor.player_heir = scope:recipient + scope:actor = { # Shouldn't be able to force your liege to join just because you've not got any family... + is_close_or_extended_family_of = scope:recipient + } + scope:recipient = { + is_ai = yes + } + } + } + } + + ai_accept = { + base = 20 + + modifier = { # Conquerors do not help anyone but themselves + add = -1000 + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + scope:recipient = { has_variable = conqueror } + } + + modifier = { # AI's that need to save gold will not help their lesser AI allies, unless it's a player war + add = -1000 + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + scope:actor = { + is_ai = yes + primary_title.tier < scope:recipient.primary_title.tier + } + scope:target.casus_belli = { + primary_attacker = { is_ai = yes } + primary_defender = { is_ai = yes } + } + scope:recipient = { ai_should_focus_on_building_in_their_capital = yes } + } + + modifier = { # Refuse call to conflicts of little benefit + add = -1000 + desc = WONT_FIGHT_MEANINGLESS_REASON + trigger_if = { + limit = { exists = scope:target } + scope:target = { using_cb = fp2_border_raid } + scope:recipient = { # Unless they like going on raids + NOR = { + has_trait = viking + has_trait = reaver + } + } + } + trigger_else = { always = no } + } + + modifier = { # Refuse call against Heir + add = -1000 + exists = scope:recipient.player_heir + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + scope:target.casus_belli.primary_attacker = scope:recipient.player_heir + } + trigger_else = { + scope:target.casus_belli.primary_defender = scope:recipient.player_heir + } + desc = WONT_FIGHT_HEIR_REASON + } + + modifier = { # Refuse call against Spouse + add = -1000 + scope:recipient = { + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + any_spouse = { + this = scope:target.casus_belli.primary_attacker + } + } + trigger_else = { + any_spouse = { + this = scope:target.casus_belli.primary_defender + } + } + + } + desc = WONT_FIGHT_SPOUSE_REASON + } + + modifier = { # Refuse call against Suzerain if Obedient + add = -1000 + trigger_if = { + limit = { + exists = scope:recipient.suzerain + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + scope:recipient.suzerain = scope:target.casus_belli.primary_attacker + } + trigger_else = { + scope:recipient.suzerain = scope:target.casus_belli.primary_defender + } + scope:recipient = { + exists = obedience_target + is_obedient = yes + } + } + } + trigger_else = { always = no } + desc = WONT_FIGHT_OBEDIENT_REASON + } + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + # Honor factor + ai_value_modifier = { + ai_honor = 1 + min = 0 + } + + modifier = { # Tends to join defensive wars + add = 50 + scope:target.casus_belli.primary_defender = scope:actor + desc = DEFENSIVE_WAR_REASON + } + + modifier = { # Same language + add = 5 + desc = speaks_same_language_interaction_reason + trigger = { + scope:actor = { + knows_language_of_culture = scope:recipient.culture + } + } + } + + modifier = { # Shared Court Language (non-spoken) + add = 10 + desc = foreign_realm_court_language_non_spoken_interaction_reason + trigger = { + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + NOT = { knows_court_language_of = this } + } + scope:actor.top_liege != scope:recipient.top_liege + OR = { + AND = { + scope:recipient = { + has_royal_court = yes + } + scope:actor = { # You share Court Language + has_same_court_language = scope:recipient + } + } + + scope:recipient = { # The recipient doesn't have a royal court, but their liege does + top_liege != this + has_royal_court = no + liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + exists = liege.liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + exists = liege.liege.liege + exists = liege.liege.liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + } + } + } + + modifier = { # Shared Court Language (spoken) + add = 30 + desc = foreign_realm_court_language_spoken_interaction_reason + trigger = { + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + knows_court_language_of = this + } + scope:actor.top_liege != scope:recipient.top_liege + OR = { + AND = { + scope:recipient = { + has_royal_court = yes + } + scope:actor = { # You share Court Language + has_same_court_language = scope:recipient + } + } + + scope:recipient = { # The recipient doesn't have a royal court, but their liege does + top_liege != this + has_royal_court = no + liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + exists = liege.liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + exists = liege.liege.liege + exists = liege.liege.liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + } + } + } + + modifier = { # Serious diarchs wish to support their liege + add = 50 + desc = ENTRENCHED_REGENT_WILL_SUPPORT_LIEGE + trigger_if = { + limit = { scope:recipient ?= scope:actor.diarch } + scope:actor = { has_diarchy_parameter = diarchy_type_is_entrenched_regency } + } + trigger_else = { always = no } + } + + compare_modifier = { # Likes fighting infidels + trigger = { + scope:recipient.faith = scope:actor.faith + OR = { + AND = { + scope:target.casus_belli.primary_attacker = { + this = scope:actor + faith = { + faith_hostility_level = { + target = scope:target.casus_belli.primary_defender.faith + value >= religious_cb_enabled_hostility_level + } + } + } + } + AND = { + scope:target.casus_belli.primary_defender = { + this = scope:actor + faith = { + faith_hostility_level = { + target = scope:target.casus_belli.primary_defender.faith + value >= religious_cb_enabled_hostility_level + } + } + } + } + } + } + target = scope:recipient + value = ai_zeal + desc = "ZEAL_AGAINST_INFIDELS" + min = 0 + multiplier = 0.5 + } + + modifier = { # Reluctant to attack another ally + add = -50 + scope:target.casus_belli.primary_attacker = scope:actor + scope:recipient = { + is_allied_to = scope:target.casus_belli.primary_defender + } + desc = ATTACK_ON_ALLY_REASON + } + + modifier = { # Reluctant to defend against another ally + add = -25 + scope:target.casus_belli.primary_defender = scope:actor + scope:recipient = { + is_allied_to = scope:target.casus_belli.primary_attacker + } + desc = WAR_WITH_ALLY_REASON + } + + modifier = { # Reluctant to join wars against religious brethren. + add = -50 + scope:recipient.faith != scope:actor.faith + scope:target.casus_belli.primary_attacker = scope:actor + scope:target.casus_belli.primary_defender.faith = scope:recipient.faith + scope:target.casus_belli.war = { + OR = { + using_cb = minor_religious_war + using_cb = religious_war + using_cb = major_religious_war + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + desc = WONT_ATTACK_RELIGIOUS_BRETHREN_REASON + } + + modifier = { # Reluctant to join against Friends + add = -50 + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + } + has_relation_friend = scope:target.casus_belli.primary_attacker + } + trigger_else = { + has_relation_friend = scope:target.casus_belli.primary_defender + } + desc = WONT_FIGHT_FRIEND_REASON + } + + modifier = { # Reluctant to join against Best Friends + add = -100 + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + } + has_relation_best_friend = scope:target.casus_belli.primary_attacker + } + trigger_else = { + has_relation_best_friend = scope:target.casus_belli.primary_defender + } + desc = WONT_FIGHT_BEST_FRIEND_REASON + } + modifier = { # Reluctant to join against Lovers + add = -100 + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + } + has_relation_lover = scope:target.casus_belli.primary_attacker + } + trigger_else = { + has_relation_lover = scope:target.casus_belli.primary_defender + } + desc = WONT_FIGHT_LOVER_REASON + } + modifier = { # Reluctant to join against Soulmate + add = -200 + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + } + has_relation_soulmate = scope:target.casus_belli.primary_attacker + } + trigger_else = { + has_relation_soulmate = scope:target.casus_belli.primary_defender + } + desc = WONT_FIGHT_SOULMATE_REASON + } + modifier = { # Reluctant to join tributaries + add = -200 + scope:actor = { + is_tributary_of = scope:recipient + NOT = { subject_contract_has_flag = tributary_contract_suzerain_guarantee_override } + } + scope:recipient = { + NOR = { + has_relation_lover = scope:actor + has_relation_friend = scope:actor + is_allied_to = scope:actor + } + } + desc = WONT_FIGHT_MEANINGLESS_REASON + } + modifier = { # Refuse call for hostages' safety + any_home_court_hostage = { + warden = { + OR = { + is_at_war_with = scope:actor + any_ally = { is_at_war_with = scope:actor } + } + } + } + add = { + value = 0 + every_home_court_hostage = { + limit = { + warden = { + OR = { + is_at_war_with = scope:actor + any_ally = { is_at_war_with = scope:actor } + } + } + } + subtract = call_to_arms_hostage_value + } + multiply = 0.25 + } + desc = HOSTAGE_ENEMY_CALL_TO_ARMS_REASON + } + + modifier = { + scope:recipient.house.house_confederation ?= { + trigger_if = { + limit = { scope:actor = { is_defender_in_war = scope:target } } + this = scope:target.casus_belli.primary_attacker.house.house_confederation + } + trigger_else = { this = scope:target.casus_belli.primary_defender.house.house_confederation } + } + add = -100 + desc = BLOC_MEMBER_CALL_TO_ARMS_REASON + } + + modifier = { + add = 200 + scope:actor = { + is_tributary_of = scope:recipient + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + desc = MANDALA_GUARANTEE_REASON + } + + fp3_struggle_resist_allied_wars_modifier = yes + } + + # Score above 0 means the AI will call this ally. Note that DESIRED_WAR_SIDE_STRENGTH still applies and can prevent calling the ally + ai_will_do = { + base = 100 + + modifier = { # If the player is at war, do not bother them with offensive calls + scope:target.casus_belli.primary_attacker = scope:actor + scope:recipient = { + is_ai = no + any_character_war = { + primary_defender = scope:recipient + } + } + factor = 0 + } + + modifier = { # Do not call the player if they are in debt + scope:recipient = { + is_ai = no + gold <= -1 + } + factor = 0 + } + + modifier = { # Don't call players in against their heirs (they wouldn't accept the reverse situation... don't be a hypocrite) + exists = scope:recipient.player_heir + scope:recipient = { + is_ai = no + } + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + scope:target.casus_belli.primary_attacker = scope:recipient.player_heir + } + trigger_else = { + scope:target.casus_belli.primary_defender = scope:recipient.player_heir + } + factor = 0 + } + + modifier = { # Same with spouses + scope:recipient = { + is_ai = no + } + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + any_spouse = { + this = scope:target.casus_belli.primary_attacker + } + } + trigger_else = { + any_spouse = { + this = scope:target.casus_belli.primary_defender + } + } + factor = 0 + } + + modifier = { # Don't call brand-new allies into old wars, at least until some time has elapsed. + has_variable = delay_calling_recent_ally + var:delay_calling_recent_ally = scope:recipient + scope:target = { + war_days >= 30 + } + factor = 0 + + } + + modifier = { # If the recipient is allied to both the attacker and the defender, the attacker shouldn't call + scope:target.casus_belli.primary_attacker = scope:actor + scope:target.casus_belli.primary_defender = { + is_allied_to = scope:recipient + } + factor = 0 + } + + #You're a Mandala Suzerain; you don't get off the hook that easily + modifier = { + scope:actor = { subject_contract_has_flag = tributary_contract_suzerain_guarantee_override } + scope:recipient = scope:actor.suzerain + add = 500 + } + } +} + +negotiate_alliance_interaction = { + category = interaction_category_diplomacy + ai_min_reply_days = 4 + ai_max_reply_days = 9 + icon = alliance + + send_name = negotiate_alliance_interaction + + interface_priority = 60 + desc = negotiate_alliance_interaction_desc + + greeting = positive + notification_text = NEGOTIATE_ALLIANCE_NOTIFICATION + + is_shown = { + scope:recipient = { + this != scope:actor + NOT = { is_allied_to = scope:actor } + is_ruler = yes + } + scope:actor = { + is_ruler = yes + OR = { + is_ai = no + highest_held_title_tier >= 2 + } + #childhood friendship with hostage event, where they swear to be friends forever + OR = { + is_any_family_relation_or_spouse_trigger = { CHARACTER = scope:recipient } + hostage_oath_of_friendship_trigger = yes + #Parents/spouse were blood brothers + has_opinion_modifier = { + modifier = blood_brother_close_family_opinion + target = scope:recipient + } + house ?= { + house_head = scope:actor + any_house_relation = { + any_relation_house = { + exists = house_head + scope:recipient = house_head + } + has_house_relation_parameter = unlocks_house_head_negotiate_alliance + } + } + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + is_playable_character = yes + is_imprisoned = no + } + scope:actor = { + is_playable_character = yes + is_imprisoned = no + NOT = { + is_at_war_with = scope:recipient + } + } + custom_description = { + text = "has_already_rejected_renegotiation" + subject = scope:recipient + NOT = { + scope:actor = { + has_opinion_modifier = { + modifier = refused_alliance_opinion + target = scope:recipient + } + } + } + } + + scope:actor = { highest_held_title_tier < tier_hegemony } + scope:recipient = { highest_held_title_tier < tier_hegemony } + OR = { + #Ruler has the defensive negotiations perk + scope:actor = { has_perk = defensive_negotiations_perk } + #Ruler is married to other ruler. + scope:actor = { is_spouse_of = scope:recipient } + #Ruler is relative of other ruler + scope:actor = { is_parent_of = scope:recipient } + scope:actor = { is_grandparent_of = scope:recipient } + scope:actor = { is_great_grandparent_of = scope:recipient } + scope:actor = { is_child_of = scope:recipient } + scope:actor = { is_grandchild_of = scope:recipient } + scope:actor = { is_great_grandchild_of = scope:recipient } + scope:actor = { is_uncle_or_aunt_of = scope:recipient } + scope:actor = { is_nibling_of = scope:recipient } + scope:actor = { is_sibling_of = scope:recipient } + #Parents/spouse were blood brothers + scope:actor = { + has_opinion_modifier = { + modifier = blood_brother_close_family_opinion + target = scope:recipient + } + } + + custom_description = { + text = rulers_family_is_married_to_other_ruler_trigger + subject = scope:recipient + object = scope:actor + #Ruler's child/parent/sibling/grandchild/grandparent/uncle/aunt/niece/nephew is married to other ruler. + scope:recipient = { + any_spouse = { + OR = { + is_close_family_of = scope:actor + is_nibling_of = scope:actor + is_uncle_or_aunt_of = scope:actor + } + } + } + } + + custom_description = { + text = rulers_family_is_married_to_other_ruler_trigger + subject = scope:actor + object = scope:recipient + #Other ruler's child/parent/sibling/grandchild/grandparent/uncle/aunt/niece/nephew is married to first ruler. + scope:actor = { + any_spouse = { + OR = { + is_close_family_of = scope:recipient + is_nibling_of = scope:recipient + is_uncle_or_aunt_of = scope:recipient + } + } + } + } + + custom_description = { + text = rulers_child_parent_sibling_is_married_to_other_rulers_trigger + subject = scope:recipient + object = scope:actor + # Ruler's child/parent/sibling is married to other ruler's child/parent/sibling. + scope:actor = { + any_close_family_member = { + OR = { + is_parent_of = scope:actor + is_child_of = scope:actor + is_sibling_of = scope:actor + } + any_spouse = { + OR = { + is_parent_of = scope:recipient + is_child_of = scope:recipient + is_sibling_of = scope:recipient + } + } + } + } + } + + custom_description = { + text = hostage_oath_of_friendship_trigger + subject = scope:recipient + object = scope:actor + #childhood friendship with hostage event, where they swear to be friends forever + scope:actor = { + hostage_oath_of_friendship_trigger = yes + } + } + + custom_tooltip = { + text = house_relation_alliance_trigger + scope:actor.house ?= { + house_head ?= scope:actor + any_house_relation = { + any_relation_house = { + exists = house_head + scope:recipient = house_head + } + has_house_relation_parameter = unlocks_house_head_negotiate_alliance + } + } + } + } + } + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0234 + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + # Admin Gov can spend Influence to increase AI acceptance towards other same-realm admin characters + send_option = { + is_shown = { + scope:actor = { + government_allows = administrative + } + scope:recipient = { + top_liege = scope:actor.top_liege + government_allows = administrative + } + } + is_valid = { + scope:actor = { + influence >= major_influence_value + } + custom_tooltip = { + text = ALREADY_USING_HOOK + NOT = { scope:hook = yes } + } + } + flag = influence + localization = SPEND_INFLUENCE + } + + send_options_exclusive = no + + on_accept = { + scope:actor = { + trigger_event = char_interaction.0235 + + stress_impact = { + shy = minor_stress_impact_gain + } + + if = { + limit = { + scope:hook = yes + has_usable_hook = scope:recipient + } + use_hook = scope:recipient + } + if = { + limit = { + scope:influence = yes + } + change_influence = major_influence_loss + } + } + + scope:recipient = { + custom_tooltip = negotiate_alliance_effect_recipient_tooltip + } + + #Set up alliance, depending on relation between rulers. + hidden_effect = { + #Prioritize marriage between rulers and/or direct blood relation between rulers first. + if = { + limit = { + scope:actor = { + OR = { + is_spouse_of = scope:recipient + is_child_of = scope:recipient + is_parent_of = scope:recipient + is_sibling_of = scope:recipient + is_grandparent_of = scope:recipient + is_great_grandparent_of = scope:recipient + is_grandchild_of = scope:recipient + is_great_grandchild_of = scope:recipient + is_uncle_or_aunt_of = scope:recipient + is_nibling_of = scope:recipient + } + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:recipient + } + } + } + #...Then marriage between close family members and either actor or recipient. + else_if = { + limit = { + scope:recipient = { + any_spouse = { + OR = { + is_close_family_of = scope:actor + is_nibling_of = scope:actor + is_uncle_or_aunt_of = scope:actor + } + } + } + } + scope:recipient = { + random_spouse = { + limit = { + OR = { + is_close_family_of = scope:actor + is_nibling_of = scope:actor + is_uncle_or_aunt_of = scope:actor + } + } + save_scope_as = recipient_spouse + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:recipient_spouse + allied_through_target = scope:recipient + } + } + } + else_if = { + limit = { + scope:actor = { + any_spouse = { + OR = { + is_close_family_of = scope:recipient + is_nibling_of = scope:recipient + is_uncle_or_aunt_of = scope:recipient + } + } + } + } + scope:actor = { + random_spouse = { + limit = { + OR = { + is_close_family_of = scope:recipient + is_nibling_of = scope:recipient + is_uncle_or_aunt_of = scope:recipient + } + } + save_scope_as = actor_spouse + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:actor_spouse + } + } + } + #...And finally marriage between close relatives and close relatives. + else_if = { + limit = { + scope:actor = { + any_close_family_member = { + OR = { + is_child_of = scope:actor + is_parent_of = scope:actor + is_sibling_of = scope:actor + } + any_spouse = { + OR = { + is_child_of = scope:recipient + is_parent_of = scope:recipient + is_sibling_of = scope:recipient + } + } + } + } + } + scope:actor = { + random_close_family_member = { + limit = { + OR = { + is_child_of = scope:actor + is_parent_of = scope:actor + is_sibling_of = scope:actor + } + any_spouse = { + OR = { + is_child_of = scope:recipient + is_parent_of = scope:recipient + is_sibling_of = scope:recipient + } + } + } + save_scope_as = actor_spouse + random_spouse = { + limit = { + OR = { + is_child_of = scope:recipient + is_parent_of = scope:recipient + is_sibling_of = scope:recipient + } + } + save_scope_as = recipient_spouse + } + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor_spouse + allied_through_target = scope:recipient_spouse + } + } + } + else_if = { + limit = { + scope:actor = { has_perk = defensive_negotiations_perk } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:recipient + } + } + scope:recipient = { # This opinion modifier controls the interaction, and is removed when breaking the alliance in any way (though on_actions) + add_opinion = { + modifier = perk_negotiated_alliance_opinion + target = scope:actor + } + } + } + else_if = { + limit = { + scope:actor = { + hostage_oath_of_friendship_trigger = yes + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:recipient + } + } + } + } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_alliance.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0236 + } + scope:actor = { + add_opinion = { + modifier = refused_alliance_opinion + target = scope:recipient + } + } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_alliance_refusal.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + ai_accept = { + base = 0 + + # Tier Difference (+/-) + # Inheritance (+) + # Opinion (+/-) + # Dynasty Prestige. (+) + # Different Faith. (-) + # Liege is asking (+) + # Dread (+) + # Power difference (+/-) + # Claimants (+/-) + # Same House (+) + # Declared war opinion + # Actor is at war penalty + + modifier = { + add = 20 + scope:recipient = { + is_close_family_of = scope:actor + } + desc = CLOSE_FAMILY_REASON + } + + modifier = { + add = 10 + scope:recipient = { + NOT = { is_close_family_of = scope:actor } + is_extended_family_of = scope:actor + } + desc = EXTENDED_FAMILY_REASON + } + + modifier = { + add = -20 + scope:recipient = { + NOT = { is_close_or_extended_family_of = scope:actor } + any_spouse = { + NOT = { is_close_family_of = scope:actor } + is_extended_family_of = scope:actor + } + } + desc = DISTANT_FAMILY_CONNECTION_REASON + } + + # Tier Differences + modifier = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 1 + } + } + add = { + value = 30 + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 2 + } + } + add = 30 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 3 + } + } + add = 60 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 4 + } + } + add = 90 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 5 + } + } + add = 120 + } + } + desc = RANK_DIFFERENCE_REASON + } + modifier = { + scope:actor = { + tier_difference = { + target = scope:recipient + value <= -1 + } + } + add = { + value = -30 + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -2 + } + } + add = -30 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -3 + } + } + add = -60 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -4 + } + } + add = -90 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -5 + } + } + add = -120 + } + } + desc = RANK_DIFFERENCE_REASON + } + modifier = { + scope:recipient = { + has_relation_lover = scope:actor + } + add = { + value = 25 + } + desc = WE_ARE_LOVERS + } + modifier = { + scope:recipient = { + has_relation_friend = scope:actor + } + add = { + value = 25 + } + desc = WE_ARE_FRIENDS + } + modifier = { + scope:recipient = { + is_heir_of = scope:actor + } + scope:actor = { + tier_difference = { + target = scope:recipient + value > 0 + } + } + add = { + value = 10 + if = { + limit = { + scope:actor = { player_heir = scope:recipient } + } + add = 10 + } + } + desc = IS_HEIR_REASON + } + opinion_modifier = { # More likely to accept if Recipient likes the Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.25 + min = 0 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Less likely to accept if Recipient dislikes the Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + max = 0 + desc = AI_OPINION_REASON + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = loyal + } + desc = INTERACTION_LOYAL + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = trusting + } + desc = INTERACTION_TRUSTING + } + + modifier = { + add = 5 + scope:recipient = { + has_trait = craven + } + desc = INTERACTION_CRAVEN + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = paranoid + } + desc = INTERACTION_PARANOID + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = arrogant + } + desc = INTERACTION_ARROGANT + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = ambitious + } + desc = INTERACTION_AMBITIOUS + } + + modifier = { + add = -40 + scope:recipient = { + has_trait = disloyal + } + desc = INTERACTION_DISLOYAL + } + + modifier = { + add = -10 + scope:recipient = { + has_trait = fickle + } + desc = INTERACTION_FICKLE + } + + # Rivalry + modifier = { # Say no to rivals + add = -100 + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + desc = "ACTOR_RIVAL_TO_ME_REASON" + } + modifier = { # Say no to nemesis + add = -300 + scope:recipient = { + has_relation_nemesis = scope:actor + } + desc = "ACTOR_NEMESIS_TO_ME_REASON" + } + + # Dynasty Prestige Levels + modifier = { + add = -5 + desc = AI_DYNASTY_PRESTIGE_REASON + scope:actor = { has_dynasty = yes } + scope:actor.dynasty != scope:recipient.dynasty + scope:actor.dynasty = { dynasty_prestige_level = 0 } + } + modifier = { + desc = AI_DYNASTY_PRESTIGE_REASON + scope:actor = { has_dynasty = yes } + scope:actor.dynasty != scope:recipient.dynasty + scope:actor.dynasty = { dynasty_prestige_level >= 2 } + add = { + value = 10 + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 3 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 4 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 5 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 6 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 7 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 8 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 9 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 10 } + } + add = 5 + } + } + } + modifier = { #Faith compatibility + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value > faith_fully_accepted_level + } + } + NOT = { + scope:recipient.ai_zeal <= -50 + } + add = { + value = -10 + if = { + limit = { + # Exempt certain struggle phases. + NOT = { is_struggle_parameter_active_interfaith_marriages_available_between_involved_characters_trigger = yes } + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_astray_level + } + } + } + subtract = 20 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + subtract = 20 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + subtract = 50 + } + if = { + limit = { + scope:recipient.ai_zeal <= -25 + } + divide = 2 + } + else_if = { + limit = { + scope:recipient.ai_zeal >= 50 + } + multiply = 2 + } + if = { + limit = { + scope:recipient.faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + divide = 2 + } + } + } + desc = MARRY_DIFFERENT_FAITH_REASON + } + + modifier = { # A Recipient is more likely to agree to an alliance requested by his liege. + add = 20 + scope:recipient = { + target_is_liege_or_above = scope:actor + } + desc = LIEGE_REASON + } + + modifier = { + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength # For foreign diplomacy, consider recipients max + divide = { value = scope:actor.current_military_strength min = 1 } + } + multiply = 20 + min = -1000 + max = 100 + } + desc = AI_MILITARY_BALANCE_REASON + } + # Recipient is a Claimant to Actor's titles. + modifier = { + scope:recipient = { + any_claim = { + holder = scope:actor + } + NOR = { + is_heir_of = scope:actor + ai_greed <= -25 + } + } + add = { + value = -50 + if = { + limit = { + scope:recipient.ai_greed >= 25 + } + add = ai_greed + } + if = { + limit = { + scope:recipient.house != scope:actor.house + } + multiply = 2 + } + } + desc = IS_CLAIMANT_TO_ACTORS_TITLES + } + #Actor has claims on recipient's titles. + modifier = { + scope:actor = { + any_claim = { + holder = scope:recipient + } + } + add = 25 + desc = IS_CLAIMANT_TO_RECIPIENT_TITLES + } + modifier = { + scope:recipient = { + NOT = { + any_claim = { + holder = scope:actor + } + } + } + scope:recipient.house = scope:actor.house + add = 15 + desc = IS_SAME_HOUSE_REASON + } + modifier = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = declared_war + } + } + add = -100 + desc = DECLARED_WAR_REASON + } + + # Don't form new alliances with people already at war. + modifier = { + scope:actor = { + is_at_war = yes + + # Since vassals and lieges can't call us into wars, this doesn't matter for us if we have that relationship. + NOR = { + target_is_liege_or_above = scope:recipient + target_is_vassal_or_below = scope:recipient + } + } + add = -50 + desc = IS_AT_WAR_REASON + } + + #Bonus from Tradition Astute Diplomats + modifier = { + scope:actor.culture = { has_cultural_parameter = facilitate_alliance_acceptance } + add = 50 #should be in a file 00_traditions_values + desc = TRADITION_ASTUTE_DIPLOMATS_ACCEPTANCE_MODIFIER + } + + # The AI doesn't want to form alliances with AI vassals within its capital duchy, so it can revoke them + modifier = { + scope:actor = { + is_ai = yes + is_vassal_or_below_of = scope:recipient + any_held_title = { + title_tier = county + de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + scope:recipient = { + is_ai = yes + } + add = -5000 + } + + # Feud + modifier = { + add = -25 + scope:recipient = { + house_has_feud_relation_with_trigger = { TARGET = scope:actor } + } + desc = MARRY_FAMILY_FEUD_REASON + } + + # Existing Alliances + modifier = { + add = { + scope:actor = { + every_ally = { + add = -15 + } + } + } + scope:actor = { + any_ally = { + count >= 2 + } + } + NOT = { + scope:recipient = { + government_has_flag = government_is_clan + is_vassal_or_below_of = scope:actor + } + } + desc = EXISTING_ALLIANCES_REASON + } + + # Existing Alliances + modifier = { + add = { + scope:recipient = { + every_ally = { + add = -15 + } + } + } + scope:recipient = { + any_ally = { + count >= 2 + } + } + NOT = { + scope:recipient = { + government_has_flag = government_is_clan + is_vassal_or_below_of = scope:actor + } + } + desc = THEIR_EXISTING_ALLIANCES_REASON + } + + modifier = { + add = intimidated_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + modifier = { + add = intimidated_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + + fp3_struggle_resist_allied_wars_modifier = yes + + # LOW LEGITIMACY + modifier = { + desc = "LOW_LEGITIMACY_REASON" + scope:actor = { + OR = { + has_legitimacy_flag = reduced_alliance_acceptance + has_legitimacy_flag = very_reduced_alliance_acceptance + has_legitimacy_flag = massively_reduced_alliance_acceptance + } + } + add = { + value = 0 + if = { + limit = { scope:actor = { has_legitimacy_flag = reduced_alliance_acceptance } } + add = -25 + } + if = { + limit = { scope:actor = { has_legitimacy_flag = very_reduced_alliance_acceptance } } + add = -50 + } + if = { + limit = { scope:actor = { has_legitimacy_flag = massively_reduced_alliance_acceptance } } + add = -100 + } + } + } + + # HIGH LEGITIMACY + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + scope:actor = { + OR = { + has_legitimacy_flag = increased_alliance_acceptance + has_legitimacy_flag = very_increased_alliance_acceptance + has_legitimacy_flag = extra_increased_alliance_acceptance + } + } + add = { + value = 0 + if = { + limit = { scope:actor = { has_legitimacy_flag = increased_alliance_acceptance } } + add = 10 + } + if = { + limit = { scope:actor = { has_legitimacy_flag = very_increased_alliance_acceptance } } + add = 25 + } + if = { + limit = { scope:actor = { has_legitimacy_flag = extra_increased_alliance_acceptance } } + add = 50 + } + } + } + + # INFLUENCE + modifier = { + desc = INFLUENCE_REASON + scope:influence = yes + add = { + value = 10 + multiply = scope:actor.influence_level + min = 5 + } + } + + # TGP ALLIANCE WITH NF HOUSE HEAD + modifier = { + add = 750 + scope:actor = { + is_house_head = yes + scope:recipient.house ?= this.house + any_held_title = { is_noble_family_title = yes } + } + desc = JAPANESE_HOUSE_HEAD_ALLIANCE_REASON + } + } + + ai_potential = { + is_at_war = no + } + + ai_targets = { + ai_recipients = dynasty + max = 20 + } + + ai_targets = { + ai_recipients = family + max = 10 + } + + ai_targets = { + ai_recipients = spouses + } + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 72 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + any_ally = { + count < 2 + } + scope:recipient = { # Don't propose alliances to tiny insignificant rulers just because + OR = { + current_military_strength >= scope:actor.eighty_percent_of_current_military_strength + primary_title.tier >= scope:actor.primary_title.tier + AND = { + primary_title.tier >= tier_duchy + scope:actor.primary_title.tier < tier_empire + } + } + } + } + + modifier = { # Clans always want alliances with Vassals + add = 100 + scope:actor = { + government_has_flag = government_is_clan + } + scope:recipient = { + is_vassal_of = scope:actor + } + } + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + + modifier = { # The AI shouldn't propose to their Lieges + factor = 0 + is_liege_or_above_of = scope:recipient + } + + modifier = { # The AI shouldn't propose to their Vassals unless Clan + factor = 0 + scope:actor = { + NOT = { government_has_flag = government_is_clan } + } + scope:recipient = { + is_vassal_of = scope:actor + } + } + } +} + +perk_alliance_interaction = { + category = interaction_category_diplomacy + ai_min_reply_days = 4 + ai_max_reply_days = 9 + icon = alliance + + + interface_priority = 60 + desc = perk_alliance_interaction_desc + + greeting = positive + notification_text = PERK_NEGOTIATE_ALLIANCE_NOTIFICATION + + is_shown = { + scope:recipient = { + NOR = { + this = scope:actor + is_allied_to = scope:actor + target_is_vassal_or_below = scope:actor # Can only sign with external rulers/peer vassals, though the alliance is preserved if they somehow become your vassals + target_is_liege_or_above = scope:actor + government_has_flag = government_is_true_herder + } + is_ruler = yes + primary_title.tier > tier_barony + } + scope:actor = { + has_perk = defensive_negotiations_perk + is_landless_adventurer = no + NOR = { + government_has_flag = government_is_true_herder + # This interaction is harder to push through than Negotiate Alliance, and does the same thing, so don't show both + is_character_interaction_shown = { + recipient = scope:recipient + interaction = negotiate_alliance_interaction + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_landless_adventurer = no + } + scope:recipient = { + NOT = { target_is_vassal_or_below = scope:actor } # Can only sign with external rulers/peer vassals, though the alliance is preserved if they somehow become your vassals + NOT = { target_is_liege_or_above = scope:actor } + } + + custom_description = { + text = "already_has_an_alliance_deal" + subject = scope:recipient + scope:actor = { + NOT = { + any_ally = { + has_opinion_modifier = { + modifier = perk_negotiated_alliance_opinion + target = scope:actor + } + } + } + } + } + + scope:recipient = { + is_playable_character = yes + is_at_war = no + is_imprisoned = no + } + + scope:actor = { + is_playable_character = yes + is_at_war = no + is_imprisoned = no + } + + custom_description = { + text = "has_already_rejected_renegotiation" + subject = scope:recipient + scope:actor = { + NOT = { + has_opinion_modifier = { + modifier = refused_alliance_opinion + target = scope:recipient + } + } + } + } + } + + can_send = { + custom_description = { # Exploit prevention + text = "has_sent_interaction_already" + subject = scope:recipient + scope:actor = { + NOT = { + has_pending_interaction_of_type = perk_alliance_interaction + } + } + } + } + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0234 + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + # Admin Gov can spend Influence to increase AI acceptance towards other same-realm admin characters + send_option = { + is_shown = { + scope:actor = { + government_allows = administrative + } + scope:recipient = { + top_liege = scope:actor.top_liege + government_allows = administrative + } + } + is_valid = { + scope:actor = { + influence >= major_influence_value + } + custom_tooltip = { + text = ALREADY_USING_HOOK + NOT = { scope:hook = yes } + } + } + flag = influence + localization = SPEND_INFLUENCE + } + + send_options_exclusive = no + + on_accept = { + save_scope_value_as = { #So that we can show the opinion gain in the response event + name = perk_alliance_interaction + value = yes + } + scope:actor = { + custom_tooltip = negotiate_alliance_effect_tooltip + trigger_event = char_interaction.0235 + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:recipient + } + + stress_impact = { + shy = minor_stress_impact_gain + } + + if = { + limit = { scope:hook = yes } + use_hook = scope:recipient + } + + if = { + limit = { + scope:influence = yes + } + change_influence = major_influence_loss + } + } + scope:recipient = { # This opinion modifier controls the interaction, and is removed when breaking the alliance in any way (though on_actions) + add_opinion = { + modifier = perk_negotiated_alliance_opinion + target = scope:actor + } + } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_gain + DESC = clan_unity_alliance.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0236 + } + scope:actor = { + add_opinion = { + modifier = refused_alliance_opinion + target = scope:recipient + } + } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_alliance_refusal.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + + ai_accept = { # Similar to Negotiate Alliance, but without modifiers for Liege, being an heir, etc. + base = -25 + + # Tier Differences + modifier = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 1 + } + } + add = { + value = 30 + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 2 + } + } + add = 30 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 3 + } + } + add = 60 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 4 + } + } + add = 90 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 5 + } + } + add = 120 + } + } + desc = RANK_DIFFERENCE_REASON + } + modifier = { + scope:recipient = { + has_relation_lover = scope:actor + } + add = { + value = 25 + } + desc = WE_ARE_LOVERS + } + modifier = { + scope:recipient = { + has_relation_friend = scope:actor + } + add = { + value = 25 + } + desc = WE_ARE_FRIENDS + } + modifier = { + scope:actor = { + tier_difference = { + target = scope:recipient + value <= -1 + } + } + add = { + value = -30 + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -2 + } + } + add = -30 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -3 + } + } + add = -60 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -4 + } + } + add = -90 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -5 + } + } + add = -120 + } + } + desc = RANK_DIFFERENCE_REASON + } + opinion_modifier = { # More likely to accept if Recipient likes the Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.25 + min = 0 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Less likely to accept if Recipient dislikes the Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + max = 0 + desc = AI_OPINION_REASON + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = loyal + } + desc = INTERACTION_LOYAL + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = trusting + } + desc = INTERACTION_TRUSTING + } + + modifier = { + add = 5 + scope:recipient = { + has_trait = craven + } + desc = INTERACTION_CRAVEN + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = paranoid + } + desc = INTERACTION_PARANOID + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = arrogant + } + desc = INTERACTION_ARROGANT + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = ambitious + } + desc = INTERACTION_AMBITIOUS + } + + modifier = { + add = -40 + scope:recipient = { + has_trait = disloyal + } + desc = INTERACTION_DISLOYAL + } + + modifier = { + add = -10 + scope:recipient = { + has_trait = fickle + } + desc = INTERACTION_FICKLE + } + + # Rivalry + modifier = { # Say no to rivals + add = -100 + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + desc = "ACTOR_RIVAL_TO_ME_REASON" + } + modifier = { # Say no to nemesis + add = -300 + scope:recipient = { + has_relation_nemesis = scope:actor + } + desc = "ACTOR_NEMESIS_TO_ME_REASON" + } + + # Dynasty Prestige Levels + modifier = { + add = -5 + desc = AI_DYNASTY_PRESTIGE_REASON + scope:actor = { has_dynasty = yes } + scope:actor.dynasty != scope:recipient.dynasty + scope:actor.dynasty = { dynasty_prestige_level = 0 } + } + modifier = { + desc = AI_DYNASTY_PRESTIGE_REASON + scope:actor = { has_dynasty = yes } + scope:actor.dynasty != scope:recipient.dynasty + scope:actor.dynasty = { dynasty_prestige_level >= 2 } + add = { + value = 10 + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 3 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 4 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 5 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 6 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 7 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 8 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 9 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 10 } + } + add = 5 + } + } + } + modifier = { #Faith compatibility + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value > faith_fully_accepted_level + } + } + NOT = { + scope:recipient.ai_zeal <= -50 + } + add = { + value = -10 + if = { + limit = { + # Exempt certain struggle phases. + NOT = { is_struggle_parameter_active_interfaith_marriages_available_between_involved_characters_trigger = yes } + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_astray_level + } + } + } + subtract = 20 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + subtract = 20 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + subtract = 50 + } + if = { + limit = { + scope:recipient.ai_zeal <= -25 + } + divide = 2 + } + else_if = { + limit = { + scope:recipient.ai_zeal >= 50 + } + multiply = 2 + } + if = { + limit = { + scope:recipient.faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + divide = 2 + } + } + } + desc = MARRY_DIFFERENT_FAITH_REASON + } + + modifier = { # A Recipient is more likely to agree to an alliance requested by his liege. + add = 20 + scope:recipient = { + target_is_liege_or_above = scope:actor + } + desc = LIEGE_REASON + } + + modifier = { + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength # For foreign diplomacy, consider recipients max + divide = { value = scope:actor.current_military_strength min = 1 } + } + multiply = 20 + min = -1000 + max = 100 + } + desc = AI_MILITARY_BALANCE_REASON + } + # Recipient is a Claimant to Actor's titles. + modifier = { + scope:recipient = { + any_claim = { + holder = scope:actor + } + NOR = { + is_heir_of = scope:actor + ai_greed <= -25 + } + } + add = { + value = -50 + if = { + limit = { + scope:recipient.ai_greed >= 25 + } + add = ai_greed + } + if = { + limit = { + scope:recipient.house != scope:actor.house + } + multiply = 2 + } + } + desc = IS_CLAIMANT_TO_ACTORS_TITLES + } + #Actor has claims on recipient's titles. + modifier = { + scope:actor = { + any_claim = { + holder = scope:recipient + } + } + add = 25 + desc = IS_CLAIMANT_TO_RECIPIENT_TITLES + } + modifier = { + scope:recipient = { + NOT = { + any_claim = { + holder = scope:actor + } + } + } + scope:recipient.house = scope:actor.house + add = 15 + desc = IS_SAME_HOUSE_REASON + } + modifier = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = declared_war + } + } + add = -100 + desc = DECLARED_WAR_REASON + } + + # Don't form new alliances with people already at war. + modifier = { + scope:actor = { + is_at_war = yes + + # Since vassals and lieges can't call us into wars, this doesn't matter for us if we have that relationship. + NOR = { + target_is_liege_or_above = scope:recipient + target_is_vassal_or_below = scope:recipient + } + } + add = -50 + desc = IS_AT_WAR_REASON + } + + #Bonus from Tradition Astute Diplomats + modifier = { + scope:actor.culture = { has_cultural_parameter = facilitate_alliance_acceptance } + add = 50 #should be in a file 00_traditions_values + desc = TRADITION_ASTUTE_DIPLOMATS_ACCEPTANCE_MODIFIER + } + + # The AI doesn't want to form alliances with AI vassals within its capital duchy, so it can revoke them + modifier = { + scope:actor = { + is_ai = yes + is_vassal_or_below_of = scope:recipient + any_held_title = { + title_tier = county + de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + scope:recipient = { + is_ai = yes + } + add = -5000 + } + + # Feud + modifier = { + add = -25 + scope:recipient = { + house_has_feud_relation_with_trigger = { TARGET = scope:actor } + } + desc = MARRY_FAMILY_FEUD_REASON + } + + # Existing Alliances + modifier = { + add = { + scope:actor = { + every_ally = { + add = -15 + } + } + } + scope:actor = { + any_ally = { + count >= 2 + } + } + desc = EXISTING_ALLIANCES_REASON + } + + # Existing Alliances + modifier = { + add = { + scope:recipient = { + every_ally = { + add = -15 + } + } + } + scope:recipient = { + any_ally = { + count >= 2 + } + } + desc = THEIR_EXISTING_ALLIANCES_REASON + } + + modifier = { + add = intimidated_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + modifier = { + add = intimidated_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 10 + } + + # INFLUENCE + modifier = { + desc = INFLUENCE_REASON + scope:influence = yes + add = { + value = 10 + multiply = scope:actor.influence_level + min = 5 + } + } + } + + ai_potential = { + is_at_war = no + any_ally = { + count < 2 + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + max = 10 + } + + ai_targets = { + ai_recipients = peer_vassals + max = 5 + } + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 72 + kingdom = 72 + empire = 72 + hegemony = 72 + } + + ai_will_do = { + base = 100 + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + + modifier = { # Don't disturb the player with pointless asks + add = -5000 + scope:recipient = { + is_ai = no + } + NOR = { + scope:actor.current_military_strength >= scope:recipient.current_military_strength + scope:actor.primary_title.tier >= scope:recipient.primary_title.tier + } + } + + modifier = { + add = -5000 + scope:recipient.current_military_strength <= 100 + } + } + +} + +join_war_interaction = { + category = interaction_category_diplomacy + interface = interfere_in_war + special_interaction = interfere_in_war_interaction + popup_on_receive = yes + desc = join_war_interaction_desc + icon = alliance + interface_priority = 29 + + greeting = positive + notification_text = join_war_interaction_notification + + is_shown = { + scope:recipient = { + is_at_war = yes + NOR = { + this = scope:actor + is_at_war_with = scope:actor + } + } + } + + is_valid_showing_failures_only = { + + # recipient is not in (any) war against your liege(s) or suzerain(s) + trigger_if = { + limit = { exists = scope:actor.liege } + custom_description = { + text = join_war_interaction_recipient_warring_with_my_liege + subject = scope:recipient + scope:actor = { + NOT = { + any_liege_or_above = { + is_at_war_with = scope:recipient + } + } + } + } + } + + # special exception for liege trying to put down his vassal's peasant revolt + trigger_if = { + limit = { + scope:actor = { + target_is_vassal_or_below = scope:recipient + } + } + custom_description = { + text = join_war_interaction_recipient_not_fighting_peasant_faction + subject = scope:recipient + scope:recipient = { + any_war_enemy = { + is_leading_faction_type = peasant_faction + } + } + } + } + # if the target is neither a vassal-or-below, nor a liege-or-above, the recipient must either be an ally or defending against a qualifying holy war - unless the character is an adventurer in which case other rules apply + trigger_else_if = { + limit = { + scope:actor = { + NOT = { target_is_liege_or_above = scope:recipient } + } + } + trigger_if = { + limit = { + scope:actor = { has_government = landless_adventurer_government } + } + # bypass the requirements, unless you were invloved in a war and decided to leave it + scope:recipient = { + trigger_if = { + limit = { + any_character_war = { + has_variable_list = left_voluntarily + } + } + custom_tooltip = { + text = laamp_war_change_sides_interaction.left_voluntarily + is_target_in_variable_list = { + name = left_voluntarily + target = scope:actor + } + } + } + } + } + trigger_else_if = { + limit = { + scope:recipient = { + any_character_war = { + OR = { + #Must be either the same faith as the character being holy warred... + scope:recipient.faith = scope:actor.faith + #... Or, same religion, *and* you couldn't holy war them yourself. + AND = { + scope:recipient.faith.religion = scope:actor.faith.religion + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value < religious_cb_enabled_hostility_level + } + } + } + #... Or, the target is your liege and they are being attacked for your held title. + AND = { + scope:recipient = { target_is_liege_or_above = scope:actor } + casus_belli = { + any_target_title = { + holder = { + OR = { + this = scope:actor + is_vassal_or_below_of = scope:actor + } + } + } + + } + } + } + any_war_defender = { this = scope:recipient } + } + } + } + # Deliberately blank; we've passed the trigger and making a desc out of this doesn't make sense + } + # Special case for Iberians helping each other after FP2 Conciliation ending after FP2 Conciliation ending + trigger_else_if = { + limit = { + fp2_struggle_conciliation_recipient_actor_involved_trigger = yes + scope:recipient = { + any_character_war = { + primary_defender = scope:recipient + primary_attacker = { save_temporary_scope_as = attacker_temp } + fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:attacker_temp } + } + } + } + # Deliberately blank; we've passed the trigger and making a desc out of this doesn't make sense + } + + # if the actor and recipient is in the same confederation, they can always come to each others' aid + trigger_else_if = { + limit = { + exists = scope:recipient.confederation + scope:actor = { is_member_of_confederation = scope:recipient.confederation } + } + scope:actor = { is_member_of_confederation = scope:recipient.confederation } # for localization only + } + + # suzerains can always join their tributaries' defensive wars + trigger_else_if = { + limit = { + scope:recipient = { + is_tributary_of_suzerain_or_above = scope:actor + } + } + custom_tooltip = { + text = join_war_interaction_recipient_tributary_no_defensive_war + scope:recipient = { + any_character_war = { + primary_defender = scope:recipient + } + } + } + } + # tributaries can always offer to join their direct suzerains' defensive wars + trigger_else_if = { + limit = { + scope:actor = { + is_tributary_of = scope:recipient + } + } + custom_tooltip = { + text = join_war_interaction_recipient_tributary_no_defensive_war + scope:recipient = { + any_character_war = { + primary_defender = scope:recipient + } + } + } + } + + # if we haven't already passed any of the qualified conditions above, then we need to be allies + trigger_else = { + custom_description = { + text = join_war_interaction_recipient_not_ally + subject = scope:recipient + scope:recipient = { + is_allied_to = scope:actor + } + } + } + } + + # recipient is liege + trigger_else = { + custom_description = { + text = join_war_interaction_recipient_not_liege + subject = scope:recipient + scope:actor = { + target_is_liege_or_above = scope:recipient + } + } + } + + scope:actor = { + trigger_if = { + limit = { + has_government = landless_adventurer_government + } + custom_tooltip = { + text = reinforce_soldiers_any_regiment_tt + maa_regiments_count >= 1 + } + } + } + + # Adventurers can't join wars in places they're exiled from. + custom_tooltip = { + text = the_wake_1 + NOT = { + is_laamp_exiled_from_province_trigger = { + PROVINCE = scope:recipient.capital_province + LAAMP = scope:actor + } + } + } + } + + can_be_picked = { + scope:target ?= { + + # recipient is war leader + is_war_leader = scope:recipient + + # special exception for tributaries and suzerains to fight for one another + trigger_if = { + limit = { + OR = { + scope:actor = { + is_tributary_of_suzerain_or_above = scope:recipient + } + scope:recipient = { + is_tributary_of = scope:actor + } + } + } + # if this is directed at a tributary, make sure they're the primary defender + trigger_if = { + limit = { + scope:recipient = { is_tributary_of = scope:actor } + } + custom_tooltip = { + text = join_war_interaction_recipient_tributary_not_primary_defender + primary_defender = scope:recipient + } + } + trigger_else = { always = yes } + } + + #allow targets of a Grand Campaign to bypass the requirements + trigger_else_if = { + limit = { + var:grand_campaign_project ?= { + save_temporary_scope_as = great_project + any_in_list = { + variable = grand_campaign_titles + any_in_de_jure_hierarchy = { + exists = holder + holder.top_overlord = { + OR = { + this = scope:recipient + this = scope:actor + } + } + } + } + } + } + } + + #allow laamp_join_war_contract to bypass the requirements + trigger_else_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + } + + # if holy war, recipient is defender of same faith + # and not too far away + trigger_else_if = { + limit = { is_religious_war = yes } + trigger_if = { #Only if you're not allies + limit = { + NOT = { scope:actor = { is_allied_to = scope:recipient } } + NOR = { + scope:recipient = { target_is_liege_or_above = scope:actor } + casus_belli = { + any_target_title = { + holder ?= { + OR = { + this = scope:actor + is_vassal_or_below_of = scope:actor + } + } + } + } + } + # Special case for Iberians helping each other after FP2 Conciliation ending + AND = { + fp2_struggle_conciliation_recipient_actor_involved_trigger = no + NOT = { + fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:target.primary_attacker } + } + } + } + custom_description = { + text = join_war_interaction_recipient_not_def_GHW + subject = scope:recipient + scope:recipient.faith.religion = scope:actor.faith.religion + any_war_defender = { this = scope:recipient } + } + } + casus_belli = { + any_target_title = { save_temporary_scope_as = war_target } + } + custom_description = { + text = join_war_interaction_recipient_too_distant + subject = scope:war_target + object = scope:war_target + scope:actor = { + realm_to_title_distance_squared = { + target = scope:war_target + value <= squared_distance_almost_massive # Approximately 1.5 HREs in distance away. Any further and does it really make sense for you to join what is essentially a regional power struggle? + } + } + } + } + # If not holy war, special exception for liege trying to put down his vassal's peasant revolt. + trigger_else_if = { + limit = { + is_religious_war = no + scope:actor = { target_is_vassal_or_below = scope:recipient } + primary_defender = scope:recipient + primary_attacker = { + is_leading_faction_type = peasant_faction + } + # Special case for Iberians helping each other after FP2 Conciliation ending + AND = { + fp2_struggle_conciliation_recipient_actor_involved_trigger = no + NOT = { + fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:target.primary_attacker } + } + } + } + always = yes + } + #Confederation members can choose to join each others' offensive wars + trigger_else_if = { + limit = { + scope:actor = { NOT = { is_allied_to = scope:recipient } } + exists = scope:recipient.confederation + primary_attacker = scope:recipient + } + scope:actor = { + is_member_of_confederation = scope:recipient.confederation + } + } + # ...otherwise, recipient must be an ally... + trigger_else_if = { + limit = { + is_religious_war = no + scope:actor = { NOT = { target_is_liege_or_above = scope:recipient } } + # Special case for Iberians helping each other after FP2 Conciliation ending + AND = { + fp2_struggle_conciliation_recipient_actor_involved_trigger = no + NOT = { + fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:target.primary_attacker } + } + } + } + custom_description = { + text = join_war_interaction_recipient_not_ally + subject = scope:recipient + scope:actor = { + is_allied_to = scope:recipient + } + } + trigger_if = { + limit = { + scope:actor = { + target_is_vassal_or_below = scope:recipient + NOT = { is_allied_to = scope:recipient } + } + } + # If they are an unallied vassal, inform the player that we could have aided them if this was a peasant revolt. + custom_description = { + text = join_war_interaction_recipient_not_fighting_peasant_faction + subject = scope:recipient + primary_defender = scope:recipient + primary_attacker = { + is_leading_faction_type = peasant_faction + } + } + } + } + + # ...or our liege. + trigger_else_if = { + limit = { + is_religious_war = no + scope:actor = { NOT = { is_allied_to = scope:recipient } } + } + # recipient is liege + custom_description = { + text = join_war_interaction_recipient_not_liege + subject = scope:recipient + scope:actor = { + target_is_liege_or_above = scope:recipient + } + } + } + # making the default behavior explicit if no other trigger_(else_)ifs are valid + trigger_else = { + always = yes + } + } + + joiner_not_already_in_another_war_with_any_target_war_participants_trigger = { + WARRIOR = scope:recipient + JOINER = scope:actor + } + + can_join_war_liege_vassal_check_trigger = { WARRIOR = scope:recipient JOINER = scope:actor } + } + + is_highlighted = { + scope:actor = { + any_character_task_contract = { + has_task_contract_type = laamp_join_war_contract + task_contract_employer = scope:recipient + } + } + } + + on_accept = { + scope:target ?= { + hidden_effect = { + set_called_to = scope:actor + } + if = { + limit = { is_attacker = scope:recipient } + add_attacker = scope:actor + if = { + limit = { + OR = { + scope:actor = { + any_home_court_hostage = { + warden ?= { is_defender_in_war = scope:target } + } + } + scope:target = { + any_war_defender = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + } + } + custom_tooltip = hostage_execution_warning_tt + } + } + else = { + add_defender = scope:actor + if = { + limit = { + OR = { + scope:actor = { + any_home_court_hostage = { + warden ?= { is_attacker_in_war = scope:target } + } + } + scope:target = { + any_war_attacker = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + } + } + custom_tooltip = hostage_execution_warning_tt + } + } + if = { + limit = { + is_religious_war = yes + scope:actor = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + scope:actor = { + add_piety = medium_piety_gain + } + } + if = { + limit = { + is_religious_war = yes + scope:actor = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + scope:actor = { + add_piety = major_piety_gain + } + } + } + scope:actor = { + stress_impact = { + craven = medium_stress_impact_gain + } + add_to_variable_list = { + name = joined_as_ally + target = scope:target + } + } + scope:recipient = { + show_as_tooltip = { + if = { + limit = { + is_ai = yes + } + progress_towards_friend_effect = { + CHARACTER = scope:actor + OPINION = 0 + REASON = friend_alliance + } + } + else = { + hidden_effect = { #To nudge friendship + if = { + limit = { + NOR = { + has_relation_friend = scope:actor + has_relation_potential_friend = scope:actor + } + } + set_relation_potential_friend = scope:actor + } + } + } + } + } + + # If we're a clan this interaction affects unity - but only when we attemp to aid a house member against a non-house member + if = { + limit = { + exists = scope:target + scope:target = { + OR = { + AND = { + primary_attacker = scope:recipient + scope:recipient.house = scope:actor.house + primary_defender = { + house != scope:actor.house + } + } + AND = { + primary_defender = scope:recipient + scope:recipient.house = scope:actor.house + primary_attacker = { + house != scope:actor.house + } + } + } + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_gain + DESC = clan_unity_join_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0236 + } + } + + auto_accept = yes + + ai_accept = { + base = 100 # everyone wants help + } +} + +# Referenced in code, do not rename or remove +join_vassal_war_interaction = { + category = interaction_category_diplomacy + interface = interfere_in_war + special_interaction = interfere_in_war_interaction + popup_on_receive = yes + desc = join_vassal_war_interaction_desc + icon = alliance + interface_priority = 29 + common_interaction = yes + + greeting = positive + notification_text = join_war_interaction_notification + + is_shown = { + scope:recipient = { + OR = { + AND = { + is_tributary_of = scope:actor + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + scope:actor = { + has_realm_law = top_liege_not_redirected_to_border_wars_law + } + } + AND = { + is_vassal_or_below_of = scope:actor + any_liege_or_above = { + has_realm_law = top_liege_not_redirected_to_border_wars_law + } + } + } + is_at_war = yes + NOR = { + this = scope:actor + is_at_war_with = scope:actor + } + any_character_war = { + primary_attacker = { + NOT = { + is_vassal_or_below_of = scope:actor + } + } + } + } + } + is_valid_showing_failures_only = { + scope:actor = { is_at_war = no } + } + + can_be_picked = { + scope:target ?= { + # we don't care about infighting + custom_tooltip = { + text = war_aid_liege_not_my_liege_tt + primary_attacker.top_overlord != scope:actor + } + # only defensive wars + primary_defender = scope:recipient + # only wars that would take titles in your hierarchy + trigger_if = { + limit = { + scope:recipient = { is_vassal_of = scope:actor } + } + custom_tooltip = { + text = war_aid_liege_relevant_titles_tt + casus_belli = { + any_target_title = { + OR = { + target_is_de_facto_liege_or_above = scope:actor.primary_title + is_de_facto_liege_or_above_target = scope:actor.primary_title + } + } + } + } + } + #Unless you're a guaranteed tributary + trigger_else_if = { + limit = { + scope:recipient = { is_tributary_of_suzerain_or_above = scope:actor } + } + custom_tooltip = { + text = suzerain_war_participation_guarantee_tt + scope:recipient = { subject_contract_has_flag = tributary_contract_suzerain_guarantee_override } + } + } + trigger_else = { + always = yes + } + custom_tooltip = { + text = war_aid_liege_cooldown_tt + war_days > border_war_grace_period_days + } + } + } + + on_accept = { + scope:target ?= { + hidden_effect = { + set_called_to = scope:actor + } + add_defender = scope:actor + if = { + limit = { + OR = { + scope:actor = { + any_home_court_hostage = { + warden ?= { is_attacker_in_war = scope:target } + } + } + scope:target = { + any_war_attacker = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + } + } + custom_tooltip = hostage_execution_warning_tt + } + if = { + limit = { + is_religious_war = yes + scope:actor = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + scope:actor = { + add_piety = medium_piety_gain + } + } + if = { + limit = { + is_religious_war = yes + scope:actor = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + scope:actor = { + add_piety = major_piety_gain + } + } + scope:actor = { + stress_impact = { + craven = medium_stress_impact_gain + } + add_to_variable_list = { + name = joined_as_ally + target = scope:target + } + } + } + # If we're a clan this interaction affects unity - but only when we attemp to aid a house member against a non-house member + if = { + limit = { + exists = scope:target + scope:target = { + primary_defender = scope:recipient + scope:recipient.house = scope:actor.house + primary_attacker = { + house != scope:actor.house + } + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_gain + DESC = clan_unity_join_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0236 + } + } + + auto_accept = yes + + ai_targets = { + ai_recipients = vassals + ai_recipients = tributaries + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 24 + kingdom = 6 + empire = 6 + hegemony = 6 + } + ai_potential = { + is_at_war = no + } + + ai_accept = { + base = 100 #no reason to refuse help + } + + # this value is also evaluated in the declare war interaction screen to decide whether the liege will join the vassal's war. + # as such, scope:target may not be defined, and anything war-related will be instead provided in the same way + # we evaluate the war cost in casus_belli.cost + ai_will_do = { + base = 100 + + modifier = { # Less likely if just one title + scope:actor = { + is_ai = yes + is_liege_or_above_of = scope:recipient + } + OR = { + scope:target ?= { + casus_belli = { + any_target_title = { + tier <= tier_duchy + count = 1 + } + } + } + any_in_list = { + list = target_titles + count = 1 + } + + } + add = -100 + desc = war_aid_vassal_only_one_title + } + modifier = { # Less likely if not kingdoms or above + scope:actor = { + is_ai = yes + is_liege_or_above_of = scope:recipient + } + NOR = { + scope:target ?= { + casus_belli = { + any_target_title = { + tier >= tier_kingdom + } + } + } + any_in_list = { + list = target_titles + tier >= tier_kingdom + } + } + add = -100 + desc = war_aid_vassal_below_kingdom_title + } + modifier = { # Do not join if in debt + scope:actor = { + OR = { + gold <= -1 + AND = { + has_treasury = yes + treasury <= -1 + } + } + is_ai = yes + is_liege_or_above_of = scope:recipient + } + add = -100 + desc = war_aid_liege_is_bankrupt + } + modifier = { # Do not join if at war + scope:actor = { + is_at_war = yes + is_ai = yes + } + add = -100 + desc = war_aid_liege_is_at_war + } + modifier = { # Do not join if recipient is stronger then the enemy + scope:actor = { + is_ai = yes + is_liege_or_above_of = scope:recipient + } + OR = { + scope:attacker ?= { + current_military_strength < scope:recipient.current_military_strength + } + scope:target ?= { + primary_attacker.current_military_strength < scope:recipient.current_military_strength + } + } + add = -100 + desc = war_aid_vassal_can_fend_the_attacker_alone + } + modifier = { # Player decides on it's own + scope:actor = { + is_ai = no + } + add = -100 + desc = war_aid_liege_is_player + } + } +} diff --git a/common/character_interactions/00_ce1_interactions.txt b/common/character_interactions/00_ce1_interactions.txt new file mode 100644 index 00000000..07a3d1d2 --- /dev/null +++ b/common/character_interactions/00_ce1_interactions.txt @@ -0,0 +1,357 @@ +# Ask to Promote your Legend +ce1_ask_to_promote_legend_interaction = { + icon = icon_contract_modification_single + category = interaction_category_diplomacy + popup_on_receive = yes + pause_on_receive = yes + can_send_despite_rejection = yes + ai_maybe = yes + interface_priority = 5 + desc = ce1_ask_to_promote_legend_interaction_desc + + greeting = positive + notification_text = PROMOTE_LEGEND_NOTIFICATION + + is_shown = { + scope:actor.promoted_legend.legend_owner ?= scope:actor + scope:actor != scope:recipient + scope:recipient = { + is_landed = yes + age >= 12 + is_physically_able = yes + NOT = { government_has_flag = government_is_true_herder } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_tooltip = { + text = recipient_already_promoting_legend_tt + NOT = { exists = promoted_legend } + } + } + custom_tooltip = { + text = recipient_close_or_neighbor_tt + OR = { + scope:recipient.dynasty = scope:actor.dynasty + scope:recipient = { knows_language_of_culture = scope:actor.culture } + scope:actor = { + has_friendly_relationship_with_character_trigger = { CHARACTER = scope:recipient } + } + scope:recipient = { + any_character_to_title_neighboring_county = { + any_county_province = { + any_province_legend = { + this = scope:actor.promoted_legend + } + } + } + } + } + } + } + + cooldown_against_recipient = { years = 5 } + + ai_min_reply_days = 2 + ai_max_reply_days = 7 + + ai_accept = { + base = -10 + ## Tier + modifier = { + add = -5 + scope:recipient.primary_title = { + tier = 2 + } + desc = TIER_REASON_COUNT + } + modifier = { + add = -10 + scope:recipient.primary_title = { + tier = 3 + } + desc = TIER_REASON_DUKE + } + modifier = { + add = -20 + scope:recipient.primary_title = { + tier = 4 + } + desc = TIER_REASON_KING + } + modifier = { + add = -30 + scope:recipient.primary_title = { + tier = 5 + } + desc = TIER_REASON_EMPEROR + } + ## Legend + # How cool is the legend? + modifier = { + add = 10 + desc = REASON_ILLUSTRIOUS_LEGEND + scope:actor = { + promoted_legend = { + legend_quality = illustrious + } + } + } + modifier = { + add = 20 + desc = REASON_MYTHICAL_LEGEND + scope:actor = { + promoted_legend = { + legend_quality = mythical + } + } + } + # Are you using a hook? + modifier = { + trigger = { + scope:hook ?= yes + } + add = 100 + desc = LEGEND_HOOK_USED + } + # Are you using Gold? + modifier = { + trigger = { + scope:gold_cost ?= yes + } + add = 40 + desc = TRADE_GOLD_FOR_BETTER_AI_ACCEPTANCE_TT + } + ## Opinion + # Do they like you? + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + ## Personality + # Are they ambitious? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_AMBITIOUS #re-using these + add = -15 + scope:recipient = { + has_trait = ambitious + } + } + # Are they content? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_CONTENT + add = 5 + scope:recipient = { has_trait = content } + } + # Are they stubborn? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_STUBBORN + add = -10 + scope:recipient = { has_trait = stubborn } + } + # Are they arrogant? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_ARROGANT + add = -10 + scope:recipient = { has_trait = arrogant } + } + # Are they humble? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_HUMBLE + add = 10 + scope:recipient = { has_trait = humble } + } + # Are they trusting? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_TRUSTING + add = 15 + scope:recipient = { has_trait = trusting } + } + # Are they paranoid? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_PARANOID + add = -10 + scope:recipient = { has_trait = paranoid } + } + ## Dread + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + ## War + modifier = { + add = -50 + scope:recipient = { + is_at_war = yes + } + desc = HOSTAGE_AT_WAR_REASON + } + ## Low Gold + modifier = { + add = -100 + scope:actor.promoted_legend = { + legend_quality = famed + } + scope:recipient = { + monthly_character_income < famed_legend_promoter_cost + } + desc = TOO_HIGH_PROMOTER_MAINTENANCE_REASON + } + modifier = { + add = -100 + scope:actor.promoted_legend = { + legend_quality = illustrious + } + scope:recipient = { + monthly_character_income < illustrious_legend_promoter_cost + } + desc = TOO_HIGH_PROMOTER_MAINTENANCE_REASON + } + modifier = { + add = -100 + scope:actor.promoted_legend = { + legend_quality = mythical + } + scope:recipient = { + monthly_character_income < mythical_legend_promoter_cost + } + desc = TOO_HIGH_PROMOTER_MAINTENANCE_REASON + } + modifier = { + add = 25 + scope:recipient = { + is_contact_of = scope:actor + } + desc = IS_CONTACT_REASON + } + } + + on_accept = { + scope:actor.promoted_legend = { + save_scope_as = promoted_legend + } + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = ce1_ask_to_promote_legend_acceptance_tt + left_icon = scope:actor + right_icon = scope:recipient + + if = { + limit = { scope:hook = yes } + use_hook = scope:recipient + } + if = { + limit = { scope:gold_cost = yes } + pay_short_term_gold = { + target = scope:recipient + gold = medium_gold_value + } + promoted_legend = { # To prevent gold exploits + add_to_variable_list = { + name = accepted_promote_legend_var + target = scope:recipient + years = 10 + } + } + } + scope:recipient = { + set_promoted_legend = scope:actor.promoted_legend + } + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = ce1_ask_to_promote_legend_decline_tt + left_icon = scope:actor + right_icon = scope:recipient + } + } + } + + # Use gold to increase acceptance + send_option = { + flag = gold_cost + localization = TRADE_GOLD_FOR_BETTER_AI_ACCEPTANCE + } + send_option = { + flag = hook + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + localization = GENERIC_SPEND_A_HOOK + } + send_options_exclusive = no + + ai_potential = { + is_physically_able = yes + } + + ai_targets = { + ai_recipients = neighboring_rulers + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 36 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + # Very similar to ai_accept, but ignores effects that are < 10 in value for brevity's sake + ai_will_do = { + base = 0 + ## Legends + modifier = { + add = 25 + exists = promoted_legend + } + modifier = { + add = 25 + promoted_legend = { + legend_quality = mythical + } + } + ## Gold + modifier = { + add = -100 + debt_level >= 0 + } + modifier = { + add = -50 + gold <= major_gold_value + } + ## Personality + modifier = { + add = 25 + has_trait = arrogant + } + } +} diff --git a/common/character_interactions/00_character_interactions.txt b/common/character_interactions/00_character_interactions.txt index 85a81400..e765cb72 100644 --- a/common/character_interactions/00_character_interactions.txt +++ b/common/character_interactions/00_character_interactions.txt @@ -45,7 +45,7 @@ offer_vassalization_interaction = { } NOR = { government_has_flag = cannot_be_vassal_or_liege - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } # Temujin cannot make Jamukha his subject once he leaves him diff --git a/common/character_interactions/00_diarch_interactions.txt b/common/character_interactions/00_diarch_interactions.txt new file mode 100644 index 00000000..982256be --- /dev/null +++ b/common/character_interactions/00_diarch_interactions.txt @@ -0,0 +1,10461 @@ +@ai_skill_diff_upper_threshold = 8 +@ai_skill_diff_lower_threshold = 2 +@ai_prestige_bank_threshold = 2 + +@ai_core_loop_base_value = 4000 +@ai_threshold_for_revoke_cyle = 3 +@ai_secondary_powers_base_value = 500 + +############################################### +# #Setup & Misc +# +# CORE DIARCH POWERS +# diarch_revoke_title_interaction - diarch (actor) takes a title from a vassal of their liege (recipient) with an optional veto for the liege (third_party). +# diarch_retract_vassal_interaction - diarch (actor) takes a vassal from a vassal of their liege (recipient) with an optional veto for the liege (third_party). +# diarch_imprison_interaction - diarch (actor) tries to move a character (recipient) within the sub-realm of their liege (third) to their dungeon, with an optional veto for the liege. +# diarch_entrench_regency_interaction - diarch (actor) shifts the diarchy from temporary to entrenched, making it more difficult for their liege (recipient) to get rid of them. +# +# ANCILLARY DIARCH POWERS +# diarch_legal_meddling_interaction - diarch (actor) either tests learning or spends prestige to gain an unpressed claim on a title held by a vassal of their liege (recipient). +# diarch_syphon_treasury_interaction - diarch (actor) either tests stewardship or spends prestige to gain gold at the expense of negative modifiers delivered to the liege (recipient). +# diarch_shift_privileges_interaction - diarch (actor) either tests diplomacy or spends prestige to give negative modifiers to the lands of a vassal of their liege (secondary recipient), who can't resist. +################################################## + + + + + + + + + + +################################################## +# CORE DIARCH POWERS + +# Diarch (actor) takes a title from a vassal (recipient) of their liege with an optional veto for the liege (third_party). +diarch_revoke_title_interaction = { + category = interaction_category_diarch + common_interaction = no + interface_priority = 35 + diarch_interaction = yes + highlighted_reason = HIGHLIGHTED_CAN_DIARCH_REVOKE + notification_text = DIARCH_REVOKE_TITLE_PROPOSAL + intermediary_notification_text = diarch_interaction_requesting_sign_off.tt + intermediary_breakdown_yes = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_YES + intermediary_breakdown_no = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_NO + intermediary_breakdown_maybe = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_MAYBE + intermediary_answer_accept_key = REPLY_ANSWER_ALLOW + intermediary_answer_reject_key = REPLY_ANSWER_VETO + pre_answer_yes_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_YES + pre_answer_no_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_NO + pre_answer_maybe_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_MAYBE + icon = revoke_title + redirect = { + scope:actor.liege ?= { save_scope_as = intermediary } + } + + desc = diarch_revoke_title_interaction_desc + send_name = diarch_revoke_title_interaction.send_name + + special_interaction = diarch_revoke_title + interface = revoke_title + target_type = title + target_filter = recipient_domain_titles + ai_maybe = yes + ai_intermediary_maybe = yes + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + on_decline_summary = diarch_rebel_or_crime_summary + prompt = RETRACT_VASSAL_SELECT_VASSAL_TO_RETRACT + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { + has_diarchy_parameter = unlock_diarch_revoke_title_interaction + } + } + # Make sure scope:recipient is suitable. + scope:recipient = { + # We only target vassals of the liege... + liege = scope:actor.liege + this != scope:actor.liege + # ... who are appropriately landed. + is_landed_or_landless_administrative = yes + scope:recipient.highest_held_title_tier >= tier_county + } + } + + is_valid = { + # Here to correct for some dodgy inheritance situations. + scope:actor != scope:intermediary + } + is_valid_showing_failures_only = { + # Standard validity checks. + title_revocation_standard_valid_showing_failures_only_trigger = yes + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Plus make sure there's a legal right to revoke. + scope:actor.liege = { + trigger_if = { + limit = { government_has_flag = government_is_tribal } + custom_description = { + text = "liege_has_law_allowing_title_revocation_tribal" + has_realm_law_flag = title_revocation_allowed + } + } + trigger_else_if = { + limit = { government_has_flag = government_is_administrative } + custom_description = { + text = "cannot_diarch_revoke_administrative_titles" + always = no + } + } + trigger_else = { + custom_description = { + text = "liege_has_law_allowing_title_revocation_crown" + has_realm_law_flag = title_revocation_allowed + } + } + } + trigger_if = { + limit = { + scope:recipient = { vassal_contract_has_flag = vassal_contract_cannot_revoke_titles } + } + custom_description = { + text = liege_vassal_contract_forbids_revocation + object = scope:recipient + scope:recipient = { + NOT = { vassal_contract_has_flag = vassal_contract_cannot_revoke_titles } + } + } + } + # Diarch revocations require a claim. + diarch_revocation_has_claim_check_trigger = yes + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege ?= { has_diarchy_active_parameter = unlock_diarch_revoke_title_interaction } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + cooldown = { years = 1 } + cooldown_against_recipient = { years = 3 } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + is_highlighted = { + # Diarch revocations require a claim - this is uncommon, so we always highlight it. + diarch_revocation_has_claim_check_trigger = yes + } + + can_be_picked_title = { + scope:target = { + title_revocation_standard_can_pick_title_trigger = yes + # Plus, must have scope:actor as a claimant. + custom_description = { + text = "you_must_have_a_claim_on_the_title" + scope:actor = { has_claim_on = scope:target } + } + } + } + + # Hooks can be used to force this through. + ## We don't force-force this on/for the player (so no pain but less benefits), but AI regard weak hooks as compulsory from/for other AI. + send_options_exclusive = no + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + # Did a landless diarch send this? + log_diarch_send_interaction_as_variable_effect = { INTERACTION = revoke } + } + + on_auto_accept = { + scope:recipient = { trigger_event = char_interaction.0261 } + } + + on_accept = { + # Since this is a confusing interaction, we want to clarify what you're nicking. + scope:actor = { custom_tooltip = diarch_revoke_title_interaction.tt.gain_title } + # To keep some other arcane script working. + save_scope_value_as = { + name = revoke_title_interaction + value = yes + } + scope:actor = { + # Tell them that the revocation went through fine. + trigger_event = char_interaction.0262 + } + # Otherwise, follow the standard flow for revocation. + save_scope_value_as = { + name = use_strife_not_tyranny + value = yes + } + revoke_title_interaction_effect = yes + scope:actor = { + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # To avoid unlanded regents becoming vassals of the liege's direct vassals, make sure the current liege remains the liege + hidden_effect = { + scope:actor = { + if = { + limit = { + is_landed_or_landless_administrative = no + scope:intermediary != scope:recipient + } + # This has a delay of 1 day (if no delay then the liege change doesn't stick) which really isn't ideal and should be looked into/fixed so that it happens when the action goes into effect + trigger_event = { id = diarchy.0141 days = 1 } + } + } + } + + # Debug logging. + debug_log = debug_log.diarch_revoke_title.accepted + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_revoke_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_accept_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_accept_intermediary_list } + } + } + + on_intermediary_decline = { + # Scope:intermediary eats a prestige cost for their veto. + scope:intermediary = { add_prestige = liege_diarchy_veto_prestige_cost_high } + scope:actor = { + # Inform scope:actor that their liege has vetoed them. + ## First, we log which interaction this is for the event's effects. + save_scope_value_as = { + name = diarch_interaction + value = flag:title_revoke + } + ## Then, fire the event. + trigger_event = char_interaction.0291 + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Inform scope:recipient that scope:intermediary has their back. + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_action_vetoed.tt + left_icon = scope:actor + right_icon = scope:intermediary + custom_tooltip = diarch_revoke_title_interaction.tt.inform_recipient + } + } + # Flick out some opinions. + diarch_revoke_title_interaction_intermediary_fail_opinions_effect = yes + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_revoke_veto } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_veto_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_veto_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_veto_intermediary_list } + } + } + + on_decline = { + scope:actor = { + # Tell them that the revocation ran into issues. + trigger_event = char_interaction.0263 + # And give a crime reason for both them and the liege. + show_as_tooltip = { + random_list = { + 50 = { + show_chance = no + desc = char_interaction.0263.result.criminal + diarch_declare_recipient_criminal_effect = yes + } + 50 = { + show_chance = no + desc = char_interaction.0263.result.war + diarch_declare_claim_war_effect = yes + } + } + } + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Flick out some opinions. + ## Scope:recipient is annoyed with scope:actor. + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = revoked_title + } + } + + # Debug logging. + debug_log = debug_log.diarch_revoke_title.rejected + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_revoke_reject } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_reject_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_reject_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_reject_intermediary_list } + } + } + + auto_accept = { + scope:recipient = { + calc_true_if = { + amount >= 2 + custom_description = { + text = "prisoner_revocation" + is_imprisoned_by = scope:actor + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + OR = { + # Strong hooks generally. + scope:actor = { has_strong_hook = scope:recipient } + # Weak hooks in inter-AI interactions count as strong hooks. + AND = { + scope:actor = { is_ai = yes } + scope:recipient = { is_ai = yes } + } + } + } + custom_description = { + text = "foreign_prison_revocation" + subject = scope:actor + object = scope:recipient + scope:recipient = { + is_imprisoned = yes + NOT = { is_imprisoned_by = scope:actor } + } + } + } + } + } + + ai_intermediary_accept = { + # The AI should be inclined to trust their regent, at least a little. + base = 0 + modifier = { add = liege_trust_diarch_trilateral_interaction_default_value } + + # Standard modifiers. + intermediary_liege_will_accept_standard_modifiers = { + CURRENCY = prestige + COST = liege_diarchy_veto_prestige_cost_high + } + # Misc important reasons. + ## Revoking own capital. + modifier = { + add = 50 + desc = AI_TITLE_IS_REALM_CAPITAL + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:landed_title = scope:actor.primary_title.title_capital_county + scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + } + ai_accept = { + # Try to make it 0 for most interactions + base = 0 + + # Weak Hook + modifier = { + add = 40 + desc = SCHEME_WEAK_HOOK_USED + scope:hook = yes + } + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.8 + desc = AI_OPINION_REASON + } + # Refusal is Treason + ## It's always treason, but worth pointing it out. + modifier = { + add = 20 + desc = AI_REFUSAL_IS_TREASON + } + # Revoking own capital. + modifier = { + add = 50 + desc = AI_TITLE_IS_REALM_CAPITAL + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:landed_title = scope:actor.primary_title.title_capital_county + scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + # We don't buff claimants because you *have* to be a claimant for a diarch revoke. + ## Compensated for by refusal _always_ being treason. + # I am a King! + modifier = { + add = -20 + desc = offer_vassalization_interaction_aibehavior_hightier_tt + scope:recipient = { highest_held_title_tier = tier_kingdom } + } + # Title is part of vassal's primary title de-jure. + modifier = { + add = -25 + desc = AI_REFUSAL_IS_DE_JURE_UNDER + OR = { + scope:recipient.primary_title = { is_de_jure_liege_or_above_target = scope:landed_title } + scope:recipient.primary_title = scope:landed_title + } + } + # Dread + ## Intimidation + modifier = { + add = intimidated_halved_reason_value + desc = INTIMIDATED_REASON + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + ## Cowing + modifier = { + add = cowed_halved_reason_value + desc = COWED_REASON + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + # Comparative military strength. + modifier = { + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength + divide = { value = scope:actor.max_military_strength min = 1 } + } + multiply = 50 + max = 20 + } + desc = offer_vassalization_interaction_aibehavior_power_tt + scope:actor = { is_landed_or_landless_administrative = yes } + } + # Legalistic tradition + modifier = { + add = legalistic_vassal_punishment_acceptance + desc = tradition_legalistic_name + scope:actor = { + has_revoke_title_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + } + # Factor for personality. + ai_value_modifier = { + who = scope:recipient + # Greed is always a factor. + ai_greed = { + if = { + limit = { + scope:recipient = { + NOT = { ai_greed = 0 } + } + } + value = -0.75 + } + } + # If AI is honourable and the law compels them to obey the liege, AI will be more likely to obey. + ai_honor = { + if = { + limit = { + scope:recipient = { ai_honor > 0 } + } + value = 0.5 + } + } + } + # Bump up landless diarchs if we could survive the transition. + modifier = { + add = 100 + scope:actor = { is_ruler = no } + scope:recipient = { + any_held_county = { count >= 2 } + } + } + } + + # AI + ai_targets = { ai_recipients = peer_vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + is_diarch = yes + liege = { has_realm_law_flag = title_revocation_allowed } + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_core_loop_base_value + + # Additions. + ## Opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = 0.25 + } + ## Personality. + ai_value_modifier = { + ai_boldness = 0.75 + ai_honor = -0.5 + } + ## Traits. + ### +++ Ambitious. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = ambitious + } + ### +++ Greedy. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = greedy + } + ### +++ Vengeful (under certain criteria). + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = vengeful + has_opinion_modifier = { + modifier = revoked_title + target = scope:recipient + } + } + ### ++ Arbitrary. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = arbitrary + } + ### - Generous. + modifier = { + add = diarch_ai_desire_minus_1_value + has_trait = generous + } + ### -- Just. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = just + } + ### --- Content. + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = content + } + ## Landless characters want land, but also want to focus on taking from those who might give it up. + ### So we prioritise hooked AI counts. + modifier = { + add = 100 + is_landed = no + has_hook = scope:recipient + scope:recipient = { + highest_held_title_tier = tier_county + is_ai = yes + } + } + ### Then just hooked AI. + modifier = { + add = 50 + is_landed = no + has_hook = scope:recipient + scope:recipient = { is_ai = yes } + } + ## Always revoke preferred capital and capital duchy. + modifier = { + add = 1000 + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:landed_title = scope:actor.primary_title.title_capital_county + scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + ## Slight preference for higher-tier titles. + modifier = { + add = { + value = scope:landed_title.tier + multiply = 10 + } + } + ## We avoid wars here too, but only in the resulting event. + # Factors. + ## Relationships. + ### + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on players unless they're of at least a decent size. + modifier = { + factor = 0 + scope:recipient = { + is_ai = no + any_held_county = { count <= 3 } + } + } + ### x0 Don't go into prestige debt! + modifier = { + factor = 0 + prestige <= 0 + } + } +} + +# Diarch (actor) takes a vassal from a vassal (recipient) of their liege with an optional veto for the liege (third_party). +diarch_retract_vassal_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + interface_priority = 10 + highlighted_reason = HIGHLIGHTED_CAN_DIARCH_RETRACT + notification_text = RETRACT_VASSAL_PROPOSAL + intermediary_notification_text = diarch_interaction_requesting_sign_off.tt + intermediary_breakdown_yes = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_YES + intermediary_breakdown_no = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_NO + intermediary_breakdown_maybe = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_MAYBE + intermediary_answer_accept_key = REPLY_ANSWER_ALLOW + intermediary_answer_reject_key = REPLY_ANSWER_VETO + pre_answer_yes_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_YES + pre_answer_no_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_NO + pre_answer_maybe_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_MAYBE + icon = icon_liege + redirect = { + scope:actor.liege ?= { save_scope_as = intermediary } + } + + desc = diarch_retract_vassal_interaction_desc + send_name = diarch_retract_vassal_interaction.send_name + + special_interaction = retract_vassal_interaction + interface = transfer_vassal + ai_maybe = yes + ai_intermediary_maybe = yes + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + on_decline_summary = diarch_rebel_or_crime_summary.retract + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_diarch_retract_vassal_interaction } + # Plus you need to be landed for this. + is_landed_or_landless_administrative = yes + } + # Make sure scope:recipient is suitable. + scope:recipient = { + # We only target vassals of the liege... + liege = scope:actor.liege + this != scope:actor.liege + # ... who are appropriately landed. + is_landed_or_landless_administrative = yes + scope:recipient.highest_held_title_tier >= tier_duchy + } + } + + is_valid = { + # Here to correct for some dodgy inheritance situations. + scope:actor != scope:intermediary + } + is_valid_showing_failures_only = { + # Standard validity checks. + vassal_retraction_standard_valid_showing_failures_only_trigger = yes + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Scope:recipient must hold at least one of scope:actor's de jure vassals. + scope:actor = { + custom_description = { + text = "you_must_have_a_de_jure_vassal_to_retract" + object = scope:recipient + any_held_title = { + title_tier >= duchy + any_direct_de_jure_vassal_title = { + exists = holder + holder.liege = scope:recipient + } + } + } + } + # Plus make sure there's a legal right to retract. + scope:actor.liege = { + trigger_if = { + limit = { government_has_flag = government_is_tribal } + custom_description = { + text = "liege_has_law_allowing_vassal_retraction_tribal" + has_realm_law_flag = vassal_retraction_allowed + } + } + trigger_if = { + limit = { + NOT = { government_has_flag = government_is_tribal } + } + custom_description = { + text = "liege_has_law_allowing_vassal_retraction_crown" + has_realm_law_flag = vassal_retraction_allowed + } + } + } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_retract_vassal_interaction } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + cooldown = { years = 1 } + cooldown_against_recipient = { years = 3 } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + is_highlighted = { + # Diarch retractions require a de jure claim - this is uncommon, so we always highlight it. + diarch_retraction_is_de_jure_liege_trigger = yes + } + + populate_recipient_list = { + scope:actor = { + every_held_title = { + title_tier >= duchy + every_direct_de_jure_vassal_title = { + limit = { exists = holder } + holder = { + if = { + limit = { liege = scope:recipient } + add_to_list = characters + } + } + } + } + } + } + + # Hooks can be used to force this through. + ## We don't force-force this on/for the player (so no pain but less benefits), but AI regard weak hooks as compulsory from/for other AI. + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + } + + on_auto_accept = { + scope:recipient = { trigger_event = char_interaction.0271 } + } + + on_accept = { + # Follow the standard flow for retraction. + save_scope_value_as = { + name = use_strife_not_tyranny + value = yes + } + retract_vassal_interaction_effect = yes + scope:actor = { + # Tell them that the retraction went through fine. + trigger_event = char_interaction.0272 + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + + # Debug logging. + debug_log = debug_log.diarch_retract_vassal.accepted + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_retract_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_accept_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_accept_intermediary_list } + } + } + + on_intermediary_decline = { + # Scope:intermediary eats a prestige cost for their veto. + scope:intermediary = { add_prestige = liege_diarchy_veto_prestige_cost_high } + scope:actor = { + # Inform scope:actor that their liege has vetoed them. + ## First, we log which interaction this is for the event's effects. + save_scope_value_as = { + name = diarch_interaction + value = flag:vassal_retract + } + ## Then, fire the event. + trigger_event = char_interaction.0291 + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Inform scope:recipient that scope:intermediary has their back. + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_action_vetoed.tt + left_icon = scope:actor + right_icon = scope:intermediary + custom_tooltip = diarch_retract_vassal_interaction.tt.inform_recipient + } + } + # Flick out some opinions. + diarch_retract_vassal_interaction_intermediary_fail_opinions_effect = yes + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_retract_veto } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_veto_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_veto_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_veto_intermediary_list } + } + } + + on_decline = { + scope:actor = { + # Tell them that the retraction ran into issues. + trigger_event = char_interaction.0273 + # And give a crime reason for both them and their liege. + show_as_tooltip = { + random_list = { + 50 = { + show_chance = no + desc = char_interaction.0273.result.criminal + diarch_declare_recipient_criminal_effect = yes + } + 50 = { + show_chance = no + desc = char_interaction.0273.result.war + diarch_declare_vassalisation_war_effect = yes + } + } + } + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Flick out some opinions. + ## Scope:recipient is annoyed with scope:actor. + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + + # Debug logging. + debug_log = debug_log.diarch_retract_vassal.rejected + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_retract_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_decline_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_decline_intermediary_list } + } + } + + auto_accept = { + OR = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + ai_intermediary_accept = { + # The AI should be inclined to trust their regent, at least a little. + base = 0 + modifier = { add = liege_trust_diarch_trilateral_interaction_default_value } + + # Standard modifiers. + intermediary_liege_will_accept_standard_modifiers = { + CURRENCY = prestige + COST = liege_diarchy_veto_prestige_cost_high + } + # Misc important reasons. + ## Retracting vassal with own capital. + modifier = { + add = 50 + desc = AI_VASSAL_HOLDS_REALM_CAPITAL + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + OR = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + } + } + } + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + # Hook used + modifier = { + add = 40 + desc = SCHEME_WEAK_HOOK_USED + scope:hook = yes + } + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + # + modifier = { + add = 25 + desc = AI_REFUSAL_IS_TREASON + scope:actor = { has_realm_law_flag = vassal_refusal_is_treason } + } + + ai_value_modifier = { + who = scope:recipient + ai_greed = { + if = { + limit = { + scope:recipient = { NOT = { ai_greed = 0 } } + } + value = -0.25 + } + } + ai_honor = { + if = { + limit = { + scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey. + ai_honor > 0 + } + scope:actor = { + has_realm_law_flag = vassal_refusal_is_treason + } + } + value = 0.75 + } + } + } + modifier = { + add = 50 + desc = AI_VASSAL_HOLDS_REALM_CAPITAL + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + OR = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + } + } + + modifier = { #Sub-Vassal is NOT De jure of current Vassal. + add = 25 + desc = AI_REFUSAL_IS_NOT_DE_JURE_LIEGE + NOT = { + scope:recipient = { + any_held_title = { + is_de_jure_liege_or_above_target = scope:secondary_recipient.primary_title + } + } + } + } + modifier = { #Sub-Vassal is De jure of liege title. + add = 15 + desc = AI_REFUSAL_IS_DE_JURE_LIEGE + scope:actor = { + any_held_title = { + this = scope:secondary_recipient.primary_title.de_jure_liege + } + } + } + modifier = { + add = intimidated_halved_reason_value + desc = INTIMIDATED_REASON + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + modifier = { + add = cowed_halved_reason_value + desc = COWED_REASON + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + modifier = { #Comparative military strength. + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength + divide = { value = scope:actor.max_military_strength min = 1 } + } + multiply = 100 + } + desc = offer_vassalization_interaction_aibehavior_power_tt + } + modifier = { #Different faith, no pluralism. + add = { + value = -25 + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + desc = AI_REFUSAL_SPLITTING_SAME_FAITH_VASSALS + scope:actor.faith = scope:secondary_recipient.faith #Will not care as much if the vassal being retracted is of a different faith. + scope:actor = { + NOR = { #Of two different faiths AND the potential vassal's faith is not pluralistic. + faith = scope:recipient.faith + faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + } + } + } + + # AI + ai_targets = { ai_recipients = peer_vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + + ai_potential = { + is_diarch = yes + has_realm_law_flag = title_revocation_allowed + primary_title.tier > tier_county + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_secondary_powers_base_value + + # Additions. + ## Opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = 0.25 + } + ## Personality. + ai_value_modifier = { + ai_boldness = 0.75 + ai_honor = -0.5 + } + ## Traits. + ### +++ Ambitious. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = ambitious + } + ### +++ Greedy. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = greedy + } + ### +++ Vengeful (under certain criteria). + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = vengeful + has_opinion_modifier = { + modifier = revoked_title + target = scope:recipient + } + } + ### ++ Arbitrary. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = arbitrary + } + ### - Generous. + modifier = { + add = diarch_ai_desire_minus_1_value + has_trait = generous + } + ### -- Just. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = just + } + ### --- Content. + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = content + } + ## Always revoke preferred capital and capital duchy + modifier = { + add = 1000 + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:actor = { + any_held_title = { this = scope:actor.primary_title.title_capital_county.de_jure_liege } + } + scope:actor.primary_title.title_capital_county.de_jure_liege = { is_title_created = no } + } + scope:secondary_recipient = { + any_sub_realm_county = { this = scope:actor.primary_title.title_capital_county } + } + } + # Always retract preferred capital duchy + modifier = { + add = 1000 + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + any_sub_realm_duchy = { this = scope:actor.primary_title.title_capital_county.de_jure_liege } + } + } + ## Slight preference for higher-tier titles + modifier = { + add = { + value = scope:secondary_recipient.highest_held_title_tier + multiply = 10 + } + } + ## We avoid wars here too, but only in the resulting event. + # Factors. + ## Relationships. + ### + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on players unless they're of at least a decent size. + modifier = { + factor = 0 + scope:recipient = { + is_ai = no + any_held_county = { count <= 3 } + } + } + ### x0 Exempt the party baron. + modifier = { + factor = 0 + scope:recipient = { has_character_flag = is_party_baron } + } + } +} + +# Diarch (actor) imprisons a character (recipient) who's a sub-realm character of their liege, with an optional veto for the liege (third_party). +diarch_imprison_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + interface_priority = 16 + notification_text = DIARCH_IMPRISON_PROPOSAL + intermediary_notification_text = diarch_interaction_requesting_sign_off.tt + intermediary_breakdown_yes = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_YES + intermediary_breakdown_no = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_NO + intermediary_breakdown_maybe = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_MAYBE + intermediary_answer_accept_key = REPLY_ANSWER_ALLOW + intermediary_answer_reject_key = REPLY_ANSWER_VETO + pre_answer_yes_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_YES + pre_answer_no_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_NO + pre_answer_maybe_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_MAYBE + icon = prison + redirect = { + scope:actor.liege ?= { save_scope_as = intermediary } + } + + desc = diarch_imprison_interaction_desc + send_name = diarch_imprison_interaction.send_name + + ai_maybe = yes + ai_intermediary_maybe = yes + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + on_decline_summary = diarch_rebel_or_crime_summary.crominal + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_diarch_imprison_interaction } + # The prisoner goes to your dungeon, so we want you to actually have one. + is_landed_or_landless_administrative = yes + } + # Make sure scope:recipient is suitable. + scope:recipient = { is_imprisoned = no } + # Scope:recipient can't be visiting elsewhere. + trigger_if = { + limit = { + scope:recipient = { is_courtier = yes } + } + NOT = { + scope:recipient.host = { + any_foreign_court_guest = { this = scope:recipient } + } + } + } + # Finally, make sure this isn't someone scope:actor could use the conventional interaction on. + scope:actor = { + liege = { + basic_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + NOT = { + basic_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + } + } + + is_valid = { + # Here to correct for some dodgy inheritance situations. + scope:actor != scope:intermediary + } + is_valid_showing_failures_only = { + scope:actor = { + advanced_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + imprison_neutral_is_valid_showing_failures_only_triggers_trigger = yes + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_a_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_imprison_interaction } + scope:actor.liege = { + trigger_if = { + limit = { has_realm_law_flag = imprisonment_toggle_enable } #Present on all tribal authority to disable imprisonment + has_realm_law_flag = imprisonment_toggle_on #Present from tribal authority level 1 to re-enable imprisonment + } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + cooldown = { years = 1 } + cooldown_against_recipient = { years = 3 } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + is_highlighted = { + scope:recipient = { is_imprisoned = no } + scope:actor = { has_imprisonment_reason = scope:recipient } + } + + #Use hook + send_option = { + is_valid = { + exists = scope:recipient + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + } + + on_auto_accept = { + scope:actor = { trigger_event = char_interaction.0281 } + diarch_imprison_general_accept_effect = yes + } + + on_accept = { + if = { + limit = { scope:hook = yes } + scope:actor = { use_hook = scope:recipient } + } + # Tell them that the imprisonment went through fine. + scope:actor = { trigger_event = char_interaction.0282 } + save_scope_value_as = { + name = use_strife_not_tyranny + value = yes + } + diarch_imprison_general_accept_effect = yes + + # Debug logging. + debug_log = debug_log.diarch_imprison.accepted + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_imprison_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_accept_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_accept_intermediary_list } + } + } + + on_intermediary_decline = { + # Scope:intermediary eats a prestige cost for their veto. + scope:intermediary = { add_prestige = liege_diarchy_veto_prestige_cost_medium } + scope:actor = { + # Inform scope:actor that their liege has vetoed them. + ## First, we log which interaction this is for the event's effects. + save_scope_value_as = { + name = diarch_interaction + value = flag:imprison + } + ## Then, fire the event. + trigger_event = char_interaction.0291 + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Inform scope:recipient that scope:intermediary has their back. + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_action_vetoed.tt + left_icon = scope:actor + right_icon = scope:intermediary + custom_tooltip = diarch_imprison_interaction.tt.inform_recipient + } + } + # Flick out some opinions. + diarch_imprison_interaction_intermediary_fail_opinions_effect = yes + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_imprison_veto } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_veto_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_veto_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_veto_intermediary_list } + } + } + + on_decline = { + scope:actor = { + imprison_HoF_consequences_effect = yes + imprison_tyranny_effect = yes + } + # Do we want a war or an escape? + scope:recipient = { + # If target is count or higher, we want the option to start a war. + if = { + limit = { + is_landed_or_landless_administrative = yes + highest_held_title_tier >= tier_county + } + # Send the choosing event. + scope:actor = { trigger_event = char_interaction.0283 } + # Display the choices in advance. + show_as_tooltip = { + random_list = { + 50 = { + show_chance = no + desc = char_interaction.0263.result.criminal + diarch_declare_recipient_criminal_effect = yes + } + 50 = { + show_chance = no + desc = char_interaction.0263.result.war + scope:recipient = { + start_war = { + casus_belli = remove_regent_cb + target = scope:actor + } + } + } + } + } + } + #If target is a baron or unlanded, have them escape. + else = { + if = { #To block them from being instantly rehired + limit = { + is_councillor_of = scope:actor + can_be_fired_from_council_trigger = { COURT_OWNER = scope:actor } + } + set_variable = { + name = escaped_imprisonment_from + value = scope:actor + years = 20 + } + } + if = { + limit = { is_landed_or_landless_administrative = yes } + depose_effect = { DEPOSER = scope:actor } + } + if = { + limit = { + is_playable_character = no + trigger_if = { + limit = { is_councillor = yes } + can_be_fired_from_council_trigger = { COURT_OWNER = scope:recipient.liege } + } + trigger_if = { + limit = { exists = scope:actor.faith.religious_head } + scope:actor.faith.religious_head != scope:recipient + } + } + custom_tooltip = deposed_and_become_wanderer + select_and_move_to_pool_effect = yes + } + add_opinion = { + target = scope:actor + modifier = attempted_imprisonment_opinion + } + } + } + + #Remove them as guardian/ward for any courtier (feedback given in char_interaction.0230) + scope:actor = { + if = { + limit = { + any_courtier = { has_relation_guardian = scope:recipient } + } + every_courtier = { + limit = { has_relation_guardian = scope:recipient } + save_scope_as = ward + remove_guardian_effect = { + GUARDIAN = scope:recipient + WARD = scope:ward + RETURN_WARD = yes + HIDE_OPINION = no + } + add_to_list = ward_children + } + } + if = { + limit = { + any_courtier = { has_relation_ward = scope:recipient } + } + random_courtier = { + limit = { has_relation_ward = scope:recipient } + save_scope_as = guardian + show_as_tooltip = { + remove_guardian_effect = { + GUARDIAN = scope:guardian + WARD = scope:recipient + RETURN_WARD = yes + HIDE_OPINION = no + } + } + add_to_list = guardian_list + } + hidden_effect = { + scope:guardian = { + send_interface_message = { + type = event_childhood_neutral + title = remove_guardian_interaction_notification + left_icon = scope:recipient + right_icon = scope:guardian + remove_guardian_effect = { + GUARDIAN = scope:guardian + WARD = scope:recipient + RETURN_WARD = yes + HIDE_OPINION = no + } + } + } + } + } + } + # Misc clean-up stuff. + scope:actor = { + if = { + limit = { + scope:recipient = { + OR = { + is_playable_character = no + AND = { + is_landed_or_landless_administrative = yes + primary_title.tier = tier_barony + } + } + } + } + trigger_event = char_interaction.0230 + } + } + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + + # Debug logging. + debug_log = debug_log.diarch_imprison.rejected + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_imprison_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_decline_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_decline_intermediary_list } + } + } + + auto_accept = no + + ai_intermediary_accept = { + # The AI should be inclined to trust their regent, at least a little. + base = 0 + modifier = { add = liege_trust_diarch_trilateral_interaction_default_value } + + # Standard modifiers. + intermediary_liege_will_accept_standard_modifiers = { + CURRENCY = prestige + COST = liege_diarchy_veto_prestige_cost_medium + } + } + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + modifier = { + add = { + value = scope:actor.intrigue + multiply = 1 + } + desc = IMPRISON_INTRIGUE_ACTOR + } + modifier = { + add = { + value = scope:recipient.intrigue + multiply = -2 + } + desc = IMPRISON_INTRIGUE_RECIPIENT + } + + modifier = { + add = 30 + desc = SCHEME_HOOK_USED + scope:hook = yes + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + ai_value_modifier = { + who = scope:recipient + ai_boldness = { + if = { + limit = { + scope:recipient = { NOT = { ai_boldness = 0 } } + } + value = -0.5 + } + } + } + modifier = { + add = 20 + desc = AI_REFUSAL_IS_TREASON + scope:actor = { + any_vassal_or_below = { this = scope:recipient } + has_realm_law_flag = vassal_refusal_is_treason + } + } + modifier = { + add = 50 + desc = AI_PRISON_FEUDAL_COMPLEX_PERK + scope:actor = { + has_perk = prison_feudal_complex_perk + } + } + modifier = { #I am a King! + add = -40 + desc = offer_vassalization_interaction_aibehavior_hightier_tt + scope:recipient = { highest_held_title_tier = tier_kingdom } + } + modifier = { #Courtiers. + add = 50 + desc = AI_REFUSAL_COURTIER + scope:recipient = { is_ruler = no } + } + modifier = { # Your young children can't really stop you + add = 200 + desc = AI_REFUSAL_YOUNG_CHILD + scope:recipient = { + is_child_of = scope:actor + is_courtier_of = scope:actor + is_adult = no + } + } + modifier = { #They're a claimant against you + add = -70 + desc = AI_CLAIMANT_PENALTY + scope:actor = { + OR = { + any_targeting_faction = { + faction_type = claimant_faction + faction_is_at_war = yes + special_character ?= scope:recipient + } + AND = { + exists = var:claimant_faction_sent_demand + var:claimant_faction_sent_demand = scope:recipient + } + } + } + } + modifier = { #Rank difference. + add = { + value = -15 + if = { + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 2 + } + } + } + add = 5 + } + if = { + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 3 + } + } + } + add = 5 + } + if = { #King asking Baron, modifier becomes positive. + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 4 + } + } + } + add = 10 + } + } + desc = AI_REFUSAL_RANK_DIFFERENCE + scope:recipient = { + is_ruler = yes + highest_held_title_tier < tier_kingdom + } + } + modifier = { + add = intimidated_external_reason_value + desc = INTIMIDATED_REASON + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + modifier = { + add = cowed_external_reason_value + desc = COWED_REASON + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + modifier = { #Comparative military strength. + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength + divide = { value = scope:actor.max_military_strength min = 1 } + } + multiply = 100 + min = -1000 + # This max needs to match the loc in offer_vassalization_interaction_aibehavior_power_tt + max = 20 + } + desc = offer_vassalization_interaction_aibehavior_power_tt + scope:actor = { is_ruler = yes } + scope:recipient = { is_ruler = yes } + } + modifier = { #Rivalry modifier. + add = -50 + desc = offer_vassalization_interaction_aibehavior_rival_tt + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + modifier = { #Nemesis modifier. + add = -100 + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + modifier = { + add = 10 + desc = GRANDEUR_REASON + scope:recipient = { has_royal_court = no } + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level >= 7 + court_grandeur_current_level < 9 + } + } + modifier = { + add = 20 + desc = GRANDEUR_REASON + scope:recipient = { has_royal_court = no } + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level >= 9 + } + } + modifier = { # Legalistic tradition + add = legalistic_vassal_punishment_acceptance + desc = tradition_legalistic_name + scope:actor = { + has_imprisonment_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + } + } + + # AI + ai_targets = { + ai_recipients = peer_vassals + ai_recipients = scripted_relations + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_will_do = { + # You should have a _reason_ to try to imprison someone. + base = 0 + + # Additions. + ## Opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = 0.5 + } + ## Personality. + ai_value_modifier = { + ai_vengefulness = 1 + ai_boldness = 0.5 + } + ## Flag Management. + ### Make sure the AI uses hooks for this as it's % based + modifier = { + add = 1 + scope:hook = yes + } + ## Traits. + ### +++ Sadistic. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = greedy + } + ### +++ Vengeful. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = vengeful + } + ### ++ Just (under certain circumstances). + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = just + has_imprisonment_reason = scope:recipient + } + ### -- Compassionate. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = compassionate + } + ### --- Forgiving. + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = forgiving + } + ## We avoid wars here too, but only in the resulting event. + ## Agenda impact + modifier = { + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_important } + has_character_flag = agenda_towards_escalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_important } + } + } + add = -100 + } + } + any_character_struggle = { involvement = involved } + } + modifier = { + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_detractor } + has_trait = fp3_struggle_supporter + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_detractor } + } + } + add = -100 + } + } + any_character_struggle = { involvement = involved } + } + modifier = { + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_supporter } + has_trait = fp3_struggle_detractor + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_supporter } + } + } + add = -100 + } + } + any_character_struggle = { involvement = involved } + } + # Factors. + ## Relationships. + ### + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on people without due reason unless we really hate them. + #### Doesn't quite double up with the above factor increase for folks we hate - we want to prioritise them, but we also want to enable them for arbitrary punishment. + modifier = { + factor = 0 + NOR = { + has_imprisonment_reason = scope:recipient + has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:recipient } + # Sadists wants to torture folks. + has_trait = sadistic + # Agents get a time-out. + any_targeting_scheme = { + hostile_scheme_trigger = yes + is_scheme_agent_exposed = scope:recipient + } + # Prior crimes annoy people. + has_any_major_revenge_opinion_against_character_trigger = { CHARACTER = scope:recipient } + # Vengeful characters can be a pain over even minor matters. + AND = { + OR = { + has_trait = vengeful + ai_vengefulness >= very_high_positive_ai_value + } + has_any_petty_revenge_opinion_against_character_trigger = { CHARACTER = scope:recipient } + } + } + } + } +} + +# Diarch (actor) offers to boost the CA/TA/IB of liege (recipient), taking on the costs and negatives themselves so that they can use their diarch powers. +diarch_subsidise_crown_authority_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + notification_text = DIARCH_SUBSIDISE_AUTHORITY_PROPOSAL + icon = icon_contract_modification_single + + desc = diarch_subsidise_crown_authority_interaction_desc + + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + liege_has_co_emperorship_trigger = no + liege = { has_diarchy_parameter = diarch_can_subsidise_liege_authority } + } + # Same sub-realm only. + OR = { + scope:actor.liege = scope:recipient + scope:recipient = { + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = diarch_can_subsidise_liege_authority } + # Can't subisidise past the point needed. + custom_tooltip = { + text = diarch_subsidise_crown_authority_interaction.tt.cannot_subsidise_past_necessary + scope:recipient = { + NOT = { has_realm_law_flag = diarchs_want_to_subsidise_without_this_flag } + } + } + # And the liege can't have the max level of authority. + custom_tooltip = { + text = diarch_subsidise_crown_authority_interaction.tt.liege_cannot_have_max_authority + scope:recipient = { + NOT = { has_realm_law_flag = max_authority_level } + } + } + # Aaaand, if you're not tribal/administrative, we need to check some innovations. + scope:recipient = { + # CA0 -> CA1. + trigger_if = { + limit = { has_realm_law = crown_authority_0 } + can_pass_law_ca1_trigger = yes + } + # CA1 -> CA2. + trigger_if = { + limit = { has_realm_law = crown_authority_1 } + can_pass_law_ca2_trigger = yes + } + # CA2 -> CA3. + trigger_if = { + limit = { has_realm_law = crown_authority_2 } + can_pass_law_ca3_trigger = yes + } + + # If the liege is administrative, they have to be independent. + trigger_if = { + limit = { government_allows = administrative } + is_independent_ruler = yes + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + # Why the hell not? If your liege dies several times in quick succession, sure, centralise all the power you like. That'll go well. + cooldown_against_recipient = { years = 10 } + + cost = { + prestige = { + value = scope:recipient.increase_crown_authority_prestige_cost + multiply = subsidised_liege_authority_discount_value + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_subsidise_crown_authority_interaction.tt.accepted + left_icon = scope:recipient + scope:recipient = { + # Try to change authority. + increase_crown_authority_effect = yes + increase_tribal_authority_effect = yes + increase_imperial_bureaucracy_effect = yes + # No one blames the liege for this. + add_character_modifier = { + modifier = liege_authority_boost_has_scapegoat_modifier + years = 10 + } + } + # Aaaaand everyone knows what you did. + change_strife_opinion = massive_strife_gain + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = diarch_subsidise_crown_authority_interaction.tt.declined + left_icon = scope:recipient + add_opinion = { + target = scope:recipient + modifier = refusal_opinion + opinion = -20 + } + } + } + } + + ai_accept = { + base = 0 + + # You want to do _what_? For free? + modifier = { + add = 100 + desc = diarch_subsidise_crown_authority_interaction.tt.absolutely_yes_please + always = yes + } + } + + auto_accept = { + custom_description = { + text = auto_accept_interaction_ai + object = scope:recipient + scope:recipient = { + is_ai = yes + } + } + } + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + ai_potential = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + # You also need prestige left over afterwards to use other interactions, so make sure the AI doesn't bankrupt itself on this. + prestige >= { + value = liege.increase_crown_authority_prestige_cost + multiply = subsidised_liege_authority_discount_value + add = major_prestige_value + } + } + + ai_will_do = { + base = 0 + + # Government situation. + ## Does your liege's gubermint allow you to bully people and take their stuff? No? Then you want to take this interaction; anyone who wouldn't has been pre-filtered. + modifier = { + add = 1000 + liege = { + NOR = { + has_realm_law_flag = title_revocation_allowed + has_realm_law_flag = vassal_retraction_allowed + } + } + } + } +} + +# Diarch (actor) requests an adjustment of liege's (recipient's) IB, taking on the costs and negatives themselves _or_ reducing their strife, depending on whether they boost centralisation or decrease it. +diarch_adjust_bureaucracy_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + interface_priority = 9 + notification_text = { + first_valid = { + # Decentralise. + triggered_desc = { + trigger = { scope:decrease_centralisation = yes } + desc = DIARCH_ADJUST_BUREAUCRACY_PROPOSAL.DECENTRALISE + } + # Centralise. + desc = DIARCH_ADJUST_BUREAUCRACY_PROPOSAL.CENTRALISE + } + } + icon = icon_contract_modification_single + + desc = diarch_adjust_bureaucracy_interaction_desc + + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + liege_has_co_emperorship_trigger = yes + liege = { has_diarchy_parameter = unlock_adjust_imperial_bureaucracy_interaction } + } + # Same sub-realm only. + OR = { + scope:actor.liege = scope:recipient + scope:recipient = { + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_adjust_imperial_bureaucracy_interaction } + # And the liege can't have the max level of authority. + custom_tooltip = { + text = diarch_subsidise_crown_authority_interaction.tt.liege_cannot_have_max_authority + scope:recipient = { + NOT = { has_realm_law_flag = max_authority_level } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + # Co-emperors can't keep doing this in quick succession. + cooldown = { years = 10 } + + cost = { + prestige = { + value = scope:recipient.increase_crown_authority_prestige_cost + if = { + limit = { scope:increase_centralisation = yes } + multiply = subsidised_liege_authority_discount_value + } + else = { multiply = lowered_liege_authority_discount_value } + } + } + + # Increase IB + send_option = { + flag = increase_centralisation + is_valid = { + scope:recipient = { + NOT = { has_realm_law = imperial_bureaucracy_3 } + } + } + localization = increase_centralisation_name + current_description = increase_centralisation + starts_enabled = { always = yes } + } + # Decrease IB + ## The AI doesn't use this. + send_option = { + flag = decrease_centralisation + is_valid = { + scope:recipient = { + NOT = { has_realm_law = imperial_bureaucracy_0 } + } + } + localization = decrease_centralisation_name + current_description = decrease_centralisation + } + + on_send = { + # Tell the AI to set their only send option. + if = { + limit = { + scope:actor = { is_ai = yes } + } + save_scope_value_as = { + name = increase_centralisation + value = yes + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_subsidise_crown_authority_interaction.tt.accepted + left_icon = scope:recipient + scope:recipient = { + # Try to change authority. + if = { + limit = { scope:increase_centralisation = yes } + increase_imperial_bureaucracy_effect = yes + # No one blames the liege for this. + add_character_modifier = { + modifier = liege_authority_boost_has_scapegoat_modifier + years = 10 + } + } + else = { decrease_imperial_bureaucracy_effect = yes } + } + # Aaaaand everyone knows what you did. + ## For good. + if = { + limit = { scope:increase_centralisation = yes } + change_strife_opinion = massive_strife_gain + } + ## Or for ill. + else = { change_strife_opinion = massive_strife_loss } + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = diarch_subsidise_crown_authority_interaction.tt.declined + left_icon = scope:recipient + add_opinion = { + target = scope:recipient + modifier = refusal_opinion + opinion = -20 + } + } + } + } + + ai_accept = { + base = -25 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + # Your level of influence. + ## Impotent + modifier = { + add = -10 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPOTENT + scope:actor.influence_level = 0 + } + ## Influential + ### Would be zero, so it wouldn't appear. + ## Persuasive + modifier = { + add = 10 + desc = AI_OPINION_INFLUENCE_LEVEL_PERSUASIVE + scope:actor.influence_level = 2 + } + ## Controlling + modifier = { + add = 20 + desc = AI_OPINION_INFLUENCE_LEVEL_CONTROLLING + scope:actor.influence_level = 3 + } + ## Authoritative + modifier = { + add = 30 + desc = AI_OPINION_INFLUENCE_LEVEL_AUTHORITATIVE + scope:actor.influence_level = 4 + } + ## Imperious + modifier = { + add = 40 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPERIOUS + scope:actor.influence_level = 5 + } + # Traits. + ## --- Arrogant + modifier = { + add = -30 + desc = ai_acceptance_trait_arrogant + scope:recipient = { has_trait = arrogant } + } + ## --- Ambitious + modifier = { + add = -30 + desc = ai_acceptance_trait_ambitious + scope:recipient = { has_trait = ambitious } + } + ## --- Stubborn + modifier = { + add = -30 + desc = ai_acceptance_trait_stubborn + scope:recipient = { has_trait = stubborn } + } + ## -- Paranoid + modifier = { + add = -20 + desc = ai_acceptance_trait_paranoid + scope:recipient = { has_trait = paranoid } + } + ## + Craven + modifier = { + add = 10 + desc = ai_acceptance_trait_craven + scope:recipient = { has_trait = craven } + } + ## ++ Trusting + modifier = { + add = 20 + desc = ai_acceptance_trait_trusting + scope:recipient = { has_trait = trusting } + } + ## ++ Fickle + modifier = { + add = 20 + desc = ai_acceptance_trait_fickle + scope:recipient = { has_trait = fickle } + } + ## +++ Content + modifier = { + add = 30 + desc = ai_acceptance_trait_content + scope:recipient = { has_trait = content } + } + ## +++ Humble + modifier = { + add = 30 + desc = ai_acceptance_trait_humble + scope:recipient = { has_trait = humble } + } + # Factor for personality. + ai_value_modifier = { + who = scope:recipient + # The meeker they are, the more they'll go along with your wishes. + ai_boldness = { + if = { + limit = { + scope:recipient = { + NOT = { ai_boldness = 0 } + } + } + value = -1 + } + } + # And the lazier. + ai_energy = { + if = { + limit = { + scope:recipient = { ai_energy > 0 } + } + value = 0.5 + } + } + } + } + + auto_accept = { + custom_description = { + text = auto_accept_interaction_ai + object = scope:recipient + scope:recipient = { + is_ai = yes + scope:increase_centralisation = yes + } + } + } + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 24 + hegemony = 24 + } + ai_potential = { + is_diarch = yes + liege_has_co_emperorship_trigger = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + # You also need prestige left over afterwards to use other interactions, so make sure the AI doesn't bankrupt itself on this. + prestige >= { + value = liege.increase_crown_authority_prestige_cost + multiply = subsidised_liege_authority_discount_value + add = major_prestige_value + } + } + + ai_will_do = { + base = 0 + + # Government situation. + ## Does your liege's gubermint allow you to bully people and take their stuff? No? Then you want to take this interaction; anyone who wouldn't has been pre-filtered. + modifier = { + add = 1000 + liege = { + NOR = { + has_realm_law_flag = title_revocation_allowed + has_realm_law_flag = vassal_retraction_allowed + } + } + } + # Otherwise, there's just a slight constant chance based on energy. + ai_value_modifier = { + ai_energy = 2 + # Assuming you're the heir, as otherwise... + trigger = { liege.player_heir ?= root } + } + } +} + + + + + + + + + + + +################################################## +# ANCILLARY DIARCH POWERS + +# Diarch (actor) either tests learning or spends prestige to gain an unpressed claim on a title held by a vassal of their liege (recipient). +diarch_legal_meddling_interaction = { + category = interaction_category_diarch + common_interaction = yes + interface_priority = 165 + diarch_interaction = yes + icon = vassal_claim_liege_title_interaction + + desc = diarch_legal_meddling_interaction_desc + + ai_intermediary_maybe = yes + target_type = title + target_filter = recipient_domain_titles + popup_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_legal_meddling_interaction } + } + # Make sure scope:recipient is suitable. + scope:recipient = { + # We only target vassals of the liege... + liege = scope:actor.liege + this != scope:actor.liege + # ... who are appropriately landed. + is_landed_or_landless_administrative = yes + scope:recipient.highest_held_title_tier >= tier_county + } + } + + is_valid_showing_failures_only = { + # You can't claim a title from someone if you already have claims on all their titles. + custom_tooltip = { + text = diarch_legal_meddling_interaction.tt.they_must_have_at_least_one_unclaimed_title + scope:recipient = { + any_held_title = { + diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor } + } + } + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_a_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_legal_meddling_interaction } + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:diarch_legal_meddling_interaction_duel_learning = yes + scope:diarch_legal_meddling_interaction_pay_prestige_partial = yes + scope:diarch_legal_meddling_interaction_pay_prestige_full = yes + } + } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + cooldown = { months = 6 } + cooldown_against_recipient = { years = 3 } + + can_be_picked_title = { + scope:target = { + # Really anything you don't already have a claim on and which isn't special. + diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor } + } + } + + # Attempt Methods + send_options_exclusive = yes + ## Duel for it. + send_option = { + # You can always try to duel for it. + flag = diarch_legal_meddling_interaction_duel_learning + } + ## Pay partial prestige. + send_option = { + is_valid = { + scope:actor = { + prestige >= { + value = legal_meddling_interaction_title_discounted_cost_value + multiply = -1 + } + } + } + flag = diarch_legal_meddling_interaction_pay_prestige_partial + } + ## Pay full prestige. + send_option = { + is_valid = { + scope:actor = { + prestige >= { + value = legal_meddling_interaction_title_cost_value + multiply = -1 + } + } + } + flag = diarch_legal_meddling_interaction_pay_prestige_full + } + + on_send = { + # Did a landless diarch send this? + log_diarch_send_interaction_as_variable_effect = { INTERACTION = forge_claim } + } + + on_accept = { + scope:actor = { + # Resolution method. + ## If we're duelling, then we duel. + if = { + limit = { scope:diarch_legal_meddling_interaction_duel_learning = yes } + # Now: FIGHT! WITH WORDS! + duel = { + skill = learning + target = scope:recipient + # Victory! A claim for you. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + desc = diarch_legal_meddling_interaction.tt.success + diarch_legal_meddling_interaction_apply_success_effect = yes + } + # Defeat! Into the loser's bin you go. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + desc = diarch_legal_meddling_interaction.tt.failure + diarch_legal_meddling_interaction_apply_fail_effect = yes + } + } + } + ## Otherwise we can take an uneven gamble against a reduced prestige cost.. + else_if = { + limit = { scope:diarch_legal_meddling_interaction_pay_prestige_partial = yes } + random_list = { + # Victory! A claim for you. + 100 = { + desc = diarch_legal_meddling_interaction.tt.success + diarch_legal_meddling_interaction_apply_success_effect = yes + } + # Defeat! Into the loser's bin you go. + 100 = { + desc = diarch_legal_meddling_interaction.tt.failure + diarch_legal_meddling_interaction_apply_fail_effect = yes + } + } + } + ## Or pay the full price. + else = { + custom_tooltip = diarch_legal_meddling_interaction.tt.success + diarch_legal_meddling_interaction_apply_success_effect = yes + } + } + + # Debug logging. + debug_log = debug_log.legal_meddling.attempt_made + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = peer_vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_core_loop_base_value + + # Additions. + ## Weight for opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + ## Weight for personality. + ai_value_modifier = { + ai_boldness = 0.25 + ai_greed = 0.5 + ai_honor = 0.5 + } + ## Flag Management. + ### Duel for it if we're massively superior. + modifier = { + add = 100 + scope:diarch_legal_meddling_interaction_duel_learning = yes + learning_diff = { + target = scope:recipient + value >= @ai_skill_diff_upper_threshold + } + } + ### Else we'll try to pay full prestige, if we've got lots to spare. + modifier = { + add = 50 + scope:diarch_legal_meddling_interaction_pay_prestige_full = yes + prestige >= { + value = shift_privileges_interaction_target_cost_value + multiply = @ai_prestige_bank_threshold + } + } + ### Or else we'll to chance it, if we can afford that + some slack. + modifier = { + add = 25 + scope:diarch_legal_meddling_interaction_pay_prestige_partial = yes + prestige < { + value = shift_privileges_interaction_target_cost_value + multiply = @ai_prestige_bank_threshold + } + prestige >= { + value = shift_privileges_interaction_target_discounted_cost_value + multiply = @ai_prestige_bank_threshold + } + } + ### Otherwise we'll risk a regular duel. + ## Weight up for bordering or de jure areas. + modifier = { + add = 50 + is_landed_or_landless_administrative = yes + any_sub_realm_county = { + any_neighboring_county = { + holder = { + OR = { + this = scope:recipient + any_liege_or_above = { this = scope:recipient } + } + } + } + } + } + modifier = { + add = 50 + is_landed_or_landless_administrative = yes + scope:actor = { + any_held_title = { + any_direct_de_jure_vassal_title = { + holder ?= { + OR = { + this = scope:recipient + this = { + any_liege_or_above = { this = scope:recipient } + } + } + } + } + } + } + } + ## Weight down for folks outside of our de jure kingdom. + modifier = { + add = -100 + is_landed_or_landless_administrative = yes + scope:recipient.primary_title.de_jure_liege ?= { + this != scope:actor.primary_title.de_jure_liege + } + } + ## Landless characters want land, but also want to focus on taking from those who might give it up. + ### So we prioritise hooked AI counts. + modifier = { + add = 100 + is_landed = no + has_hook = scope:recipient + scope:recipient = { + highest_held_title_tier = tier_county + is_ai = yes + } + } + ### Then just hooked AI. + modifier = { + add = 50 + is_landed = no + has_hook = scope:recipient + scope:recipient = { is_ai = yes } + } + # Factors. + ## + Weight up if we're lacking valid claims + modifier = { + factor = 1.5 + NOR = { + is_claimant = yes + any_claim = { + exists = holder + exists = holder.liege + holder.liege = scope:actor.liege + } + } + } + ## + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## + If we're landless, turbo charge this when we lack suitable claims. + modifier = { + factor = 3 + scope:actor = { + is_ruler = no + any_claim = { + count < @ai_threshold_for_revoke_cyle + diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor } + } + } + } + ## + If we're landless, try to prioritise anyone we've got a hook on. + modifier = { + factor = 2 + scope:actor = { + is_ruler = no + has_usable_hook = scope:recipient + } + } + ## - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on players unless they're of at least a decent size. + modifier = { + factor = 0 + scope:recipient = { + is_ai = no + any_held_county = { count <= 3 } + } + } + ## x0 If we're landless, don't claim more titles if we've already got enough we can try to action. + modifier = { + factor = 0 + scope:actor = { + is_ruler = no + any_claim = { + count >= @ai_threshold_for_revoke_cyle + diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor } + } + } + } + ## x0 If we're landless, don't pick on people who won't give their lands up. + modifier = { + factor = 0 + scope:actor = { is_ruler = no } + scope:recipient = { + any_held_county = { count <= 1 } + } + } + ### x0 Don't go into prestige debt! + modifier = { + factor = 0 + prestige < 0 + } + } +} + +# Diarch (actor) either tests stewardship or spends prestige to gain gold at the expense of negative modifiers delivered to the liege (recipient). +diarch_syphon_treasury_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + icon = icon_gold + common_interaction = yes + + desc = diarch_syphon_treasury_interaction_desc + + + interface_priority = 60 + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_syphon_treasury_interaction } + } + # Make sure scope:recipient is suitable. + scope:recipient = { + OR = { + # We only target the liege... + this = scope:actor.liege + # ... but we want to see it for peer-vassals and such. + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # If scope:actor's stewardship is too crap, then we need to make sure they haven't somehow managed to riddle scope:recipient's lands with negative modifiers already. + trigger_if = { + limit = { scope:actor.stewardship < syphon_treasury_stewardship_medium } + custom_tooltip = { + text = diarch_syphon_treasury_interaction.tt.not_enough_marks_or_stewardship + scope:recipient = { + any_held_county = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + } + } + } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_a_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_syphon_treasury_interaction } + } + # Must have selected an amount to embezzle. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = diarch_interactions.tt.must_embezzle_something + OR = { + scope:diarch_syphon_treasury_sum_small = yes + scope:diarch_syphon_treasury_sum_medium = yes + scope:diarch_syphon_treasury_sum_large = yes + scope:diarch_syphon_treasury_sum_huge = yes + } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + cooldown = { years = 3 } + + # Attempt Methods + send_options_exclusive = yes + ## Steal a small sum. + ### Bonus to scope:actor. + send_option = { + flag = diarch_syphon_treasury_sum_small + # We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff. + localization = diarch_syphon_treasury_sum_small_name + current_description = diarch_syphon_treasury_sum_small + } + ## Steal a moderate sum. + ### No bonus, no malus. + send_option = { + flag = diarch_syphon_treasury_sum_medium + # We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff. + localization = diarch_syphon_treasury_sum_medium_name + current_description = diarch_syphon_treasury_sum_medium + starts_enabled = { always = yes } + } + ## Steal a large sum. + ### Malus to scope:actor + send_option = { + flag = diarch_syphon_treasury_sum_large + # We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff. + localization = diarch_syphon_treasury_sum_large_name + current_description = diarch_syphon_treasury_sum_large + } + ## Steal a _huge_sum. + ### _Huge_ malus to scope:actor. + send_option = { + flag = diarch_syphon_treasury_sum_huge + # We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff. + localization = diarch_syphon_treasury_sum_huge_name + current_description = diarch_syphon_treasury_sum_huge + } + + on_send = { + # Did a landless diarch send this? + log_diarch_send_interaction_as_variable_effect = { INTERACTION = embezzle } + } + + on_accept = { + # Time for a skill duel! + scope:actor = { + duel = { + skill = stewardship + value = syphon_treasury_duel_target_value + # Victory! Gold for scope:actor, maluses for the liege. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + # Bonus for smaller amounts. + modifier = { + add = 25 + always = scope:diarch_syphon_treasury_sum_small + } + # You always have some kind of a chance. + min = 10 + desc = diarch_syphon_treasury_interaction.tt.success + # Inform scope:actor what type of embezzlement they'll be pursuing. + ## Very high stewardship characters syphon development growth from a few counties. + if = { + limit = { + stewardship >= syphon_treasury_stewardship_very_high + NOT = { government_has_flag = government_is_nomadic } + } + custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_development_growth + } + ## Alternatively, herd for nomadic rulers + else_if = { + limit = { + stewardship >= syphon_treasury_stewardship_very_high + government_has_flag = government_is_nomadic + } + custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_herd + } + ## High stewardship characters syphon some control from various counties. + else_if = { + limit = { stewardship >= syphon_treasury_stewardship_high } + custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_control_several_counties + } + ## Medium stewardship characters syphon lots of control from one county. + else_if = { + limit = { stewardship >= syphon_treasury_stewardship_medium } + custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_control_county + } + ## Low stewardship characters apply county modifiers. + else = { custom_tooltip = diarch_syphon_treasury_interaction.tt.success.apply_county_modifier } + # Now we sort the actual effects. + ## A nice toast to tell us about our new gold. + send_interface_toast = { + type = event_toast_effect_good + title = diarch_syphon_treasury_interaction.tt.success + left_icon = scope:recipient + # Transfer gold. + ## Small amount. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_small } + give_or_update_embezzler_secret_effect = { + TARGET = scope:recipient + STAKE = syphon_treasury_gold_gain_low + } + add_gold = syphon_treasury_gold_gain_low + } + ## Medium amount. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + give_or_update_embezzler_secret_effect = { + TARGET = scope:recipient + STAKE = syphon_treasury_gold_gain_medium + } + add_gold = syphon_treasury_gold_gain_medium + } + ## Large amount. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + give_or_update_embezzler_secret_effect = { + TARGET = scope:recipient + STAKE = syphon_treasury_gold_gain_high + } + add_gold = syphon_treasury_gold_gain_high + } + ## Huge amount. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + give_or_update_embezzler_secret_effect = { + TARGET = scope:recipient + STAKE = syphon_treasury_gold_gain_very_high + } + add_gold = syphon_treasury_gold_gain_very_high + } + } + ## Plus the maluses for the liege. + scope:recipient = { + # Very high stewardship characters syphon development growth from a few counties. + if = { + limit = { scope:actor.stewardship >= syphon_treasury_stewardship_very_high } + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = massive_development_progress_loss } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = major_development_progress_loss } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = medium_development_progress_loss } + } + ## Low. + else = { + diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = minor_development_progress_loss } + } + } + # Alternatively, for nomadic rulers, we steal some herd + else_if = { + limit = { scope:actor.stewardship >= syphon_treasury_stewardship_very_high government_has_flag = government_is_nomadic } + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + scope:recipient = { + domicile ?= { change_herd = monumental_herd_loss } + } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + scope:recipient = { + domicile ?= { change_herd = massive_herd_loss } + } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + scope:recipient = { + domicile ?= { change_herd = major_herd_loss } + } + } + ## Low. + else = { + scope:recipient = { + domicile ?= { change_herd = medium_herd_loss } + } + } + } + # High stewardship characters syphon some control from various counties. + else_if = { + limit = { scope:actor.stewardship >= syphon_treasury_stewardship_high } + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = monumental_county_control_loss } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = extreme_county_control_loss } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = major_county_control_loss } + } + ## Low. + else = { + diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = medium_county_control_loss } + } + } + # Medium stewardship characters syphon lots of control from one county. + else_if = { + limit = { scope:actor.stewardship >= syphon_treasury_stewardship_medium } + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { + this != scope:recipient.capital_county + } + alternative_limit = { always = yes } + change_county_control = monumental_county_control_loss + } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { + this != scope:recipient.capital_county + } + alternative_limit = { always = yes } + change_county_control = extreme_county_control_loss + } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { + this != scope:recipient.capital_county + } + alternative_limit = { always = yes } + change_county_control = major_county_control_loss + } + } + ## Low. + else = { + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { + this != scope:recipient.capital_county + } + alternative_limit = { always = yes } + change_county_control = medium_county_control_loss + } + } + } + # Low stewardship characters apply county modifiers. + else = { + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + add_county_modifier = { + modifier = syphon_treasury_massive_sum_modifier + years = 5 + } + } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + add_county_modifier = { + modifier = syphon_treasury_large_sum_modifier + years = 5 + } + } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + add_county_modifier = { + modifier = syphon_treasury_medium_sum_modifier + years = 5 + } + } + } + ## Low. + else = { + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + add_county_modifier = { + modifier = syphon_treasury_small_sum_modifier + years = 5 + } + } + } + } + } + } + # Defeat! No gold, just strife & a crime opinion. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + # Malus for higher amounts. + modifier = { + add = 25 + always = scope:diarch_syphon_treasury_sum_large + } + # Chungus malus for chungus higher amounts. + modifier = { + add = 100 + always = scope:diarch_syphon_treasury_sum_huge + } + # You can always fail. + min = 20 + desc = diarch_syphon_treasury_interaction.tt.failure.actor + send_interface_toast = { + type = event_toast_effect_bad + title = diarch_syphon_treasury_interaction.tt.failure.actor + left_icon = scope:recipient + show_as_tooltip = { diarch_syphon_treasury_interaction_caught_embezzling_effect = yes } + } + hidden_effect = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_neutral + title = diarch_syphon_treasury_interaction.tt.failure.recipient + left_icon = scope:actor + diarch_syphon_treasury_interaction_caught_embezzling_effect = yes + } + } + } + } + } + } + + # Debug logging. + debug_log = debug_log.syphon_treasury.attempt_made + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + # Honest and generous characters never embezzle. + NOR = { + has_trait = honest + has_trait = generous + } + } + + ai_will_do = { + # Embezzlement is serious, so you need actual reasons for it. + base = 0 + + # Additions. + ## Weight for opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + ## Weight for personality. + ai_value_modifier = { + ai_boldness = 0.25 + ai_greed = 1 + ai_honor = -0.5 + } + ## Flag Management. + ### The AI never goes for a huge sum, that's just there to tempt the player. + ### We prefer a large sum if we've got a massive skill disparity. + modifier = { + add = 100 + scope:diarch_syphon_treasury_sum_large = yes + stewardship_diff = { + target = scope:recipient + value >= @ai_skill_diff_upper_threshold + } + } + ### But a moderate sum does well if we're more evenly matched. + modifier = { + add = 50 + scope:diarch_syphon_treasury_sum_medium = yes + stewardship_diff = { + target = scope:recipient + value < @ai_skill_diff_upper_threshold + } + stewardship_diff = { + target = scope:recipient + value >= @ai_skill_diff_lower_threshold + } + } + ### Aaaand otherwise we'll accept a small amount. + modifier = { + add = 25 + scope:diarch_syphon_treasury_sum_small = yes + stewardship_diff = { + target = scope:recipient + value < @ai_skill_diff_lower_threshold + } + } + ## Less likely in tribal societies with less bookwork to hide theft in. + modifier = { + add = -50 + scope:recipient = { government_has_flag = government_is_tribal } + } + ## Debt is a great motivator for theft. + ### Is slightly in debt. + modifier = { + add = 10 + debt_level = 1 + } + ### Is one year in debt. + modifier = { + add = 25 + debt_level = 2 + } + ### Is two years in debt. + modifier = { + add = 40 + debt_level = 3 + } + ### Is three years in debt. + modifier = { + add = 60 + debt_level = 4 + } + ### Is four years in debt. + modifier = { + add = 100 + debt_level = 5 + } + ### Is over five years in debt. + modifier = { + add = 200 + debt_level >= 6 + } + ## Certain traits can affect likelihood directly. + ### It's intentional that these don't sync up value-wise with their opposite traits. + ### Honest/generous excluded because they're hard locked out of the interaction for the AI. + ### +++ Greedy. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = greedy + } + ### ++ Deceitful. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = deceitful + } + ### + Arbitrary. + modifier = { + add = diarch_ai_desire_plus_1_value + has_trait = arbitrary + } + ### -- Just. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = just + } + ## Skill considerations. + ### Very low negative comparative stewardship. + modifier = { + add = -50 + stewardship_diff = { + target = scope:recipient + value <= 10 + } + # Filter out arrogant characters, who can't believe they suck. + NOT = { has_trait = arrogant } + } + ### Low negative comparative stewardship. + modifier = { + add = -25 + stewardship_diff = { + target = scope:recipient + value <= 5 + } + # Filter out arrogant characters, who can't believe they suck. + NOT = { has_trait = arrogant } + } + ### High positive comparative stewardship. + modifier = { + add = 25 + stewardship_diff = { + target = scope:recipient + value >= 5 + } + # Filter out humble characters, who give their liege too much credit. + NOT = { has_trait = humble } + } + ### Very high positive comparative stewardship. + modifier = { + add = 50 + stewardship_diff = { + target = scope:recipient + value >= 10 + } + # Filter out humble characters, who give their liege too much credit. + NOT = { has_trait = humble } + } + # Factors. + ## + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## We're happy to bully players here, since we're not taking their land. + } +} + +# Diarch (actor) either tests diplomacy or spends prestige to give negative modifiers to the lands of a vassal of their liege (secondary recipient), who can't resist. +diarch_shift_privileges_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + icon = icon_shift_privileges + common_interaction = yes + + ai_intermediary_maybe = yes + desc = diarch_shift_privileges_interaction_desc + + popup_on_receive = yes + + interface_priority = 285 + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_shift_privileges_interaction } + } + # Make sure scope:recipient is suitable. + scope:recipient = { + # We only target vassals of the liege... + liege = scope:actor.liege + this != scope:actor.liege + # ... who are appropriately landed. + is_landed_or_landless_administrative = yes + scope:recipient.highest_held_title_tier >= tier_county + } + } + + is_valid_showing_failures_only = { + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarch revocations require a claim. + custom_tooltip = { + text = diarch_shift_privileges_interaction.tt.no_affectable_counties + scope:recipient = { + any_held_county = { diarch_shift_privileges_valid_target_title_trigger = yes } + } + } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_shift_privileges_interaction } + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:diarch_shift_privileges_interaction_duel_diplomacy = yes + scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes + scope:diarch_shift_privileges_interaction_pay_prestige_full = yes + } + } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + cooldown = { months = 6 } + cooldown_against_recipient = { years = 3 } + + # Attempt Methods + send_options_exclusive = yes + ## Duel for it. + send_option = { + # You can always try to duel for it. + flag = diarch_shift_privileges_interaction_duel_diplomacy + } + ## Pay partial prestige. + send_option = { + is_valid = { + scope:actor = { + prestige >= { + value = shift_privileges_interaction_target_discounted_cost_value + multiply = -1 + } + } + } + flag = diarch_shift_privileges_interaction_pay_prestige_partial + } + ## Pay full prestige. + send_option = { + is_valid = { + scope:actor = { + prestige >= { + value = shift_privileges_interaction_target_cost_value + multiply = -1 + } + } + } + flag = diarch_shift_privileges_interaction_pay_prestige_full + } + + on_send = { + # Did a landless diarch send this? + log_diarch_send_interaction_as_variable_effect = { INTERACTION = shift_privileges } + } + + on_accept = { + scope:actor = { + # Resolution method. + ## If we're duelling, then we duel. + if = { + limit = { scope:diarch_shift_privileges_interaction_duel_diplomacy = yes } + # Now: FIGHT! WITH WORDS! + duel = { + skill = diplomacy + target = scope:recipient + # Victory! Cash for you, negative modifier for your opponent. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + desc = diarch_shift_privileges_interaction.tt.success + diarch_shift_privileges_interaction_apply_success_effect = yes + } + # Defeat! Into the loser's bin you go. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + desc = diarch_shift_privileges_interaction.tt.failure + diarch_shift_privileges_interaction_apply_fail_effect = yes + } + } + } + ## Otherwise we can take an even gamble against a reduced prestige cost.. + else_if = { + limit = { scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes } + random_list = { + # Victory! A claim for you. + 100 = { + desc = diarch_shift_privileges_interaction.tt.success + diarch_shift_privileges_interaction_apply_success_effect = yes + } + # Defeat! Into the loser's bin you go. + 100 = { + desc = diarch_shift_privileges_interaction.tt.failure + diarch_shift_privileges_interaction_apply_fail_effect = yes + } + } + } + ## Or pay the full price. + else = { + custom_tooltip = diarch_shift_privileges_interaction.tt.success + diarch_shift_privileges_interaction_apply_success_effect = yes + } + # Prestige costs. + ## Point out the lack of cost. + if = { + limit = { scope:diarch_shift_privileges_interaction_duel_diplomacy = yes } + custom_tooltip = diarch_interaction_pay_prestige_none + } + ## Point out the discount. + else_if = { + limit = { scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes } + add_prestige = shift_privileges_interaction_target_discounted_cost_value + } + ## Soz mate, yerr payin' full price. + else = { add_prestige = shift_privileges_interaction_target_cost_value } + tgp_activate_catalyst_against_hegemon_effect = { + HEGEMON = scope:actor.top_liege + CATALYST = catalyst_diarch_mandate + } + } + + # Debug logging. + debug_log = debug_log.shift_privileges.attempt_made + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = peer_vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_secondary_powers_base_value + + # Additions. + ## Weight for opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + ## Weight for personality. + ai_value_modifier = { + ai_boldness = 0.25 + ai_greed = 0.5 + ai_honor = 0.5 + } + ## Flag Management. + ### Duel for it if we're massively superior. + modifier = { + add = 100 + scope:diarch_shift_privileges_interaction_duel_diplomacy = yes + diplomacy_diff = { + target = scope:recipient + value >= @ai_skill_diff_upper_threshold + } + } + ### Else we'll try to pay full prestige, if we've got lots to spare. + modifier = { + add = 50 + scope:diarch_shift_privileges_interaction_pay_prestige_full = yes + prestige >= { + value = shift_privileges_interaction_target_cost_value + multiply = @ai_prestige_bank_threshold + } + } + ### Or else we'll chance it, if we can afford that + some slack. + modifier = { + add = 25 + scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes + prestige < { + value = shift_privileges_interaction_target_cost_value + multiply = @ai_prestige_bank_threshold + } + prestige >= { + value = shift_privileges_interaction_target_discounted_cost_value + multiply = @ai_prestige_bank_threshold + } + } + ### Otherwise we'll risk a regular duel. + ## Landless AI want to do this more. + modifier = { + add = 25 + is_ruler = no + } + ## AI who are in debt seek ways out of it. + modifier = { + add = 100 + debt_level >= 0 + } + ## Certain traits make it either very likely or very unlikely. + ### +++ Arbitrary. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = arbitrary + } + ### --- Just. + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = just + } + # Factors. + ## + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on players unless they're of at least a decent size. + modifier = { + factor = 0 + scope:recipient = { + is_ai = no + any_held_county = { count <= 3 } + } + } + ### x0 Don't go into prestige debt! + modifier = { + factor = 0 + prestige < 0 + } + } +} + +# Diarch (actor) requests use of a special CB from liege (recipient), allowing them to powerfully expand the empire's borders and harvest influence. +diarch_request_imperial_expedition_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + notification_text = DIARCH_REQUESTS_IMPERIAL_EXPEDITION + icon = invasion + interface_priority = 5 + + desc = diarch_request_imperial_expedition_interaction_desc + + ai_maybe = yes + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + liege = { has_diarchy_parameter = unlock_diarch_requests_military_expedition_interaction } + } + # Same sub-realm only. + OR = { + scope:actor.liege = scope:recipient + scope:recipient = { + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_requests_military_expedition_interaction } + # And you have to have _some_ troops of your own. + custom_tooltip = { + text = diarch_request_imperial_expedition_interaction.tt.minimum_troop_count + scope:actor.max_military_strength >= request_imperial_expedition_minimum_troop_count_value + } + # _And_ you don't already have a charge. + custom_tooltip = { + text = diarch_request_imperial_expedition_interaction.tt.actor_already_has_charge + scope:actor = { + NOT = { has_variable = imperial_expedition_charged } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + # Hefty cooldown on this guy, as you shouldn't be able to do these often. + cooldown_against_recipient = { years = 25 } + + cost = { + influence = { + if = { + limit = { scope:influence_major = yes } + add = request_imperial_expedition_influence_stake_major_value + } + else_if = { + limit = { scope:influence_medium = yes } + add = request_imperial_expedition_influence_stake_medium_value + } + else_if = { + limit = { scope:influence_minor = yes } + add = request_imperial_expedition_influence_stake_minor_value + } + } + } + + # How much influence do we want to outlay on this? + ## A cheapy amount. + send_option = { + # Always valid. + flag = influence_minor + localization = diarch_request_imperial_expedition_interaction.tt.influence_minor_name + } + ## A medium amount. + send_option = { + is_valid = { scope:actor.influence >= request_imperial_expedition_influence_stake_medium_value } + flag = influence_medium + localization = diarch_request_imperial_expedition_interaction.tt.influence_medium_name + } + ## A large amount. + send_option = { + is_valid = { scope:actor.influence >= request_imperial_expedition_influence_stake_major_value } + flag = influence_major + localization = diarch_request_imperial_expedition_interaction.tt.influence_major_name + } + ## Use a hook instead. + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_auto_accept = { + # Fire the notification event telling scope:recipient what's been done. + scope:recipient = { trigger_event = diarchy.8003 } + } + + on_accept = { + scope:actor = { + # Display effects in the interaction. + show_as_tooltip = { diarch_request_imperial_expedition_accepted_effect = yes } + # Fire the notification event. + trigger_event = diarchy.8001 + } + } + + on_decline = { + scope:actor = { + # Display effects in the interaction. + show_as_tooltip = { diarch_request_imperial_expedition_rejected_effect = yes } + # Fire the notification event. + trigger_event = diarchy.8002 + } + } + + auto_accept = { + scope:recipient = { + trigger_if = { + limit = { scope:hook = yes } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + trigger_else_if = { + limit = { scope:influence_major = yes } + influence < request_imperial_expedition_influence_stake_major_value + } + trigger_else_if = { + limit = { scope:influence_medium = yes } + influence < request_imperial_expedition_influence_stake_medium_value + } + trigger_else_if = { + limit = { scope:influence_minor = yes } + influence < request_imperial_expedition_influence_stake_minor_value + } + trigger_else = { always = no } + } + } + + ai_accept = { + base = -25 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + # Your level of influence. + ## Impotent + modifier = { + add = -10 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPOTENT + scope:actor.influence_level = 0 + } + ## Influential + ### Would be zero, so it wouldn't appear. + ## Persuasive + modifier = { + add = 10 + desc = AI_OPINION_INFLUENCE_LEVEL_PERSUASIVE + scope:actor.influence_level = 2 + } + ## Controlling + modifier = { + add = 20 + desc = AI_OPINION_INFLUENCE_LEVEL_CONTROLLING + scope:actor.influence_level = 3 + } + ## Authoritative + modifier = { + add = 30 + desc = AI_OPINION_INFLUENCE_LEVEL_AUTHORITATIVE + scope:actor.influence_level = 4 + } + ## Imperious + modifier = { + add = 40 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPERIOUS + scope:actor.influence_level = 5 + } + # Traits. + ## ---- Paranoid + modifier = { + add = -50 + desc = ai_acceptance_trait_paranoid + scope:recipient = { has_trait = paranoid } + } + ## --- Stubborn + modifier = { + add = -30 + desc = ai_acceptance_trait_stubborn + scope:recipient = { has_trait = stubborn } + } + ## --- Content + modifier = { + add = -30 + desc = ai_acceptance_trait_content + scope:recipient = { has_trait = content } + } + ## - Humble + modifier = { + add = -10 + desc = ai_acceptance_trait_humble + scope:recipient = { has_trait = humble } + } + ## + Arrogant + modifier = { + add = 10 + desc = ai_acceptance_trait_arrogant + scope:recipient = { has_trait = arrogant } + } + ## + Ambitious + modifier = { + add = 10 + desc = ai_acceptance_trait_ambitious + scope:recipient = { has_trait = ambitious } + } + ## ++ Trusting + modifier = { + add = 20 + desc = ai_acceptance_trait_trusting + scope:recipient = { has_trait = trusting } + } + ## ++ Fickle + modifier = { + add = 20 + desc = ai_acceptance_trait_fickle + scope:recipient = { has_trait = fickle } + } + ## ++ Lazy + modifier = { + add = 20 + desc = ai_acceptance_trait_lazy + scope:recipient = { has_trait = lazy } + } + ## +++ Craven + modifier = { + add = 30 + desc = ai_acceptance_trait_craven + scope:recipient = { has_trait = craven } + } + # Factor for personality. + ai_value_modifier = { + who = scope:recipient + # The meeker they are, the more they'll go along with your wishes. + ai_boldness = { + if = { + limit = { + scope:recipient = { + NOT = { ai_boldness = 0 } + } + } + value = -1 + } + } + # And the lazier. + ai_energy = { + if = { + limit = { + scope:recipient = { ai_energy > 0 } + } + value = 0.5 + } + } + } + } + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + ai_potential = { + is_diarch = yes + liege = { has_diarchy_active_parameter = unlock_diarch_requests_military_expedition_interaction } + NOR = { + has_trait = craven + has_trait = lazy + has_trait = content + } + } + + ai_will_do = { + base = -50 + + # Personality. + ai_value_modifier = { + ai_energy = 2 + ai_boldness = 1 + ai_greed = 1 + } + # Traits. + ## Brave + modifier = { + add = 25 + has_trait = brave + } + ## Ambitious + modifier = { + add = 50 + has_trait = ambitious + } + ## Arrogant + modifier = { + add = 25 + has_trait = arrogant + } + ## Loyal & Disloyal (same result, different motivations) + modifier = { + add = 25 + OR = { + has_trait = loyal + has_trait = disloyal + } + } + ## Diligent + modifier = { + add = 25 + has_trait = diligent + } + ## We've already filtered out craven, lazy, & content by this point. + # Military. + ## For every thousand troops we can put in ourselves, make us more likely to ask. + modifier = { + add = { + value = scope:actor.max_military_strength + divide = 100 + floor = yes + } + always = yes + } + # Flag Management. + ## Make sure the AI uses hooks for this as it's % based + modifier = { + add = 1 + scope:hook = yes + } + ## Otherwise, try to spend the most influence possible whenever we can. + modifier = { + add = 3 + scope:influence_minor = yes + } + modifier = { + add = 2 + scope:influence_medium = yes + } + modifier = { + add = 1 + scope:influence_major = yes + } + } +} + +# Diarch (actor) requests a kingdom governor title from liege (recipient). +diarch_demand_despotate_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + notification_text = DIARCH_DEMANDS_DESPOTATE + icon = icon_found_despotate + interface_priority = 15 + + desc = diarch_demand_despotate_interaction_desc + + target_type = title + target_filter = secondary_recipient_de_jure_titles + can_be_picked_title = { + scope:target = { valid_kingdom_for_diarch_to_demand_as_despotate_trigger = yes } + } + has_valid_target_showing_failures_only = { + # Only show kingdoms. + scope:target.tier = tier_kingdom + # Don't show the empire's capital kingdom. + NOT = { + scope:recipient.capital_county = { target_is_de_jure_liege_or_above = scope:target } + } + } + # We do this via redirects because recipient_de_jure_titles did not turn up for work today. + redirect = { + scope:recipient = { save_scope_as = secondary_recipient } + } + ai_maybe = yes + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + liege = { has_diarchy_parameter = unlock_diarch_demand_kingdom_interaction } + } + # Same sub-realm only. + OR = { + scope:actor.liege = scope:recipient + scope:recipient = { + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_demand_kingdom_interaction } + # You do not already have a kingdom tier title + custom_tooltip = { + text = diarch_demand_despotate_interaction.tt.already_have_high_titles + scope:actor.highest_held_title_tier < tier_kingdom + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + # Hefty cooldown on this guy, as you shouldn't be able to pester about this often. + cooldown_against_recipient = { years = 25 } + + cost = { + influence = { + if = { + limit = { scope:influence_major = yes } + add = diarch_demand_despotate_interaction_stake_major_value + } + else_if = { + limit = { scope:influence_medium = yes } + add = diarch_demand_despotate_interaction_stake_medium_value + } + else_if = { + limit = { scope:influence_minor = yes } + add = diarch_demand_despotate_interaction_stake_minor_value + } + } + } + + # How much influence do we want to outlay on this? + ## A cheapy amount. + send_option = { + # Always valid. + flag = influence_minor + localization = diarch_demand_despotate_interaction.tt.influence_minor_name + } + ## A medium amount. + send_option = { + is_valid = { scope:actor.influence >= diarch_demand_despotate_interaction_stake_medium_value } + flag = influence_medium + localization = diarch_demand_despotate_interaction.tt.influence_medium_name + } + ## A large amount. + send_option = { + is_valid = { scope:actor.influence >= diarch_demand_despotate_interaction_stake_major_value } + flag = influence_major + localization = diarch_demand_despotate_interaction.tt.influence_major_name + } + ## Use a hook instead. + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_auto_accept = { + # Fire the notification event telling scope:recipient what's been done. + scope:recipient = { trigger_event = diarchy.8033 } + } + + on_accept = { + # Notify the player of how to force their liege's hand. + if = { + limit = { + scope:influence_major = yes + scope:recipient.influence >= diarch_demand_despotate_interaction_stake_to_raise_major_inverted_value + } + custom_tooltip = diarch_demand_despotate_interaction_stake_to_raise_major_value.tt.liege_can_refuse + } + else_if = { + limit = { + scope:influence_medium = yes + scope:recipient.influence >= diarch_demand_despotate_interaction_stake_to_raise_medium_inverted_value + } + custom_tooltip = diarch_demand_despotate_interaction_stake_to_raise_medium_value.tt.liege_can_refuse + } + else_if = { + limit = { + scope:influence_minor = yes + scope:recipient.influence >= diarch_demand_despotate_interaction_stake_to_raise_minor_inverted_value + } + custom_tooltip = diarch_demand_despotate_interaction_stake_to_raise_minor_value.tt.liege_can_refuse + } + scope:actor = { + # Display effects in the interaction. + show_as_tooltip = { diarch_demand_despotate_interaction_accepted_effect = yes } + # Fire the notification event. + trigger_event = diarchy.8031 + } + } + + on_decline = { + scope:actor = { + # Display effects in the interaction. + show_as_tooltip = { diarch_demand_despotate_interaction_rejected_effect = yes } + # Fire the notification event. + trigger_event = diarchy.8032 + } + } + + auto_accept = { + scope:recipient = { + trigger_if = { + limit = { scope:hook = yes } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + trigger_else_if = { + limit = { scope:influence_major = yes } + influence < diarch_demand_despotate_interaction_stake_to_raise_major_inverted_value + } + trigger_else_if = { + limit = { scope:influence_medium = yes } + influence < diarch_demand_despotate_interaction_stake_to_raise_medium_inverted_value + } + trigger_else_if = { + limit = { scope:influence_minor = yes } + influence < diarch_demand_despotate_interaction_stake_to_raise_minor_inverted_value + } + trigger_else = { always = no } + } + } + + ai_accept = { + base = -50 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + # Your level of influence. + ## Impotent + modifier = { + add = -10 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPOTENT + scope:actor.influence_level = 0 + } + ## Influential + ### Would be zero, so it wouldn't appear. + ## Persuasive + modifier = { + add = 10 + desc = AI_OPINION_INFLUENCE_LEVEL_PERSUASIVE + scope:actor.influence_level = 2 + } + ## Controlling + modifier = { + add = 20 + desc = AI_OPINION_INFLUENCE_LEVEL_CONTROLLING + scope:actor.influence_level = 3 + } + ## Authoritative + modifier = { + add = 30 + desc = AI_OPINION_INFLUENCE_LEVEL_AUTHORITATIVE + scope:actor.influence_level = 4 + } + ## Imperious + modifier = { + add = 40 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPERIOUS + scope:actor.influence_level = 5 + } + # Traits. + ## ---- Paranoid + modifier = { + add = -50 + desc = ai_acceptance_trait_paranoid + scope:recipient = { has_trait = paranoid } + } + ## --- Stubborn + modifier = { + add = -30 + desc = ai_acceptance_trait_stubborn + scope:recipient = { has_trait = stubborn } + } + ## --- Greedy + modifier = { + add = -30 + desc = ai_acceptance_trait_greedy + scope:recipient = { has_trait = greedy } + } + ## -- Arrogant + modifier = { + add = -20 + desc = ai_acceptance_trait_arrogant + scope:recipient = { has_trait = arrogant } + } + ## ++ Humble + modifier = { + add = 20 + desc = ai_acceptance_trait_humble + scope:recipient = { has_trait = humble } + } + ## ++ Trusting + modifier = { + add = 20 + desc = ai_acceptance_trait_trusting + scope:recipient = { has_trait = trusting } + } + ## ++ Fickle + modifier = { + add = 20 + desc = ai_acceptance_trait_fickle + scope:recipient = { has_trait = fickle } + } + ## ++ Lazy + modifier = { + add = 20 + desc = ai_acceptance_trait_lazy + scope:recipient = { has_trait = lazy } + } + ## ++ Generous + modifier = { + add = 20 + desc = ai_acceptance_trait_generous + scope:recipient = { has_trait = generous } + } + # Factor for personality. + ai_value_modifier = { + who = scope:recipient + # The meeker they are, the more they'll go along with your wishes. + ai_boldness = { + if = { + limit = { + scope:recipient = { + NOT = { ai_boldness = 0 } + } + } + value = -1 + } + } + # And the lazier. + ai_energy = { + if = { + limit = { + scope:recipient = { ai_energy > 0 } + } + value = 0.5 + } + } + } + } + + # AI + ai_set_target = { + scope:recipient = { + # Grab our empires. + every_held_title = { + title_tier >= empire + add_to_list = empires_list + } + # Then from that, formulate our kingdoms. + every_in_list = { + list = empires_list + every_in_de_jure_hierarchy = { + limit = { + tier = tier_kingdom + valid_kingdom_for_diarch_to_demand_as_despotate_trigger = yes + } + continue = { tier >= tier_kingdom } + add_to_list = kingdoms_list + } + } + # Now pick our best shot. + ordered_in_list = { + list = kingdoms_list + order_by = { + # Tell the AI to grab its own kingdom first of all. + if = { + limit = { this = scope:actor.capital_county.kingdom } + add = 1000 + } + # Otherwise, go for the biggest within the empire. + else = { + every_de_jure_county_holder = { + limit = { top_liege = scope:recipient } + add = 1 + } + } + } + save_scope_as = target + } + } + } + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 24 + hegemony = 24 + } + ai_potential = { + is_diarch = yes + liege = { has_diarchy_active_parameter = unlock_diarch_demand_kingdom_interaction } + NOR = { + has_trait = humble + has_trait = content + } + # Loyal diarchs don't ask for what their liege could give freely. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + base = 25 + + # Personality. + ai_value_modifier = { + ai_greed = 1 + ai_boldness = 1 + ai_energy = 0.25 + } + # Opinion. + ## The more we like our emperor, the less likely we are to want to interfere in their planned setup. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -0.25 + } + # Traits. + ## +++ Ambitious. + modifier = { + add = 50 + has_trait = ambitious + } + ## +++ Arrogant. + modifier = { + add = 50 + has_trait = arrogant + } + ## ++ Greedy. + modifier = { + add = 25 + has_trait = greedy + } + ## ++ Diligent. + modifier = { + add = 25 + has_trait = diligent + } + ## -- Generous. + modifier = { + add = -25 + has_trait = generous + } + ## --- Lazy. + modifier = { + add = -50 + has_trait = lazy + } + ## Humble & Content have both been pre-filtered out. + # Flag Management. + ## Make sure the AI uses hooks for this as it's % based + modifier = { + add = 4 + scope:hook = yes + } + ## Otherwise, try to spend the most influence possible whenever we can. + modifier = { + add = 3 + scope:influence_minor = yes + } + modifier = { + add = 2 + scope:influence_medium = yes + } + modifier = { + add = 1 + scope:influence_major = yes + } + } +} + + + + + + + + + + +################################################## +# DIARCH COUP LIEGE INTERACTIONS + +diarch_coup_liege_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + icon = icon_scheme_claim_throne + interface_priority = 50 + pre_answer_no_breakdown_key = diarch_coup_liege_interaction_pre_answer_no_breakdown_key + pre_answer_yes_breakdown_key = diarch_coup_liege_interaction_pre_answer_yes_breakdown_key + + desc = diarch_coup_liege_interaction_desc + + # First, grab every other powerful vassal of your liege & plonk them in a list. + populate_recipient_list = { + scope:actor.liege = { + every_powerful_vassal = { + limit = { + this != scope:actor + } + add_to_list = characters + } + every_powerful_family = { + limit = { + NOR = { + house_head = scope:actor + house_head = scope:recipient + } + } + house_head = { add_to_list = characters } + } + } + } + redirect = { + # Turn the old scope:recipient into the target. + if = { + limit = { + NOR = { + scope:recipient = scope:actor + scope:recipient = scope:actor.liege + } + } + scope:recipient = { save_scope_as = secondary_recipient } + } + # Always make sure we're targeting your liege as the recipient for UX consistency. + scope:actor.liege = { save_scope_as = recipient } + } + + is_shown = { + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + } + # Valid on vassals of your liege or your liege themselves. + ## More complex triggers don't generally work because redirect brings the interaction back to targeting the liege as scope:recipient, so we're left with this. + ### Don't try to improve it, it's not worth it, but if you _do_, then test your changes thoroughly. + #### When this breaks (which it does easily), it tends to mean the interaction shows up as valid against _every_ other character in diplomatic range. + OR = { + scope:recipient = scope:actor.liege + scope:secondary_recipient.liege ?= scope:actor.liege + } + } + + is_valid_showing_failures_only = { + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Loyalty hooks, per the name, will tend to block this. + custom_tooltip = { + text = diarch_coup_liege_interaction.tt.action_blocked_by_loyalty_hook + NOT = { + diarch_loyalty_due_to_hook_trigger = { + LIEGE = scope:recipient + DIARCH = scope:actor + } + } + } + # They can't already be in the list. + custom_tooltip = { + text = diarch_coup_liege_interaction.tt.secondary_recipient_is_already_in_list + NOT = { + scope:actor = { + any_in_list = { + variable = coup_pv_supporters_list + this = scope:secondary_recipient + } + } + } + } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege ?= { has_diarchy_active_parameter = regents_can_try_to_overthrow_present_lieges } + } + trigger_if = { + limit = { exists = scope:secondary_recipient } + # Must be available. + ## So no kids. + scope:secondary_recipient = { is_adult = yes } + ## & no one in prison. + scope:secondary_recipient = { is_imprisoned = no } + # Plus, currently, humans can't be part of these plots. + scope:secondary_recipient = { is_ai = yes } + } + # Must select something — tooltips'll knacker otherwise + just for consistency. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:promise_nothing = yes + scope:promise_hook_weak = yes + scope:promise_hook_strong = yes + scope:promise_gold_medium = yes + scope:promise_gold_large = yes + } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + can_send = { + # We check this here to make the interaction generally findable, so you can get at the list easily, but prevent you from inviting randos to the coup. + ## It's actually technically harmless - they won't help but don't get their payout if they're not powerful when the coup hits. + trigger_if = { + limit = { + scope:recipient = { government_has_flag = government_has_powerful_families } + } + scope:secondary_recipient.house = { is_powerful_family = yes } + } + trigger_else = { + scope:secondary_recipient = { is_powerful_vassal = yes } + } + } + + # Promise bugger all. + send_option = { + flag = promise_nothing + localization = PROMISE_NOTHING + } + # Promise hook. + send_option = { + is_valid = { + # Can't offer a hook if they've already got any type of hook on you. + NOT = { + scope:secondary_recipient ?= { has_hook = scope:actor } + } + } + flag = promise_hook_weak + localization = PROMISE_HOOK_WEAK + } + # Promise strong hook. + send_option = { + is_valid = { + # Can't offer a strong hook if they've already got a strong hook on you. + NOT = { + scope:secondary_recipient ?= { has_strong_hook = scope:actor } + } + } + flag = promise_hook_strong + localization = PROMISE_HOOK_STRONG + } + # Promise gold. + send_option = { + flag = promise_gold_medium + localization = PROMISE_GOLD_MEDIUM + } + # Promise piles of gold. + send_option = { + flag = promise_gold_large + localization = PROMISE_GOLD_LARGE + } + + on_accept = { + if = { + limit = { exists = scope:secondary_recipient } + scope:actor = { + # Scope:secondary_recipient joins your conspiracy. + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.joins_conspiracy + ## Send a notification just for a bit of extra feedback. + send_interface_toast = { + type = event_toast_effect_good + title = diarch_coup_liege_interaction.tt.secondary_recipient.joins_conspiracy + left_icon = scope:secondary_recipient + } + # HerHis reward is collected if you succeed. + if = { + limit = { scope:promise_nothing = no } + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.reward + } + # Certain scope:secondary_recipients may betray their liege in the throne room itself. + ## Chancellors in diplo coups. + if = { + limit = { scope:secondary_recipient ?= scope:recipient.cp:councillor_chancellor } + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.chancellor_sabotage + } + ## Spymasters in intrigue coups. + if = { + limit = { scope:secondary_recipient ?= scope:recipient.cp:councillor_spymaster } + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.spymaster_sabotage + } + ## Personal Champions in prowess coups. + if = { + limit = { + scope:secondary_recipient = { has_court_position = champion_court_position } + } + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.champion_sabotage + # Yes, there are other candidates, but we're not tooltipping every conceivable case. Rulers are gonna have supporters. + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.champion_sabotage.others + } + # Right, actually record them. + ## Including in the variable. + add_to_variable_list = { + name = coup_pv_supporters_list + target = scope:secondary_recipient + } + ## And their promised payment, if anything. + ### Weak hooks. + if = { + limit = { scope:promise_hook_weak = yes } + add_to_variable_list = { + name = coup_promise_list_weak_hook + target = scope:secondary_recipient + } + } + ### Strong hooks. + else_if = { + limit = { scope:promise_hook_strong = yes } + add_to_variable_list = { + name = coup_promise_list_strong_hook + target = scope:secondary_recipient + } + } + ### Cash. + else_if = { + limit = { scope:promise_gold_medium = yes } + add_to_variable_list = { + name = coup_promise_list_gold + target = scope:secondary_recipient + } + } + ### Big Cash. + else_if = { + limit = { scope:promise_gold_large = yes } + add_to_variable_list = { + name = coup_promise_list_big_gold + target = scope:secondary_recipient + } + } + tgp_activate_catalyst_against_hegemon_effect = { + HEGEMON = scope:actor.top_liege + CATALYST = catalyst_diarch_mandate + } + } + } + } + + # Disguise the interaction from players. + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + ai_accept = { + # Base reluctance to commit to a risky, treasonous plan. + base = -50 + + # Opinion. + ## Of scope:actor. + opinion_modifier = { + who = scope:secondary_recipient + opinion_target = scope:actor + multiplier = 1 + } + ## Of scope:recipient. + opinion_modifier = { + who = scope:secondary_recipient + opinion_target = scope:recipient + multiplier = -0.5 + } + # Personality. + ## Values. + ai_value_modifier = { + who = scope:secondary_recipient + ai_honor = -1 + ai_boldness = 0.25 + } + ## Traits. + ### +++ Disloyal. + modifier = { + add = diarch_ai_desire_plus_3_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.disloyal + scope:secondary_recipient = { has_trait = disloyal } + } + ### +++ Ambitious. + modifier = { + add = diarch_ai_desire_plus_3_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.ambitious + scope:secondary_recipient = { has_trait = ambitious } + } + ### ++ Arbitrary. + modifier = { + add = diarch_ai_desire_plus_2_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.arbitrary + scope:secondary_recipient = { has_trait = arbitrary } + } + ### + Fickle. + modifier = { + add = diarch_ai_desire_plus_1_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.fickle + scope:secondary_recipient = { has_trait = fickle } + } + ### - Stubborn. + modifier = { + add = diarch_ai_desire_minus_1_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.stubborn + scope:secondary_recipient = { has_trait = stubborn } + } + ### -- Just. + modifier = { + add = diarch_ai_desire_minus_2_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.just + scope:secondary_recipient = { has_trait = just } + } + ### --- Content. + modifier = { + add = diarch_ai_desire_minus_3_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.content + scope:secondary_recipient = { has_trait = content } + } + ### --- Loyal. + modifier = { + add = diarch_ai_desire_minus_3_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.loyal + scope:secondary_recipient = { has_trait = loyal } + } + # Hooks. + ## Weak hooks are happy to have you in power. + modifier = { + add = 25 + scope:secondary_recipient = { has_weak_hook = scope:actor } + } + ## Strong hooks are *very* happy to have you in power. + modifier = { + add = 75 + scope:secondary_recipient = { has_strong_hook = scope:actor } + } + ## And conversely, don't want you to coup scope:recipient if they've already got a strong hook on them. + modifier = { + add = -100 + scope:secondary_recipient = { has_strong_hook = scope:recipient } + } + ## Loyalty hooks stop the AI signing up. + modifier = { + add = -1000 + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook + diarch_loyalty_due_to_hook_trigger = { + LIEGE = scope:recipient + DIARCH = scope:secondary_recipient + } + } + # Various. + ## Scope:secondary_recipient generally doesn't want to betray an ally. + modifier = { + add = { + value = -100 + # Reduce the malus a little if also allied to scope:actor. + if = { + limit = { + scope:secondary_recipient = { is_allied_to = scope:actor } + } + add = 50 + } + } + scope:secondary_recipient = { is_allied_to = scope:recipient } + } + ## Heirs don't generally want to betray scope:recipient, as they'll lose out. + modifier = { + add = -100 + desc = diarch_coup_liege_interaction.tt.heir_will_not_side_against_benefactor + scope:recipient = { + any_heir = { this = scope:secondary_recipient } + } + } + # Promises. + ## Weak hook. + modifier = { + add = { + value = 25 + # Multiply this... + ## ... down for folks who wouldn't care... + if = { + limit = { has_trait = honest } + multiply = 0.5 + } + ## ... & and up for those who would. + if = { + limit = { has_trait = deceitful } + multiply = 2 + } + } + desc = diarch_coup_liege_interaction.tt.wants_hook + scope:promise_hook_weak = yes + } + ## Strong hook. + modifier = { + add = { + value = 50 + # Multiply this... + ## ... down for folks who wouldn't care... + if = { + limit = { has_trait = honest } + multiply = 0.5 + } + ## ... & and up for those who would. + if = { + limit = { has_trait = deceitful } + multiply = 2 + } + } + desc = diarch_coup_liege_interaction.tt.wants_strong_hook + scope:promise_hook_strong = yes + } + ## Gold. + modifier = { + add = { + value = 25 + # Multiply this... + ## ... down for folks who wouldn't care... + if = { + limit = { has_trait = generous } + multiply = 0.5 + } + ## ... & and up for those who would. + if = { + limit = { has_trait = greedy } + multiply = 2 + } + } + desc = diarch_coup_liege_interaction.tt.wants_gold + scope:promise_gold_medium = yes + } + ## Lotsa gold. + modifier = { + add = { + value = 50 + # Multiply this... + ## ... down for folks who wouldn't care... + if = { + limit = { has_trait = generous } + multiply = 0.5 + } + ## ... & and up for those who would. + if = { + limit = { has_trait = greedy } + multiply = 2 + } + } + desc = diarch_coup_liege_interaction.tt.wants_strong_gold + scope:promise_gold_large = yes + } + } + + # AI + ## The AI doesn't use this interaction automatically - they try it manually upon hitting the required threshold. +} + + + + + + + + + +################################################## +# LIEGE ON DIARCH POWERS + +# Liege (actor) transfers vizier's (recipient's) extravagance modifiers into their own gold. +mulct_vizier_interaction = { + category = interaction_category_diarch + common_interaction = yes + icon = icon_gold + + desc = mulct_vizier_interaction_desc + + is_shown = { + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + diarch ?= scope:recipient + # Plus only on viziers. + has_diarchy_active_parameter = unlock_mulct_vizier_interaction + } + } + + is_valid_showing_failures_only = { + scope:actor = { + # Some basic checks. + is_available_adult = yes + # Shouldn't happen, but just in case. + NOT = { is_at_war_with = scope:recipient } + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:mulct_vizier_interaction_minimal = yes + scope:mulct_vizier_interaction_minor = yes + scope:mulct_vizier_interaction_medium = yes + scope:mulct_vizier_interaction_major = yes + scope:mulct_vizier_interaction_massive = yes + } + } + } + } + + # Don't squeeze them too often. + cooldown = { years = 10 } + + # Attempt Methods + send_options_exclusive = yes + ## Minimal. + ### Always show this'un. + send_option = { flag = mulct_vizier_interaction_minimal } + ## Minor. + send_option = { flag = mulct_vizier_interaction_minor } + ## Medium. + send_option = { flag = mulct_vizier_interaction_medium } + ## Major. + send_option = { flag = mulct_vizier_interaction_major } + ## Massive. + send_option = { flag = mulct_vizier_interaction_massive } + + can_send = { + trigger_if = { + limit = { scope:mulct_vizier_interaction_minor = yes } + custom_tooltip = { + text = mulct_vizier_interaction.extravagances_required.t1 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t1_treasure_modifier + has_character_modifier = vizier_extravagance_t1_activities_modifier + has_character_modifier = vizier_extravagance_t1_property_modifier + has_character_modifier = vizier_extravagance_t1_charity_modifier + } + } + } + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_minor_value + } + } + trigger_if = { + limit = { scope:mulct_vizier_interaction_medium = yes } + custom_tooltip = { + text = mulct_vizier_interaction.extravagances_required.t2 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t2_treasure_modifier + has_character_modifier = vizier_extravagance_t2_activities_modifier + has_character_modifier = vizier_extravagance_t2_property_modifier + has_character_modifier = vizier_extravagance_t2_charity_modifier + } + } + } + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_medium_value + } + } + trigger_if = { + limit = { scope:mulct_vizier_interaction_major = yes } + custom_tooltip = { + text = mulct_vizier_interaction.extravagances_required.t3 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t3_treasure_modifier + has_character_modifier = vizier_extravagance_t3_activities_modifier + has_character_modifier = vizier_extravagance_t3_property_modifier + has_character_modifier = vizier_extravagance_t3_charity_modifier + } + } + } + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_major_value + } + } + trigger_if = { + limit = { scope:mulct_vizier_interaction_massive = yes } + custom_tooltip = { + text = mulct_vizier_interaction.extravagances_required.t4 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t4_treasure_modifier + has_character_modifier = vizier_extravagance_t4_activities_modifier + has_character_modifier = vizier_extravagance_t4_property_modifier + has_character_modifier = vizier_extravagance_t4_charity_modifier + } + } + } + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_massive_value + } + } + } + + on_accept = { + # Sort the gold transfer. + mulct_vizier_for_cash_effect = { VIZIER = scope:recipient } + scope:recipient = { + # How angry is scope:recipient? + if = { + limit = { scope:mulct_vizier_interaction_minimal = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 1 } + } + if = { + limit = { scope:mulct_vizier_interaction_minor = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 2 } + } + if = { + limit = { scope:mulct_vizier_interaction_medium = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 3 } + } + if = { + limit = { scope:mulct_vizier_interaction_major = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 4 } + } + if = { + limit = { scope:mulct_vizier_interaction_massive = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 5 } + } + # How much stress is this causing them? + stress_impact = { + ambitious = major_stress_impact_loss + arrogant = medium_stress_impact_loss + generous = minor_stress_impact_loss + greedy = major_stress_impact_gain + } + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_vizmulct_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_vizmulct_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_vizmulct_accept_recipient_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 120 + kingdom = 120 + empire = 120 + hegemony = 120 + } + ai_potential = { + has_active_diarchy = yes + has_diarchy_parameter = unlock_mulct_vizier_interaction + } + + ai_will_do = { + # You generally want to do this if you can. + base = 100 + + # Circumstances. + ## Are we in debt? + modifier = { + add = 100 + gold <= -1 + } + ## Are we at war? + modifier = { + add = 100 + is_at_war = yes + } + + # Vizier Extravagances. + ## Are they in the upper tiers? + modifier = { + add = 50 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t3_treasure_modifier + has_character_modifier = vizier_extravagance_t3_activities_modifier + has_character_modifier = vizier_extravagance_t3_property_modifier + has_character_modifier = vizier_extravagance_t3_charity_modifier + } + } + } + ## Are they in the uppermost tier? + modifier = { + add = 25 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t4_treasure_modifier + has_character_modifier = vizier_extravagance_t4_activities_modifier + has_character_modifier = vizier_extravagance_t4_property_modifier + has_character_modifier = vizier_extravagance_t4_charity_modifier + } + } + } + + # Traits. + ## Greedy characters'll do it whenever they can. + modifier = { + add = 50 + has_trait = greedy + } + ## Generous characters'll only do it occasionally. + modifier = { + add = -50 + has_trait = generous + } + + # Send Option Usage. + ## These teach the AI how to use the send options. + ## These are linear; basically, prefer the largest number you're valid for (since the can_send'll block whatever you can't mulct). + modifier = { + add = 1 + scope:mulct_vizier_interaction_minimal = yes + } + modifier = { + add = 2 + scope:mulct_vizier_interaction_minor = yes + } + modifier = { + add = 3 + scope:mulct_vizier_interaction_medium = yes + } + modifier = { + add = 4 + scope:mulct_vizier_interaction_major = yes + } + modifier = { + add = 5 + scope:mulct_vizier_interaction_massive = yes + } + } +} + + + + + + + + + + +################################################## +# BOTH-WAYS POWERS + +# Diarch or liege target their opposite number and inflict negative realm opinion equivalent to the multiplied difference between intrigue or diplomacy in exchange for influence. +scapegoat_counterpart_interaction = { + category = interaction_category_diarch + icon = icon_scheme_slander + + desc = scapegoat_counterpart_interaction_desc + + interface_priority = 25 + + is_shown = { + # You must be one of the partners in a diarchy. + is_in_scapegoating_diarchy_visibility_trigger = { PARAMETER_TYPE = has_diarchy_parameter } + } + + is_valid_showing_failures_only = { + # Free adults only: you can't issue this type of decree from prison, and it wouldn't be fair to stop you from slandering a child but let a child slander you. + scope:actor = { + is_imprisoned = no + is_adult = yes + } + # And you can't blame a literal child. + scope:recipient = { is_adult = yes } + # Nor can you blame the opposing party if you're a deactivated diarch. + trigger_if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + } + custom_tooltip = { + text = scapegoat_counterpart_interaction.tt.skill_requirements + OR = { + scope:actor.diplomacy > scope:recipient.diplomacy + scope:actor.intrigue > scope:recipient.intrigue + } + } + is_in_scapegoating_diarchy_visibility_trigger = { PARAMETER_TYPE = has_diarchy_active_parameter } + # Cannot be at war with each other. + NOT = { + scope:actor = { is_at_war_with = scope:recipient } + } + } + + cooldown = { years = 3 } + + cost = { + # Non-ruler diarchs have all the time to do this the slow way. + prestige = { + if = { + limit = { + scope:actor = { is_ruler = yes } + } + value = medium_prestige_value + } + } + } + + # Diplomacy + ## Small amount + send_option = { + is_valid = { + custom_tooltip = { + text = scapegoat_counterpart_interaction.diplomacy_small.is_valid + scope:actor.diplomacy > scope:recipient.diplomacy + } + } + flag = diplomacy_small + localization = scapegoat_counterpart_interaction.diplomacy_small.t + } + ## Large amount + send_option = { + is_valid = { + custom_tooltip = { + text = scapegoat_counterpart_interaction.diplomacy_large.is_valid + scope:actor.diplomacy > scope:recipient.diplomacy + } + } + flag = diplomacy_large + localization = scapegoat_counterpart_interaction.diplomacy_large.t + } + # Intrigue + ## Small amount + send_option = { + is_valid = { + custom_tooltip = { + text = scapegoat_counterpart_interaction.intrigue_small.is_valid + scope:actor.intrigue > scope:recipient.intrigue + } + } + flag = intrigue_small + localization = scapegoat_counterpart_interaction.intrigue_small.t + } + ## Large amount + send_option = { + is_valid = { + custom_tooltip = { + text = scapegoat_counterpart_interaction.intrigue_large.is_valid + scope:actor.intrigue > scope:recipient.intrigue + } + } + flag = intrigue_large + localization = scapegoat_counterpart_interaction.intrigue_large.t + } + + on_accept = { + scope:recipient = { + # Send out our effects for the diarch. + if = { + limit = { is_diarch_of_target = scope:actor } + trigger_event = diarchy.8041 + every_player = { + limit = { + top_liege = scope:actor.top_liege + NOR = { + this = scope:actor + this = scope:recipient + } + } + trigger_event = diarchy.8041 + } + scapegoat_counterpart_interaction_process_results_effect = { + REALM_OPINION_ACTOR = add_tyranny + REALM_OPINION_RECIPIENT = change_strife_opinion + } + } + # And our effects for the liege. + else = { + tgp_activate_catalyst_against_hegemon_effect = { + HEGEMON = scope:actor.top_liege + CATALYST = catalyst_diarch_mandate + } + trigger_event = diarchy.8042 + every_player = { + limit = { + top_liege = scope:actor.top_liege + NOR = { + this = scope:actor + this = scope:recipient + } + } + trigger_event = diarchy.8042 + } + scapegoat_counterpart_interaction_process_results_effect = { + REALM_OPINION_ACTOR = change_strife_opinion + REALM_OPINION_RECIPIENT = add_tyranny + } + } + } + # Regardless of what happens, scope:recipient is a bit miffed. + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = slandered_me_opinion + opinion = { + value = scope:multiplied_diff + divide = -20 + max = -10 + } + } + } + custom_tooltip = scapegoat_counterpart_interaction.tt.infighting_sullies_the_realm + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + OR = { + # Either they're a liege. + AND = { + has_active_diarchy = yes + # With suitable skill diffs to give some kind of a gain. + OR = { + diplomacy_diff = { + target = diarch + value >= 5 + } + intrigue_diff = { + target = diarch + value >= 5 + } + } + } + # Or they're the diarch. + AND = { + is_diarch = yes + # With suitable skill diffs to give some kind of a gain. + OR = { + diplomacy_diff = { + target = liege + value >= 5 + } + intrigue_diff = { + target = liege + value >= 5 + } + } + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + } + # Filter out some traits that would never do this. + NOR = { + has_trait = just + has_trait = honest + has_trait = loyal + } + } + + ai_will_do = { + base = -50 + + # Opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -2.5 + } + ## Plus weight up a bit further for bad relationships. + first_valid = { + # Nemeses. + modifier = { + add = 200 + has_relation_nemesis = scope:recipient + } + # Rivals. + modifier = { + add = 50 + has_relation_rival = scope:recipient + } + } + # Traits. + ## +++ Deceitful + modifier = { + add = 30 + has_trait = deceitful + } + ## +++ Ambitious + modifier = { + add = 30 + has_trait = ambitious + } + ## ++ Arrogant + modifier = { + add = 20 + has_trait = arrogant + } + ## ++ Arbitrary + modifier = { + add = 20 + has_trait = arbitrary + } + ## ++ Vengeful & doesn't like you + modifier = { + add = 20 + has_trait = vengeful + opinion = { + target = scope:recipient + value <= -1 + } + } + ## + Sadistic + modifier = { + add = 10 + has_trait = sadistic + } + ## + Fickle + modifier = { + add = 10 + has_trait = fickle + } + ## + Eccentric + modifier = { + add = 10 + has_trait = eccentric + } + ## + Greedy + modifier = { + add = 10 + has_trait = greedy + } + ## - Generous + modifier = { + add = -10 + has_trait = generous + } + ## -- Compassionate + modifier = { + add = -20 + has_trait = compassionate + } + ## -- Craven + modifier = { + add = -20 + has_trait = craven + } + ## --- Forgiving + modifier = { + add = -30 + has_trait = forgiving + } + ## --- Humble + modifier = { + add = -30 + has_trait = humble + } + ## ---- Content + modifier = { + add = -50 + has_trait = content + } + ## We've already pre-filtered out Honest & Just. + # Dread. + ## Intimidated. + modifier = { + add = -50 + scope:actor = { + has_dread_level_towards = { + target = scope:recipient + level = 1 + } + } + } + ## Cowed. + modifier = { + add = -100 + scope:actor = { + has_dread_level_towards = { + target = scope:recipient + level = 2 + } + } + } + # Flag Management. + ## Okay, we want to try and pick the larger of either our diplo diff or our intrigue diff. + ### If our diplo diff is higher than our intrigue diff, go for diplo. + modifier = { + add = 4 + scope:diplomacy_large = yes + scapegoat_counterpart_interaction_calc_diplo_diff_treshhold_value >= scapegoat_counterpart_interaction_calc_intrigue_diff_treshhold_value + } + ### Else, go for intrigue. + modifier = { + add = 3 + scope:intrigue_large = yes + } + ### These two should never trigger, but we've got them here as fallbacks. + modifier = { + add = 2 + scope:diplomacy_small = yes + } + modifier = { + add = 1 + scope:intrigue_small = yes + } + ### And then the AI otherwise doesn't worry about which smaller send option to pick. + # Influence status. + ## Swimming in influence? Not worth it. + modifier = { + factor = 0 + scope:actor.influence >= 500 + } + ## In debt? Weight it up. + modifier = { + factor = 2 + scope:actor.influence <= -1 + } + } +} + + + + + + + + + + +################################################## +# MANAGE DIARCHY INTERACTIONS + +# Diarch or liege target their opposite number and sink currency to reaffirm their influence in the realm. +swing_scales_currency_interaction = { + category = interaction_category_diarch + common_interaction = yes + highlighted_reason = HIGHLIGHTED_CAN_SWING_SCALES + icon = scroll_scales + + desc = swing_scales_currency_interaction_desc + + interface_priority = 20 + + is_shown = { + # You must be one of the partners in a diarchy. + OR = { + scope:actor = { is_diarch_of_target = scope:recipient } + scope:recipient = { is_diarch_of_target = scope:actor } + } + } + + is_valid_showing_failures_only = { + # Forbid when we're at max swing... + ## ... for the regent. + trigger_if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:recipient.diarchy_swing < 100 + } + } + ## ... and for the liege. + trigger_if = { + limit = { + NOT = { + scope:actor = { has_diarchy_active_parameter = liege_may_voluntarily_cede_authority } + } + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + # As long as you're able to give something even vaguely like an order to someone who might advocate on your behalf, you're gucci. + scope:actor = { + is_imprisoned = no + age >= 8 + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:swing_influence = yes + scope:swing_cede_authority = yes + scope:swing_prestige = yes + scope:swing_piety = yes + scope:swing_gold = yes + scope:swing_hook = yes + scope:swing_hof = yes + } + } + } + # And in the _rare_ circumstance that a diarch is a child, they must be at least this tall. + ## Note that we _don't_ do this for the liege, since we want the player to be able to manage their regency — assume that _someone_ is looking out for the child's best interests. + scope:actor = { + trigger_if = { + limit = { + is_diarch_of_target = scope:recipient + is_adult = no + } + age >= 8 + } + } + # Cannot be at war with each other. + NOT = { + scope:actor = { is_at_war_with = scope:recipient } + } + } + + cooldown = { years = 2 } + + cost = { + influence = { + if = { + limit = { always = scope:swing_influence } + value = scope:actor.swing_scales_influence_cost_value + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + if = { + limit = { scope:actor = { is_valid_for_legitimacy_change = yes } } + multiply = legitimacy_regent_swing_scale_multipler_value + } + } + } + prestige = { + if = { + limit = { always = scope:swing_prestige } + value = scope:actor.swing_scales_prestige_cost_value + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + if = { + limit = { scope:actor = { is_valid_for_legitimacy_change = yes } } + multiply = legitimacy_regent_swing_scale_multipler_value + } + } + } + piety = { + if = { + limit = { + OR = { + always = scope:swing_piety + always = scope:swing_hof + } + } + value = scope:actor.swing_scales_piety_cost_value + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + if = { + limit = { scope:actor = { is_valid_for_legitimacy_change = yes } } + multiply = legitimacy_regent_swing_scale_multipler_value + } + } + } + gold = { + if = { + limit = { + OR = { + always = scope:swing_gold + always = scope:swing_hof + } + } + value = scope:actor.swing_scales_cash_cost_value + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + if = { + limit = { scope:actor = { is_valid_for_legitimacy_change = yes } } + multiply = legitimacy_regent_swing_scale_multipler_value + } + } + } + } + + # Influence + send_option = { + is_shown = { + # Make sure influence would be relevant. + OR = { + AND = { + scope:recipient.liege ?= scope:actor + scope:actor = { government_allows = administrative } + } + AND = { + scope:actor.liege ?= scope:recipient + scope:recipient = { government_allows = administrative } + } + } + } + is_valid = { + scope:actor = { government_allows = administrative } + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + starts_enabled = { scope:actor.influence >= scope:actor.swing_scales_influence_cost_value } + flag = swing_influence + localization = SWING_INFLUENCE + current_description = SWING_INFLUENCE_DESC + } + # Movement Power + send_option = { + starts_enabled = { + exists = scope:actor.var:movement_power_individual + scope:actor.var:movement_power_individual >= decent_movement_power_value + } + is_shown = { + scope:actor = { + government_has_flag = government_is_celestial + is_diarch_of_target = scope:recipient + } + scope:recipient = { government_has_flag = government_is_celestial } + } + is_valid = { + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_min_movement_power + scope:actor.var:movement_power_individual >= medium_movement_power_value + } + } + flag = swing_movement_power + localization = SWING_MOVEMENT_POWER + current_description = SWING_MOVEMENT_POWER_DESC + } + # Cede control voluntarily. + send_option = { + is_shown = { + scope:actor = { has_diarchy_active_parameter = liege_may_voluntarily_cede_authority } + scope:recipient = { is_diarch_of_target = scope:actor } + } + is_valid = { + # Can't be a liege with the scales swung too far in favour of their diarch. + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.diarchy_swing <= 90 + } + } + starts_enabled = { scope:actor.influence >= scope:actor.swing_scales_influence_cost_value } + flag = swing_cede_authority + localization = SWING_CEDE_AUTHORITY + current_description = SWING_CEDE_AUTHORITY_DESC + } + # Prestige + send_option = { + starts_enabled = { scope:actor.prestige >= scope:actor.swing_scales_prestige_cost_value } + is_valid = { + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + flag = swing_prestige + localization = SWING_PRESTIGE + current_description = SWING_PRESTIGE_DESC + } + # Piety + send_option = { + is_valid = { + # You must share a HoF to be able to petition one. + custom_tooltip = { + text = swing_scales_currency_interaction.tt.no_shared_hof + # We're also secretly just testing if characters are the same faith. + OR = { + scope:actor.faith = scope:recipient.faith + AND = { + exists = scope:actor.faith.religious_head + exists = scope:recipient.faith.religious_head + scope:actor.faith.religious_head = scope:recipient.faith.religious_head + } + } + } + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + starts_enabled = { scope:actor.piety >= scope:actor.swing_scales_piety_cost_value } + flag = swing_piety + localization = SWING_PIETY + current_description = SWING_PIETY_DESC + } + # Gold + send_option = { + is_shown = { + # Filter out for the liege in vizierates - they can mulct the vizier, so we don't give them the chance to spend that gold back. + interaction_actor_is_liege_with_vizierate_trigger = no + } + starts_enabled = { scope:actor.gold >= scope:actor.swing_scales_cash_cost_value } + is_valid = { + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + flag = swing_gold + localization = SWING_GOLD + current_description = SWING_GOLD_DESC + } + # Hook + send_option = { + starts_enabled = { + scope:actor = { has_usable_hook = scope:recipient } + } + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + flag = swing_hook + localization = SWING_HOOK + current_description = SWING_HOOK_DESC + } + # HoF + send_option = { + is_shown = { + # Filter out for the liege in vizierates - they can mulct the vizier, so we don't give them the chance to spend that gold back. + interaction_actor_is_liege_with_vizierate_trigger = no + } + is_valid = { + diarch_swing_scales_valid_shared_hof_trigger = yes + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + # Top of the prio order for enablement. + starts_enabled = { diarch_swing_scales_valid_shared_hof_trigger = yes } + flag = swing_hof + localization = SWING_HOF + current_description = SWING_HOF_DESC + } + + on_accept = { + # Swing the scales in the direction of scope:actor. + scope:recipient = { + # Swing the scales up if we're ceding power. + if = { + limit = { scope:swing_cede_authority = yes } + send_interface_message = { + type = msg_mandate_results_neutral_effect + title = swing_scales_interaction_by_liege.t + right_icon = scope:actor + scope:actor = { + # Viziers give you more bang for your buck when swinging against 'em. + # Perk check for Voyager perk + if = { + limit = { + has_diarchy_active_parameter = lieges_swing_more_against_diarchs + has_perk = power_at_home_perk + is_travelling = yes + } + update_diarchy_swing_with_perspective_effect = { + SWING = monumental_sop_swing_diarch_gain + LIEGE = scope:actor + } + } + # Perk or Vizier + else_if = { + limit = { + OR = { + has_diarchy_active_parameter = lieges_swing_more_against_diarchs + AND = { + has_perk = power_at_home_perk + is_travelling = yes + } + } + } + update_diarchy_swing_with_perspective_effect = { + SWING = massive_sop_swing_diarch_gain + LIEGE = scope:actor + } + } + # Neither + else = { + update_diarchy_swing_with_perspective_effect = { + SWING = major_sop_swing_diarch_gain + LIEGE = scope:actor + } + } + diarch_swing_scales_guts_effect = yes + # Plus, everyone benefits. + change_influence = { + value = 200 + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + multiply = legitimacy_regent_swing_scale_multipler_value + round = yes + } + scope:recipient = { + change_influence = { + value = 200 + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + multiply = legitimacy_regent_swing_scale_multipler_value + round = yes + } + } + } + } + } + # Swing the scales down if this is the liege. + else_if = { + limit = { is_diarch_of_target = scope:actor } + send_interface_message = { + type = msg_mandate_results_bad_effect + title = swing_scales_interaction_by_liege.t + right_icon = scope:actor + scope:actor = { + # Viziers give you more bang for your buck when swinging against 'em. + # Perk check for Voyager perk + if = { + limit = { + has_diarchy_active_parameter = lieges_swing_more_against_diarchs + has_perk = power_at_home_perk + is_travelling = yes + } + update_diarchy_swing_with_perspective_effect = { + SWING = massive_sop_swing_liege_gain + LIEGE = scope:actor + } + } + # Perk or Vizier + else_if = { + limit = { + OR = { + has_diarchy_active_parameter = lieges_swing_more_against_diarchs + AND = { + has_perk = power_at_home_perk + is_travelling = yes + } + } + } + update_diarchy_swing_with_perspective_effect = { + SWING = major_sop_swing_liege_gain + LIEGE = scope:actor + } + } + # Neither + else = { + update_diarchy_swing_with_perspective_effect = { + SWING = medium_sop_swing_liege_gain + LIEGE = scope:actor + } + } + diarch_swing_scales_guts_effect = yes + } + } + } + # And up if this is the diarch. + else = { + send_interface_message = { + type = msg_mandate_results_bad_effect + title = swing_scales_interaction_by_diarch.t + right_icon = scope:actor + if = { + limit = { + scope:actor = { + has_perk = power_at_home_perk + is_travelling = yes + } + } + update_diarchy_swing_with_perspective_effect = { + SWING = major_sop_swing_diarch_gain + LIEGE = scope:recipient + } + } + else = { + update_diarchy_swing_with_perspective_effect = { + SWING = medium_sop_swing_diarch_gain + LIEGE = scope:recipient + } + } + scope:actor = { diarch_swing_scales_guts_effect = yes } + } + } + } + # Unless you gave power to them, scope:recipient is a bit miffed. + scope:recipient = { + # We're actually giving them swing, so gain opinion. + ## We lessen the gains from this over time, as they become more and more entitled. + if = { + limit = { scope:swing_cede_authority = yes } + # Actual gains. + if = { + limit = { + OR = { + NOT = { has_variable = diarch_authority_ceded } + var:diarch_authority_ceded < diarch_authority_ceded_opinion_value + } + } + # First, check to see how much opinion we should give. + save_scope_value_as = { + name = opinion_gain + value = { + value = diarch_authority_ceded_opinion_value + if = { + limit = { has_variable = diarch_authority_ceded } + subtract = var:diarch_authority_ceded + } + } + } + # Then, adjust the opinion. + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = scope:opinion_gain + } + # And decrease our gain next time. + increment_variable_effect = { + VAR = diarch_authority_ceded + VAL = 5 + } + } + # Otherwise, a paltry amount. + ## We're deliberately giving you basically nothing here — the 1 is for comedic effect. + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 1 + } + } + } + # Co-monarchs are more annoyed. + else_if = { + limit = { + OR = { + AND = { + scope:actor = { is_diarch_of_target = scope:recipient } + scope:recipient = { has_diarchy_active_parameter = diarchy_is_co_rulership } + } + AND = { + scope:recipient = { is_diarch_of_target = scope:actor } + scope:actor = { has_diarchy_active_parameter = diarchy_is_co_rulership } + } + } + } + add_opinion = { + target = scope:actor + modifier = frustrated_opinion + opinion = -20 + } + } + # Take away a normal amount. + else = { + add_opinion = { + target = scope:actor + modifier = frustrated_opinion + opinion = -10 + } + } + } + # Some diarchs might be swinging as a prelude to a coup attempt. + ai_diarch_check_to_see_if_should_launch_coup_effect = yes + + # Debug & object explorer logging. + ## Diarch swung. + if = { + limit = { + exists = scope:recipient.diarch + scope:actor = scope:recipient.diarch + } + debug_log = debug_log.swing_scales.diarch_swung + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_swung_diarch } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_swung_diarch_list } + } + } + ## Else liege swung. + else = { + debug_log = debug_log.swing_scales.liege_swung + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_swung_liege } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_swung_liege_list } + } + } + } + + auto_accept = yes + + # AI + ai_targets = { + ai_recipients = liege + ai_recipients = diarch + } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + + ai_potential = { + OR = { + # Either they're a liege. + AND = { + has_active_diarchy = yes + # With some kind of valid cause to worry. + OR = { + # Lieges don't care unless your regency is entrenched _and_ it's looking to stay that way... + has_diarchy_active_parameter = regency_cant_be_ended_above_this_point + # ... unless they could get out of it. + can_leave_diarchy_trigger = yes + } + } + # Or they're the diarch. + AND = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + } + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_secondary_powers_base_value + + # Additions. + ## Flag management. + ### Influence. + modifier = { + add = 7 + scope:swing_influence = yes + } + modifier = { + add = 6 + scope:swing_movement_power = yes + } + ### Cede Authority. + #### Only do this if you're also humble. + modifier = { + add = 10 + scope:swing_cede_authority = yes + has_trait = humble + } + ### Prestige. + modifier = { + add = 2 + scope:swing_prestige = yes + } + ### Piety. + modifier = { + add = 3 + scope:swing_piety = yes + } + ### Gold. + modifier = { + add = 1 + scope:swing_gold = yes + } + ### Hook. + modifier = { + add = 5 + scope:swing_hook = yes + } + ### HoF - combined Gold/Piety. + modifier = { + add = 4 + scope:swing_hof = yes + } + # Factors. + ## x0 Don't go into prestige debt! + modifier = { + factor = 0 + scope:swing_prestige = yes + prestige < 0 + } + ## We otherwise take care of these in the ai_potential block, because otherwise the AI interacts very, very weirdly with them. + } +} + +# For titleless diarchs: anyone playable uses the regular interaction. +diarch_swing_scales_currency_interaction = { + category = interaction_category_diarch + common_interaction = yes + diarch_interaction = yes + highlighted_reason = HIGHLIGHTED_CAN_SWING_SCALES + icon = scroll_scales + + desc = swing_scales_currency_interaction_desc + + interface_priority = 20 + + is_shown = { + scope:recipient = scope:actor.liege + # This is for landless diarchs only, and we pre-filter them, so we don't really care about this block. + ## But filter out players anyway for that _seamless_ debug play experience. + scope:actor = { is_ai = yes } + } + + is_valid_showing_failures_only = { + # Forbid when we're at max swing. + scope:recipient = { + # Plus also weed out some weird errors where we got confused and looked at ourselves. + has_active_diarchy = yes + # Now the actual check. + trigger_if = { + limit = { has_active_diarchy = yes } + diarchy_swing < 100 + } + trigger_else = { always = no } + } + # As long as you're able to give something even vaguely like an order to someone who might advocate on your behalf, you're gucci. + scope:actor = { is_imprisoned = no } + # And in the _rare_ circumstance that a diarch is a child, they must be at least this tall. + ## Note that we _don't_ do this for the liege, since we want the player to be able to manage their regency — assume that _someone_ is looking out for the child's best interests. + scope:actor = { + trigger_if = { + limit = { + is_diarch_of_target = scope:recipient + is_adult = no + } + age >= 8 + } + } + } + + cooldown = { years = 2 } + + cost = { + influence = { + if = { + limit = { always = scope:swing_influence } + # Diarch version. + if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + # Costs should always be applied on the diarch. + add = scope:actor.swing_scales_influence_cost_value + } + # Liege version. + else = { + # Costs should always be applied on the diarch. + add = scope:recipient.swing_scales_influence_cost_value + } + # Cost scaling mults. + multiply = scope:actor.swing_scales_discounts_multiplier_value + } + } + prestige = { + if = { + limit = { always = scope:swing_prestige } + # Diarch version. + if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + # Costs should always be applied on the diarch. + add = scope:actor.swing_scales_prestige_cost_value + } + # Liege version. + else = { + # Costs should always be applied on the diarch. + add = scope:recipient.swing_scales_prestige_cost_value + } + # Cost scaling mults. + multiply = scope:actor.swing_scales_discounts_multiplier_value + } + } + piety = { + if = { + limit = { + OR = { + always = scope:swing_piety + always = scope:swing_hof + } + } + # Diarch version. + if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + # Costs should always be applied on the diarch. + add = scope:actor.swing_scales_piety_cost_value + } + # Liege version. + else = { + # Costs should always be applied on the diarch. + add = scope:recipient.swing_scales_piety_cost_value + } + # Cost scaling mults. + multiply = scope:actor.swing_scales_discounts_multiplier_value + } + } + gold = { + if = { + limit = { + OR = { + always = scope:swing_gold + always = scope:swing_hof + } + } + # Diarch version. + if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + # Costs should always be applied on the diarch. + add = scope:actor.swing_scales_cash_cost_value + } + # Liege version. + else = { + # Costs should always be applied on the diarch. + add = scope:recipient.swing_scales_cash_cost_value + } + # Cost scaling mults. + multiply = scope:actor.swing_scales_discounts_multiplier_value + } + } + } + + # Influence + send_option = { + is_shown = { + # Make sure influence would be relevant. + OR = { + AND = { + scope:recipient.liege ?= scope:actor + scope:actor = { government_allows = administrative } + } + AND = { + scope:actor.liege ?= scope:recipient + scope:recipient = { government_allows = administrative } + } + } + } + is_valid = { + scope:actor = { government_allows = administrative } + } + starts_enabled = { scope:actor.influence >= scope:actor.swing_scales_influence_cost_value } + flag = swing_influence + localization = SWING_INFLUENCE + current_description = SWING_INFLUENCE_DESC + } + # Movement Power + send_option = { + starts_enabled = { + exists = scope:actor.var:movement_power_individual + scope:actor.var:movement_power_individual >= decent_movement_power_value + } + is_shown = { + scope:actor = { + government_has_flag = government_is_celestial + is_diarch_of_target = scope:recipient + } + scope:recipient = { government_has_flag = government_is_celestial } + } + is_valid = { + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_min_movement_power + scope:actor.var:movement_power_individual >= medium_movement_power_value + } + } + flag = swing_movement_power + localization = SWING_MOVEMENT_POWER + current_description = SWING_MOVEMENT_POWER_DESC + } + # Prestige + send_option = { + starts_enabled = { scope:actor.prestige >= scope:actor.swing_scales_prestige_cost_value } + flag = swing_prestige + localization = SWING_PRESTIGE + } + # Piety + send_option = { + is_valid = { + # You must share a HoF to be able to petition one. + custom_tooltip = { + text = swing_scales_currency_interaction.tt.no_shared_hof + # We're also secretly just testing if characters are the same faith. + OR = { + scope:actor.faith = scope:recipient.faith + AND = { + exists = scope:actor.faith.religious_head + exists = scope:recipient.faith.religious_head + scope:actor.faith.religious_head = scope:recipient.faith.religious_head + } + } + } + } + starts_enabled = { scope:actor.piety >= scope:actor.swing_scales_piety_cost_value } + flag = swing_piety + localization = SWING_PIETY + } + # Gold + send_option = { + starts_enabled = { scope:actor.gold >= scope:actor.swing_scales_cash_cost_value } + flag = swing_gold + localization = SWING_GOLD + } + # Hook + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + starts_enabled = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = swing_hook + localization = SWING_HOOK + } + # HoF + send_option = { + is_valid = { diarch_swing_scales_valid_shared_hof_trigger = yes } + # Top of the prio order for enablement. + starts_enabled = { diarch_swing_scales_valid_shared_hof_trigger = yes } + flag = swing_hof + localization = SWING_HOF + } + + on_accept = { + # Swing the scales down, since scope:actor is always a landless diarch. + scope:recipient = { + # Slight chance delays may lead to a diarchy ending before this is received. + if = { + limit = { has_active_diarchy = yes } + send_interface_message = { + type = msg_mandate_results_bad_effect + title = swing_scales_interaction_by_diarch.t + right_icon = scope:actor + update_diarchy_swing_with_perspective_effect = { + SWING = medium_sop_swing_diarch_gain + LIEGE = scope:recipient + } + scope:actor = { diarch_swing_scales_guts_effect = yes } + } + } + # Scope:recipient is a bit miffed. + add_opinion = { + target = scope:actor + modifier = frustrated_opinion + opinion = -10 + } + } + # Some diarchs might be swinging as a prelude to a coup attempt. + ai_diarch_check_to_see_if_should_launch_coup_effect = yes + + # Debug logging. + debug_log = debug_log.swing_scales.diarch_swung + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_swung_diarch } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_swung_diarch_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + # We turn the frequency up higher than the cooldown so that diarchs don't take two years to get into the loop. + ai_frequency_by_tier = { + barony = 0 + county = 6 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + # Double check due to some irritating errors. + is_diarch = yes + liege = { has_active_diarchy = yes } + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_core_loop_base_value + + # Additions. + ## Flag management. + ### Influence. + modifier = { + add = 6 + scope:swing_influence = yes + } + ### Prestige. + modifier = { + add = 2 + scope:swing_prestige = yes + } + ### Piety. + modifier = { + add = 3 + scope:swing_piety = yes + } + ### Gold. + modifier = { + add = 1 + scope:swing_gold = yes + } + ### Hook. + modifier = { + add = 5 + scope:swing_hook = yes + } + ### HoF - combined Gold/Piety. + modifier = { + add = 4 + scope:swing_hof = yes + } + # Factors. + ## x0 Don't go into prestige debt! + modifier = { + factor = 0 + scope:swing_prestige = yes + prestige < 0 + } + } +} + +# Diarch (actor) shifts from a Temporary Regency to an Entrenched Regency. +diarch_entrench_regency_interaction = { + category = interaction_category_diarch + common_interaction = yes + diarch_interaction = yes + highlighted_reason = HIGHLIGHTED_CAN_DIARCH_ENTRENCH_REGENCY + icon = icon_entrench_regency + + desc = diarch_entrench_regency_interaction_desc + + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + # With the extra consideration that we only want this to appear for Temporary Regencies. + liege = { has_diarchy_parameter = unlock_entrench_regency_interaction } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_entrench_regency_interaction } + # You must be able to act as diarch. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + } + + on_accept = { + scope:recipient = { + # Tell scope:recipient what's up. + send_interface_toast = { + type = msg_start_diarchy + title = diarch_entrench_regency_interaction.tt.recipient_notification + left_icon = scope:actor + # Change the diarchy type to entrenched. + set_diarchy_type = regency + # Set our power level down a bit, but still higher than entrenched regencies that *start* that way would be. + set_diarchy_swing = 40 + } + # Plus scope:recipient probably isn't super happy about this. + add_opinion = { + target = scope:actor + modifier = suspicion_opinion + opinion = -20 + } + } + # Bit o'prestige for your hard work. + scope:actor = { add_prestige = medium_prestige_gain } + + # Debug logging. + debug_log = debug_log.entrench_regency.attempt_made + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entrench } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entrench_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entrench_recipient_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + ai_potential = { + is_diarch = yes + # Don't entrench for no reason — we want to have a bit of a delay so that the AI can go off travelling or get locked in prison once in a while. + liege = { years_in_diarchy >= 2 } + } + + ai_will_do = { + # You never _don't_ want to do this. + base = 1000 + } +} + +# Diarch (actor) shifts from an Entrenched Regency to Co-Emperorship. +diarch_regent_appoints_self_co_emperor_interaction = { + category = interaction_category_diarch + common_interaction = yes + diarch_interaction = yes + icon = icon_entrench_regency + + desc = diarch_regent_appoints_self_co_emperor_interaction_desc + + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + # With the extra consideration that we only want this to appear for those who can actually _have_ co-emperors. + liege = { + has_diarchy_parameter = diarch_can_appoint_self_co_emperor + may_appoint_co_emperors_trigger = yes + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = diarch_can_appoint_self_co_emperor } + # You must be able to act as diarch. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + } + + cost = { + influence = { + # Rulers pay influence, non-rulers get a freebie (since they otherwise likely won't accrue the requisite influence). + if = { + limit = { + scope:actor = { is_ruler = yes } + } + value = 500 + } + # If we're doing this vs. someone who could leave a regency, it's significantly costlier. + if = { + limit = { + scope:recipient = { regency_for_personal_reasons_trigger = no } + } + add = 1000 + } + } + } + + on_accept = { + scope:recipient = { + # Tell scope:recipient what's up. + send_interface_toast = { + type = msg_start_diarchy + title = diarch_regent_appoints_self_co_emperor_interaction.tt.recipient_notification + left_icon = scope:actor + # Change the diarchy type to a co-emperorship. + custom_tooltip = { + text = diarch_regent_appoints_self_co_emperor_interaction.tt.become_co_emperorship + set_diarchy_type = co_emperorship + } + # Set our power level down a bit, we've just got one helluva prize. + custom_tooltip = { + text = diarch_regent_appoints_self_co_emperor_interaction.tt.set_swing + set_diarchy_swing = diarch_regent_appoints_self_co_emperor_interaction_sop_swing_set_value + } + add_legitimacy = minor_legitimacy_loss + } + # Plus scope:recipient probably isn't super happy about this. + add_opinion = { + target = scope:actor + modifier = suspicion_opinion + opinion = -50 + } + } + # Notify the player about the price spike. + if = { + limit = { + scope:recipient = { regency_for_personal_reasons_trigger = yes } + } + custom_tooltip = diarch_regent_appoints_self_co_emperor_interaction.tt.adults_cost_more + } + else = { custom_tooltip = diarch_regent_appoints_self_co_emperor_interaction.children_cost_less } + # Bit o'prestige for your hard work. + scope:actor = { add_prestige = medium_prestige_gain } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 12 + hegemony = 12 + } + ai_potential = { + is_diarch = yes + # Filter us down nice'n'tight. + liege = { may_appoint_co_emperors_trigger = yes } + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # You never _don't_ want to do this. + base = 1000 + } +} + +# Liege (actor) ends a Temporary Regency. +liege_dismiss_temporary_regency_interaction = { + category = interaction_category_diarch + common_interaction = yes + icon = icon_dismiss_temporary_regency + + desc = liege_dismiss_temporary_regency_interaction_desc + + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + diarch ?= scope:recipient + # With the extra consideration that we only want this to appear for Temporary Regencies. + has_diarchy_parameter = can_be_instantly_dismissed + } + } + + is_valid_showing_failures_only = { + # Basic requirements must be fulfilled. + scope:actor = { can_leave_diarchy_trigger = yes } + } + + on_accept = { + scope:actor = { + # Tell scope:recipient what's up. + send_interface_toast = { + type = event_toast_effect_neutral + title = liege_dismiss_temporary_regency_interaction.tt.recipient_notification + left_icon = scope:actor + right_icon = scope:recipient + # End the diarchy. + end_diarchy = yes + scope:recipient = { + # Bit o'prestige for your hard work. + if = { + limit = { + exists = dynasty + NOT = { + exists = scope:actor.dynasty.dynast + dynasty.dynast = scope:actor.dynasty.dynast + } + } + custom_tooltip = liege_dismiss_temporary_regency_interaction.tt.dynasty_receives_prestige + hidden_effect = { + dynasty = { add_dynasty_prestige = liege_dismiss_temporary_regency_interaction_dynasty_prestige_value } + } + } + else = { add_prestige = medium_prestige_gain } + } + } + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_dismtemp_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismtemp_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismtemp_accept_recipient_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 12 + empire = 12 + hegemony = 12 + } + ai_potential = { has_active_diarchy = yes } + + ai_will_do = { + # You never _don't_ want to do this. + base = 1000 + } +} + +# Liege (actor) moves to end an Entrenched Regency. +liege_dismiss_entrenched_regency_interaction = { + category = interaction_category_diarch + common_interaction = yes + notification_text = liege_dismiss_entrenched_regency_interaction_proposal + icon = icon_dismiss_entrenched_regency + + desc = liege_dismiss_entrenched_regency_interaction_desc + + ai_maybe = yes + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + interface_priority = 60 + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + diarch ?= scope:recipient + # With the extra consideration that we only want this to appear for Entrenched Regencies. + OR = { + has_diarchy_parameter = dismissal_requires_gift + AND = { + has_diarchy_parameter = dismissal_requires_no_ministry + tgp_has_access_to_ministry_trigger = no + } + } + } + } + + cooldown = { years = 1 } + + is_valid_showing_failures_only = { + # Basic requirements must be fulfilled. + scope:actor = { can_leave_diarchy_trigger = yes } + # And you mustn't be locked in by your regent's power. + scope:actor = { + NOT = { has_diarchy_active_parameter = regency_cant_be_ended_above_this_point } + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:diarchy_ending_gift_unnecessary = yes + scope:diarchy_ending_gift_stiffed = yes + scope:diarchy_ending_gift_hook = yes + scope:diarchy_ending_gift_dynasty_prestige = yes + scope:diarchy_ending_gift_piety = yes + scope:diarchy_ending_gift_cash = yes + scope:diarchy_ending_gift_herd = yes + } + } + } + custom_tooltip = { + text = government_is_celestial_tt + scope:actor = { + tgp_has_access_to_ministry_trigger = no + } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + # Ending gifts. + send_options_exclusive = yes + ## No gift required. + send_option = { + flag = diarchy_ending_gift_unnecessary + current_description = diarchy_ending_gift_unnecessary_desc + is_shown = { + scope:actor = { + NOT = { has_diarchy_active_parameter = regency_free_end_below_this_point } + } + } + } + ## Stiff scope:recipient for opinion loss. + send_option = { + flag = diarchy_ending_gift_stiffed + current_description = diarchy_ending_gift_stiffed_desc + is_shown = { + scope:actor = { has_diarchy_active_parameter = regency_free_end_below_this_point } + } + } + ## A hook for scope:recipient on scope:actor. + send_option = { + flag = diarchy_ending_gift_hook + current_description = diarchy_ending_gift_hook_desc + is_shown = { + scope:recipient = { + NOT = { has_hook = scope:actor } + } + } + } + ## Transfer some of your prestige into their dynasty prestige. + send_option = { + flag = diarchy_ending_gift_dynasty_prestige + current_description = diarchy_ending_gift_dynasty_prestige_desc + is_shown = { + # Filter out characters with no dynasty. + exists = scope:recipient.dynasty + # And make sure that they don't share a dynasty. + trigger_if = { + limit = { exists = scope:actor.dynasty } + scope:actor.dynasty != scope:recipient.dynasty + } + } + } + ## Pray for them to transfer piety. + ### Requires same-HoF. + send_option = { + flag = diarchy_ending_gift_piety + current_description = diarchy_ending_gift_piety_desc + is_shown = { + shared_faith_or_hof_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + } + ## Cash. + send_option = { + flag = diarchy_ending_gift_cash + current_description = diarchy_ending_gift_cash_desc + } + ## Horse. + send_option = { + flag = diarchy_ending_gift_herd + current_description = diarchy_ending_gift_herd_desc + is_shown = { + # Can only pay herd if actor has herd to pay and recipient accepts herd as a currency + scope:actor = { government_has_flag = government_is_nomadic } + scope:recipient = { government_has_flag = government_is_nomadic } + } + } + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + # Remove the waiting flag. + add_character_flag = trying_to_dismiss_regent + } + } + + on_accept = { + # End the diarchy. + scope:actor = { end_diarchy = yes } + scope:recipient = { + # Transfer a gift. + ## ... or don't, 'cause one isn't necessary! + if = { + limit = { scope:diarchy_ending_gift_unnecessary = yes } + custom_tooltip = liege_dismiss_entrenched_regency_interaction.tt.no_gift_necessary + } + ## Give 'em *nothing*, even though they earnt it. + if = { + limit = { scope:diarchy_ending_gift_stiffed = yes } + custom_tooltip = liege_dismiss_entrenched_regency_interaction.tt.stiff_them + # Scope:recipient is unhappy about this. + if = { + limit = { is_ai = yes } + # More so if they're arrogant, as they take such a smack in the face even more on the proverbial nose. + if = { + limit = { has_trait = arrogant } + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -50 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = disappointed_opinion + opinion = -30 + } + } + } + } + ## Give 'em a hook. + if = { + limit = { scope:diarchy_ending_gift_hook = yes } + # Transfer the hook. + add_hook = { + type = favor_hook + target = scope:actor + } + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're deceitful, since they value favours. + if = { + limit = { has_trait = deceitful } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + ## Give 'em some dynasty prestige. + if = { + limit = { scope:diarchy_ending_gift_dynasty_prestige = yes } + scope:actor = { add_prestige = minor_prestige_loss } + # Transfer the prestige. + custom_tooltip = liege_dismiss_entrenched_regency_interaction.tt.dynasty_receives_prestige + hidden_effect = { + dynasty = { add_dynasty_prestige = liege_dismiss_entrenched_regency_interaction_dynasty_prestige_value } + } + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're the dynasty head, as then they can make use of it. + if = { + limit = { dynasty.dynast = scope:recipient } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + ## Give 'em some piety. + if = { + limit = { scope:diarchy_ending_gift_piety = yes } + # Transfer the piety. + scope:actor = { add_piety = medium_piety_loss } + add_piety = major_piety_value + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're zealous, as zealots like piety. + if = { + limit = { has_trait = zealous } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + ## Five 'em cold, hard cash. + if = { + limit = { scope:diarchy_ending_gift_cash = yes } + # Transfer the cash. + scope:actor = { + pay_short_term_gold = { + target = scope:recipient + gold = major_gold_value + } + } + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're greedy, 'cause greedy likes money. + if = { + limit = { has_trait = greedy } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + # Herd + if = { + limit = { scope:diarchy_ending_gift_herd = yes } + # Transfer the cash. + scope:actor = { + #gold = major_gold_value + pay_herd = { + target = scope:recipient + value = domicile.ten_percent_herd_value + } + } + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're greedy, 'cause greedy likes money i mean horses. + if = { + limit = { has_trait = greedy } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + } + + # Object explorer logging. + if = { + limit = { always = scope:diarchy_ending_gift_unnecessary } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_unnecessary_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_unnecessary_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_unnecessary_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_stiffed } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_stiffed_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_hook } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_hook_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_dynasty_prestige } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_dynpres_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_piety } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_piety_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_cash } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_cash_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_herd } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_herd_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_accept_recipient_list } + } + } + } + + on_decline = { + scope:actor = { + # Attempting to assert authority pushes scope:actor's scales in their favour. + update_diarchy_swing_with_perspective_effect = { + SWING = major_sop_swing_liege_gain + LIEGE = scope:actor + } + # Plus AI don't like being told *no*. + if = { + limit = { is_ai = no } + add_opinion = { + target = scope:recipient + modifier = trust_opinion + opinion = -30 + } + } + } + # Clean-up that pesky flag. + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + # And add a _new_ pesky flag to stop 'em doubling up whilst also telling them to try to take this interaction again AQAP. + ## This is to stop the AI from failing to tackle this efficiently. + scope:actor = { + if = { + limit = { is_ai = yes } + add_character_flag = trying_to_dismiss_regent + trigger_event = { + id = diarchy.0111 + days = 366 + } + } + } + + # Object explorer logging. + if = { + limit = { always = scope:diarchy_ending_gift_stiffed } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_stiffed_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_hook } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_hook_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_dynasty_prestige } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_dynpres_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_piety } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_piety_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_cash } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_cash_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_herd } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_herd_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_decline_recipient_list } + } + } + } + + auto_accept = { + custom_tooltip = { + text = liege_dismiss_entrenched_regency_interaction.tt.force_ending + scope:diarchy_ending_gift_unnecessary = yes + } + } + + ai_accept = { + # Diarchs don't *want* to agree, by default... + base = 0 + + # ... except loyal ones, who really, really do... + modifier = { + add = 100 + desc = liege_dismiss_entrenched_regency_interaction.modifier.desc.loyal_diarch + diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold + } + # ... plus inactive ones, who can't really refuse. + modifier = { + add = 50 + desc = liege_dismiss_entrenched_regency_interaction.modifier.desc.is_disabled + scope:recipient = { is_diarch_able_trigger = no } + } + # If you could just end the diarchy without any fuss, then they're much more inclined to agree. + modifier = { + add = 1000 + desc = liege_dismiss_entrenched_regency_interaction.modifier.desc.could_freely_dismiss_me + scope:actor = { + NOT = { has_diarchy_active_parameter = regency_free_end_below_this_point } + } + } + # Factor for diplomacy. + ## Yours. + modifier = { + add = { + value = scope:actor.diplomacy + multiply = 2 + } + desc = INTERACTION_DIPLOMACY_ACTOR + } + ## Theirs. + modifier = { + add = { + value = scope:recipient.diplomacy + multiply = -2 + } + desc = INTERACTION_DIPLOMACY_RECIPIENT + } + # Factor for opinion. + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + # Factor for AI personalities. + ai_value_modifier = { + ai_honor = 1 + ai_boldness = -0.5 + } + # Factor for Scales of Power. + modifier = { + add = { + value = scope:actor.diarchy_swing + # Reduce by 40. + ## 20 is (currently) the node at which things become free, so we want to subtract above this point and invert below it. + ## The extra -20 is so that diarchs are more willing to go in exchange for a gift when their power is ebbing, rather than holding on until they can be discharged without one. + add = -40 + # Invert it, since scope:actor wants low scales. + multiply = -1 + } + desc = INTERACTION_SCALES_OF_POWER + } + # Intimidation. + ## Intimidated. + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + ## Cowed. + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + # Factor for low grandeur. + ## 1 level below. + modifier = { + add = -20 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 1_levels_below_expected_level + court_grandeur_current_level > 3_levels_below_expected_level + } + ## 3 levels below. + modifier = { + add = -40 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 3_levels_below_expected_level + court_grandeur_current_level > 5_levels_below_expected_level + } + ## 5 levels below. + modifier = { + add = -60 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 5_levels_below_expected_level + court_grandeur_current_level > 7_levels_below_expected_level + } + ## 7 levels below. + modifier = { + add = -80 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 7_levels_below_expected_level + court_grandeur_current_level > 9_levels_below_expected_level + } + ## 9 levels below. + modifier = { + add = -100 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 9_levels_below_expected_level + } + # Negative relationships. + ## Rival. + modifier = { + add = -50 + desc = offer_vassalization_interaction_aibehavior_rival_tt + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + ## Nemesis. + modifier = { + add = -100 + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + scope:recipient = { has_relation_nemesis = scope:actor } + } + # Plus for whether you're offering a gift and if it's one they need or not. + ## No gift offered. + ### No base-vs.-trait modifier here, as we want arrogant characters to be dramatic little bastards. + modifier = { + add = -30 + desc = AI_OPINION_OFFENDED + scope:diarchy_ending_gift_stiffed = yes + } + ## Favour. + ### Deceitful variant. + modifier = { + add = 60 + desc = liege_dismiss_entrenched_regency_interaction.tt.deceitful_likes_hook + scope:diarchy_ending_gift_hook = yes + has_trait = deceitful + } + ### Base variant. + modifier = { + add = 30 + desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift + scope:diarchy_ending_gift_hook = yes + NOT = { has_trait = deceitful } + } + ## Dynasty Prestige. + ### Dynasty Head variant. + modifier = { + add = 60 + desc = liege_dismiss_entrenched_regency_interaction.tt.dynasty_head_likes_dynasty_prestige + scope:diarchy_ending_gift_dynasty_prestige = yes + this = dynasty.dynast + } + ### Base variant. + modifier = { + add = 30 + desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift + scope:diarchy_ending_gift_dynasty_prestige = yes + this != dynasty.dynast + } + ## Piety. + ### Zealous variant. + modifier = { + add = 60 + desc = liege_dismiss_entrenched_regency_interaction.tt.zealous_likes_piety + scope:diarchy_ending_gift_piety = yes + has_trait = zealous + } + ### Base variant. + modifier = { + add = 30 + desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift + scope:diarchy_ending_gift_piety = yes + NOT = { has_trait = zealous } + } + ## Cash. + ### Greedy variant. + modifier = { + add = 60 + desc = liege_dismiss_entrenched_regency_interaction.tt.greedy_likes_cash + scope:diarchy_ending_gift_cash = yes + has_trait = greedy + } + ### Base variant. + modifier = { + add = 30 + desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift + scope:diarchy_ending_gift_cash = yes + NOT = { has_trait = greedy } + } + ### Also debters like this. + modifier = { + add = 60 + desc = PT_AI_IS_IN_DEBT + scope:diarchy_ending_gift_cash = yes + debt_level >= 1 + } + } + + # AI + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 12 + empire = 12 + hegemony = 12 + } + ai_potential = { + # Are we in a diarchy at all? + has_active_diarchy = yes + # Can we leave it? + can_leave_diarchy_trigger = yes + # Are we locked into a speed-leave cycle? + NOT = { has_character_flag = trying_to_dismiss_regent } + } + + ai_will_do = { + # You never _don't_ want to do this. + base = 1000 + + # Flag management. + ## Auto-dismiss. + modifier = { + add = 10 + scope:diarchy_ending_gift_unnecessary = yes + } + ## Stiff 'em. + ### If we hate the diarch, try to stiff them till we can dismiss 'em. + modifier = { + scope:diarchy_ending_gift_stiffed = yes + add = 9 + diarch_liege_wants_to_stiff_regent_trigger = yes + } + ### Otherwise, try to down prio this. It'll just make things harder. + modifier = { + scope:diarchy_ending_gift_stiffed = yes + add = 1 + diarch_liege_wants_to_stiff_regent_trigger = no + } + ## Hook. + modifier = { + add = 4 + scope:diarchy_ending_gift_hook = yes + } + ## Dynasty Prestige. + modifier = { + add = 5 + scope:diarchy_ending_gift_dynasty_prestige = yes + } + ## Piety. + modifier = { + add = 2 + scope:diarchy_ending_gift_piety = yes + } + ## Cash. + modifier = { + add = 3 + scope:diarchy_ending_gift_cash = yes + } + ## Herd. + modifier = { + add = 5 + scope:diarchy_ending_gift_herd = yes + } + } +} + +# Liege (actor) dismisses a Vizierate. +liege_dismiss_vizier_interaction = { + category = interaction_category_diarch + common_interaction = yes + icon = icon_dismiss_temporary_regency + + desc = liege_dismiss_vizier_interaction_desc + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + diarch ?= scope:recipient + # With the extra consideration that we only want this to appear for Vizierates. + has_diarchy_parameter = primeminister_dismissal_will_upset_administration + } + } + + is_valid_showing_failures_only = { + # Basic requirements must be fulfilled. + scope:actor = { can_leave_diarchy_trigger = yes } + } + + cooldown = { years = 5 } + + on_accept = { + scope:actor = { + # We've dismissed your vizier! + ## Do we need to give a warning tooltip first? + if = { + limit = { has_diarchy_active_parameter = primeminister_dismissal_will_upset_administration } + custom_tooltip = liege_dismiss_vizier_interaction.tt.problematic_dismissal.vizier_too_entrenched + } + ## Now apply the real effects. + send_interface_toast = { + type = event_toast_effect_neutral + title = liege_dismiss_vizier_interaction.toast.t + left_icon = scope:actor + # Will this have ripple effects (actual)? + if = { + limit = { has_diarchy_active_parameter = primeminister_dismissal_will_upset_administration } + # Apply the modifier, scaling to how much we dun goofed. + add_character_modifier = { + modifier = civil_service_in_chaos_modifier + years = 10 + } + } + # End the diarchy. + end_diarchy = yes + } + } + # How badly do they take it? + scope:recipient = { + # Vengeful takes it badly. + if = { + limit = { + has_trait = vengeful + can_set_relation_rival_trigger = { CHARACTER = scope:actor } + } + set_relation_rival = { + target = scope:actor + reason = rival_dismissed_me_from_vizierate + } + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -50 + } + } + # Even if they have something stopping them from becoming a rival (e.g., they're already your vizier). + else_if = { + limit = { has_trait = vengeful } + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -50 + } + } + # Forgiving isn't mad, they're just disappointed. + else_if = { + limit = { has_trait = forgiving } + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -10 + } + } + # Otherwise, a bit of pain is to be expected. + else = { + progress_towards_rival_effect = { + REASON = rival_dismissed_me_from_vizierate + CHARACTER = scope:actor + OPINION = 0 + } + # Throw the opinion manually so we can keep the type unified. + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -25 + } + } + # Plus some stress. + stress_impact = { + lazy = major_stress_impact_loss + humble = medium_stress_impact_loss + content = medium_stress_impact_loss + diligent = medium_stress_impact_gain + ambitious = major_stress_impact_gain + arrogant = major_stress_impact_gain + } + # Extravagance modifiers taken care of in the on_action. + } + # Plus, remember to advertise to the player that there are alternatives. + ## We're deliberately doing this outside of scope:actor so we can make it a lil subtitle rather than something lumped in with the effect block. + ## Just give 'em a duchy. + if = { + limit = { + scope:actor = { has_diarchy_active_parameter = primeminister_requires_duchy } + } + custom_tooltip = liege_dismiss_vizier_interaction.tt.problematic_dismissal.bribe.duchy + } + ## Just give 'em a county. + else_if = { + limit = { + scope:actor = { has_diarchy_active_parameter = primeminister_requires_county } + } + custom_tooltip = liege_dismiss_vizier_interaction.tt.problematic_dismissal.bribe.county + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_dismviz_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismviz_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismviz_accept_recipient_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 120 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + ai_potential = { has_active_diarchy = yes } + + ai_will_do = { + # You should actively want to get rid of them. + base = -25 + + # If you appointed this vizier, don't remove them unless you get booted down to county or something. + modifier = { + add = -500 + var:my_vizier ?= scope:recipient + } + + # Realm. + ## Weight up heavily for counts; they shouldn't generally get them, but they don't want to keep them if they do. + modifier = { + add = 1000 + highest_held_title_tier = tier_county + } + ## Weight up for dukes. + modifier = { + add = 25 + highest_held_title_tier = tier_duchy + } + ## Weight down for kings. + modifier = { + add = -25 + highest_held_title_tier = tier_kingdom + } + ## Weight down for emperors. + modifier = { + add = -50 + highest_held_title_tier >= tier_empire + } + ## Realm Size. + ### Smaller you are, the more likely you are to do this. + ### Tiny or less. + modifier = { + add = 50 + realm_size <= tiny_realm_size + } + ### Minor. + modifier = { + add = 25 + realm_size > tiny_realm_size + realm_size <= minor_realm_size + } + ### Major. + modifier = { + add = -25 + realm_size >= major_realm_size + realm_size < massive_realm_size + } + ### Massive or more. + modifier = { + add = -50 + realm_size >= massive_realm_size + } + + # Traits. + ## +++ Ambitious. + modifier = { + add = 25 + has_trait = ambitious + } + ## +++ Arrogant. + modifier = { + add = 25 + has_trait = arrogant + } + ## ++ Diligent. + modifier = { + add = 15 + has_trait = diligent + } + ## ++ Patient. + modifier = { + add = 15 + has_trait = patient + } + ## + Gregarious. + modifier = { + add = 5 + has_trait = gregarious + } + ## - Shy. + modifier = { + add = -5 + has_trait = shy + } + ## - Content. + modifier = { + add = -5 + has_trait = content + } + ## -- Impatient. + modifier = { + add = -15 + has_trait = impatient + } + ## -- Content. + modifier = { + add = -15 + has_trait = content + } + ## -- Humble. + modifier = { + add = -15 + has_trait = humble + } + ## --- Greedy. + modifier = { + add = -25 + has_trait = greedy + } + ## --- Lazy. + modifier = { + add = -25 + has_trait = lazy + } + } +} + +# A vassal requests their liege designate them as regent, should the need arise. +declare_me_regent_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + filter_tags = { admin_liege rep_liege } + + desc = declare_me_regent_interaction_desc + notification_text = DECLARE_ME_REGENT_PROPOSAL + + interface_priority = 20 + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Only useable on your liege. + scope:recipient = scope:actor.liege + # And said-liege can't be in a regency already... + scope:recipient = { + trigger_if = { + limit = { + NOT = { has_diarchy_type = grand_secretariat } + } + has_active_diarchy = no + } + trigger_else = { + scope:actor = { + OR = { + has_title = title:e_minister_grand_marshal + has_title = title:e_minister_chancellor + has_title = title:e_minister_censor + } + } + } + } + # ... or have declared you their regent already! + scope:actor = { + is_designated_diarch = no + NOR = { + is_diarch_of_target = scope:recipient + # Can't be used during the Cid story cycle + has_variable = ongoing_cid_story_cycle + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + # Can't do if you're already expected to be regent. + is_designated_diarch = no + # Can't be too young. + is_adult = yes + # Or imprisoned. + is_imprisoned = no + # Or, for that matter, incapable. + NOT = { has_trait = incapable } + is_diarch_valid_trigger = yes + } + # Put a general cooldown on this stuff. + scope:recipient = { + trigger_if = { + limit = { + exists = designated_diarch + } + time_after_diarch_designated = { years >= 10 } + } + } + } + + # No general cooldown: if your liege changes, ask away. + # Long specific cooldown, though. We don't want these going through constantly. + cooldown_against_recipient = { years = 10 } + + # High cost to reduce spam. + cost = { prestige = 500 } + + #Use hook + send_options_exclusive = no + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = declare_me_regent_interaction.tt.success + left_icon = scope:recipient + # Jump the queue to become diarch. + scope:recipient = { + if = { + limit = { + has_diarchy_type = grand_secretariat + } + if = { + limit = { + scope:actor = { + has_title = title:e_minister_grand_marshal + } + } + add_realm_law = grand_marshal_law + } + else_if = { + limit = { + scope:actor = { + has_title = title:e_minister_chancellor + } + } + add_realm_law = grand_chancellor_law + } + else_if = { + limit = { + scope:actor = { + has_title = title:e_minister_censor + } + } + add_realm_law = grand_censor_law + } + scope:actor = { + set_variable = { + name = asked_to_be_secretary_director + value = yes + } + } + } + else = { + designate_diarch = scope:actor + } + } + # This prompts some strife. + change_strife_opinion = major_strife_gain + } + # If you used a hook, calc some extra stuff. + ## We move this outside of the toast because we've not got enough room for all this info in there. + if = { + limit = { + scope:hook = yes + has_usable_hook = scope:recipient + } + # Use the hook up. + use_hook = scope:recipient + # Plus scope:recipient is _very_ upset. + reverse_add_opinion = { + target = scope:recipient + modifier = suspicion_opinion + opinion = -20 + } + } + } + scope:recipient = { + # Some folks may not be happy. + custom_tooltip = declare_me_regent_interaction.tt.warning.opinions.succession + custom_tooltip = declare_me_regent_interaction.tt.warning.opinions.courtlies + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_desigme_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_accept_recipient_list } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = declare_me_regent_interaction.tt.failure + left_icon = scope:recipient + # AI lose opinion of their opposite number. + if = { + limit = { is_ai = yes } + add_opinion = { + target = scope:recipient + modifier = insult_opinion + opinion = -40 + } + } + # Even trying produces some strife. + change_strife_opinion = medium_strife_gain + } + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_desigme_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_decline_recipient_list } + } + } + + auto_accept = { + scope:recipient = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + } + + ai_accept = { + # Try to make it 0 for most interactions + base = -40 + + # Weight for dislike of current regent. + # Designated regent. + modifier = { + add = { + # Designated diarchs. + if = { + limit = { + designated_diarch ?= { + save_temporary_scope_as = diarch_successor_temp + save_temporary_opinion_value_as = { + name = recipient_opinion_temp + target = scope:diarch_successor_temp + } + } + } + add = scope:recipient_opinion_temp + # Invert to get the true total. + multiply = -1 + } + # Expected diarchs. + else_if = { + limit = { + diarchy_successor ?= { + save_temporary_scope_as = diarch_successor_temp + scope:actor = { + save_temporary_opinion_value_as = { + name = recipient_opinion_temp + target = scope:diarch_successor_temp + } + } + } + } + add = scope:recipient_opinion_temp + # Invert to get the true total. + multiply = -1 + } + } + desc = declare_me_regent_interaction.tt.opinion_of_current_regent + } + # Opinion of scope:actor. + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + } + # Personality. + ai_value_modifier = { + # Meek characters are more likely to accept this. + ai_boldness = -0.5 + # Characters with low energy just want to avoid all this planning. + ai_energy = -0.25 + } + # Familial closeness. + ## Close family get a decent boost. + modifier = { + add = 30 + desc = declare_me_regent_interaction.tt.actor_is.close_family + is_close_family_of = scope:actor + # Make sure this isn't cancelled out by the incumbent sharing the relation. + diarchy_successor = { + NOT = { + is_close_family_of = scope:recipient + } + } + } + ## Extended family get a minor boost. + modifier = { + add = 20 + desc = declare_me_regent_interaction.tt.actor_is.extended_family + is_extended_family_of = scope:actor + # Make sure this isn't cancelled out by the incumbent sharing the relation. + diarchy_successor = { + NOT = { + is_extended_family_of = scope:recipient + } + } + } + ## House members get a slight boost. + modifier = { + add = 10 + desc = declare_me_regent_interaction.tt.actor_is.house_member + house = scope:actor.house + NOT = { + is_close_or_extended_family_of = scope:actor + } + # Make sure this isn't cancelled out by the incumbent sharing the relation. + diarchy_successor = { + house != scope:recipient.house + } + } + # Relationships. + ## Positive. + modifier = { + add = 25 + desc = declare_me_regent_interaction.tt.actor_is.positive_relationship + has_any_good_relationship_with_character_trigger = { CHARACTER = scope:actor } + # We don't factor for this in the designated/expected diarch 'cause the matrix of overlap'd be hellish. + } + ## Negative. + modifier = { + add = -25 + desc = declare_me_regent_interaction.tt.actor_is.negative_relationship + has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor } + # We don't factor for this in the designated/expected diarch 'cause the matrix of overlap'd be hellish. + } + # Succession score is a direct factor. + modifier = { + add = scope:actor.diarchy_regent_succession_score_value + desc = declare_me_regent_interaction.tt.actor_is.succession_score + scope:recipient = { + NOT = { has_diarchy_type = grand_secretariat } + } + } + + # Grand Secretariat + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + scope:actor.top_participant_group:dynastic_cycle ?= { + exists = var:movement_favored + } + desc = diarch_candidate_score.grand_secretariat.favored_value + add = 20 + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + scope:actor = { + is_any_movement_leader = yes + } + desc = you_are_a_movement_leader_desc_value + add = 20 + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + scope:actor = { + is_in_pro_hegemon_or_hegemon_movement = yes + } + desc = diarch_candidate_score.grand_secretariat.pro_hegemon_value + add = 20 + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + scope:actor = { + has_court_position = favored_minister_court_position + } + desc = grand_secretariat_aptitude.favored_minister_value + add = 20 + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + desc = actors_merit_level_desc + add = { + if = { + limit = { + scope:actor.merit_level >= scope:actor.top_liege.diarch.merit_level + scope:actor.merit >= scope:actor.top_liege.merit + } + add = 10 + } + else = { + add = -10 + } + } + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + desc = ACTOR_HIGH_MOVEMENT_POWER + add = { + if = { + limit = { + exists = scope:actor.top_liege.diarch.var:movement_power + exists = scope:actor.var:movement_power + scope:actor.var:movement_power >= scope:actor.top_liege.diarch.var:movement_power + } + add = 10 + } + else = { + add = -40 + } + } + } + # Events + modifier = { + add = 25 + desc = tgp_power_undermined_modifier_tt + has_character_modifier = tgp_power_undermined_modifier + # We don't factor for this in the designated/expected diarch 'cause the matrix of overlap'd be hellish. + } + } + + # AI + #ai_targets = { ai_recipients = liege } + #ai_frequency = 0 + # + #ai_potential = { + # # Turning off for the AI for the moment due to not being able to display who you'll offend if you do it. + # ## Should otherwise work and can be turned back on again if wished. + # always = no + # # Some traits lock the AI out. + # ## Calc these first 'cause they're cheaper. + # NOR = { + # has_trait = lazy + # has_trait = humble + # has_trait = content + # } + # OR = { + # # Driven by traits or personality. + # has_trait = arrogant + # has_trait = ambitious + # # Family think themselves worthy. + # any_close_or_extended_family_member = { this = liege } + # } + #} + + ai_will_do = { + # Most AI think this is audacious. + base = 0 + + # Weight for personality. + ## Both modifier. + ai_value_modifier = { + # Bold, energetic characters fancy the gig. + ai_boldness = 0.5 + ai_energy = 0.5 + } + ## And traits! + ### These are balanced differently to the other interactions, so it's deliberate that they're not using the @values here. + ### +++ Ambitious. + modifier = { + add = 15 + has_trait = ambitious + } + ### ++ Arrogant. + modifier = { + add = 10 + has_trait = arrogant + } + ### + Diligent. + modifier = { + add = 5 + has_trait = diligent + } + ### + Loyal. + modifier = { + add = 5 + has_trait = loyal + } + ### - Humble. + modifier = { + add = -5 + has_trait = humble + } + ### --- Content. + modifier = { + add = -15 + has_trait = content + } + ### --- Lazy. + modifier = { + add = -15 + has_trait = lazy + } + # Weight by proximity to the ruler: close family, spouses, etc. + modifier = { + add = 25 + OR = { + any_close_or_extended_family_member = { this = scope:recipient } + any_spouse = { this = scope:recipient } + } + } + # Councillors have ambitions. + modifier = { + add = 25 + is_councillor = yes + } + # Weight for opinion of current regent. + modifier = { + add = { + scope:recipient = { + # Designated diarchs. + if = { + limit = { + designated_diarch ?= { + save_temporary_scope_as = diarch_successor_temp + scope:actor = { + save_temporary_opinion_value_as = { + name = actor_opinion_temp + target = scope:diarch_successor_temp + } + } + } + } + add = scope:actor_opinion_temp + # Invert to get the true total. + multiply = -1 + } + # Expected diarchs. + else_if = { + limit = { + diarchy_successor ?= { + save_temporary_scope_as = diarch_successor_temp + scope:actor = { + save_temporary_opinion_value_as = { + name = actor_opinion_temp + target = scope:diarch_successor_temp + } + } + } + } + add = scope:actor_opinion_temp + # Invert to get the true total. + multiply = -1 + } + } + } + always = yes + } + # The AI will only use a Hook if they couldn't otherwise do this + modifier = { + scope:hook = yes + add = -1 + } + # Grand Secretariat + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + add = { + if = { + limit = { + scope:actor.top_participant_group:dynastic_cycle ?= { + exists = var:movement_favored + } + } + add = 10 + } + if = { + limit = { + scope:actor = { + has_court_position = favored_minister_court_position + } + } + add = 20 + } + if = { + limit = { + scope:actor.merit_level >= scope:actor.top_liege.diarch.merit_level + scope:actor.merit >= scope:actor.top_liege.merit + } + add = 10 + } + if = { + limit = { + exists = scope:actor.top_liege.diarch.var:movement_power + exists = scope:actor.var:movement_power + } + if = { + limit = { + scope:actor.var:movement_power >= scope:actor.top_liege.diarch.var:movement_power + } + add = 10 + } + else = { + add = -100 + } + } + } + } + } +} + +# Liege (actor) selects a vizier to help them run the realm. +appoint_vizier_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + + desc = appoint_vizier_interaction_desc + interface_priority = 20 + + is_shown = { + scope:actor = { + # Must be able to retain a vizier. + government_has_flag = may_appoint_viziers + # Plus obscure the interaction if we've already got one, else it's annoyingly redundant. + NOT = { has_diarchy_active_parameter = diarchy_is_vizierate } + } + # We perform this upon ourselves or our (probable) candidates. + scope:recipient = { + OR = { + this = scope:actor + is_courtier_of = scope:actor + AND = { + highest_held_title_tier = tier_barony + liege = scope:actor + } + } + } + } + + is_valid_showing_failures_only = { + # You can't already be in a diarchy of any kind. + scope:actor = { + has_active_diarchy = no + } + # Must be of a decent tier. + custom_tooltip = { + text = appoint_vizier_interaction.tt.duchy_or_more + scope:actor.highest_held_title_tier >= tier_duchy + } + # Plus the usuals. + scope:actor = { is_available_at_peace = yes } + # And can't have put the realm into turmoil over this recently. + scope:actor = { + NOT = { has_character_modifier = civil_service_in_chaos_modifier } + } + } + + cooldown = { years = 5 } + + populate_recipient_list = { sort_vizier_candidates_to_list_effect = yes } + + cost = { + prestige = major_prestige_value + renown = { + if = { + limit = { + exists = scope:secondary_recipient + exists = scope:actor.house + scope:secondary_recipient.house ?= scope:actor.house + } + add = scope:actor.dynasty.massive_dynasty_prestige_value + } + } + } + + auto_accept = yes + + pre_auto_accept = { + # If we're an AI, set the secondary_recipient up for us. + scope:actor = { + if = { + limit = { is_ai = yes } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_vizier_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ordered_in_list = { + list = characters + order_by = diarchy_vizier_succession_score_value + save_scope_as = ai_recipient + } + } + } + } + + on_accept = { + scope:actor = { + # We enter into a vizierate with scope:secondary_recipient. + custom_tooltip = { + text = appoint_vizier_interaction.tt.enter_vizierate_with_secondary_recipient + try_start_diarchy = vizierate + # The player uses scope:secondary_recipient. + if = { + limit = { + # We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice. + NOT = { exists = scope:ai_recipient } + } + set_diarch = scope:secondary_recipient + } + # Whereas the AI grabs their pre-selected candidate. + else = { + set_diarch = scope:ai_recipient + } + } + # Apply opinion. + ## AI. + if = { + limit = { exists = scope:ai_recipient } + scope:ai_recipient = { + add_opinion = { + target = scope:actor + modifier = compliment_opinion + opinion = 30 + } + stress_impact = { + ambitious = minor_stress_impact_loss + arrogant = minor_stress_impact_loss + lazy = major_stress_impact_gain + } + } + } + ## Player. + else = { + scope:secondary_recipient = { + add_opinion = { + target = scope:actor + modifier = compliment_opinion + opinion = 30 + } + stress_impact = { + ambitious = minor_stress_impact_loss + arrogant = minor_stress_impact_loss + lazy = major_stress_impact_gain + } + } + } + # And get X tax jurisdictions. + custom_tooltip = appoint_vizier_interaction.tt.secondary_recipient_grants_tax_jurisdictions + # If scope:secondary_recipient isn't the most qualified candidate, we'll take a scaling negative stewardship modifier. + ## The AI will always pick the highest scoring character, so we only do this for players - lock it off so we're not doing lots of unnecessary calculating. + if = { + limit = { is_ai = no } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_vizier_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ordered_in_list = { + list = characters + order_by = diarchy_vizier_succession_score_value + save_scope_as = best_candidate + } + # Is our chap _the_ chap? + if = { + limit = { + scope:secondary_recipient != scope:best_candidate + } + # Ok, now display some warnings. + custom_tooltip = appoint_vizier_interaction.tt.secondary_recipient_is_not_best_candidate + add_character_modifier = { + modifier = civil_service_upset_modifier + years = 10 + } + } + } + # Are they of our house? + if = { + limit = { + exists = scope:secondary_recipient.house + house ?= scope:secondary_recipient.house + } + custom_tooltip = appoint_vizier_interaction.tt.same_house_penalty + } + # If we have a designated diarch (and it's not this guy), then they're annoyed. + designated_diarch ?= { + if = { + limit = { + this != scope:secondary_recipient + } + add_opinion = { + target = scope:actor + modifier = appointed_vizier_over_designated_regent_opinion + opinion = -40 + } + } + } + # Set a reminder that we appointed this vizier — the AI'll use this to help with determining whether they should remove them or not. + set_variable = { + name = my_vizier + value = scope:recipient + } + # Finally, let's do some stress. + stress_impact = { + trusting = massive_stress_impact_loss + lazy = major_stress_impact_loss + paranoid = minor_stress_impact_gain + diligent = minor_stress_impact_gain + } + } + # Notify about council problemos. + scope:secondary_recipient = { + if = { + limit = { is_councillor = yes } + custom_tooltip = appoint_vizier_interaction.tt.warning.vizier_replace_councillor + } + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appviz_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appviz_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appviz_accept_recipient_list } + } + } + + # AI + ai_targets = { ai_recipients = self } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 240 + kingdom = 120 + empire = 120 + hegemony = 120 + } + + ai_potential = { + government_has_flag = may_appoint_viziers + } + + ai_will_do = { + base = 0 + + # Realm. + ## Weight up for kings. + modifier = { + add = 50 + highest_held_title_tier = tier_kingdom + } + ## Weight up for emperors. + modifier = { + add = 75 + highest_held_title_tier >= tier_empire + } + ## Add realm size directly. + modifier = { + add = sub_realm_size + is_landed = yes + } + + # Traits. + ## +++ Lazy. + modifier = { + add = 25 + has_trait = lazy + } + ## +++ Greedy. + modifier = { + add = 25 + has_trait = greedy + } + ## ++ Humble. + modifier = { + add = 15 + has_trait = humble + } + ## ++ Content. + modifier = { + add = 15 + has_trait = content + } + ## ++ Impatient. + modifier = { + add = 15 + has_trait = impatient + } + ## + Content. + modifier = { + add = 5 + has_trait = content + } + ## + Shy. + modifier = { + add = 5 + has_trait = shy + } + ## - Gregarious. + modifier = { + add = -5 + has_trait = gregarious + } + ## -- Patient. + modifier = { + add = -15 + has_trait = patient + } + ## -- Diligent. + modifier = { + add = -15 + has_trait = diligent + } + ## --- Arrogant. + modifier = { + add = -25 + has_trait = arrogant + } + ## --- Ambitious. + modifier = { + add = -25 + has_trait = ambitious + } + } +} + +# Liege (actor) selects a junior emperor to be their heir. +appoint_junior_emperor_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + redirect = { + scope:recipient = { save_scope_as = secondary_recipient } + if = { + limit = { scope:secondary_recipient = scope:actor } + clear_saved_scope = secondary_recipient + } + if = { + limit = { + NOT = { + scope:secondary_recipient ?= { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } } + } + } + clear_saved_scope = secondary_recipient + } + } + + desc = appoint_junior_emperor_interaction_desc + interface_priority = 20 + + is_shown = { + # Must be able to retain a co-emperor. + scope:actor = { may_appoint_co_emperors_trigger = yes } + # We perform this upon ourselves or our (probable) candidates. + OR = { + scope:recipient ?= scope:actor + scope:secondary_recipient ?= { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } } + } + } + + is_valid_showing_failures_only = { + # You can't already be in a diarchy of any kind. + scope:actor = { + has_active_diarchy = no + } + # Make sure we're targeting the right people, since redirects make this a lil slippery. + trigger_if = { + limit = { exists = scope:secondary_recipient } + scope:secondary_recipient = { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } } + } + # Plus the usuals. + scope:actor = { is_available_at_peace = yes } + } + + populate_recipient_list = { sort_junior_emperor_candidates_to_list_effect = yes } + + cost = { + prestige = designate_heir_admin_prestige_cost + influence = designate_heir_admin_influence_cost + } + + auto_accept = yes + + pre_auto_accept = { + # If we're an AI, set the secondary_recipient up for us. + scope:actor = { + if = { + limit = { is_ai = yes } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_junior_emperor_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ## And by that I mean play literal favourites. + ordered_in_list = { + list = characters + order_by = "reverse_opinion(scope:actor)" + save_scope_as = ai_recipient + } + } + } + } + + on_accept = { + scope:actor = { + # We enter into a junior emperorship with scope:secondary_recipient. + ## The player uses scope:secondary_recipient. + if = { + limit = { + # We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice. + NOT = { exists = scope:ai_recipient } + } + custom_tooltip = { + text = appoint_junior_emperor_interaction.tt.enter_junior_emperorship_with_secondary_recipient + try_start_diarchy = junior_emperorship + set_diarch = scope:secondary_recipient + } + # We set them to be our designated heir. + ## & if we already have an heir, warn that this overwrites it. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + custom_tooltip = appoint_junior_emperor_interaction.tt.overwrite_designated_heir + # Nab them for use further on. + save_scope_as = old_heir + } + } + ## Designate and inform. + set_designated_heir = scope:secondary_recipient + } + ## Whereas the AI grabs their pre-selected candidate. + else = { + try_start_diarchy = junior_emperorship + set_diarch = scope:ai_recipient + # We set them to be our designated heir. + ## First grabbing the old one for opinions. + designated_heir ?= { + if = { + limit = { this != scope:ai_recipient } + # Nab them for use further on. + save_scope_as = old_heir + } + } + ## Then overwriting. + set_designated_heir = scope:ai_recipient + } + } + # And remember who appointed them on scope:recipient. + grateful_for_appointment_as_co_emperor_effect = yes + # Your designated heir is _very_ pissed. + diarch_overwrites_old_designated_heir_apply_opinions_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Your designated regent is also unhappy (probably). + designated_diarch_overwridden_by_co_ruler_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Make sure we have our co-ruler directly with us. + ## Courtiers are given to us immediately. + if = { + limit = { + scope:secondary_recipient = { is_ruler = no } + scope:secondary_recipient = { NOT = { is_in_the_same_court_as = scope:actor } } + } + scope:actor = { add_courtier = scope:secondary_recipient } + } + ## Vassals are retracted. + if = { + limit = { scope:secondary_recipient.liege != scope:actor } + scope:secondary_recipient.liege = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + scope:secondary_recipient.liege = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + create_title_and_vassal_change = { + type = revoked + save_scope_as = change + } + scope:secondary_recipient = { + change_liege = { + liege = scope:actor + change = scope:change + } + } + resolve_title_and_vassal_change = scope:change + } + + + + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appjunemp_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appjunemp_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appjunemp_accept_recipient_list } + } + } + + # AI + ai_targets = { ai_recipients = children } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 60 + hegemony = 60 + } + + ai_potential = { + # Filter us down nice'n'tight. + may_appoint_co_emperors_trigger = yes + # Plus rule out any diarchies already on the go. + has_active_diarchy = no + # Aaaand finally, the AI won't do this unless they're considering their age and they've got no adult kids. + age >= 50 + any_child = { + count = all + is_adult = no + } + } + + ai_will_do = { + # The AI doesn't like doing this without good reason. + base = -100 + + ai_wants_junior_or_co_emperor_modifier = yes + } +} + +# Liege (actor) selects a co-emperor to be their heir/influence farming stooge. +appoint_co_emperor_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + redirect = { + scope:recipient = { save_scope_as = secondary_recipient } + if = { + limit = { scope:secondary_recipient ?= scope:actor } + clear_saved_scope = secondary_recipient + } + if = { + limit = { + NOT = { + scope:secondary_recipient ?= { + valid_co_emperor_candidate_trigger = { LIEGE = scope:actor } + } + } + } + clear_saved_scope = secondary_recipient + } + } + + desc = appoint_co_emperor_interaction_desc + interface_priority = 280 + + is_shown = { + # Must be able to retain a co-emperor. + scope:actor = { may_appoint_co_emperors_trigger = yes } + # We perform this upon ourselves or our (probable) candidates. + OR = { + scope:recipient ?= scope:actor + scope:secondary_recipient ?= { + valid_co_emperor_candidate_trigger = { LIEGE = scope:actor } + } + } + } + + is_valid_showing_failures_only = { + # You can't already be in a diarchy of any kind. + scope:actor = { + has_active_diarchy = no + } + # Make sure we're targeting the right people, since redirects make this a lil slippery. + trigger_if = { + limit = { exists = scope:secondary_recipient } + scope:secondary_recipient = { + valid_co_emperor_candidate_trigger = { LIEGE = scope:actor } + } + } + # Plus the usuals. + scope:actor = { is_available_at_peace = yes } + } + + populate_recipient_list = { sort_co_emperor_candidates_to_list_effect = yes } + + cost = { + prestige = designate_heir_admin_prestige_cost + influence = designate_heir_admin_influence_cost + } + + auto_accept = yes + + pre_auto_accept = { + # If we're an AI, set the secondary_recipient up for us. + scope:actor = { + if = { + limit = { is_ai = yes } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_co_emperor_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ## And by that I mean play literal favourites. + ordered_in_list = { + list = characters + order_by = { + value = "reverse_opinion(scope:actor)" + # Boost up anyone we're related to by blood or marriage. + if = { + limit = { + OR = { + is_close_or_extended_family_of = scope:actor + house ?= scope:actor.house + any_spouse = { is_close_or_extended_family_of = scope:actor } + } + } + # This means we should _generally_ prefer people who are in with the imperial family, but if we hate them then we boot them down the list even further. + multiply = 10 + } + } + save_scope_as = ai_recipient + } + } + } + } + + on_accept = { + scope:actor = { + # We enter into a co-emperorship with scope:secondary_recipient. + ## The player uses scope:secondary_recipient. + if = { + limit = { + # We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice. + NOT = { exists = scope:ai_recipient } + } + custom_tooltip = { + text = appoint_co_emperor_interaction.tt.enter_co_emperorship_with_secondary_recipient + try_start_diarchy = co_emperorship + set_diarch = scope:secondary_recipient + } + # If appropriate, we set them to be our designated heir. + if = { + limit = { + scope:secondary_recipient = { + is_close_or_extended_family_of = scope:actor + house ?= scope:actor.house + } + } + # & if we already have an heir, warn that this overwrites it. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + custom_tooltip = appoint_co_emperor_interaction.tt.overwrite_designated_heir + # Nab them for use further on. + save_scope_as = old_heir + } + } + # Designate and inform. + set_designated_heir = scope:secondary_recipient + } + } + ## Whereas the AI grabs their pre-selected candidate. + else = { + try_start_diarchy = co_emperorship + set_diarch = scope:ai_recipient + # If appropriate, we set them to be our designated heir. + if = { + limit = { + scope:secondary_recipient = { + is_close_or_extended_family_of = scope:actor + house ?= scope:actor.house + } + } + # First grabbing the old one for opinions. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + # Nab them for use further on. + save_scope_as = old_heir + } + } + # Then overwriting. + set_designated_heir = scope:ai_recipient + } + } + } + # And remember who appointed them on scope:recipient. + grateful_for_appointment_as_co_emperor_effect = yes + # Your designated heir is _very_ pissed. + diarch_overwrites_old_designated_heir_apply_opinions_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Your designated regent is also unhappy (probably). + designated_diarch_overwridden_by_co_ruler_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Make sure we have our co-ruler directly with us. + ## Courtiers are given to us immediately. + if = { + limit = { + scope:secondary_recipient = { is_ruler = no } + } + scope:actor = { add_courtier = scope:secondary_recipient } + } + ## Vassals are retracted. + if = { + limit = { + scope:secondary_recipient.liege != scope:actor + scope:secondary_recipient = { NOT = { is_in_the_same_court_as = scope:actor } } + } + scope:secondary_recipient.liege = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + create_title_and_vassal_change = { + type = revoked + save_scope_as = change + } + scope:secondary_recipient = { + change_liege = { + liege = scope:actor + change = scope:change + } + } + resolve_title_and_vassal_change = scope:change + } + + + + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appcoemp_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcoemp_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcoemp_accept_recipient_list } + } + } + + # AI + ai_targets = { ai_recipients = children } + ai_targets = { ai_recipients = vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 60 + hegemony = 60 + } + + ai_potential = { + # Filter us down nice'n'tight. + may_appoint_co_emperors_trigger = yes + # Plus rule out any diarchies already on the go. + has_active_diarchy = no + # Aaaand finally, the AI won't do this unless they're considering their age and they've got adult kids. + age >= 50 + any_child = { is_adult = yes } + } + + ai_will_do = { + # The AI doesn't like doing this without good reason. + base = -100 + + ai_wants_junior_or_co_emperor_modifier = yes + } +} + +# Liege (actor) selects one of their children to be their heir & diarch. +appoint_co_monarch_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + redirect = { + scope:recipient = { save_scope_as = secondary_recipient } + if = { + limit = { scope:secondary_recipient ?= scope:actor } + clear_saved_scope = secondary_recipient + } + if = { + limit = { + NOT = { + scope:secondary_recipient ?= { is_child_of = scope:actor } + } + } + clear_saved_scope = secondary_recipient + } + } + + desc = appoint_co_monarch_interaction_desc + interface_priority = 20 + + is_shown = { + # Must be able to retain a co-emperor. + scope:actor = { may_appoint_co_monarchs_trigger = yes } + # We perform this upon ourselves or our (probable) candidates. + OR = { + scope:recipient ?= scope:actor + scope:secondary_recipient ?= { is_child_of = scope:actor } + } + } + + is_valid_showing_failures_only = { + # You can't already be in a diarchy of any kind. + scope:actor = { + has_active_diarchy = no + } + # Make sure we're targeting the right people, since redirects make this a lil slippery. + trigger_if = { + limit = { exists = scope:secondary_recipient } + scope:secondary_recipient = { valid_co_monarch_candidate_trigger = { LIEGE = scope:actor } } + } + # Plus the usuals. + scope:actor = { is_available_at_peace = yes } + } + + populate_recipient_list = { sort_co_monarch_candidates_to_list_effect = yes } + + cost = { + prestige = { + value = designate_heir_cost + # Discount it because this _is_ worse than the standard path. + multiply = 0.5 + } + } + + auto_accept = yes + + pre_auto_accept = { + # If we're an AI, set the secondary_recipient up for us. + scope:actor = { + if = { + limit = { is_ai = yes } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_co_monarch_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ## And by that I mean play literal favourites. + ordered_in_list = { + list = characters + limit = { valid_co_monarch_candidate_trigger = { LIEGE = scope:actor } } + order_by = "reverse_opinion(scope:actor)" + save_scope_as = ai_recipient + } + } + } + } + + on_accept = { + scope:actor = { + # We enter into a co-emperorship with scope:secondary_recipient. + ## The player uses scope:secondary_recipient. + if = { + limit = { + # We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice. + NOT = { exists = scope:ai_recipient } + } + custom_tooltip = { + text = appoint_co_monarch_interaction.tt.enter_co_monarchy_with_secondary_recipient + try_start_diarchy = co_monarchy + set_diarch = scope:secondary_recipient + } + # We set them to be our designated heir. + ## & if we already have an heir, warn that this overwrites it. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + custom_tooltip = appoint_co_monarch_interaction.tt.overwrite_designated_heir + # Nab them for use further on. + save_scope_as = old_heir + } + } + ## Designate and inform. + set_designated_heir = scope:secondary_recipient + } + ## Whereas the AI grabs their pre-selected candidate. + else = { + try_start_diarchy = co_emperorship + set_diarch = scope:ai_recipient + # We set them to be our designated heir. + ## First grabbing the old one for opinions. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + # Nab them for use further on. + save_scope_as = old_heir + } + } + ## Then overwriting. + set_designated_heir = scope:ai_recipient + } + } + # And remember who appointed them on scope:recipient. + grateful_for_appointment_as_co_emperor_effect = yes + # Your designated heir is _very_ pissed. + diarch_overwrites_old_designated_heir_apply_opinions_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Your designated regent is also unhappy (probably). + designated_diarch_overwridden_by_co_ruler_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Make sure we have our co-ruler directly with us. + ## Courtiers are given to us immediately. + if = { + limit = { + scope:secondary_recipient = { is_ruler = no } + scope:secondary_recipient = { NOT = { is_in_the_same_court_as = scope:actor } } + } + scope:actor = { add_courtier = scope:secondary_recipient } + } + ## Vassals are retracted. + if = { + limit = { scope:secondary_recipient.liege != scope:actor } + scope:secondary_recipient.liege = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + create_title_and_vassal_change = { + type = revoked + save_scope_as = change + } + scope:secondary_recipient = { + change_liege = { + liege = scope:actor + change = scope:change + } + } + resolve_title_and_vassal_change = scope:change + } + + + + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appcomon_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcomon_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcomon_accept_recipient_list } + } + } + + # AI + ai_targets = { ai_recipients = children } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 120 + empire = 120 + hegemony = 120 + } + + ai_potential = { + # Filter us down nice'n'tight. + may_appoint_co_monarchs_trigger = yes + # Plus rule out any diarchies already on the go. + has_active_diarchy = no + # Aaaand finally, the AI won't do this unless they're considering their age and they've got adult kids. + age >= 50 + any_child = { is_adult = yes } + } + + ai_will_do = { + # The AI doesn't like doing this without good reason. + base = -100 + + ai_wants_junior_or_co_emperor_modifier = yes + } +} + +# Start a scheme to replace an incumbent regent. +overthrow_regent_scheme_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + ignores_pending_interaction_block = yes + + scheme = overthrow_regent + desc = overthrow_regent_scheme_interaction_desc + + interface_priority = 20 + + is_shown = { + # Standard setup. + scope:actor.liege ?= { + has_active_diarchy = yes + # You can't overthrow non-regencies. At least not this way. + has_diarchy_parameter = diarchy_is_regency + } + scope:recipient = { + this != scope:actor + liege ?= { + this = scope:actor.liege + diarch ?= scope:recipient + this != scope:actor + } + } + } + + is_valid_showing_failures_only = { + # Make sure you wouldn't just cop out immediately. + ## Disabling is fine, FWIW. You'll de-disable with time. + scope:actor = { is_diarch_valid_trigger = yes } + # Have we been vetoed from succession due to politicking? + custom_tooltip = { + text = overthrow_regent_scheme_interaction.tt.filtered_due_to_incumbent_politicking + NOT = { scope:actor.var:diarch_succession_filtered_due_to_incumbents_politicking ?= scope:recipient } + } + } + + # Long specific cooldown. If you give up, you should give it a rest 'less things change. + cooldown_against_recipient = { years = 10 } + + # Scheme Starter Packages + options_heading = schemes.t.agent_packages + send_options_exclusive = yes + ## Balanced agents. + send_option = { + flag = agent_focus_balance + current_description = overthrow_regent_scheme_interaction.tt.agent_focus_balance + } + ## Focused on Success Chance. + send_option = { + flag = agent_focus_success + current_description = overthrow_regent_scheme_interaction.tt.agent_focus_success + } + ## Focused on Speed. + send_option = { + flag = agent_focus_speed + current_description = overthrow_regent_scheme_interaction.tt.agent_focus_speed + } + ## Focused on Secrecy. + send_option = { + flag = agent_focus_secrecy + current_description = overthrow_regent_scheme_interaction.tt.agent_focus_secrecy + } + + on_accept = { + scope:actor = { + # Sort some stress stuff. + overthrow_regent_scheme_interaction_actor_stress_effect = yes + # And some feedback for starting. + send_interface_toast = { + type = event_toast_effect_neutral + title = overthrow_regent_scheme_interaction.tt.started_scheme + left_icon = scope:actor + right_icon = scope:recipient + # Success. + if = { + limit = { scope:agent_focus_success ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = overthrow_regent + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_thug + AGENT_2 = agent_ambusher + AGENT_3 = agent_muscle + # Speed. + AGENT_4 = agent_footpad + # Secrecy. + AGENT_5 = agent_lookout + } + } + # Speed. + else_if = { + limit = { scope:agent_focus_speed ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = overthrow_regent + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Speed. + AGENT_1 = agent_footpad + AGENT_2 = agent_tracker + AGENT_3 = agent_planner + # Success. + AGENT_4 = agent_thug + # Secrecy. + AGENT_5 = agent_lookout + } + } + # Secrecy. + else_if = { + limit = { scope:agent_focus_secrecy ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = overthrow_regent + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Secrecy. + AGENT_1 = agent_lookout + AGENT_2 = agent_lookout + AGENT_3 = agent_decoy + # Success. + AGENT_4 = agent_thug + # Speed. + AGENT_5 = agent_footpad + } + } + # Balanced. + else = { + begin_scheme_with_agents_effect = { + SCHEME_TYPE = overthrow_regent + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_thug + AGENT_2 = agent_ambusher + # Speed. + AGENT_3 = agent_footpad + AGENT_4 = agent_planner + # Secrecy. + AGENT_5 = agent_lookout + } + } + } + } + } + + auto_accept = yes + + # AI + ai_targets = { + ai_recipients = peer_vassals + ai_recipients = scripted_relations + } + ai_frequency_by_tier = { + barony = 0 + county = 120 + duchy = 60 + kingdom = 60 + empire = 60 + hegemony = 60 + } + + ai_potential = { + # Some traits lock the AI out. + ## Calc these first 'cause they're cheaper. + NOR = { + has_trait = lazy + has_trait = humble + has_trait = content + } + OR = { + # Driven by traits or personality. + has_trait = arrogant + has_trait = ambitious + # Family think themselves worthy. + any_close_or_extended_family_member = { this = liege } + # If you're rivals with the current regent, that's a good cause. + any_relation = { + type = rival + is_diarch_of_target = root.liege + } + } + } + + ai_will_do = { + # Most AI think this is audacious. + base = -50 + + # Opinion Factor + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + # Weight for personality. + ## Both modifier. + ai_value_modifier = { + # Bold, energetic characters fancy the gig. + ai_boldness = 0.5 + ai_energy = 0.5 + } + ## And traits! + ### These are balanced differently to the other interactions, so it's deliberate that they're not using the @values here. + ### +++ Loyal (if current regent is disloyal). + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = loyal + exists = liege + scope:recipient = { diarch_loyalty <= diarch_loyalty_visibly_disloyal_threshold } + diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_loyal_threshold + } + ### +++ Disloyal (if current regent is loyal). + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = disloyal + exists = liege + scope:recipient = { diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold } + diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_disloyal_threshold + } + ### ++ Ambitious. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = ambitious + } + ### ++ Arrogant. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = arrogant + } + ### ++ Deceitful. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = deceitful + } + ### + Diligent. + modifier = { + add = diarch_ai_desire_plus_1_value + has_trait = diligent + } + ### - Lazy. + modifier = { + add = diarch_ai_desire_minus_1_value + has_trait = lazy + } + ### -- Honest. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = honest + } + ### -- Humble. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = humble + } + ### -- Content. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = content + } + ### --- Disloyal (if current regent is disloyal). + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = disloyal + exists = liege + scope:recipient = { diarch_loyalty <= diarch_loyalty_visibly_disloyal_threshold } + diarch_loyalty_score_type_regency_value <= diarch_loyalty_visibly_disloyal_threshold + } + ### --- Loyal (if current regent is loyal). + #### Also some loyal-adjacent traits that would otherwise cause stress. + modifier = { + add = diarch_ai_desire_minus_3_value + OR = { + has_trait = loyal + has_trait = honest + has_trait = compassionate + has_trait = just + } + exists = liege + scope:recipient = { diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold } + diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_loyal_threshold + } + # Weight by proximity to the ruler: close family, spouses, etc. + modifier = { + add = diarch_ai_desire_plus_2_value + exists = scope:recipient.liege + OR = { + any_close_or_extended_family_member = { this = scope:recipient.liege } + any_spouse = { this = scope:recipient.liege } + } + } + # Councillors have ambitions. + modifier = { + add = diarch_ai_desire_plus_2_value + is_councillor = yes + } + # Factors. + ## If relations are near-perfect, we don't want to go plotting, as it'll look weird. + modifier = { + factor = 0 + OR = { + has_any_good_relationship_with_character_trigger = { CHARACTER = scope:recipient } + opinion = { + target = scope:recipient + value >= very_high_positive_opinion + } + } + } + } +} diff --git a/common/character_interactions/00_gift.txt b/common/character_interactions/00_gift.txt new file mode 100644 index 00000000..b06b8dc1 --- /dev/null +++ b/common/character_interactions/00_gift.txt @@ -0,0 +1,789 @@ +#Give characters money to improve their opinion of you +gift_interaction = { + icon = icon_gold + category = interaction_category_friendly + common_interaction = yes + interface_priority = 65 + desc = gift_interaction_desc + + greeting = positive + notification_text = SEND_GIFT_PROPOSAL + + answer_accept_key = SEND_GIFT_ACCEPT + answer_reject_key = SEND_GIFT_REJECT + + ai_targets = { + ai_recipients = scripted_relations + ai_recipients = liege + ai_recipients = head_of_faith + } + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + max = 10 + } + ai_targets = { + ai_recipients = vassals + max = 10 + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 120 + county = 60 + duchy = 60 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + is_shown = { + scope:recipient != scope:actor + + # Prioritize paying back loans first + scope:actor = { + trigger_if = { + limit = { + exists = var:loan_amount_owed + exists = var:loan_holder + } + NOT = { var:loan_holder = scope:recipient } + } + } + } + + is_highlighted = { + scope:recipient = { + OR = { + house ?= { + OR = { + is_dominant_family = yes + is_powerful_family = yes + } + } + } + } + } + + highlighted_reason = HIGHLIGHTED_FAMILY_RATING + + is_valid_showing_failures_only = { + scope:actor.gold >= gift_value + scope:recipient = { + NOT = { is_imprisoned_by = scope:actor } + } + } + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0100 + } + } + + on_accept = { + scope:recipient = { + # Verify that they could become friend + if = { + limit = { + NAND = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + has_relation_best_friend = scope:actor + } + } + gifting_leads_towards_friendship_effect = yes + } + } + # HOUSE RELATIONS + if = { + limit = { + scope:actor = { + is_house_head = yes + } + scope:recipient = { + is_house_head = yes + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + } + scope:recipient.house = { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_improve_medium_value + REASON = sent_a_gift + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + scope:actor = { + # Warning for multiple gifts + if = { + limit = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + custom_tooltip = ALREADY_SENT_GIFT_WARNING + } + + send_interface_message = { + type = event_gold_neutral + title = gift_interaction_notification + right_icon = scope:recipient + pay_short_term_gold = { + gold = gift_value + target = scope:recipient + } + stress_impact = { + greedy = medium_stress_impact_gain + } + if = { + limit = { + scope:recipient = { + NOT = { + is_heir_of = scope:actor + } + } + } + stress_impact = { + generous = medium_stress_impact_loss + } + } + + #FP3 Tenet Communal Possessions Perk - piety gain for gift giving. + if = { + limit = { + scope:actor = { + faith = { + has_doctrine_parameter = piety_from_gifts_active + } + } + } + scope:actor = { + add_piety = minor_piety_gain + } + } + + # Check if the target already has been sent a gift or not. If not, apply the following effects + if = { + limit = { + NOT = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + } + + # Struggle Catalyst + if = { + limit = { + scope:actor = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_gift_independent_ruler + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_gift_independent_ruler + CHAR = scope:recipient + } + } + } + } + hidden_effect = { + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { phase_has_catalyst = catalyst_gift_independent_ruler } + activate_struggle_catalyst = { + catalyst = catalyst_gift_independent_ruler + character = scope:actor + } + } + } + } + } + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + scope:actor = { + any_character_struggle = { + #involvement = involved + activate_struggle_catalyst_secondary_character_involvement_either_trigger = { + CATALYST = catalyst_gift_supporter_detractor_ruler + CHAR = scope:recipient + } + } + } + } + hidden_effect = { + scope:actor = { + every_character_struggle = { + #involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_either_trigger = { + CATALYST = catalyst_gift_supporter_detractor_ruler + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_gift_supporter_detractor_ruler + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_gift_supporter_detractor_ruler } + } + } + } + } + + # FP2 Urbanism Legacy Perk 2: increase cultural acceptance when gifting a republican vassal + if = { + limit = { + scope:actor = { + dynasty ?= { has_dynasty_perk = fp2_urbanism_legacy_4 } + } + scope:recipient = { + AND = { + is_vassal_of = scope:actor + government_has_flag = government_is_republic + } + } + scope:actor.culture != scope:recipient.capital_province.county.culture + } + scope:recipient.capital_province.county.culture = { + change_cultural_acceptance = { + target = scope:actor.culture + value = { + value = 20 + multiply = scope:recipient.capital_province.county.development_level + divide = 100 + } + desc = cultural_acceptance_gain_gift_dynasty_perk + } + } + } + } + + # Let's apply the opinion modifier last, as to apply everything else correctly first + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = gift_opinion + opinion = send_gift_opinion + } + } + } + + if = { # for tutorial purposes + limit = { + is_ai = no + scope:recipient = { is_child_of = scope:actor } + } + add_character_flag = { + flag = tutorial_sent_gift + days = 200 + } + } + #Influence gain between admin rulers + if = { + limit = { + is_ruler = yes + government_allows = administrative + scope:recipient = { + is_ruler = yes + government_allows = administrative + any_held_title = { + is_noble_family_title = yes + } + } + } + if = { + limit = { + scope:recipient = { + OR = { + house = { + is_dominant_family = yes + } + this = scope:actor.top_liege + } + influence_level >= 5 + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 8 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_dominant_family = yes + } + this = scope:actor.top_liege + } + influence_level >= 3 + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 7 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_dominant_family = yes + } + this = scope:actor.top_liege + } + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 6 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_powerful_family = yes + } + this = scope:actor.top_liege + } + influence_level >= 5 + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 6 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_powerful_family = yes + } + this = scope:actor.top_liege + } + influence_level >= 3 + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 5 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_powerful_family = yes + } + this = scope:actor.top_liege + } + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 4 + } + } + else_if = { + limit = { + scope:recipient = { influence_level >= 5 } + } + change_influence = { + value = miniscule_influence_gain + multiply = 3 + } + } + else_if = { + limit = { + scope:recipient = { influence_level >= 3 } + } + change_influence = { + value = miniscule_influence_gain + multiply = 2 + } + } + else = { + change_influence = miniscule_influence_gain + } + } + } + } + + ai_accept = { + base = 0 + modifier = { + add = 100 + desc = GOLD_REASON + } + + # Struggle motive + modifier = { + desc = AI_STRUGGLE_INTENT + scope:recipient = { + top_liege = this + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:recipient = { + any_character_struggle = { + phase_has_catalyst = catalyst_gift_independent_ruler + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:recipient = { + any_character_struggle = { + phase_has_catalyst = catalyst_gift_independent_ruler + } + } + } + add = 200 + } + } + } + } + + ai_potential = { + is_available_at_peace_ai_adult = yes + ai_greed < medium_positive_ai_value + short_term_gold >= gift_interaction_cutoff + NOT = { + has_trait = greedy + } + NOT = { has_variable = conqueror } + ai_should_focus_on_building_in_their_capital = no + } + + auto_accept = { + custom_description = { + text = auto_accept_interaction_ai + object = scope:recipient + scope:recipient = { + is_ai = yes + } + } + } + + ai_min_reply_days = 1 + ai_max_reply_days = 1 + + ai_will_do = { + base = 100 + + modifier = { # Do not send double-gifts + factor = 0 + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + + modifier = { # Basic Filtering + factor = 0 + scope:recipient = { + NOR = { + AND = { # Bankrupt lovers, friends and a bankrupt liege should be considered + OR = { + scope:actor = { + any_liege_or_above = { + this = scope:recipient + } + } + has_secret_relation_lover = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + } + gold < 0 + } + AND = { # Generous characters will give gifts to their friends/lovers + is_ruler = yes + OR = { + has_secret_relation_lover = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + } + scope:actor = { + OR = { + ai_greed <= high_negative_ai_value + AND = { + ai_greed < 0 + culture = { + has_cultural_parameter = gives_more_gifts + } + } + } + } + } + AND = { # Characters with the Generous Cultural Tradition will give gifts to more people + is_ruler = yes + OR = { + is_allied_to = scope:actor + is_close_or_extended_family_of = scope:actor + } + scope:actor = { + ai_greed < 0 + culture = { + has_cultural_parameter = gives_more_gifts + } + } + } + AND = { # Characters with the loyal trait more likely to give gifts to friends/lieges + OR = { + scope:actor.liege ?= this + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + is_allied_to = scope:actor + is_close_or_extended_family_of = scope:actor + } + scope:actor = { + ai_greed <= 0 + has_trait = loyal + } + } + AND = { # Zealous characters want to support the defending side in GHW's + gold < 200 + any_character_war = { + OR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + primary_defender = scope:recipient + } + scope:actor = { + ai_zeal >= 50 + } + } + AND = { # Powerful vassals should be considered + is_powerful_vassal_of = scope:actor + opinion = { + target = scope:actor + value < 0 + } + NOT ={ + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + AND = { # Factioneering vassals should be considered + is_vassal_of = scope:actor + is_a_faction_member = yes + NOT ={ + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + AND = { # Realm Priests should be considered + scope:actor = { + faith = { has_doctrine = doctrine_theocracy_temporal } + exists = cp:councillor_court_chaplain + cp:councillor_court_chaplain = scope:recipient + } + opinion = { + target = scope:actor + value <= 25 + } + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + AND = { # Rulers at war with your rivals deserve gold if they're bankrupt + gold < 0 + is_at_war = yes + any_war_enemy = { + has_relation_rival = scope:actor + } + } + AND = { # Independent ruler within the struggle should be considered + any_character_struggle = { + phase_has_catalyst = catalyst_gift_independent_ruler + } + } + } + } + } + + # Struggle + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_gift_independent_ruler + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_gift_independent_ruler + } + NOT = { + has_relation_rival = scope:recipient + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + } + scope:recipient = { + has_character_flag = agenda_towards_deescalation + } + } + add = { + value = 150 + if = { + limit = { scope:recipient = { is_ai = no} } + add = 150 # higher for human player to Prioritize them + } + # Then lower the intent depending on the gold reserve + # Base value applied if the AI has 3x the gold cutoff + multiply = { + value = short_term_gold + divide = { + value = gift_interaction_cutoff + multiply = 3 + } + } + } + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + } + } + add = { + value = 25 + if = { + limit = { scope:recipient = { is_ai = no} } + add = 150 # higher for human player to Prioritize them + } + # Then lower the intent depending on the gold reserve + # Base value applied if the AI has 3x the gold cutoff + multiply = { + value = short_term_gold + divide = { + value = gift_interaction_cutoff + multiply = 3 + } + } + } + } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + opinion = { + target = scope:actor + value < 0 + } + NAND = { + is_vassal_of = scope:actor + scope:actor = { + ai_rationality > 50 + } + } + } + } + + modifier = { + add = 100 + scope:actor = { + is_at_war = no + has_trait = fp3_struggle_supporter + any_character_struggle = { is_struggle_type = persian_struggle } + } + scope:recipient = { + title:d_sunni.holder ?= this + gold < 0 + } + } + + # Nomads are slightly less likely to do this since they'd prefer to send Herd instead + modifier = { + add = -10 + scope:actor = { + government_has_flag = government_is_nomadic + } + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + has_relation_rival = scope:actor + } + } + + modifier = { + factor = 2 + scope:actor.house.house_confederation ?= { + has_cohesion_level_parameter = bloc_members_send_leader_gifts + leading_house.house_head ?= scope:recipient + } + } + } +} diff --git a/common/character_interactions/00_grant_titles_interaction.txt b/common/character_interactions/00_grant_titles_interaction.txt new file mode 100644 index 00000000..e9d99379 --- /dev/null +++ b/common/character_interactions/00_grant_titles_interaction.txt @@ -0,0 +1,2308 @@ +#be aware that the actual granting of the title happens in code! +grant_titles_interaction = { + + category = interaction_category_vassal + common_interaction = yes + + desc = grant_titles_interaction_desc + + special_interaction = grant_titles_interaction + interface = grant_titles + target_type = title + target_filter = actor_domain_titles + interface_priority = 60 + + # actor character giving the titles + # recipient character receiving the titles + + is_shown = { + scope:actor != scope:recipient + scope:actor = { + NOT = { + government_has_flag = government_is_landless_adventurer + } + } + scope:recipient = { + OR = { + target_is_liege_or_above = scope:actor + is_pool_guest_of = scope:actor + AND = { + scope:actor.faith.religious_head = scope:recipient + top_liege = this + } + } + } + trigger_if = { + limit = { + scope:actor = { government_allows = administrative } + } + scope:recipient = { NOT = { government_allows = administrative } } + } + trigger_if = { + limit = { + scope:actor = { government_has_flag = government_is_nomadic NOT = { government_has_flag = government_allows_nomad_domicile_titles }} + } + scope:recipient = { NOT = { government_has_flag = government_is_true_herder } } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_tooltip = { + text = can_be_granted_titles_interaction_tt + OR = { + can_be_granted_titles_by = { RULER = scope:actor } + can_be_granted_theocratic_titles_by = { RULER = scope:actor } + AND = { + is_diarch_of_target = scope:actor + scope:actor = { has_diarchy_active_parameter = diarchy_is_co_rulership } + } + } + } + NOT = { is_at_war_with = scope:actor } + NOT = { has_trait = devoted } # Monks are disinherited, and should not have land granted to them + bp2_valid_for_standard_interactions_trigger = yes + trigger_if = { + limit = { is_ruler = no } + is_imprisoned = no + } + # DON'T TAKE OTHER PLAYERS' ACCLAIMED KNIGHTS + custom_description = { + text = grant_title_stealing_acclaimed_knight + subject = scope:recipient + NOR = { + AND = { + is_acclaimed = yes + liege ?= { + is_ai = no + this != scope:actor + } + } + AND = { + is_acclaimed = yes + scope:actor = { is_ai = yes } + } + } + } + # Gallivanters won't accept additional responsibilities. + NOT = { has_trait = gallivanter } + # TGP JAPAN + tgp_japan_grant_titles_restriction_trigger = { + GRANTER = scope:actor + GRANTEE = scope:recipient + } + } + custom_description = { + text = is_not_theocratic_court_chaplain + subject = scope:recipient + NAND = { + scope:actor.faith = { + has_doctrine = doctrine_theocracy_temporal + } + scope:recipient = { + faith = { + has_doctrine = doctrine_theocracy_temporal + } + has_council_position = councillor_court_chaplain + } + scope:actor.faith.religious_head != scope:recipient + } + } + scope:actor = { + any_held_title = { + count > 1 + } + } + } + + can_send = { + trigger_if = { + limit = { + scope:actor = { + highest_held_title_tier >= tier_kingdom + has_diarchy_active_parameter = primeminister_requires_duchy + diarch = scope:recipient + } + } + custom_tooltip = { + text = primeminister_requires_duchy.tt.blocked_grant + any_in_list = { + list = target_titles + tier >= tier_duchy + } + } + } + } + + can_be_picked_title = { + scope:target = { + is_leased_out = no + + trigger_if = { + limit = { is_noble_family_title = yes } + custom_tooltip = { + text = GRANT_TITLES_ITEM_CANT_GIVE_NOBLE_FAMILY + always = no + } + } + + trigger_if = { + limit = { + scope:actor = { + NOT = { + has_government = nomad_government + } + } + title_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + scope:recipient = { + is_ruler = no + } + } + custom_tooltip = { + text = GRANT_TITLES_ITEM_CANT_GIVE_NOMADIC_TITLES_TO_NON_NOMADS_TITLE + always = no + } + } + + trigger_if = { + limit = { is_nomad_title = yes } + custom_tooltip = { + text = GRANT_TITLES_ITEM_CANT_GIVE_NOMAD_TITLE + always = no + } + } + + trigger_if = { + limit = { + is_head_of_faith = yes + scope:recipient.faith.religious_head != scope:actor.faith.religious_head + } + custom_tooltip = { + text = GRANT_TITLES_ITEM_CANT_HEAD_OF_FAITH_TO_INFIDEL + scope:recipient.faith.religious_head = scope:actor.faith.religious_head + } + } + + trigger_if = { + limit = { + scope:recipient = scope:actor.player_heir + scope:actor = { has_partition_succession_realm_law_trigger = yes } + } + custom_description = { + text = partition_primary_heir_unfair + subject = scope:recipient + current_heir = scope:recipient + } + } + trigger_if = { + limit = { scope:target = title:k_fashion } + NOT = { scope:target = title:k_fashion } + } + custom_tooltip = { + text = cannot_grant_ceremonial_title + NOT = { exists = var:ceremonial_title } + } + } + + custom_description = { + text = grant_titles_interaction_can_only_give_diarch_de_jure_liege_to_diarch + subject = scope:actor.diarch + NAND = { + # Only applies if we have an active diarchy. + scope:actor = { has_active_diarchy = yes } + # Now, prevent us from giving away our diarch's land to invalidate them... + scope:target = { + any_dejure_vassal_title_holder = { this = scope:actor.diarch } + # ... _unless_ we're giving it _to_ the diarch. + scope:recipient != scope:actor.diarch + # Plus we only care if the title is below our tier. + tier < scope:actor.highest_held_title_tier + } + } + } + + custom_description = { + text = grant_titles_interaction_children_not_allowed_temple + subject = scope:recipient + NOR = { + AND = { + scope:recipient = { + is_adult = no + } + scope:target = { + tier = tier_barony + title_province = { has_building_with_flag = temple } + } + } + AND = { + scope:recipient = { + is_adult = no + } + scope:target = { + tier = tier_county + + title_province = { + is_county_capital = yes + has_building_with_flag = temple + } + } + } + } + } + + custom_description = { + text = grant_titles_interaction_title_being_wagered + NOT = { + scope:target = { has_variable = wagered_county } + } + } + } + + auto_accept = yes + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0110 + } + } + + on_accept = { + if = { + limit = { + scope:actor = { + government_has_flag = government_is_nomadic + vassal_limit_available <= 0 + is_independent_ruler = yes + scope:recipient = { + NOT = { is_vassal_of = scope:actor } + } + } + } + custom_tooltip = grant_title_nomad_and_at_vassal_limit + } + scope:recipient = { + add_character_flag = { + flag = domicile_culture_and_faith_check + days = 1 + } + } + if = { + limit = { + scope:recipient = { + is_acclaimed = yes + liege = { + this = scope:actor + } + } + scope:target = { + tier > tier_barony + } + } + custom_tooltip = grant_title_landing_acclaimed_knight_warning + } + scope:recipient = { + if = { + limit = { + top_liege = this + save_temporary_scope_as = recipient_is_independent + } + } + if = { + limit = { + NOT = { + has_relation_friend = scope:actor + } + } + if = { + # then verify the right struggle phase + limit = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:actor + STATUS = involved + } + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = struggle_grant_titles_diff_faith_culture_to_leads_to_friendship + } + } + progress_towards_friend_effect = { + REASON = friend_granted_title + CHARACTER = scope:actor + OPINION = 0 + } + } + } + } + + if = { + limit = { + OR = { + any_in_list = { + list = target_titles + tier = tier_county + culture = scope:recipient.culture + NOR = { + culture = scope:actor.culture + recent_history = { + type = granted + years = 10 + } + } + } + any_in_list = { + list = target_titles + tier >= tier_duchy + title_capital_county = { + culture != scope:actor.culture + culture = scope:recipient.culture + } + NOT = { + recent_history = { + type = granted + years = 10 + } + } + } + } + } + scope:recipient.culture = { + change_cultural_acceptance = { + target = scope:actor.culture + value = grant_title_cultural_acceptance_impact + desc = cultural_acceptance_gain_granted_title + } + } + } + if = { + limit = { + any_in_list = { + list = target_titles + tier = tier_county + } + scope:actor.culture = { has_cultural_parameter = grants_to_lowborns_bonuses } + scope:recipient = { + is_lowborn = yes + } + } + every_in_list = { + list = target_titles + limit = { tier = tier_county } + change_county_control = 30 + } + scope:recipient = { + add_trait = peasant_leader + } + } + if = { + limit = { + any_in_list = { + list = target_titles + tier >= tier_county + } + scope:actor.culture = { has_cultural_parameter = landing_house_members_give_prestige } + exists = scope:actor.house + exists = scope:recipient.house + scope:actor.house = scope:recipient.house + } + scope:actor = { + add_prestige = { + value = 0 + every_in_list = { + list = target_titles + limit = { tier = tier_empire } + add = massive_prestige_gain + } + every_in_list = { + list = target_titles + limit = { tier = tier_kingdom } + add = major_prestige_gain + } + every_in_list = { + list = target_titles + limit = { tier = tier_duchy } + add = medium_prestige_gain + } + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = minor_prestige_gain + } + } + } + } + if = { + limit = { + any_in_list = { + list = target_titles + tier >= tier_county + } + scope:actor.culture = { has_cultural_parameter = landing_house_members_gives_renown } + exists = scope:actor.house + exists = scope:recipient.house + scope:actor.house = scope:recipient.house + } + scope:actor.dynasty = { + add_dynasty_prestige = { + value = 0 + every_in_list = { + list = target_titles + limit = { tier = tier_empire } + add = scope:actor.dynasty.massive_dynasty_prestige_gain + } + every_in_list = { + list = target_titles + limit = { tier = tier_kingdom } + add = scope:actor.dynasty.major_dynasty_prestige_gain + } + every_in_list = { + list = target_titles + limit = { tier = tier_duchy } + add = scope:actor.dynasty.medium_dynasty_prestige_gain + } + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = scope:actor.dynasty.minor_dynasty_prestige_gain + } + } + } + } + + # Iterate over all given titles + # - Add opinion modifiers + # - Collect titles that discontent reduction can later be derived from + every_in_list = { + list = target_titles + save_temporary_scope_as = this_title + if = { + limit = { + exists = scope:landed_title + } + scope:recipient = { + if = { + limit = { + scope:this_title.tier = tier_barony + } + + hidden_effect = { + add_opinion = { + target = scope:actor + modifier = received_title_barony + } + } + + scope:this_title = { add_to_temporary_list = titles_to_grant } + } + + else_if = { + limit = { + scope:this_title.tier = tier_county + } + + hidden_effect = { + add_opinion = { + target = scope:actor + modifier = received_title_county + } + if = { + limit = { + is_lowborn = yes + } + scope:actor = { + if = { + limit = { + is_ai = no + } + every_vassal = { + vassal_stance = courtly + add_opinion = { + target = scope:actor + modifier = courtly_lowborn_grant_opinion + opinion = -5 + } + } + } + else = { # Can't really stop the AI from landing lowborns, so throttle it a bit so that great conquerors don't annihilate their opinion + random = { + chance = 25 + every_vassal = { + vassal_stance = courtly + add_opinion = { + target = scope:actor + modifier = courtly_lowborn_grant_opinion + opinion = -5 + } + } + } + } + } + } + } + + scope:this_title = { add_to_temporary_list = titles_to_grant } + } + + else_if = { + limit = { + scope:this_title.tier = tier_duchy + } + + hidden_effect = { + add_opinion = { + target = scope:actor + modifier = received_title_duchy + } + if = { + limit = { + is_lowborn = yes + } + scope:actor = { + every_vassal = { + vassal_stance = courtly + add_opinion = { + target = scope:actor + modifier = courtly_lowborn_grant_opinion + opinion = -20 + } + } + } + } + } + + scope:this_title = { add_to_temporary_list = titles_to_grant } + } + + else_if = { + limit = { + scope:this_title.tier = tier_kingdom + } + + hidden_effect = { + add_opinion = { + target = scope:actor + modifier = received_title_kingdom + } + if = { + limit = { + is_lowborn = yes + } + scope:actor = { + every_vassal = { + vassal_stance = courtly + add_opinion = { + target = scope:actor + modifier = courtly_lowborn_grant_opinion + opinion = -50 + } + } + } + } + } + + scope:this_title = { add_to_temporary_list = titles_to_grant } + } + + else_if = { + limit = { + scope:this_title.tier = tier_empire + } + + hidden_effect = { + add_opinion = { + target = scope:actor + modifier = received_title_empire + } + if = { + limit = { + is_lowborn = yes + } + scope:actor = { + every_vassal = { + vassal_stance = courtly + add_opinion = { + target = scope:actor + modifier = courtly_lowborn_grant_opinion + opinion = -5 + } + } + } + } + if = { + limit = { + is_a_faction_member = yes + } + add_joined_faction_discontent = -60 + } + } + + scope:this_title = { add_to_temporary_list = titles_to_grant } + } + } + + #Promised a vassal this title they had a claim on (vassal.2901) + if = { + limit = { + scope:actor = { + exists = var:was_promised_title + var:was_promised_title = scope:recipient + } + } + if = { + limit = { + scope:recipient = { + exists = var:promised_title + } + scope:landed_title = scope:recipient.var:promised_title + } + scope:actor = { + trigger_event = { + id = vassal.2910 + days = { 7 14 } + } + } + } + } + } + if = { + limit = { + scope:recipient = { + has_trait = bastard + } + } + custom_tooltip = grant_title_to_bastard_dynasty_warning + } + } # every_in_list + + + # The accumulated discontent reduction of the recipient + scope:recipient = { + if = { + limit = { + is_a_faction_member = yes + } + add_joined_faction_discontent = grant_title_opinion_sum_discontent_calc + } + } + + # Viziers may be booted from their job. + scope:actor = { + if = { + limit = { + # Assuming this is relevant at all. + diarch ?= scope:recipient + # And that scope:actor can do without a supervisor atm. + can_leave_diarchy_trigger = yes + # Aaaaand that their diarchy supports this type of thing. + OR = { + has_diarchy_parameter = primeminister_requires_county + has_diarchy_parameter = primeminister_requires_duchy + } + } + # Is this a duchy? + if = { + limit = { + any_in_list = { + list = target_titles + tier >= tier_duchy + } + } + custom_tooltip = grant_titles_interaction.tt.primeminister_title_grant.duchy_sufficient + end_diarchy = yes + } + # Is this a county? + else_if = { + limit = { + any_in_list = { + list = target_titles + tier = tier_county + } + } + # Is that insufficient? + if = { + limit = { has_diarchy_active_parameter = primeminister_requires_duchy } + custom_tooltip = grant_titles_interaction.tt.primeminister_title_grant.county_insufficient + } + # Is that sufficient? + else = { + custom_tooltip = grant_titles_interaction.tt.primeminister_title_grant.county_sufficient + end_diarchy = yes + } + } + # Is this a barony? + else_if = { + limit = { + any_in_list = { + list = target_titles + count = all + tier = tier_barony + } + } + custom_tooltip = grant_titles_interaction.tt.primeminister_title_grant.barony_doesnt_end + } + } + } + + if = { + limit = { + any_in_list = { + list = target_titles + tier = tier_empire + } + } + custom_tooltip = grant_title_modifier_stack_empires + } + if = { + limit = { + any_in_list = { + list = target_titles + tier = tier_kingdom + } + } + custom_tooltip = grant_title_modifier_stack_kingdoms + } + if = { + limit = { + any_in_list = { + list = titles_to_grant + tier = tier_duchy + } + } + custom_tooltip = grant_title_modifier_stack_duchies + } + if = { + limit = { + any_in_list = { + list = titles_to_grant + tier = tier_county + } + } + custom_tooltip = grant_title_modifier_stack_counties + } + if = { + limit = { + any_in_list = { + list = titles_to_grant + tier = tier_barony + } + } + custom_tooltip = grant_title_modifier_stack_baronies + } + if = { + limit = { + trigger_if = { + limit = { scope:actor = { is_ai = yes } } + scope:actor = { + any_vassal = { + vassal_stance = courtly + } + } + } + scope:recipient = { + is_lowborn = yes + } + any_in_list = { + list = titles_to_grant + tier >= tier_county + } + } + custom_tooltip = grant_title_modifier_courtly_lowborn_grant_penalty + } + if = { + limit = { + scope:recipient = { is_a_faction_member = yes } + } + custom_tooltip = grant_title_modifier_stack_discontent + } + + # Jealousy check + if = { + limit = { + any_in_list = { + list = titles_to_grant + any_claimant = { grant_title_rivalry_trigger = yes } + } + } + hidden_effect = { + random = { + chance = 25 + ordered_in_list = { + list = titles_to_grant + limit = { + any_claimant = { grant_title_rivalry_trigger = yes } + } + order_by = tier + save_scope_as = claim_title + ordered_claimant = { + limit = { grant_title_rivalry_trigger = yes } + order_by = primary_title.tier + save_scope_as = claim_vassal + if = { + limit = { + scope:recipient = { is_lowborn = yes } + } + scope:recipient = { save_scope_as = lowborn_scope } + } + else_if = { + limit = { + scope:recipient = { has_claim_on = scope:claim_title } + } + scope:recipient = { save_scope_as = claimant_scope } + } + scope:actor = { + trigger_event = { + id = bp1_yearly.8070 + days = 5 + } + } + } + } + } + } + } + + #Stress impact + scope:actor = { + if = { + limit = { + any_in_list = { + list = target_titles + trigger_if = { + limit = { tier = tier_barony } + title_province.barony = { + has_wrong_holding_type = no + } + } + count >= 1 + } + } + + # Generous characters enjoy giving away titles + if = { + limit = { + has_trait = generous + } + add_stress = generous_title_grant_value + } + + # Gnostics lose stress for giving away titles. + if = { + limit = { + scope:actor = { + faith = { + has_doctrine_parameter = granting_titles_gives_stress + } + } + } + scope:actor = { + add_stress = { + value = 0 + + # Base stress value scaled on title tier. + every_in_list = { + list = target_titles + + add = { + value = 0 + + if = { + limit = { this.tier = tier_county } + add = minor_stress_loss # 10 base + } + else_if = { + limit = { this.tier = tier_duchy } + add = { + value = medium_stress_loss + multiply = 1.25 # 25 base + } + } + else_if = { + limit = { this.tier = tier_kingdom } + add = { + value = major_stress_loss + multiply = 2 # 80 base + } + } + else_if = { + limit = { this.tier = tier_empire } + add = { + value = monumental_stress_loss + multiply = 2 # 200 base + } + } + + # Lose more stress for giving away titles of your primary tier; lose less stress for giving away titles far below your primary in tier. + multiply = { + value = this.tier + add = 1 + divide = scope:actor.primary_title.tier + } + + # Round to the nearest multiple of 5. + divide = 5 + round = yes + multiply = 5 + + # For a Duke, this will be x1.25 for Duchies (-30) and x1 for Counties(-10) + # For a King, this will be x1.25 for a Kingdom (-100), x1 for a Duchy (-25) and x0.75 for Counties(-10) + # For an Emperor, this will be x1.25 for an Empire(-200), x1 for a Kingdom(-80), x0.75 for a Duchy(-20) and x0.4 for a Counties (-5) + } + } + } + } + } + + # Greedy & ambitious ruler gain stress for giving away titles if they would normally be able to keep them. + if = { + limit = { + # Pre-filter + OR = { + has_trait = greedy + has_trait = ambitious + } + domain_size <= domain_limit # Not over my domain limit + any_in_list = { + list = target_titles + tier <= tier_county # At least 1 selected title counts toward domain limit + } + + # Special exemption for lieges who are over their held duchy limit, which are giving away that duchy (and associated counties) specifically + trigger_if = { + limit = { + has_too_many_held_duchies_trigger = yes + } + NOT = { + # Granting at least 1 duchy + any_in_list = { + list = target_titles + title_counts_towards_too_many_duchies_trigger = yes + save_temporary_scope_as = granted_duchy + + # All counties being granted are De Jure part of the duchy that is being granted + any_in_list = { + list = target_titles + count = all + trigger_if = { + limit = { tier = tier_county} + de_jure_liege = scope:granted_duchy + } + } + } + } + } + } + # Actual stress gain effects + if = { + limit = { + domain_size = domain_limit + } + stress_impact = { + greedy = minor_stress_impact_gain + ambitious = minor_stress_impact_gain + } + } + else_if = { + limit = { + domain_size < domain_limit + } + stress_impact = { + greedy = medium_stress_impact_gain + ambitious = medium_stress_impact_gain + } + } + } + } + + # Maintenance for runestones + if = { + limit = { + # Use expanded version if we have FP1. + has_fp1_dlc_trigger = yes + fp1_remove_stele_new_holder_trigger = { + TITLE = scope:target + PREVIOUS_HOLDER = scope:actor + NEW_HOLDER = scope:recipient + } + } + # Actually removed in fp1_other_decisions.0113 + custom_tooltip = runestone_grant_title_warning + } + else_if = { + limit = { + scope:target = { + exists = var:ancestor_to_bury + has_county_modifier = county_raised_runestone_modifier + } + NOT = { scope:recipient.dynasty = var:ancestor_to_bury.dynasty } #We only have to change something if the new holder is of a different dynasty + } + # Actually removed in religious_decision.0312 + custom_tooltip = runestone_grant_title_warning + } + + if = { + limit = { + exists = scope:actor.dynasty + scope:actor.dynasty = { + has_dynasty_perk = ep1_culture_legacy_3 + } + scope:recipient = { + is_playable_character = no + culture != scope:actor.culture + any_in_list = { + list = target_titles + OR = { + tier = tier_county + tier = tier_barony + } + culture = scope:recipient.culture + } + } + } + scope:actor = { + if = { + limit = { + can_add_hook = { + target = scope:recipient + type = favor_hook + } + } + add_hook = { + type = favor_hook + target = scope:recipient + } + } + } + } + + #Feedback for actor + hidden_effect = { + if = { + limit = { + government_has_flag = government_is_nomadic + vassal_limit_available <= 0 + is_independent_ruler = yes + scope:recipient = { + NOT = { is_vassal_of = scope:actor } + } + } + send_interface_toast = { + type = event_toast_effect_neutral + title = grant_titles_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = grant_titles_interaction_notification_effect_7 + } + } + else_if = { + limit = { + any_in_list = { + list = target_titles + count = 1 + NOT = { tier = scope:actor.highest_held_title_tier } + } + NOT = { exists = scope:recipient_is_independent } + scope:recipient = { + any_held_title = { + title_tier > barony + NOT = { + is_in_list = target_titles + } + } + } + } + random_in_list = { + list = target_titles + save_temporary_scope_as = loc_title + } + send_interface_toast = { + type = event_toast_effect_neutral + title = grant_titles_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = grant_titles_interaction_notification_effect_2 + if = { + limit = { + exists = dynasty + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = struggle_grant_titles_diff_faith_culture_gives_prestige + + } + } + dynasty = { + add_dynasty_prestige = minor_dynasty_prestige_gain + } + + } + } + } + else_if = { + limit = { + any_in_list = { + list = target_titles + count > 1 + NOT = { tier = scope:actor.highest_held_title_tier } + } + NOT = { exists = scope:recipient_is_independent } + scope:recipient = { + any_held_title = { + title_tier > barony + NOT = { + is_in_list = target_titles + } + } + } + } + random_in_list = { + list = target_titles + save_temporary_scope_as = loc_title + } + send_interface_toast = { + type = event_toast_effect_neutral + title = grant_titles_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = grant_titles_interaction_notification_effect_3 + } + } + else_if = { + limit = { + exists = scope:recipient_is_independent + } + + random_in_list = { + list = target_titles + save_temporary_scope_as = loc_title + } + send_interface_toast = { + type = event_toast_effect_neutral + title = grant_titles_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = grant_titles_interaction_notification_effect_6 + } + } + else_if = { + limit = { + scope:recipient = { + any_in_list = { #Became independent from you, but still have the same liege + list = target_titles + tier = scope:actor.highest_held_title_tier + } + top_liege = scope:actor.top_liege + } + } + send_interface_toast = { + type = event_toast_effect_neutral + title = grant_titles_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = grant_titles_interaction_notification_effect_5 + } + } + else_if = { + limit = { + scope:recipient = { + any_in_list = { #Became independent + list = target_titles + tier = scope:actor.highest_held_title_tier + } + } + } + send_interface_toast = { + type = event_toast_effect_neutral + title = grant_titles_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = grant_titles_interaction_notification_effect_4 + } + } + else = { + send_interface_toast = { + type = event_toast_effect_neutral + title = grant_titles_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = grant_titles_interaction_notification_effect + } + } + } + } + + hidden_effect = { + # Struggle Catalyst + if = { + limit = { + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Achievements. + scope:actor = { + if = { + limit = { + has_variable_list = candidate_a_knights_tale_achievement + is_target_in_variable_list = { + name = candidate_a_knights_tale_achievement + target = scope:recipient + } + } + set_global_variable = { + name = finished_a_knights_tale_achievement + value = yes + } + } + } + } +} + +#This interaction is referenced in code! If it's renamed you have to ping a coder +grant_title_to_new_random_character_interaction = { + hidden = yes + auto_accept = yes + special_interaction = grant_titles_interaction + use_diplomatic_range = no + + is_valid_showing_failures_only = { + scope:actor = { + this != scope:recipient + any_held_title = { + count > 1 + } + } + } +} + +#be aware that the actual granting of the title happens in code! +grant_governorship_interaction = { + icon = grant_governorship + category = interaction_category_vassal + common_interaction = yes + + desc = grant_governorship_interaction_desc + + special_interaction = grant_governorship_interaction + interface = grant_titles + target_type = title + target_filter = actor_domain_titles + interface_priority = 60 + + # actor character giving the titles + # recipient character receiving the titles + + is_shown = { + scope:actor != scope:recipient + scope:recipient = { + OR = { + target_is_liege_or_above = scope:actor + is_pool_guest_of = scope:actor + } + } + scope:actor = { + government_allows = administrative + highest_held_title_tier >= tier_county + } + + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + scope:recipient = { + NOT = { any_parent = { is_ai = no } } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + custom_tooltip = { + text = grant_governorship_interaction_no_title_tt + any_held_title = { + tier >= tier_county + is_noble_family_title = no + is_landless_type_title = no + NOR = { + this = scope:actor.capital_county + this = scope:actor.primary_title + } + } + } + } + scope:recipient = { + is_adult = yes + NOT = { is_at_war_with = scope:actor } + bp2_valid_for_standard_interactions_trigger = yes + trigger_if = { + limit = { is_ruler = no } + is_imprisoned = no + } + government_allows = administrative + # Only the preferred gender can be appointed unless they hold titles already + trigger_if = { + limit = { + scope:actor = { + OR = { + has_realm_law = male_only_law + has_realm_law = male_preference_law + } + } + is_landed = no + } + custom_tooltip = { + text = recipient_cannot_be_appointed_gender_laws_tt + is_female = no + } + } + trigger_if = { + limit = { + scope:actor = { + OR = { + has_realm_law = female_only_law + has_realm_law = female_preference_law + } + } + is_landed = no + } + custom_tooltip = { + text = recipient_cannot_be_appointed_gender_laws_tt + is_female = yes + } + } + # DON'T TAKE OTHER PLAYERS' ACCLAIMED KNIGHTS + custom_description = { + text = grant_title_stealing_acclaimed_knight + subject = scope:recipient + NOR = { + AND = { + is_acclaimed = yes + liege ?= { + is_ai = no + this != scope:actor + } + } + AND = { + is_acclaimed = yes + scope:actor = { is_ai = yes } + } + } + } + is_clergy = no + # Gallivanters won't accept additional responsibilities. + NOT = { has_trait = gallivanter } + # TGP JAPAN + tgp_japan_grant_titles_restriction_trigger = { + GRANTER = scope:actor + GRANTEE = scope:recipient + } + # Cannot be a minister + custom_tooltip = { + text = recipient_is_a_minister_desc + tgp_is_any_minister = no + } + } + } + + can_send = { + scope:recipient = { + custom_tooltip = { + text = promote_candidate_interaction_existing_holder_tt + this != scope:target.holder + } + + trigger_if = { # Governors can only be appointed to certain titles + limit = { + is_governor = yes + scope:target = { is_noble_family_title = no } # For tooltip reasons, so we don't show more than necessary + } + custom_tooltip = { # Only one province of highest rank + text = only_one_province_of_highest_rank_tt + NAND = { + highest_held_title_tier = scope:target.tier + scope:target.tier >= tier_duchy + scope:target = { # We make an exception if recipient controls at least one de jure county + any_de_jure_county = { + count < 1 + OR = { + holder = scope:recipient + holder = { is_vassal_or_below_of = scope:recipient } + } + } + } + } + } + custom_tooltip = { + text = admin_must_be_de_jure_or_neighboring + any_held_title = { + OR = { + # The target title is part of your de jure structure + is_de_jure_liege_or_above_target = scope:target + target_is_de_jure_liege_or_above = scope:target + # Or is a neighboring county which de jure duchy is not part of your realm + AND = { + NOT = { tier = tier_barony } + any_title_to_title_neighboring_county = { this = scope:target } + scope:target = { + tier = tier_county + duchy = { + OR = { + NOT = { exists = holder } + holder = { + NOR = { + is_vassal_or_below_of = scope:actor + this = scope:actor + } + } + } + } + } + } + } + } + } + } + trigger_if = { # If recipient is landless and only have a family title, target title must be a duchy or above + limit = { + is_landless_ruler = yes + any_held_title = { is_noble_family_title = yes } + scope:target.tier < min_appointment_tier + } + primary_title.tier <= scope:target.tier + } + trigger_if = { # If recipient is a count, they can get only get counties within the same duchy + limit = { + highest_held_title_tier = tier_county + main_administrative_tier > tier_county + is_landed = yes + scope:target.tier = tier_county + } + custom_tooltip = { + text = admin_count_grant_only_counties + any_held_title = { duchy = scope:target.duchy } + } + } + tgp_is_ceremonial_liege_trigger = no + } + } + + can_be_picked_title = { + scope:target = { + is_leased_out = no + + scope:recipient = { + trigger_if = { # Governors can only be appointed to certain titles + limit = { + is_governor = yes + scope:target = { is_noble_family_title = no } # For tooltip reasons, so we don't show more than necessary + } + custom_tooltip = { # Only one province of highest rank + text = only_one_province_of_highest_rank_tt + NAND = { + highest_held_title_tier = scope:target.tier + scope:target.tier >= main_administrative_tier + trigger_if = { + limit = { + scope:target.tier >= tier_duchy + } + scope:target = { # We make an exception if recipient controls at least one de jure county + any_de_jure_county = { + count < 1 + OR = { + holder = scope:recipient + holder = { is_vassal_or_below_of = scope:recipient } + } + } + } + } + } + } + custom_tooltip = { + text = admin_must_be_de_jure_or_neighboring + any_held_title = { + OR = { + # The target title is part of your de jure structure + is_de_jure_liege_or_above_target = scope:target + target_is_de_jure_liege_or_above = scope:target + # Or is a neighboring county which de jure duchy is not part of your realm + AND = { + any_title_to_title_neighboring_county = { this = scope:target } + scope:target = { + tier = tier_county + duchy = { + OR = { + NOT = { exists = holder } + holder = { + NOR = { + is_vassal_or_below_of = scope:actor + this = scope:actor + } + } + } + } + } + } + } + } + } + } + trigger_if = { # If recipient is landless and only have a family title, target title must be a duchy or above + limit = { + is_landless_ruler = yes + any_held_title = { is_noble_family_title = yes } + scope:target.tier < min_appointment_tier + } + primary_title.tier <= scope:target.tier + } + trigger_if = { # If recipient is a count, they can get only get counties within the same duchy + limit = { + highest_held_title_tier = tier_county + main_administrative_tier > tier_county + is_landed = yes + scope:target.tier = tier_county + } + custom_tooltip = { + text = admin_count_grant_only_counties + any_held_title = { duchy = scope:target.duchy } + } + } + tgp_is_ceremonial_liege_trigger = no + } + + custom_tooltip = { + text = GRANT_TITLES_ITEM_CANT_GIVE_ADMIN_PRIMARY + this != scope:actor.capital_province.duchy + } + + trigger_if = { + limit = { is_noble_family_title = yes } + custom_tooltip = { + text = GRANT_TITLES_ITEM_CANT_GIVE_NOBLE_FAMILY + always = no + } + } + trigger_if = { + limit = { exists = var:ceremonial_title } + custom_tooltip = { + text = GRANT_TITLES_ITEM_CANT_GIVE_CEREMONIAL_TITLE + always = no + } + } + + trigger_if = { + limit = { + list_size:target_titles > 0 + } + custom_tooltip = { + text = GRANT_TITLES_ITEM_ADMIN_CANT_GIVE_MORE_THAN_ONE + any_in_list = { + list = target_titles + scope:target ?= this + } + } + } + + trigger_if = { + limit = { scope:target = title:k_fashion } + NOT = { scope:target = title:k_fashion } + } + } + + custom_description = { + text = grant_titles_interaction_can_only_give_diarch_de_jure_liege_to_diarch + subject = scope:actor.diarch + NAND = { + # Only applies if we have an active diarchy. + scope:actor = { has_active_diarchy = yes } + # Now, prevent us from giving away our diarch's land to invalidate them... + scope:target = { + any_dejure_vassal_title_holder = { this = scope:actor.diarch } + # ... _unless_ we're giving it _to_ the diarch. + scope:recipient != scope:actor.diarch + # Plus we only care if the title is below our tier. + tier < scope:actor.highest_held_title_tier + } + } + } + + custom_description = { + text = grant_titles_interaction_title_being_wagered + NOT = { + scope:target = { has_variable = wagered_county } + } + } + } + + auto_accept = yes + + on_auto_accept = { + scope:recipient = { + trigger_event = { + id = char_interaction.0111 + delayed = yes #this has to be delayed in case you grant it to someone that doesn't have an estate yet, for the change_government effect to work and generate the estate + } + } + } + + on_accept = { + if = { + limit = { + scope:recipient = { + is_acclaimed = yes + liege = { + this = scope:actor + } + } + } + custom_tooltip = grant_title_landing_acclaimed_knight_warning + } + + if = { + limit = { + any_in_list = { + list = target_titles + tier >= tier_duchy + title_capital_county = { + culture != scope:actor.culture + culture = scope:recipient.culture + } + NOT = { + recent_history = { + type = granted + years = 10 + } + } + } + } + scope:recipient.culture = { + change_cultural_acceptance = { + target = scope:actor.culture + value = grant_title_cultural_acceptance_impact + desc = cultural_acceptance_gain_granted_title + } + } + } + if = { + limit = { + any_in_list = { + list = target_titles + tier >= tier_county + } + scope:actor.culture = { has_cultural_parameter = landing_house_members_give_prestige } + exists = scope:actor.house + exists = scope:recipient.house + scope:actor.house = scope:recipient.house + } + scope:actor = { + add_prestige = { + value = 0 + every_in_list = { + list = target_titles + limit = { tier = tier_empire } + add = massive_prestige_gain + } + every_in_list = { + list = target_titles + limit = { tier = tier_kingdom } + add = major_prestige_gain + } + every_in_list = { + list = target_titles + limit = { tier = tier_duchy } + add = medium_prestige_gain + } + } + } + } + if = { + limit = { + any_in_list = { + list = target_titles + tier >= tier_county + } + scope:actor.culture = { has_cultural_parameter = landing_house_members_gives_renown } + exists = scope:actor.house + exists = scope:recipient.house + scope:actor.house = scope:recipient.house + } + scope:actor.dynasty = { + add_dynasty_prestige = { + value = 0 + every_in_list = { + list = target_titles + limit = { tier = tier_kingdom } + add = scope:actor.dynasty.major_dynasty_prestige_gain + } + every_in_list = { + list = target_titles + limit = { tier = tier_duchy } + add = scope:actor.dynasty.medium_dynasty_prestige_gain + } + } + } + } + + # Iterate over all given titles + # - Add opinion modifiers + # - Collect titles that discontent reduction can later be derived from + every_in_list = { + list = target_titles + save_temporary_scope_as = this_title + if = { + limit = { + exists = scope:landed_title + } + scope:recipient = { + # Add opinion based on title tier + if = { + limit = { + scope:this_title.tier = tier_county + scope:actor = { min_appointment_tier = tier_county } + } + + hidden_effect = { + add_opinion = { + target = scope:actor + modifier = received_title_county + } + } + + scope:this_title = { add_to_temporary_list = titles_to_grant } + } + + else_if = { + limit = { + scope:this_title.tier = tier_duchy + } + + hidden_effect = { + add_opinion = { + target = scope:actor + modifier = received_title_duchy + } + if = { + limit = { + is_lowborn = yes + } + scope:actor = { + every_vassal = { + vassal_stance = courtly + add_opinion = { + target = scope:actor + modifier = courtly_lowborn_grant_opinion + opinion = -10 #less than usual because admin realms are more tolerant of bureaucratic "new" nobility + } + } + } + } + } + + scope:this_title = { add_to_temporary_list = titles_to_grant } + } + + else_if = { + limit = { + scope:this_title.tier = tier_kingdom + } + + hidden_effect = { + add_opinion = { + target = scope:actor + modifier = received_title_kingdom + } + if = { + limit = { + is_lowborn = yes + } + scope:actor = { + every_vassal = { + vassal_stance = courtly + add_opinion = { + target = scope:actor + modifier = courtly_lowborn_grant_opinion + opinion = -30 #less than usual because admin realms are more tolerant of bureaucratic "new" nobility + } + } + } + } + } + + scope:this_title = { add_to_temporary_list = titles_to_grant } + } + + else_if = { + limit = { + scope:this_title.tier = tier_empire + } + + hidden_effect = { + add_opinion = { + target = scope:actor + modifier = received_title_empire + } + if = { + limit = { + is_lowborn = yes + } + scope:actor = { + every_vassal = { + vassal_stance = courtly + add_opinion = { + target = scope:actor + modifier = courtly_lowborn_grant_opinion + opinion = -30 #less than usual because admin realms are more tolerant of bureaucratic "new" nobility + } + } + } + } + } + + scope:this_title = { add_to_temporary_list = titles_to_grant } + } + } + + #Promised a vassal this title they had a claim on (vassal.2901) + if = { + limit = { + scope:actor = { + exists = var:was_promised_title + var:was_promised_title = scope:recipient + } + } + if = { + limit = { + scope:recipient = { + exists = var:promised_title + } + scope:landed_title = scope:recipient.var:promised_title + } + scope:actor = { + trigger_event = { + id = vassal.2910 + days = { 7 14 } + } + } + } + } + } + if = { + limit = { + scope:recipient = { + has_trait = bastard + } + } + custom_tooltip = grant_title_to_bastard_dynasty_warning + } + } # every_in_list + + # The accumulated discontent reduction of the recipient + scope:recipient = { + if = { + limit = { + is_a_faction_member = yes + } + add_joined_faction_discontent = grant_title_opinion_sum_discontent_calc + } + } + + # Show stacked opinion gain + if = { + limit = { + any_in_list = { + list = target_titles + tier = tier_empire + } + } + custom_tooltip = grant_title_modifier_stack_empires + } + if = { + limit = { + any_in_list = { + list = target_titles + tier = tier_kingdom + } + } + custom_tooltip = grant_title_modifier_stack_kingdoms + } + if = { + limit = { + any_in_list = { + list = titles_to_grant + tier = tier_duchy + } + } + custom_tooltip = grant_title_modifier_stack_duchies + } + if = { + limit = { + any_in_list = { + list = titles_to_grant + tier = tier_county + scope:actor = { min_appointment_tier = tier_county } + } + } + custom_tooltip = grant_title_modifier_stack_counties + } + + if = { + limit = { + trigger_if = { + limit = { scope:actor = { is_ai = yes } } + scope:actor = { + any_vassal = { + vassal_stance = courtly + } + } + } + scope:recipient = { + is_lowborn = yes + } + any_in_list = { + list = titles_to_grant + tier >= tier_county + } + } + custom_tooltip = grant_title_modifier_courtly_lowborn_grant_penalty + } + if = { + limit = { + scope:recipient = { is_a_faction_member = yes } + } + custom_tooltip = grant_title_modifier_stack_discontent + } + + # Jealousy check + if = { + limit = { + any_in_list = { + list = titles_to_grant + any_claimant = { grant_title_rivalry_trigger = yes } + } + } + hidden_effect = { + random = { + chance = 25 + ordered_in_list = { + list = titles_to_grant + limit = { + any_claimant = { grant_title_rivalry_trigger = yes } + } + order_by = tier + save_scope_as = claim_title + ordered_claimant = { + limit = { grant_title_rivalry_trigger = yes } + order_by = primary_title.tier + save_scope_as = claim_vassal + if = { + limit = { + scope:recipient = { is_lowborn = yes } + } + scope:recipient = { save_scope_as = lowborn_scope } + } + else_if = { + limit = { + scope:recipient = { has_claim_on = scope:claim_title } + } + scope:recipient = { save_scope_as = claimant_scope } + } + scope:actor = { + trigger_event = { + id = bp1_yearly.8070 + days = 5 + } + } + } + } + } + } + } + + scope:actor = { + # Maintenance for runestones + if = { + limit = { + # Use expanded version if we have FP1. + has_fp1_dlc_trigger = yes + fp1_remove_stele_new_holder_trigger = { + TITLE = scope:target + PREVIOUS_HOLDER = scope:actor + NEW_HOLDER = scope:recipient + } + } + # Actually removed in fp1_other_decisions.0113 + custom_tooltip = runestone_grant_title_warning + } + else_if = { + limit = { + scope:target = { + exists = var:ancestor_to_bury + has_county_modifier = county_raised_runestone_modifier + } + NOT = { scope:recipient.dynasty = var:ancestor_to_bury.dynasty } #We only have to change something if the new holder is of a different dynasty + } + # Actually removed in religious_decision.0312 + custom_tooltip = runestone_grant_title_warning + } + + if = { + limit = { + dynasty ?= { has_dynasty_perk = ep1_culture_legacy_3 } + scope:recipient = { + is_playable_character = no + culture != scope:actor.culture + any_in_list = { + list = target_titles + OR = { + tier = tier_county + tier = tier_barony + } + culture = scope:recipient.culture + } + } + } + if = { + limit = { + can_add_hook = { + target = scope:recipient + type = favor_hook + } + } + add_hook = { + type = favor_hook + target = scope:recipient + } + } + } + + #Feedback for actor + hidden_effect = { + if = { + limit = { + NOT = { exists = scope:recipient_is_independent } + scope:recipient = { + any_held_title = { + title_tier > barony + NOT = { is_in_list = target_titles } + } + } + } + set_variable = { + name = lower_count + value = { + value = -1 + every_in_list = { + list = target_titles + limit = { + NOT = { tier = scope:actor.highest_held_title_tier } + } + add = 1 + } + } + } + save_scope_value_as = { + name = equal_count + value = { + value = 0 + every_in_list = { + list = target_titles + limit = { tier = scope:actor.highest_held_title_tier } + add = 1 + } + } + } + ordered_in_list = { + list = target_titles + order_by = tier + save_temporary_scope_as = loc_title + } + send_interface_toast = { + type = event_toast_effect_neutral + title = grant_governorship_interaction_notification + left_icon = scope:recipient + right_icon = scope:loc_title + if = { + limit = { scope:actor.var:lower_count ?= 0 } + custom_tooltip = grant_governorship_interaction_notification_effect_2 + } + else_if = { + limit = { + exists = scope:actor.var:lower_count + scope:actor.var:lower_count > 1 + } + custom_tooltip = grant_governorship_interaction_notification_effect_3 + } + else_if = { + limit = { scope:actor.var:lower_count ?= 1 } + custom_tooltip = grant_governorship_interaction_notification_effect_4 + } + else_if = { + limit = { + scope:equal_count >= 1 + scope:recipient.top_liege ?= scope:actor.top_liege + } + custom_tooltip = grant_titles_interaction_notification_effect_5 + } + else = { custom_tooltip = grant_titles_interaction_notification_effect } + if = { + limit = { + exists = dynasty + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = struggle_grant_titles_diff_faith_culture_gives_prestige + } + } + dynasty = { add_dynasty_prestige = minor_dynasty_prestige_gain } + } + remove_variable = lower_count + } + } + } + } + + hidden_effect = { + # Struggle Catalyst + if = { + limit = { + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Achievements. + scope:actor = { + if = { + limit = { + has_variable_list = candidate_a_knights_tale_achievement + is_target_in_variable_list = { + name = candidate_a_knights_tale_achievement + target = scope:recipient + } + } + set_global_variable = { + name = finished_a_knights_tale_achievement + value = yes + } + } + } + # TGP Catalyst - triggered in on_title_gain + if = { + limit = { + title:h_china.holder ?= scope:actor + any_in_list = { + list = target_titles + OR = { + AND = { + tier = tier_empire + scope:recipient.merit_level < 7 + } + AND = { + tier = tier_kingdom + scope:recipient.merit_level < 5 + } + AND = { + tier = tier_duchy + scope:recipient.merit_level < 3 + } + AND = { + tier = tier_county + scope:recipient.merit_level < 1 + } + } + } + } + show_as_tooltip = { + situation:dynastic_cycle ?= { + if = { + limit = { + situation_top_has_catalyst = catalyst_hegemon_appointing_low_merit_governor + title:h_china.holder = scope:actor + } + trigger_situation_catalyst = { + catalyst = catalyst_hegemon_appointing_low_merit_governor + character = scope:recipient + } + } + } + } + } + } +} diff --git a/common/character_interactions/00_invite_agent_to_scheme.txt b/common/character_interactions/00_invite_agent_to_scheme.txt new file mode 100644 index 00000000..2723d6ab --- /dev/null +++ b/common/character_interactions/00_invite_agent_to_scheme.txt @@ -0,0 +1,844 @@ + +invite_agent_to_scheme_interaction = { + special_interaction = invite_to_scheme_interaction + hidden = yes + + # Delaying the response makes it possible to invite multiple agents to the same slot. + ai_instant_response = yes + + on_accept = { + scope:recipient = { + if = { + limit = { + OR = { + always = scope:mandala_trickster + always = scope:gift + always = scope:gift_significant + always = scope:offer_hook + always = scope:offer_hook_strong + always = scope:hook + always = scope:opportunities_t1 + always = scope:opportunities_t2 + always = scope:prestige + always = scope:influence + always = scope:council_rights + always = scope:de_jure_title + always = scope:claimed_title + always = scope:piety + always = scope:herd + var:devotee_agent_var ?= scope:actor + } + } + force_add_to_agent_slot = { + agent_slot = scope:agent_slot + years = 5 + } + } + else = { add_to_agent_slot = scope:agent_slot } + } + scope:actor = { + # No bribe. + ## We hack this in to stop the window jumping around as you add or remove bribes. + if = { + limit = { + NOR = { + always = scope:mandala_trickster + always = scope:gift + always = scope:gift_significant + always = scope:offer_hook + always = scope:offer_hook_strong + always = scope:hook + always = scope:opportunities_t1 + always = scope:opportunities_t2 + always = scope:prestige + always = scope:influence + always = scope:council_rights + always = scope:de_jure_title + always = scope:claimed_title + always = scope:piety + always = scope:herd + } + } + custom_tooltip = offer_bribes.tt.window_jump_fix + } + # Mandala Trickster + if = { + limit = { always = scope:mandala_trickster } + add_piety = { + value = trickster_mandala_force_agent_bribe_value + multiply = -1 + } + } + # Bribe + if = { + limit = { always = scope:gift } + pay_short_term_gold = { + gold = bribe_value + target = scope:recipient + } + stress_impact = { greedy = minor_stress_impact_gain } + } + # Big Bribe + if = { + limit = { always = scope:gift_significant } + pay_short_term_gold = { + gold = greater_bribe_value + target = scope:recipient + } + stress_impact = { greedy = medium_stress_impact_gain } + } + # Offer Hook + if = { + limit = { always = scope:offer_hook } + stress_impact = { + base = minor_stress_impact_gain + paranoid = major_stress_impact_gain + } + scope:recipient = { + add_hook = { + type = favor_hook + target = scope:actor + } + } + } + # Offer Strong Hook + if = { + limit = { always = scope:offer_hook_strong } + stress_impact = { base = major_stress_impact_gain } + scope:recipient = { + add_hook = { + type = strong_favor_hook + target = scope:actor + } + } + } + # Use Hook + if = { + limit = { always = scope:hook } + use_hook = scope:recipient + } + # Burn Opportunities + if = { + limit = { always = scope:opportunities_t1 } + custom_tooltip = { + text = spend_agent_charges.tt.t1 + scope:scheme = { + change_opportunities = { + value = invite_agent_opportunities_t1_value + multiply = -1 + } + } + } + } + # Burn More Opportunities + if = { + limit = { always = scope:opportunities_t2 } + custom_tooltip = { + text = spend_agent_charges.tt.t2 + scope:scheme = { + change_opportunities = { + value = invite_agent_opportunities_t2_value + multiply = -1 + } + } + } + } + # Prestige + if = { + limit = { always = scope:prestige } + add_prestige = { + value = prestige_bribe_value + multiply = -1 + } + scope:recipient = { add_prestige = prestige_bribe_value } + } + # Influence + if = { + limit = { always = scope:influence } + change_influence = { + value = influence_bribe_value + multiply = -1 + } + scope:recipient = { change_influence = influence_bribe_value } + } + # Council Rights + if = { + limit = { always = scope:council_rights } + scope:recipient = { + vassal_contract_set_obligation_level = { + type = council_rights + level = 1 + } + set_subject_contract_modification_blocked = yes + } + } + create_title_and_vassal_change = { + type = granted + save_scope_as = change + } + # De Jure County + if = { + limit = { always = scope:de_jure_title } + random_held_title = { + limit = { + actor_has_valid_de_jure_enticement_county_trigger = yes + any_this_title_or_de_jure_above = { + holder ?= { this = scope:recipient } + } + } + change_title_holder = { + holder = scope:recipient + change = scope:change + } + } + } + # Claimed County + if = { + limit = { always = scope:claimed_title } + random_held_title = { + limit = { + actor_has_valid_claimed_enticement_county_trigger = yes + scope:recipient = { has_claim_on = prev } + } + change_title_holder = { + holder = scope:recipient + change = scope:change + } + } + } + resolve_title_and_vassal_change = scope:change + # Piety + if = { + limit = { always = scope:piety } + scope:actor = { + add_piety = { + value = piety_bribe_value + multiply = -1 + } + } + scope:recipient = { add_piety = piety_bribe_value } + } + # Herd + if = { + limit = { always = scope:herd } + if = { + limit = { + scope:recipient.domicile ?= { + herd > 0 + } + } + scope:actor = { + pay_herd = { + target = scope:recipient + value = domicile.herd_bribe_value + } + } + } + else = { + scope:actor = { custom_tooltip = scheme_change_herd_value } + hidden_effect = { + scope:actor.domicile = { + change_herd = { + value = herd_bribe_value + multiply = -1 + } + } + scope:recipient = { + add_gold = { + value = domicile.herd_bribe_value + multiply = 0.1 + } + } + } + } + } + } + # Stress. + ## For scope: recipient. + scope:recipient = { + if = { + limit = { + scope:scheme = { is_scheme_category = contract } + } + # Honourable characters don't like being forced into criminal schemes. + if = { + limit = { + OR = { + has_trait = just + has_trait = compassionate + } + scope:scheme.task_contract ?= { is_criminal = yes } + } + add_opinion = { + target = scope:actor + modifier = forced_me_to_help_crimes_opinion + opinion = -20 + } + stress_impact = { + just = minor_stress_impact_gain + compassionate = miniscule_stress_impact_gain + } + } + # Lazy characters don't like being made to work at all. + else_if = { + limit = { has_trait = lazy } + add_opinion = { + target = scope:actor + modifier = forced_me_to_work_opinion + opinion = -10 + } + stress_impact = { lazy = miniscule_stress_impact_gain } + } + } + } + } + + ai_accept = { + base = 0 + scheme_modifier = { + object = scope:scheme + target = scope:recipient + } + # You should not add modifiers here! If you want to add modifiers, they should be added to either: + ## - ai_agent_join_chance_hostile_general_suite_modifier + ## - ai_agent_join_chance_personal_general_suite_modifier + } + + auto_accept = { + trigger_if = { + limit = { + scope:recipient.var:devotee_agent_var ?= scope:actor # They are a devotee of yours + } + custom_tooltip = devotee_agent_desc + } + trigger_else_if = { + limit = { scope:mandala_trickster = yes } + custom_tooltip = { + text = SCHEME_AGENT_MANDALA_TRICKSTER + always = yes + } + } + trigger_else_if = { + limit = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + always = yes + } + } + trigger_else_if = { + limit = { + scope:scheme = { is_scheme_category = contract } + } + # Should be synced with the modifiers in ai_agent_join_chance_laamp_contract_modifier, else agents'll leave the scheme immediately after joining. + scope:recipient = { + is_courtier_of = scope:actor + NOR = { + has_relation_rival = scope:actor + custom_tooltip = { + text = invite_agent_to_scheme_interaction.tt.no_stooges + AND = { + scope:actor = { has_court_position = stooge_camp_officer } + is_court_position_employer = { + court_position = stooge_camp_officer + who = scope:actor + } + } + } + } + } + } + trigger_else = { always = no } + } + + options_heading = invite_agent_to_scheme_interaction.t.options_header + # Everyone + ## Spend opportunities. + ### x1. + send_option = { + flag = opportunities_t1 + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = offer_opportunities.tt.need_an_opportunity.t1 + scope:scheme = { scheme_agent_charges >= invite_agent_opportunities_t1_value } + } + custom_tooltip = { + text = offer_opportunities.tt.cannot_offer_multiple_sets + scope:opportunities_t2 = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_OPPORTUNITIES_T1 + } + ### x3. + send_option = { + flag = opportunities_t2 + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = offer_opportunities.tt.need_an_opportunity.t2 + scope:scheme = { scheme_agent_charges >= invite_agent_opportunities_t2_value } + } + custom_tooltip = { + text = offer_opportunities.tt.cannot_offer_multiple_sets + scope:opportunities_t1 = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_OPPORTUNITIES_T2 + } + ## Mandala Trickery Aspect + send_option = { + flag = mandala_trickster + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + scope:actor = { + government_has_flag = government_is_mandala + house = { has_house_head_parameter = unlock_force_agent_using_piety } + is_house_head = yes + } + } + is_valid = { + scope:actor.piety >= trickster_mandala_force_agent_bribe_value + custom_tooltip = { + text = offer_gold.tt.cannot_offer_both_bribes + scope:piety = no + } + custom_tooltip = { + text = not_two_overrides + trigger_if = { + limit = { scope:hook = yes } + NOT = { + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_MANDALA_TRICKSTER + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.piety >= trickster_mandala_force_agent_bribe_value } + desc = SCHEME_AGENT_MANDALA_TRICKSTER_VALID + } + } + } + ## Gold + send_option = { + flag = gift + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.gold >= bribe_value + custom_tooltip = { + text = offer_gold.tt.cannot_offer_both_bribes + scope:gift_significant = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_GOLD + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.gold >= bribe_value } + desc = SCHEME_AGENT_GOLD_VALID + } + } + } + ## Even more gold + send_option = { + flag = gift_significant + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.gold >= greater_bribe_value + custom_tooltip = { + text = offer_gold.tt.cannot_offer_both_bribes + scope:gift = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_GOLD_SIGNIFICANT + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.gold >= greater_bribe_value } + desc = SCHEME_AGENT_GOLD_SIGNIFICANT_VALID + } + } + } + ## Offer a hook + send_option = { + flag = offer_hook + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = offer_hook.tt.cannot_offer_both_hooks + scope:offer_hook_strong = no + } + NOT = { + scope:recipient = { has_hook = scope:actor } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_HOOK + } + ## Offer a strong hook + send_option = { + flag = offer_hook_strong + is_shown = { + scope:actor = { has_trait_with_flag = can_offer_strong_hook_to_agents } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = offer_hook.tt.cannot_offer_both_hooks + scope:offer_hook = no + } + NOT = { + scope:recipient = { has_strong_hook = scope:actor } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_HOOK_STRONG + } + ## Use hook. + ### Weak hook bonus is added through the scheme's agent join chance. + ### Strong hook is in the auto_accept block. + send_option = { + flag = hook + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + custom_tooltip = { + text = not_two_overrides + trigger_if = { + limit = { + scope:actor = { has_strong_hook = scope:recipient } + } + scope:mandala_trickster = no + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_HOOK_EXPLICIT + } + # Rulers + ## Prestige + send_option = { + flag = prestige + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.prestige >= prestige_bribe_value + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_PRESTIGE + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.prestige >= prestige_bribe_value } + desc = SCHEME_AGENT_PRESTIGE_VALID + } + } + } + ## Influence + send_option = { + flag = influence + is_shown = { + scope:actor.top_liege ?= scope:recipient.top_liege + scope:actor = { government_allows = administrative } + scope:recipient = { + OR = { + government_allows = administrative + host = { government_allows = administrative } + AND = { + highest_held_title_tier = tier_barony + liege = { government_allows = administrative } + } + } + } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.influence >= influence_bribe_value + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_INFLUENCE + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.influence >= influence_bribe_value } + desc = SCHEME_AGENT_INFLUENCE_VALID + } + } + } + ## Council Rights + send_option = { + flag = council_rights + is_shown = { + would_actor_consider_dramatic_enticement_trigger = yes + scope:recipient.liege ?= scope:actor + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:recipient = { vassal_contract_has_modifiable_obligations = yes } + NOT = { + scope:recipient = { has_trait = lazy } + } + custom_tooltip = { + text = council_rights.tt.already_has_council_rights + scope:recipient = { + NOR = { + vassal_contract_has_flag = can_demand_council_seat + vassal_contract_has_flag = can_demand_kurultai_seat + } + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_COUNCIL_RIGHTS + } + ## De jure county of theirs you hold. + send_option = { + flag = de_jure_title + is_shown = { + would_actor_consider_dramatic_enticement_trigger = yes + scope:recipient = { + is_landed = yes + any_liege_or_above = { this = scope:actor } + } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = de_jure_title.tt.no_suitable_county + scope:actor = { + any_held_title = { + actor_has_valid_de_jure_enticement_county_trigger = yes + any_this_title_or_de_jure_above = { + holder ?= { this = scope:recipient } + } + } + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_DE_JURE_TITLE + } + # Landless Chars + ## County they hold a claim to that you hold. + send_option = { + flag = claimed_title + is_shown = { + would_actor_consider_dramatic_enticement_trigger = yes + trigger_if = { + limit = { + exists = scope:scheme.scheme_target_character + } + scope:recipient = { + is_ruler = no + # And you don't want them _because_ they're in your target's court. + host != scope:scheme.scheme_target_character + } + } + trigger_if = { + limit = { + exists = scope:scheme.scheme_target_title + } + scope:recipient = { + is_ruler = no + # And you don't want them _because_ they're in your target's court. + host != scope:scheme.scheme_target_title.holder + } + } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:recipient = { + trigger_if = { + limit = { + any_claim = { } + } + custom_tooltip = { + text = claimed_title.tt.no_valid_county + any_claim = { actor_has_valid_claimed_enticement_county_trigger = yes } + } + } + trigger_else = { + custom_tooltip = { + text = claimed_title.tt.no_claims + always = no + } + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_CLAIMED_TITLE + } + # Nomad Chars + ## Use Herd + send_option = { + flag = herd + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + scope:actor = { + government_has_flag = government_is_nomadic + is_ai = no + } + scope:recipient = { + government_has_flag = government_is_nomadic + exists = domicile + } + } + is_valid = { + scope:actor.domicile.herd >= herd_bribe_value + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_HERD + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.domicile.herd >= herd_bribe_value } + desc = SCHEME_AGENT_HERD_VALID + } + } + } + # Cofaithists + ## Piety + send_option = { + flag = piety + is_shown = { + trigger_if = { #Mandala override + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + scope:actor = { + house = { has_house_head_parameter = unlock_agent_piety_bribe } + is_house_head = yes + } + } + trigger_else = { #Everyone else + ## Target amenable to this argument. + scope:recipient = { + OR = { + has_trait = devoted + has_trait = zealous + has_council_position = councillor_court_chaplain + government_has_flag = government_is_theocracy + } + } + ## In-group out-group requirements. + OR = { + ## Either we share a faith. + scope:actor.faith = scope:recipient.faith + ## Or our faiths *really* get along. + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value <= faith_fully_accepted_level + } + } + } + } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.piety >= piety_bribe_value + trigger_if = { #Mandala override + limit = { + scope:actor = { + NOT = { government_has_flag = government_is_mandala } + } + } + NOT = { + scope:recipient = { has_trait = cynical } + } + } + custom_tooltip = { + text = offer_gold.tt.cannot_offer_both_bribes + scope:mandala_trickster = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_PIETY + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.piety >= piety_bribe_value } + desc = SCHEME_AGENT_PIETY_VALID + } + } + } + send_options_exclusive = no +} diff --git a/common/character_interactions/00_marriage_interactions.txt b/common/character_interactions/00_marriage_interactions.txt index a27e8af3..d32e7b30 100644 --- a/common/character_interactions/00_marriage_interactions.txt +++ b/common/character_interactions/00_marriage_interactions.txt @@ -3224,7 +3224,7 @@ offer_concubine = { } } scope:recipient = { - NOT = { government_has_flag = government_is_herder } + #NOT = { government_has_flag = government_is_true_herder } allowed_concubines = yes is_adult = yes } diff --git a/common/character_interactions/00_modifiy_vassal_contract.txt b/common/character_interactions/00_modifiy_vassal_contract.txt new file mode 100644 index 00000000..74386696 --- /dev/null +++ b/common/character_interactions/00_modifiy_vassal_contract.txt @@ -0,0 +1,2464 @@ +liege_modify_vassal_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + icon = icon_contract_modification_single + interface_priority = 5 + + send_name = "modify_vassal_contract_interaction_SEND" + desc = liege_modify_vassal_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL + + is_shown = { + scope:recipient = { + this != scope:actor + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + vassal_contract_has_modifiable_obligations = yes + NOT = { government_allows = administrative } + NOT = { government_has_flag = government_is_nomadic } + } + } + + is_valid_showing_failures_only = { + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + can_send = { + #Mandala gets special treatment + trigger_if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + custom_tooltip = { + text = liege_modify_vassal_contract_mandala_cooldown + NOT = { + scope:recipient = { var:liege_recently_adjusted_mandala_vassal_contract ?= scope:actor } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + + custom_description = { + text = "liege_modify_vassal_contract_cannot_exceed_tyranny_cap" + object = scope:actor + NOT = { + vassal_obligation_increase_tyranny_gain_multiplier > 1 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_vassal + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_vassal > 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_vassal + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_vassal = 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + trigger_else = {} # Otherwise we're fine! + } + } + #The rest + trigger_else_if = { #If they're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + + custom_description = { + text = "liege_modify_vassal_contract_cannot_exceed_tyranny_cap" + object = scope:actor + NOT = { + vassal_obligation_increase_tyranny_gain_multiplier > 1 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_vassal + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_vassal > 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_vassal + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_vassal = 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + trigger_else = {} # Otherwise we're fine! + } + } + } + + auto_accept = yes + on_accept = { + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + if = { + limit = { + catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + + # Improving contract catalyst + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal > 0 + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Enact changes. + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + # Add tyranny for each level increased. Can spend one hook to avoid one level of tyranny hit. + add_tyranny = vassal_obligation_increase_tyranny_gain + if = { + limit = { vassal_obligation_increase_tyranny_gain != 0 } + stress_impact = { + just = medium_stress_impact_gain + generous = medium_stress_impact_gain + } + } + if = { + limit = { + always = scope:hook + } + use_hook = scope:recipient + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + scope:recipient = { + hidden_effect = { + set_subject_contract_modification_blocked = yes + } + set_variable = { + name = liege_recently_adjusted_mandala_vassal_contract + value = scope:actor + years = mandala_vassal_obligation_cooldown_years + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no +} + +vassal_modify_vassal_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + icon = icon_contract_modification_single + + send_name = "modify_vassal_contract_interaction_SEND" + desc = vassal_modify_vassal_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_LIEGE + + redirect = { + # need to reverse the role for the UI to work properly + scope:recipient = { + save_scope_as = secondary_recipient + } + scope:actor = { + save_scope_as = recipient + } + + scope:secondary_recipient = { + save_scope_as = actor + } + } + + is_shown = { + scope:recipient = { + top_liege != this + this != scope:actor + liege ?= scope:actor # this excludes tributary contracts by default + vassal_contract_has_modifiable_obligations = yes + NOT = { government_allows = administrative } + NOT = { government_has_flag = government_is_nomadic } + } + } + + is_valid_showing_failures_only = { + NOT = { scope:recipient = { is_at_war_with = scope:actor } } + } + + can_send = { + #Mandala gets special treatment + trigger_if = { + limit = { + scope:recipient = { government_has_flag = government_is_mandala } + } + custom_tooltip = { + text = vassal_modify_vassal_contract_mandala_cooldown + NOT = { + scope:actor = { var:vassal_recently_adjusted_mandala_vassal_contract ?= scope:recipient } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + + scope:recipient = { + # Must be an even trade overall + trigger_if = { + limit = { + count_obligation_improvements_for_vassal_include_hook >= 0 + } + custom_description = { + text = "vassal_modify_vassal_contract_cannot_increase_obligation_level" + object = scope:actor + value = count_obligation_improvements_for_vassal_include_hook + count_obligation_improvements_for_vassal_include_hook = 0 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + } + } + #The rest + trigger_else_if = { #If you're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + + scope:recipient = { + # Must be an even trade overall + trigger_if = { + limit = { + count_obligation_improvements_for_vassal_include_hook >= 0 + } + custom_description = { + text = "vassal_modify_vassal_contract_cannot_increase_obligation_level" + object = scope:actor + value = count_obligation_improvements_for_vassal_include_hook + count_obligation_improvements_for_vassal_include_hook = 0 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + } + } + } + + auto_accept = yes + + on_accept = { + # Enact changes. + scope:recipient = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:actor + if = { + limit = { always = scope:hook } + use_hook = scope:actor + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + hidden_effect = { set_subject_contract_modification_blocked = yes } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + } + } + } + scope:actor = { + set_variable = { + name = vassal_recently_adjusted_mandala_vassal_contract + value = scope:recipient + years = mandala_vassal_obligation_cooldown_years + } + } + # If there's a diarch involved, and they called in their change, that gets flagged. + diarch_changed_own_contract_effect = yes + + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:recipient + } + } + } + } + # Improving contract catalyst + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal > 0 + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_option = { + is_valid = { + scope:recipient = { + has_usable_hook = scope:actor + } + } + flag = hook + localization = SCHEME_HOOK + } + send_option = { + is_shown = { + scope:recipient = { is_diarch_of_target = scope:actor } + scope:actor = { has_diarchy_parameter = diarch_gets_a_free_change_on_vassal_contract } + } + is_valid = { + scope:recipient = { + trigger_if = { + limit = { has_variable_list = diarch_contract_rights_used_list } + NOT = { + is_target_in_variable_list = { + name = diarch_contract_rights_used_list + target = scope:actor + } + } + } + } + scope:actor = { has_diarchy_active_parameter = diarch_gets_a_free_change_on_vassal_contract } + } + flag = diarch + localization = CALL_IN_DIARCH_RIGHTS + } + should_use_extra_icon = { + scope:recipient = { has_usable_hook = scope:actor } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no +} + +ai_only_liege_modify_vassal_contract_interaction = { + category = interaction_category_vassal + send_name = "modify_vassal_contract_interaction_SEND" + desc = liege_modify_vassal_contract_interaction_desc + + auto_accept = yes + + is_shown = { + scope:actor = { + is_ai = yes + has_usable_hook = scope:recipient + } + scope:recipient = { + this != scope:actor + NOT = { + has_strong_hook = scope:actor + } + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + vassal_contract_can_be_modified_trigger = yes + does_ai_liege_in_vassal_contract_desire_obligation_change = yes + } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + on_accept = { + scope:actor = { + stress_impact = { + generous = minor_stress_impact_gain + } + } + + scope:recipient = { + set_subject_contract_modification_blocked = yes + trigger_event = char_interaction.0250 + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + ai_potential = { + trigger_if = { + limit = { + NOT = { government_allows = administrative } + } + is_at_war = no + } + } + + ai_targets = { + ai_recipients = vassals + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 12 + kingdom = 24 + empire = 24 + hegemony = 36 + } + + ai_will_do = { + base = 100 + + modifier = { + factor = 0 + scope:recipient = { + OR = { + AND = { + scope:actor = { + ai_greed <= high_positive_ai_value + } + has_relation_friend = scope:actor + } + has_relation_best_friend = scope:actor + has_relation_soulmate = scope:actor + } + } + } + } +} + +# AI only interaction for specifically Admin Province obligations +ai_only_liege_modify_vassal_contract_admin_province_interaction = { + category = interaction_category_vassal + send_name = "modify_vassal_contract_interaction_SEND" + desc = liege_modify_vassal_contract_interaction_desc + + auto_accept = yes + + is_shown = { + scope:actor = { + is_ai = yes + AND = { + government_has_flag = government_uses_admin_province_obligations + scope:recipient = { government_has_flag = government_uses_admin_province_obligations } + } + } + scope:recipient = { + this != scope:actor + NOT = { + has_strong_hook = scope:actor + } + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + government_has_flag = government_uses_admin_province_obligations + + does_ai_liege_in_vassal_contract_desire_admin_province_obligation_change = yes + } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + on_accept = { + scope:actor = { + stress_impact = { + generous = minor_stress_impact_gain + } + } + + scope:recipient = { + trigger_event = char_interaction.0253 + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + ai_targets = { + ai_recipients = vassals + max = 10 + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 6 + empire = 6 + hegemony = 3 + } + + is_available = { + # This also blocks non-admin govs with admin vassals from changing province obligations... but we're OK with that. + government_has_flag = government_uses_admin_province_obligations + } + + ai_will_do = { + base = 100 + } +} + +ai_only_vassal_modify_vassal_contract_interaction = { + category = interaction_category_vassal + send_name = "modify_vassal_contract_interaction_SEND" + desc = vassal_modify_vassal_contract_interaction_desc + + auto_accept = yes + + is_shown = { + scope:actor = { + is_ai = yes + top_liege != this + has_usable_hook = scope:recipient + vassal_contract_can_be_modified_trigger = yes + does_ai_vassal_in_vassal_contract_desire_obligation_change = yes + } + scope:recipient = { + this != scope:actor + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + NOT = { + has_strong_hook = scope:actor + } + } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + on_accept = { + scope:recipient = { + trigger_event = char_interaction.0251 + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + ai_potential = { + always = yes + } + + ai_targets = { + ai_recipients = liege + } + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 24 + kingdom = 24 + empire = 36 + hegemony = 0 + } + + ai_will_do = { + base = 100 + + modifier = { + factor = 0 + scope:recipient = { + OR = { + AND = { + scope:actor = { + ai_greed <= high_positive_ai_value + } + has_relation_friend = scope:actor + } + has_relation_best_friend = scope:actor + has_relation_soulmate = scope:actor + } + } + } + } +} + +# Separate interactions are set up for Administrative - This is to help with localisation and some of the effects +admin_liege_modify_vassal_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + interface_priority = 1000 + icon = icon_contract_modification_single + + send_name = admin_liege_modify_vassal_contract_interaction + desc = admin_liege_modify_vassal_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL + + is_shown = { + scope:recipient = { + this != scope:actor + OR = { + is_landed = yes + is_councillor_of = scope:actor.top_liege + } + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + vassal_contract_has_modifiable_obligations = yes + government_allows = administrative + any_held_title = { + OR = { + tier >= holder.main_administrative_tier + tier >= holder.min_title_maa_tier + } + is_noble_family_title = no + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + tgp_is_ceremonial_liege_trigger = no + } + } + + can_send = { + trigger_if = { #If they're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + # There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers + trigger_if = { + limit = { + scope:recipient = { + has_variable = admin_contract_cooldown + } + } + custom_tooltip = { + text = admin_contract_cooldown_desc + scope:recipient = { + NOT = { has_variable = admin_contract_cooldown } + } + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + } + } + } + + auto_accept = yes + on_accept = { + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + if = { + limit = { + catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + + # Improving contract catalyst + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal > 0 + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Enact changes. + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + + scope:recipient = { + hidden_effect = { + set_variable = { + name = admin_contract_cooldown + value = yes + years = admin_contract_cooldown_value + } + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + + # Update the succession law for celestial province types if applicable - That way, we don't have to wait until the current law invalidates. + if = { + limit = { + government_has_flag = government_is_celestial + scope:obligation.vassal_contract_type = vassal_contract:celestial_provinces + } + + if = { + limit = { + OR = { + vassal_contract_has_flag = celestial_province_military + vassal_contract_has_flag = celestial_province_protectorate + } + NOT = { has_realm_law = celestial_military_appointment_succession_law } + } + add_realm_law_skip_effects = celestial_military_appointment_succession_law + } + else_if = { + limit = { + OR = { + vassal_contract_has_flag = celestial_province_standard + vassal_contract_has_flag = celestial_province_industrial + vassal_contract_has_flag = celestial_province_metropolitan + } + NOT = { has_realm_law = celestial_appointment_succession_law } + } + add_realm_law_skip_effects = celestial_appointment_succession_law + } + } + } + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_options_exclusive = no +} + +admin_vassal_modify_vassal_contract_interaction = { + special_interaction = vassal_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + interface_priority = 65 + common_interaction = yes + icon = icon_contract_modification_single + + filter_tags = { admin_liege rep_liege } + + send_name = "admin_vassal_modify_vassal_contract_interaction_send" + desc = admin_vassal_modify_vassal_contract_interaction_desc + + is_shown = { + scope:actor = { + top_liege != this + this != scope:recipient + liege ?= scope:recipient # this excludes tributary contracts by default + vassal_contract_has_modifiable_obligations = yes + government_allows = administrative + tgp_is_ceremonial_liege_trigger = no + } + } + + is_valid_showing_failures_only = { + scope:actor = { + custom_tooltip = { + text = admin_vassal_not_holding_a_theme_desc + any_held_title = { + OR = { + tier >= holder.main_administrative_tier + tier >= holder.min_title_maa_tier + } + is_noble_family_title = no + } + } + NOT = { is_at_war_with = scope:recipient } + } + } + + can_send = { + trigger_if = { #If you're blocked we don't want to show anything else (we don't really use this for admin, but we'll keep the logic, just in case) + limit = { + scope:actor = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:actor = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + # There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers + trigger_if = { + limit = { + scope:actor = { + has_variable = admin_contract_cooldown + } + } + custom_tooltip = { + text = admin_contract_cooldown_desc_vassal + scope:actor = { + NOT = { has_variable = admin_contract_cooldown } + } + } + } + trigger_else = { + custom_tooltip = { + text = admin_contract_request_cooldown_desc + scope:actor = { + NOT = { has_variable = admin_contract_request_cooldown } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + } + + # You can afford the influence cost + trigger_if = { + limit = { + NOR = { + scope:hook = yes + scope:dominant_family = yes + } + } + scope:actor = { + influence >= major_influence_value + } + } + } + } + + auto_accept = { + custom_tooltip = { + text = admin_vassal_force_obligation_change_desc + OR = { + scope:hook = yes + scope:dominant_family = yes + scope:diarch = yes + } + } + } + + on_accept = { + # Enact changes + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + + # If you use a hook - Spend it + if = { + limit = { always = scope:hook } + use_hook = scope:recipient + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + # If you didn't use a hook or leveraged your position as a Dominant Family, pay Influence + if = { + limit = { + has_changed_contract_obligation_trigger = yes # Don't show the cost unless we actually change the contract + NOR = { + scope:hook = yes + scope:dominant_family = yes + scope:diarch = yes + } + } + scope:actor = { + change_influence = major_influence_loss + } + } + + # Activate cooldown - To prevent liege from changing it too soon + hidden_effect = { + set_variable = { + name = admin_contract_cooldown + value = yes + years = admin_contract_cooldown_value + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:actor = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + + # Update the succession law for celestial province types if applicable - That way, we don't have to wait until the current law invalidates. + if = { + limit = { + government_has_flag = government_is_celestial + scope:obligation.vassal_contract_type = vassal_contract:celestial_provinces + } + + if = { + limit = { + OR = { + vassal_contract_has_flag = celestial_province_military + vassal_contract_has_flag = celestial_province_protectorate + } + NOT = { has_realm_law = celestial_military_appointment_succession_law } + } + add_realm_law_skip_effects = celestial_military_appointment_succession_law + } + else_if = { + limit = { + OR = { + vassal_contract_has_flag = celestial_province_standard + vassal_contract_has_flag = celestial_province_industrial + vassal_contract_has_flag = celestial_province_metropolitan + } + NOT = { has_realm_law = celestial_appointment_succession_law } + } + add_realm_law_skip_effects = celestial_appointment_succession_law + } + } + } + } + } + } + + # If there's a diarch involved, and they called in their change, that gets flagged. + diarch_changed_own_contract_effect = yes + + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:recipient = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:actor + } + } + } + } + scope:recipient = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:actor + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + # Improving contract catalyst + if = { + limit = { + scope:actor.count_obligation_improvements_for_vassal > 0 + scope:recipient = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:actor + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:actor + } + } + } + } + scope:recipient = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:actor + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:recipient + } + } + } + } + } + } + + on_decline = { + # Activate cooldown - You may only ask for it to be changed every so often (this mostly exists for MP, since you cannot send it to the AI unless they accept) + hidden_effect = { + scope:actor = { + set_variable = { + name = admin_contract_request_cooldown + value = yes + years = admin_contract_cooldown_value + } + } + } + } + + # Send Options + # Hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + # Dominant Family + send_option = { + is_shown = { + scope:actor = { + house ?= { is_dominant_family = yes } + } + } + flag = dominant_family + localization = OPTION_DOMINANT_FAMILY + } + # Diarch + send_option = { + is_shown = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + is_valid = { + scope:actor = { + trigger_if = { + limit = { has_variable_list = diarch_contract_rights_used_list } + NOT = { + is_target_in_variable_list = { + name = diarch_contract_rights_used_list + target = scope:recipient + } + } + } + } + } + flag = diarch + localization = CALL_IN_DIARCH_RIGHTS + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no + + ai_accept = { + base = -25 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + + # Governor efficiency - Skilled governors are more likely to get accepted + modifier = { + add = scope:actor.governor_efficiency_presented + desc = AI_GOVERNOR_EFFICIENCY + } + + # Members of a powerful family are more likely to get accepted + modifier = { + scope:actor = { + house ?= { is_powerful_family = yes } + NOT = { house ?= scope:recipient.house } + } + add = 50 + desc = AI_POWERFUL_FAMILY + } + + # Members of the emperors family are much more likely to get accepted + modifier = { + scope:actor = { + house ?= scope:recipient.house + } + add = 60 + desc = AI_SAME_HOUSE + } + } +} + +# Separate interactions are set up for Nomads - This is to help with localisation and some of the effects +nomad_liege_modify_vassal_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + icon = icon_contract_modification_single + + send_name = nomad_liege_modify_vassal_contract_interaction + desc = nomad_liege_modify_vassal_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL + + is_shown = { + scope:recipient = { + NOT = { this = scope:actor } + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + vassal_contract_has_modifiable_obligations = yes + government_has_flag = government_is_nomadic + } + } + + is_valid_showing_failures_only = { + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + can_send = { + trigger_if = { #If they're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + + custom_description = { + text = "liege_modify_vassal_contract_cannot_exceed_tyranny_cap" + object = scope:actor + NOT = { + vassal_obligation_increase_tyranny_gain_multiplier > 1 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_vassal + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_vassal > 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_vassal + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_vassal = 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + trigger_else = {} # Otherwise we're fine! + } + } + } + + auto_accept = yes + on_accept = { + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + if = { + limit = { + catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + + # Improving contract catalyst + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal > 0 + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Enact changes. + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + if = { + limit = { vassal_obligation_increase_tyranny_gain != 0 } + stress_impact = { + just = medium_stress_impact_gain + generous = medium_stress_impact_gain + } + } + if = { + limit = { + always = scope:hook + } + use_hook = scope:recipient + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + scope:recipient = { + hidden_effect = { + set_subject_contract_modification_blocked = yes + set_variable = { + name = vassal_modify_contract_cooldown + value = yes + years = vassal_modify_contract_cooldown_value + } + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no +} + +nomad_vassal_modify_vassal_contract_interaction = { + special_interaction = vassal_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + interface_priority = 65 + common_interaction = yes + icon = icon_contract_modification_single + + send_name = "nomad_vassal_modify_vassal_contract_interaction_send" + desc = nomad_vassal_modify_vassal_contract_interaction_desc + + redirect = { + # need to reverse the role for the UI to work properly + scope:recipient = { + save_scope_as = secondary_recipient + } + scope:actor = { + save_scope_as = recipient + } + + scope:secondary_recipient = { + save_scope_as = actor + } + } + + is_shown = { + scope:recipient = { + is_independent_ruler = no + NOT = { this = scope:actor } + liege ?= scope:actor # this excludes tributary contracts by default + vassal_contract_has_modifiable_obligations = yes + government_has_flag = government_is_nomadic + } + } + + is_valid_showing_failures_only = { + NOT = { scope:recipient = { is_at_war_with = scope:actor } } + } + + can_send = { + trigger_if = { #If you're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + # There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers + trigger_if = { + limit = { + scope:actor = { + has_variable = vassal_modify_contract_cooldown + } + } + custom_tooltip = { + text = vassal_modify_contract_cooldown_desc + scope:actor = { + NOT = { has_variable = vassal_modify_contract_cooldown } + } + } + } + trigger_else = { + custom_tooltip = { + text = nomad_contract_request_cooldown_desc + scope:actor = { + NOT = { has_variable = nomad_contract_request_cooldown } + } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + + scope:recipient = { + # Must be an even trade overall + custom_description = { + text = "vassal_modify_vassal_contract_cannot_increase_obligation_level" + object = scope:actor + value = count_obligation_improvements_for_vassal_include_hook + count_obligation_improvements_for_vassal_include_hook = 0 + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + } + } + } + + auto_accept = yes + + on_accept = { + # Enact changes + scope:recipient = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:actor + if = { + limit = { always = scope:hook } + use_hook = scope:actor + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + # Activate cooldown - To prevent liege from changing it too soon + hidden_effect = { + set_variable = { + name = vassal_modify_contract_cooldown + value = yes + years = vassal_modify_contract_cooldown_value + } + } + + hidden_effect = { set_subject_contract_modification_blocked = yes } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + } + } + } + # If there's a diarch involved, and they called in their change, that gets flagged. + diarch_changed_own_contract_effect = yes + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + on_decline = { + # Activate cooldown - You may only ask for it to be changed every so often (this mostly exists for MP, since you cannot send it to the AI unless they accept) + hidden_effect = { + scope:recipient = { + set_variable = { + name = nomad_contract_request_cooldown + value = yes + years = vassal_modify_contract_cooldown_value + } + } + } + } + + # Send Options + # Hook + send_option = { + is_valid = { + scope:recipient = { + has_usable_hook = scope:actor + } + } + flag = hook + localization = SCHEME_HOOK + } + send_option = { + is_shown = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + is_valid = { + scope:recipient = { + trigger_if = { + limit = { has_variable_list = diarch_contract_rights_used_list } + NOT = { + is_target_in_variable_list = { + name = diarch_contract_rights_used_list + target = scope:actor + } + } + } + } + } + flag = diarch + localization = CALL_IN_DIARCH_RIGHTS + } + should_use_extra_icon = { + scope:recipient = { has_usable_hook = scope:actor } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no +} + +suzerain_modify_tributary_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + icon = icon_contract_modification_single + + send_name = "suzerain_modify_tributary_contract_interaction_send" + desc = suzerain_modify_tributary_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL + + is_shown = { + scope:recipient = { + is_tributary_of = scope:actor # excludes vassals by default + subject_contract_has_modifiable_obligations = yes + NOT = { government_has_flag = government_is_true_herder } + } + } + + is_valid_showing_failures_only = { + NOT = { scope:recipient = { is_at_war_with = scope:actor } } + } + + can_send = { + #Mandala gets special treatment + trigger_if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + custom_tooltip = { + text = suzerain_modify_subject_contract_mandala_cooldown + NOT = { + scope:recipient = { var:suzerain_recently_adjusted_mandala_subject_contract ?= scope:actor } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_tributary + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_tributary > 0 } + custom_description = { + text = "tributary_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_tributary + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_tributary = 0 } + custom_description = { + text = "tributary_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + + # You can afford the prestige cost of an unequal contract + trigger_else_if = { + limit = { + scope:obligations_favoring_tributary < 0 + NOT = { always = scope:hook } + } + scope:actor = { piety >= major_piety_value } + } + trigger_else = {} # Otherwise we're fine! + } + } + trigger_else_if = { #If they're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_tributary + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_tributary > 0 } + custom_description = { + text = "tributary_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_tributary + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_tributary = 0 } + custom_description = { + text = "tributary_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + + # You can afford the prestige cost of an unequal contract + trigger_else_if = { + limit = { + scope:obligations_favoring_tributary < 0 + NOT = { always = scope:hook } + } + scope:actor = { + prestige >= medium_prestige_value + } + } + trigger_else = {} # Otherwise we're fine! + } + } + } + + auto_accept = yes + + on_accept = { + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + if = { + limit = { + always = scope:hook + } + use_hook = scope:recipient + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + # Prestige and opinion cost of making an unequal contract without a hook + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal < 0 + NOT = { always = scope:hook } + } + + if = { + limit = { government_has_flag = government_is_mandala } + add_piety = major_piety_loss + } + else = { add_prestige = medium_prestige_loss } + + scope:recipient = { + add_opinion = { + modifier = outraged_opinion + opinion = -30 + target = scope:actor + } + } + + every_tributary = { + limit = { + NOT = { this = scope:recipient } + } + add_opinion = { + modifier = outraged_opinion + opinion = -10 + target = scope:actor + } + } + } + + scope:recipient = { + hidden_effect = { + set_subject_contract_modification_blocked = yes + } + set_variable = { + name = suzerain_recently_adjusted_mandala_subject_contract + value = scope:actor + years = mandala_vassal_obligation_cooldown_years + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + tributary_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no +} + +subject_modify_tributary_contract_interaction = { + special_interaction = vassal_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + interface_priority = 65 + common_interaction = yes + icon = icon_contract_modification_single + + send_name = "subject_modify_tributary_contract_interaction_send" + desc = subject_modify_tributary_contract_interaction_desc + + is_shown = { + scope:actor = { + is_tributary_of = scope:recipient # excludes vassals by default + subject_contract_has_modifiable_obligations = yes + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_travelling = no + } + NOT = { scope:recipient = { is_at_war_with = scope:actor } } + } + + can_send = { + #Mandala gets special treatment + trigger_if = { + limit = { + scope:recipient = { government_has_flag = government_is_mandala } + } + custom_tooltip = { + text = subject_modify_subject_contract_mandala_cooldown + NOT = { + scope:actor = { var:subject_recently_adjusted_mandala_subject_contract ?= scope:recipient } + } + } + # You can afford the cost if there is one + scope:actor = { + has_changed_contract_obligation_trigger = yes + trigger_if = { + limit = { scope:hook = no } # no cost + trigger_if = { + limit = { subject_standing < 0 } # this means we don't use subject standing + trigger_if = { + limit = { + government_has_flag = government_is_nomadic + scope:recipient = { government_has_flag = government_is_nomadic } + } + domicile.herd >= domicile.major_herd_value + } + trigger_else = { + gold >= major_gold_value + } + } + trigger_else = { + subject_standing > 20 + } + } + } + } + trigger_else_if = { #If you're blocked we don't want to show anything else (we don't really use this for admin, but we'll keep the logic, just in case) + limit = { + scope:actor = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:actor = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + # There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers + trigger_if = { + limit = { + scope:actor = { + has_variable = tributary_modify_contract_cooldown + } + } + custom_tooltip = { + text = tributary_modify_contract_cooldown_desc + scope:actor = { + NOT = { has_variable = tributary_modify_contract_cooldown } + } + } + } + trigger_else = { + custom_tooltip = { + text = tributary_modify_contract_cooldown_desc + scope:actor = { + NOT = { has_variable = tributary_modify_contract_cooldown } + } + } + } + + # You can afford the cost if there is one + scope:actor = { + trigger_if = { + limit = { scope:hook = no } # no cost + trigger_if = { + limit = { subject_standing < 0 } # this means we don't use subject standing + trigger_if = { + limit = { + government_has_flag = government_is_nomadic + scope:recipient = { government_has_flag = government_is_nomadic } + } + domicile.herd >= domicile.major_herd_value + } + trigger_else = { + gold >= major_gold_value + } + } + trigger_else = { + subject_standing > 20 + } + } + } + } + } + + auto_accept = { + custom_tooltip = { + text = nomad_vassal_force_obligation_change_desc + scope:hook = yes + } + } + + on_accept = { + # Enact changes + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + + # If you use a hook - Spend it + if = { + limit = { always = scope:hook } + use_hook = scope:recipient + } + else = { + if = { + limit = { subject_standing < 0 } # this means we don't use subject standing + if = { + limit = { + government_has_flag = government_is_nomadic + scope:recipient = { government_has_flag = government_is_nomadic } + } + pay_herd = { + target = scope:recipient + value = domicile.major_herd_value + } + } + else = { + pay_short_term_gold = { + target = scope:recipient + gold = major_gold_value + } + } + } + else = { + if = { # the subject tilting the contract in their favor costs Subject Standing + limit = { scope:new_value < 0 } + add_subject_standing = { + value = 10 + multiply = scope:new_value + } + } + } + } + + # Activate cooldown - To prevent liege from changing it too soon + hidden_effect = { + set_variable = { + name = tributary_modify_contract_cooldown + value = yes + years = tributary_modify_contract_cooldown_value + } + } + set_variable = { + name = subject_recently_adjusted_mandala_subject_contract + value = scope:recipient + years = mandala_vassal_obligation_cooldown_years + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:actor = { + tributary_contract_set_obligation_level = { + type = scope:obligation.subject_contract_type + level = scope:obligation + } + } + } + } + } + + # If there's a diarch involved, and they called in their change, that gets flagged. + diarch_changed_own_contract_effect = yes + } + + on_decline = { + # Activate cooldown - You may only ask for it to be changed every so often (this mostly exists for MP, since you cannot send it to the AI unless they accept) + hidden_effect = { + scope:actor = { + set_variable = { + name = tributary_modify_contract_cooldown + value = yes + years = tributary_modify_contract_cooldown_value + } + } + } + } + + # Send Options + # Hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + send_option = { + is_shown = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + is_valid = { + scope:actor = { + trigger_if = { + limit = { has_variable_list = diarch_contract_rights_used_list } + NOT = { + is_target_in_variable_list = { + name = diarch_contract_rights_used_list + target = scope:recipient + } + } + } + } + } + flag = diarch + localization = CALL_IN_DIARCH_RIGHTS + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no + + ai_accept = { + base = -25 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + + modifier = { + add = { + add = scope:new_value + multiply = -20 #Overlord favoring options have a negative score + if = { # the Chinese Emperor cares less since they get tribute through missions as well + limit = { + scope:new_value < 0 + scope:actor = { + OR = { + has_subject_contract_group = tributary_celestial + has_subject_contract_group = tributary_hegemonic + } + } + } + multiply = 0.5 + } + } + desc = AI_CONTRACT_BALANCE + } + } +} + +ai_only_hegemonic_tributary_modify_tributary_contract_interaction = { + category = interaction_category_vassal + desc = subject_modify_tributary_contract_interaction_desc + + auto_accept = yes + + is_shown = { + scope:actor = { + is_ai = yes + is_available = yes # Let's not have the AI do this when they're away from home etc (like paying tribute) + is_tributary_of = scope:recipient # excludes vassals by default + OR = { + has_subject_contract_group = tributary_celestial + has_subject_contract_group = tributary_hegemonic + } + subject_standing > 40 + subject_contract_has_modifiable_obligations = yes + does_ai_subject_in_subject_contract_desire_obligation_change = yes + NOT = { is_at_war_with = scope:recipient } + } + } + + on_accept = { + scope:actor = { + if = { + # if the subject has a Seal of Investiture, they will always ask for an Investiture Privilege if they can + limit = { + any_character_artifact = { + OR = { + artifact_type = seal_of_investiture + artifact_type = seal_of_investiture_court + } + } + } + random_list = { + 33 = { + trigger = { + tributary_contract_obligation_level_can_be_increased = celestial_tributary_investiture_privilege_trade + } + save_scope_value_as = { name = ask value = flag:trade } + } + 33 = { + trigger = { + tributary_contract_obligation_level_can_be_increased = celestial_tributary_investiture_privilege_marriage + } + save_scope_value_as = { name = ask value = flag:marriage } + } + 33 = { + trigger = { + tributary_contract_obligation_level_can_be_increased = celestial_tributary_investiture_privilege_politics + } + save_scope_value_as = { name = ask value = flag:politics } + } + } + } + suzerain = { + trigger_event = char_interaction.0252 + } + } + } + + ai_potential = { + always = yes + } + + ai_targets = { + ai_recipients = suzerain + } + + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 0 + } + + ai_will_do = { + base = 100 + } +} diff --git a/common/character_interactions/00_prison_interactions.txt b/common/character_interactions/00_prison_interactions.txt new file mode 100644 index 00000000..499e303b --- /dev/null +++ b/common/character_interactions/00_prison_interactions.txt @@ -0,0 +1,8286 @@ +imprison_interaction = { + interface_priority = 120 + common_interaction = yes + icon = prison + + category = interaction_category_hostile + highlighted_reason = { + triggered_desc = { + trigger = { + scope:actor = { + has_title = title:e_minister_of_justice + NOT = { has_imprisonment_reason = scope:recipient } + } + } + desc = HIGHLIGHTED_MINISTER_IMPRISONMENT_REASON + } + triggered_desc = { + trigger = { + scope:actor = { + has_imprisonment_reason = scope:recipient + } + } + desc = HIGHLIGHTED_HAS_IMPRISONMENT_REASON + } + } + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + desc = imprison_interaction_desc + + greeting = negative + notification_text = REQUEST_ARREST_NOTIFICATION_TEXT + pre_answer_maybe_key = ANSWER_MIGHT_SUCCEED + pre_answer_no_key = ANSWER_CANT_SUCCEED + pre_answer_yes_key = ANSWER_WILL_SUCCEED + pre_answer_maybe_breakdown_key = ANSWER_SUM_CHANCE + + on_decline_summary = { + triggered_desc = { + trigger = { + scope:recipient = { + NOR = { + AND = { + has_government = landless_adventurer_government + reverse_has_opinion_modifier = { + target = scope:actor + modifier = eviction_ignored_opinion + } + } + scope:actor = { + has_title = title:e_minister_of_justice + } + scope:recipient = { + is_landed = no + any_held_title = { + is_noble_family_title = yes + } + } + } + } + } + desc = imprison_decline_summary + } + } + + ai_potential = { + trigger_if = { + limit = { has_realm_law_flag = imprisonment_toggle_enable } + has_realm_law_flag = imprisonment_toggle_on + } + is_imprisoned = no + } + + is_shown = { + scope:actor != scope:recipient + scope:actor = { + OR = { + AND = { + has_title = title:e_minister_of_justice + scope:recipient = { + tgp_is_any_minister = no + liege = { + basic_allowed_to_imprison_character_trigger = { + CHARACTER = scope:recipient + } + } + } + } + basic_allowed_to_imprison_character_trigger = { + CHARACTER = scope:recipient + } + } + } + # Scope:recipient can't be visiting elsewhere. + trigger_if = { + limit = { + scope:recipient = { is_courtier_of = scope:actor } + } + NOT = { + scope:recipient.host = { + any_foreign_court_guest = { this = scope:recipient } + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + trigger_if = { + limit = { + has_title = title:e_minister_of_justice + scope:recipient = { + tgp_is_any_minister = no + } + NOT = { + allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + } + top_liege = { + allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + } + trigger_else = { + allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + trigger_if = { + limit = { + government_has_flag = government_is_nomadic + } + NOT = { has_realm_law = nomadic_authority_1 } + } + trigger_if = { + limit = { + has_title = title:e_minister_of_justice + } + scope:recipient = { + NOT = { + is_close_or_extended_family_of = scope:actor.top_liege + } + } + } + } + imprison_neutral_is_valid_showing_failures_only_triggers_trigger = yes + custom_tooltip = { + text = cannot_take_overt_hostile_actions_against_diarch.tt + NOT = { scope:recipient ?= scope:actor.diarch } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + trigger_if = { + limit = { + is_ai = no + } + scope:recipient = { + trigger_if = { + limit = { + has_government = landless_adventurer_government + reverse_has_opinion_modifier = { + target = scope:actor + modifier = eviction_ignored_opinion + } + } + is_travelling = no + } + } + } + trigger_else = { + OR = { + has_imprisonment_reason = scope:recipient + any_character_struggle = { + involvement = involved + } + } + } + } + } + + is_highlighted = { + scope:recipient = { + is_imprisoned = no + } + scope:actor = { + OR = { + has_imprisonment_reason = scope:recipient + has_title = title:e_minister_of_justice + } + } + } + + #Use hook + send_option = { + is_valid = { + exists = scope:recipient + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + cost = { + # Usually, this action is free, but during certain diarchies, we want it to cost. + prestige = liege_diarchy_surcharge_interaction_imprison_interaction_value + treasury = { + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + } + scope:recipient = { + NOT = { is_courtier_of = scope:actor } + } + } + value = { + value = 0 + desc = BASE + } + add = { + value = scope:actor.major_treasury_value + desc = IMPRISON_MINISTER_OF_JUSTICE_TREASURY_COST + } + } + } + } + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + } + + on_auto_accept = { + # the rest of the necessary logic is covered by auto_accept also triggering on_accept below + scope:recipient = { + trigger_event = char_interaction.0233 + } + } + + on_accept = { + scope:actor = { + if = { + limit = { + has_title = title:e_minister_of_justice + } + if = { + limit = { + NOR = { + has_imprisonment_reason = scope:recipient + scope:recipient.liege = { + has_imprisonment_reason = scope:recipient + } + scope:hook = yes + } + any_character_situation = { + situation_type = dynastic_cycle + situation_top_has_catalyst = catalyst_minister_imprison + } + } + save_scope_value_as = { + name = use_strife_not_tyranny + value = yes + } + situation:dynastic_cycle = { + trigger_situation_catalyst = { + catalyst = catalyst_minister_imprison + character = scope:recipient + } + } + } + if = { + limit = { + government_allows = merit + } + change_merit = { + value = minor_merit_gain + multiply = scope:recipient.highest_held_title_tier + } + } + if = { + limit = { + government_has_flag = government_has_influence + } + change_influence = { + value = minor_influence_gain + multiply = scope:recipient.highest_held_title_tier + } + } + scope:recipient.liege = { + if = { + limit = { has_imprisonment_reason = scope:recipient } + consume_imprisonment_reasons = scope:recipient + } + } + } + } + if = { + limit = { scope:hook = yes } + scope:actor = { use_hook = scope:recipient } + } + illegal_imprisonment_dread_effect = yes + imprison_court_chaplain_consequences_effect = yes + imprison_HoF_consequences_effect = yes + scope:recipient = { + if = { + limit = { + is_a_faction_member = yes + liege = scope:actor + } + joined_faction = { save_scope_as = retaliating_faction } + } + } + imprison_character_effect = { + TARGET = scope:recipient + IMPRISONER = scope:actor + } + # If they recently revoked your title, or asked for your excommunication, they become your rival + imprison_attempt_escalates_rivalry_effect = yes + scope:actor = { + trigger_event = char_interaction.0231 + if = { + limit = { + has_imprisonment_reason = scope:recipient + } + stress_impact = { + compassionate = minor_stress_impact_gain + forgiving = minor_stress_impact_gain + } + } + else = { + stress_impact = { + just = medium_stress_impact_gain + compassionate = medium_stress_impact_gain + } + if = { + limit = { exists = scope:retaliating_faction} + scope:retaliating_faction = { + imprisonment_retribution_start_faction_war_if_valid = yes + } + } + } + } + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + + # If we're a clan this interaction affects unity + if = { # If you don't have an imprisonment reason, and the target is landed, you lose more unity + limit = { + NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } } + scope:recipient = { is_landed_or_landless_administrative = yes } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else_if = { # If you don't have an imprisonment reason, and the target is unlanded, you lose slightly less unity + limit = { + NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } } + scope:recipient = { is_landed_or_landless_administrative = no } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { # If you have a valid reason, you lose only a tiny bit of unity (criminal or not, they are still family) + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + # Harrying logic. + scope:actor = { + if = { + limit = { + character_is_valid_for_harrying_of_the_north_trigger = yes + scope:recipient = { + character_is_valid_for_harrying_of_the_north_trigger = yes + is_important_or_vip_struggle_character = yes + } + culture != scope:recipient.culture + } + global_var:harrying_of_the_north = { save_scope_as = story } + if = { + limit = { + character_is_valid_norman_for_harrying_of_the_north_trigger = yes + scope:recipient = { character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes } + } + ep3_increase_pacification_effect = { AMOUNT = harrying_minor_increase_value } + } + else_if = { + limit = { + character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes + scope:recipient = { character_is_valid_norman_for_harrying_of_the_north_trigger = yes } + } + ep3_increase_resistance_effect = { AMOUNT = harrying_minor_increase_value } + } + } + } + } + + on_decline = { + if = { + limit = { + scope:recipient = { + has_government = landless_adventurer_government + reverse_has_opinion_modifier = { + target = scope:actor + modifier = eviction_ignored_opinion + } + } + } + scope:recipient = { + if = { + limit = { current_military_strength >= ep3_interactions_events_0500_troops_count_value } + start_war = { + cb = ep3_laamp_apprehend_adventurer_cb + target = scope:actor + } + } + else = { + # Remove them immediately. + remove_laamp_from_exiled_county_automatically_effect = { + PROVINCE = scope:recipient.location + LAAMP = scope:recipient + } + } + } + } + else = { + scope:actor = { + imprison_HoF_consequences_effect = yes + imprison_tyranny_effect = yes + } + scope:recipient = { + #If target is count or higher, start war. + if = { + limit = { + is_playable_character = yes + primary_title.tier > tier_barony + } + if = { + limit = { + is_a_faction_member = yes + liege = scope:actor + joined_faction = { + faction_target = scope:actor + NOT = { faction_is_type = populist_faction } + } + } + joined_faction = { + save_scope_as = retaliating_faction # For loc + imprisonment_retribution_start_faction_war_if_valid = yes + } + hidden_effect = { + if = { + limit = { NOT = { exists = joined_faction.faction_war } } + war_for_imprison_effect = yes + } + } + } + else = { + war_for_imprison_effect = yes + } + } + #If target is a baron or unlanded, have them escape. + else = { + if = { #To block them from being instantly rehired + limit = { + is_councillor_of = scope:actor + can_be_fired_from_council_trigger = { COURT_OWNER = scope:actor } + } + set_variable = { + name = escaped_imprisonment_from + value = scope:actor + years = 20 + } + } + imprison_court_chaplain_consequences_effect = yes + if = { + limit = { + is_landed_or_landless_administrative = yes + } + depose_effect = { DEPOSER = scope:actor } + } + else_if = { + limit = { + is_hostage = yes + warden = scope:actor + } + save_scope_as = imprison_failure + save_scope_as = hostage + warden = { save_scope_as = warden } + home_court = { save_scope_as = home_court } + scope:warden = { trigger_event = bp2_hostage_system.0400 } + scope:home_court = { trigger_event = bp2_hostage_system.0401 } + return_hostage = yes + } + else_if = { + limit = { + is_landed_or_landless_administrative = no + trigger_if = { + limit = { + is_councillor = yes + } + can_be_fired_from_council_trigger = { COURT_OWNER = scope:recipient.liege } + } + trigger_if = { + limit = { + exists = scope:actor.faith.religious_head + } + scope:actor.faith.religious_head != scope:recipient + } + } + select_and_move_to_pool_effect = yes + } + add_opinion = { + target = scope:actor + modifier = attempted_imprisonment_opinion + } + } + } + + if = { + limit = { + scope:actor = { has_realm_law_flag = vassal_refusal_is_treason } + } + scope:actor = { + add_opinion = { + target = scope:recipient + modifier = treasonous_imprison_refusal + } + } + } + } + + #Remove them as guardian/ward for any courtier (feedback given in char_interaction.0230) + scope:actor = { + if = { + limit = { + any_courtier = { + has_relation_guardian = scope:recipient + } + } + every_courtier = { + limit = { + has_relation_guardian = scope:recipient + } + save_scope_as = ward + scope:recipient = { remove_relation_ward = scope:ward } + + scope:ward = { + if = { + limit = { + host != liege + } + return_to_court = yes + } + guardian_remove_opinion_effect = { + GUARDIAN = scope:recipient + WARD = this + WARD_LIEGE = scope:actor + } + } + + add_to_list = ward_children + } + } + if = { + limit = { + any_courtier = { + has_relation_ward = scope:recipient + } + } + random_courtier = { + limit = { + has_relation_ward = scope:recipient + } + save_scope_as = guardian + scope:guardian = { remove_relation_ward = scope:recipient } + + scope:guardian = { + if = { + limit = { + host != liege + } + return_to_court = yes + } + guardian_remove_opinion_effect = { + GUARDIAN = this + WARD = scope:recipient + WARD_LIEGE = scope:actor + } + } + + add_to_list = guardian_list + } + + hidden_effect = { + scope:guardian = { + send_interface_message = { + type = event_childhood_neutral + title = remove_guardian_interaction_notification + left_icon = scope:recipient + right_icon = scope:guardian + remove_guardian_effect = { + GUARDIAN = scope:guardian + WARD = scope:recipient + RETURN_WARD = yes + HIDE_OPINION = no + } + } + } + } + } + } + + scope:actor = { + if = { + limit = { + scope:recipient = { + OR = { + is_playable_character = no + AND = { + is_playable_character = yes + primary_title.tier = tier_barony + } + } + } + } + trigger_event = char_interaction.0230 + } + } + + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + + # If we're a clan this interaction affects unity + if = { # If you don't have an imprisonment reason, and the target is landed, you lose more unity + limit = { + NOT = { + scope:actor = { has_imprisonment_reason = scope:recipient } + } + scope:recipient = { is_landed_or_landless_administrative = yes } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else_if = { # If you don't have an imprisonment reason, and the target is unlanded, you lose slightly less unity + limit = { + NOT = { + scope:actor = { has_imprisonment_reason = scope:recipient } + } + scope:recipient = { is_landed_or_landless_administrative = no } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { # If you have a valid reason, you lose only a tiny bit of unity (criminal or not, they are still family) + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = miniscule_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + auto_accept = { + # OR does not display properly here + trigger_if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + } + } + custom_description = { + text = you_are_the_minister_of_justice + scope:actor = { + has_title = title:e_minister_of_justice + } + } + } + trigger_else_if = { + limit = { + scope:recipient = { + is_landed = no + any_held_title = { + is_noble_family_title = yes + } + } + } + custom_description = { + text = noble_family_head_cannot_refuse_your_power + scope:recipient = { + is_landed = no + any_held_title = { + is_noble_family_title = yes + } + } + } + } + trigger_else = { + always = no + } + } + + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + modifier = { + add = { + value = scope:actor.intrigue + multiply = 1 + } + desc = IMPRISON_INTRIGUE_ACTOR + } + modifier = { + add = { + value = scope:recipient.intrigue + multiply = -2 + } + desc = IMPRISON_INTRIGUE_RECIPIENT + } + + modifier = { + add = 30 + scope:hook = yes + desc = SCHEME_HOOK_USED + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + ai_value_modifier = { + who = scope:recipient + ai_boldness = { + if = { + limit = { + scope:recipient = { NOT = { ai_boldness = 0 } } + } + value = -0.5 + } + } + ai_honor = { + if = { + limit = { + scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey. + ai_honor > 0 + } + scope:actor = { + has_imprisonment_reason = scope:recipient + has_realm_law_flag = vassal_refusal_is_treason + } + } + value = 0.75 + } + } + } + modifier = { + add = 20 + scope:actor = { + any_vassal_or_below = { this = scope:recipient } + has_realm_law_flag = vassal_refusal_is_treason + } + desc = AI_REFUSAL_IS_TREASON + } + modifier = { + add = 50 + scope:actor = { + has_perk = prison_feudal_complex_perk + } + desc = AI_PRISON_FEUDAL_COMPLEX_PERK + } + modifier = { #I am a King! + desc = offer_vassalization_interaction_aibehavior_hightier_tt + scope:recipient = { highest_held_title_tier = tier_kingdom } + add = -40 + } + modifier = { #Courtiers. + desc = AI_REFUSAL_COURTIER + scope:recipient = { is_ruler = no } + add = 50 + } + modifier = { # Your young children can't really stop you + desc = AI_REFUSAL_YOUNG_CHILD + scope:recipient = { + is_child_of = scope:actor + is_courtier_of = scope:actor + is_adult = no + } + add = 200 + } + modifier = { #They're a claimant against you + desc = AI_CLAIMANT_PENALTY + scope:actor = { + OR = { + any_targeting_faction = { + faction_type = claimant_faction + faction_is_at_war = yes + special_character ?= scope:recipient + } + AND = { + exists = var:claimant_faction_sent_demand + var:claimant_faction_sent_demand = scope:recipient + } + } + } + add = -70 + } + modifier = { #Rank difference. + desc = AI_REFUSAL_RANK_DIFFERENCE + scope:recipient = { + is_ruler = yes + is_landed = yes + highest_held_title_tier < tier_kingdom + } + add = { + value = -15 + if = { + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 2 + } + } + } + add = 5 + } + if = { + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 3 + } + } + } + add = 5 + } + if = { #King asking Baron, modifier becomes positive. + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 4 + } + } + } + add = 10 + } + } + } + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + modifier = { + add = intimidated_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + modifier = { #Comparative military strength. + desc = offer_vassalization_interaction_aibehavior_power_tt + trigger = { + scope:actor = { is_ruler = yes } + scope:recipient = { is_ruler = yes } + } + add = { + value = 1 + subtract = { + value = scope:recipient.current_military_strength + divide = { value = scope:actor.current_military_strength min = 1 } + } + multiply = 100 + min = -1000 + # This max needs to match the loc in offer_vassalization_interaction_aibehavior_power_tt + max = 20 + } + } + modifier = { #Rivalry modifier. + desc = offer_vassalization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -50 + } + modifier = { #Nemesis modifier. + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { + add = 10 + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + is_liege_or_above_of = scope:recipient + court_grandeur_current_level >= 7 + court_grandeur_current_level < 9 + } + desc = GRANDEUR_REASON + } + modifier = { + add = 20 + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + is_liege_or_above_of = scope:recipient + court_grandeur_current_level >= 9 + } + desc = GRANDEUR_REASON + } + modifier = { # Legalistic tradition + desc = tradition_legalistic_name + scope:actor = { + has_imprisonment_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + add = legalistic_vassal_punishment_acceptance + } + modifier = { # AI Mongols, tyranny wars just delay the inevitable fun! + scope:actor = { + is_ai = yes + OR = { + has_trait = greatest_of_khans + has_character_modifier = the_great_khan_modifier + } + } + scope:recipient = { + is_ai = yes + } + add = 500 + } + # Thug accolade increases imprison chance because they scary + modifier = { + scope:actor = { + any_active_accolade = { + accolade_parameter = accolade_imprisonment_chance + } + } + desc = THUG_REASON + add = accolade_imprisonment_chance_value + } + modifier = { + scope:actor = { + any_active_accolade = { + accolade_parameter = accolade_imprisonment_chance_high + } + } + desc = THUG_REASON_HIGH + add = accolade_imprisonment_chance_value_high + } + evaluate_action_decreasing_house_unity = { + VALUE = 100 + } + modifier = { + add = -25 + scope:recipient = { + culture = { has_cultural_parameter = vassals_more_likely_to_refuse_demands } + } + desc = VASSALS_REFUSAL_indomitable_azatani + } + modifier = { + add = 10 + scope:recipient = { has_character_modifier = ach_intent_imprisonment_modifier } + desc = ach_host_intent_imprison_reason + } + } + + # AI + ai_targets = { + ai_recipients = vassals + chance = 0.5 + } + ai_targets = { + ai_recipients = courtiers + chance = 0.25 + } + + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 10 + kingdom = 10 + empire = 10 + hegemony = 10 + } + + ai_will_do = { + base = -100 + + modifier = { # Make sure the AI uses hooks for this as it's % based + scope:hook = yes + add = 1 + } + + modifier = { # Default imprisonment reason weight + add = 200 + scope:actor = { + has_imprisonment_reason = scope:recipient + } + } + + modifier = { # More likely to imprison criminal Soryo's if Ritsuryo + add = 200 + scope:actor = { + has_imprisonment_reason = scope:recipient + government_has_flag = government_is_japan_administrative + } + scope:recipient = { + government_has_flag = government_is_japan_feudal + } + } + + modifier = { # Even more imprisonment reason if you are a danger to the Kampaku + add = 400 + scope:actor = { + primary_title = title:e_japan + has_imprisonment_reason = scope:recipient + } + scope:recipient = { + exists = house.house_confederation + house.house_confederation.combined_military_strength > scope:actor.current_military_strength + } + } + + modifier = { # Avoid Tyranny wars at inopportune times + add = -190 + scope:actor = { + ai_rationality > -100 # Lunatics can do whatever, let the world burn... + is_at_war = yes + } + scope:recipient = { + is_playable_character = yes + } + } + + modifier = { # Avoid imprisonments in certain circumstances + add = -190 + scope:actor = { + ai_rationality > -100 # Lunatics can do whatever, let the world burn... + NOR = { + AND = { + intrigue > scope:recipient.intrigue + intrigue >= 12 + } + has_perk = prison_feudal_complex_perk + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level >= 1 + } + } + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + current_military_strength >= scope:recipient.twice_current_military_strength + scope:recipient.ai_boldness <= -100 + } + } + scope:recipient = { + is_playable_character = yes + } + } + + modifier = { # If the AI is not very bold, avoid imprisoning people unless you're more powerful + add = -190 + scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn... + scope:actor.ai_boldness <= 25 + scope:actor.current_military_strength < scope:recipient.one_and_a_half_times_current_military_strength + } + + modifier = { # Avoid imprisoning people that would destroy you + add = -190 + scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn... + scope:actor.current_military_strength < scope:recipient.current_military_strength + } + + modifier = { # Do not imprison when the chance of success if exceedingly low + add = -190 + scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn... + scope:recipient = { + is_playable_character = yes + } + NOT = { + scope:recipient = { + highest_held_title_tier = tier_barony + } + } + scope:actor = { + gold < minimum_ai_gold_value_for_tyranny_wars + } + } + + modifier = { # Don't imprison people you like + scope:actor = { + NOT = { + has_trait = sadistic + } + OR = { + has_secret_relation_lover = scope:recipient + has_relation_lover = scope:recipient + has_relation_soulmate = scope:recipient + has_relation_friend = scope:recipient + has_relation_best_friend = scope:recipient + opinion = { + target = scope:recipient + value > very_high_positive_opinion + } + } + } + add = -1000 + } + + modifier = { # Don't imprison your own children... unless they're your rival/nemesis + scope:recipient = { + is_child_of = scope:actor + NOR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + } + } + add = -1000 + } + + modifier = { # Don't imprison your spouse, unless they're your rival/have cheated on you + scope:recipient = { + is_spouse_of = scope:actor + NOR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + add = -1000 + } + + modifier = { # Try to avoid pointless imprisonments + scope:recipient = { + NOR = { + scope:actor = { # Sadists want people to torture + has_trait = sadistic + } + AND = { # Imprisoning vassals you have revoke reasons on is relevant + is_playable_character = yes + scope:actor = { has_revoke_title_reason = scope:recipient } + } + is_a_faction_member = yes + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + scope:actor = { # Scheme Agents should be imprisoned indiscriminately + any_targeting_scheme = { + hostile_scheme_trigger = yes + is_scheme_agent_exposed = scope:recipient + } + } + AND = { # Zealots will imprison characters of other faiths + scope:actor.ai_zeal >= medium_positive_ai_value + scope:actor.faith != scope:recipient.faith + } + scope:actor = { + has_opinion_modifier = { + modifier = murdered_close_family_crime + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = attempted_murder_close_family_crime + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = executed_close_family + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = slept_with_spouse_discovered_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = slept_with_spouse_exposed_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = unfaithful_spouse_discovered_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = unfaithful_spouse_exposed_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = refused_to_renounce_lover_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = betrayed_our_promise + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = botched_my_treatment_crime_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = botched_treatment_of_kin_crime_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = smeared_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = insulted_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = mocked_me_in_time_of_need + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = loved_one_dungeon_death + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = abandoned_me_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = reason_child_died + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = falsely_accused + target = scope:recipient + } + } + } + } + add = -1000 + } + + modifier = { + exists = scope:recipient.primary_title + add = scope:recipient.primary_title.tier + } + + # Agenda impact + modifier = { + scope:recipient = { + is_important_or_vip_struggle_character = yes + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_important + } + has_character_flag = agenda_towards_escalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_important + } + } + } + add = -100 + } + } + } + modifier = { + scope:recipient = { + has_trait = fp3_struggle_supporter + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_supporter + } + has_trait = fp3_struggle_detractor + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_supporter + } + } + } + add = -100 + } + } + } + modifier = { + scope:recipient = { + has_trait = fp3_struggle_detractor + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_detractor + } + has_trait = fp3_struggle_supporter + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_detractor + } + } + } + add = -100 + } + } + } + + # TGP Be more careful with blocs generally + house_bloc_tyranny_war_modifiers = yes + + modifier = { # Avoid triggering Tyranny wars mid-grand activity + factor = 0 + scope:actor = { + has_ongoing_grand_activity_trigger = yes + } + scope:recipient = { + highest_held_title_tier >= tier_county + } + } + + evaluate_action_decreasing_house_unity = { + VALUE = 100 + } + } +} + +move_to_dungeon_interaction = { + interface_priority = 30 + category = interaction_category_prison + desc = move_to_dungeon_interaction_desc + icon = prison + + is_shown = { + scope:actor = { + is_landless_ruler = no + } + scope:recipient = { + is_imprisoned_by = scope:actor + is_in_prison_type = house_arrest + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } + scope:recipient = { remove_character_modifier = allowed_to_go_outside } + } + scope:recipient = { + hidden_effect = { + change_prison_type = dungeon + } + trigger_event = prison_notification.1001 + custom_tooltip = MOVE_PRISONER_TO_DUNGEON + scope:recipient = { + every_close_or_extended_family_member = { + custom = all_family_members + limit = { + scope:actor != this + } + add_opinion = { + modifier = family_moved_to_dungeon_opinion + target = scope:actor + } + } + } + } + scope:actor = { + stress_impact = { + compassionate = medium_stress_impact_gain + forgiving = medium_stress_impact_gain + } + hidden_effect = { + send_interface_message = { + type = event_prison_neutral + title = msg_move_prisoner_to_dungeon + right_icon = scope:recipient + custom_tooltip = MOVE_PRISONER_TO_DUNGEON + } + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_move_to_dungeon.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = yes + + # AI + ai_targets = { + ai_recipients = prisoners + } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:actor.ai_compassion < medium_positive_ai_value + scope:actor = { + opinion = { + target = scope:recipient + value <= high_negative_opinion + } + } + } + modifier = { # Family Feud + add = 25 + trigger = { + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + + } + } + desc = INTERACTION_FAMILY_FEUD_REASON + } + } +} + +move_to_house_arrest_interaction = { + interface_priority = 30 + category = interaction_category_prison + desc = move_to_house_arrest_interaction_desc + icon = prison + + is_shown = { + scope:actor = { + is_landless_ruler = no + } + scope:recipient = { + is_imprisoned_by = scope:actor + is_in_prison_type = dungeon + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } + scope:recipient = { remove_character_modifier = allowed_to_go_outside } + } + if = { + limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } } + scope:recipient = { remove_character_modifier = moldy_gruel_diet } + } + scope:recipient = { + hidden_effect = { + change_prison_type = house_arrest + trigger_event = prison_notification.1002 + } + custom_tooltip = MOVE_PRISONER_TO_HOUSE_ARREST + scope:recipient = { + every_close_or_extended_family_member = { + custom = all_family_members + limit = { + scope:actor != this + } + add_opinion = { + modifier = moved_to_house_arrest_opinion + target = scope:actor + } + } + } + } + scope:actor = { + stress_impact = { + sadistic = medium_stress_impact_gain + vengeful = medium_stress_impact_gain + } + hidden_effect = { + send_interface_message = { + type = event_prison_neutral + title = msg_move_prisoner_to_house_arrest + right_icon = scope:recipient + custom_tooltip = MOVE_PRISONER_TO_HOUSE_ARREST + } + } + } + } + + auto_accept = yes +} + +ransom_interaction = { + interface_priority = 50 + common_interaction = no + use_diplomatic_range = no + category = interaction_category_prison + special_interaction = ransom_interaction + icon = icon_gold + redirect = { + scope:recipient = { + save_scope_as = secondary_recipient + if = { + limit = { + is_ruler = no + exists = liege + } + liege = { + save_scope_as = recipient + } + } + } + } + + desc = ransom_interaction_desc + + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:secondary_recipient = scope:recipient + } + desc = OFFER_RANSOM_PROPOSAL_PERSONAL + } + desc = OFFER_RANSOM_PROPOSAL + } + } + + is_shown = { + scope:secondary_recipient = { + #exists = liege + is_imprisoned_by = scope:actor + } + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + trigger_if = { + limit = { + scope:invalid = yes + } + always = no + } + + scope:secondary_recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:secondary_recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + cost = { + influence = { + value = 0 + if = { + limit = { scope:influence_send_option = yes } + add = scope:actor.medium_influence_value + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } + scope:recipient = { remove_character_modifier = allowed_to_go_outside } + } + if = { + limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } } + scope:recipient = { remove_character_modifier = moldy_gruel_diet } + } + # Set up event scopes and trigger the exchange. + if = { + limit = { scope:secondary_recipient = { is_imprisoned_by = scope:actor } } # To prevent simultaneous release-shenanigans + scope:secondary_recipient = { + save_scope_as = prisoner + } + scope:recipient = { + save_scope_as = payer + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + scope:prisoner = { + save_scope_value_as = { + name = new_ransom_value + value = haggler_ransom_cost_modifier + } + } + custom_tooltip = has_person_haggler_decrease_ransom_cost + } + # If the recipient doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay. + if = { + limit = { + OR = { + exists = scope:current_gold + exists = scope:extortionate_current_gold + } + } + save_scope_value_as = { + name = ransom_saved_gold_value + value = scope:payer.current_gold_value + } + } + } + scope:actor = { + save_scope_as = imprisoner + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + scope:recipient = { + scope:prisoner = { + save_scope_value_as = { + name = new_ransom_value + value = haggler_ransom_cost_modifier + } + } + custom_tooltip = has_person_haggler_increase_ransom_cost + } + } + + #Save scopes for portraits + scope:recipient = { save_scope_as = portrait_first } + if = { + limit = { + scope:portrait_first != scope:prisoner + } + scope:prisoner = { save_scope_as = portrait_second } + # Must come after we save the payment value, or the payer won't know how much they need to pay. + send_interface_message = { + type = event_prison_good + title = msg_ransom_prisoner + right_icon = scope:portrait_first + left_icon = scope:portrait_second + ransom_interaction_effect = yes + } + } + else = { + # Must come after we save the payment value, or the payer won't know how much they need to pay. + send_interface_message = { + type = event_prison_good + title = msg_ransom_prisoner + right_icon = scope:portrait_first + ransom_interaction_effect = yes + } + } + + # Struggle Catalyst + if = { + limit = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:secondary_recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:secondary_recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_ransom_important + character = scope:actor + } + } + } + } + } + } + + on_decline = { + # If a player declines this ransom offer, wait 10 years before sending another one (they presumably will ransom that character themselves when they want them back). + if = { + limit = { scope:recipient = { is_ai = no } } + scope:secondary_recipient = { + add_character_flag = { + flag = character_ransom_refused_by_player + years = 10 + } + } + } + + # Trigger notification event + scope:actor = { + trigger_event = char_interaction.0131 + } + } + + # Pay me an extortionate amount! + send_option = { + is_shown = { + scope:actor = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:recipient ?= { + gold >= scope:secondary_recipient.increased_ransom_cost_value + } + } + flag = extortionate_gold + localization = "RANSOM_EXTORTIONATE_GOLD_OPTION" + } + + # If you don't have what they're worth, pay me what you have (extort version)! + send_option = { + is_shown = { + scope:actor = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:recipient ?= { + gold < scope:secondary_recipient.increased_ransom_cost_value + gold >= 1 + } + } + flag = extortionate_current_gold + localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_OPTION" + } + + # Pay me what they're worth! + send_option = { + is_shown = { + scope:actor = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:recipient ?= { + gold >= scope:secondary_recipient.ransom_cost_value + } + } + flag = gold + localization = "RANSOM_GOLD_OPTION" + } + + # If you don't have what they're worth, pay me what you have! + send_option = { + is_shown = { + scope:actor = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:recipient ?= { + gold < scope:secondary_recipient.ransom_cost_value + gold >= 1 + } + } + flag = current_gold + localization = "RANSOM_CURRENT_GOLD_OPTION" + } + + send_option = { + is_shown = { + trigger_if = { # in the mass action ransom we only want to do it for gold + limit = { exists = scope:mass_action } + scope:mass_action = no + } + } + is_valid = { + scope:actor = { + can_add_hook = { #To match the hook added through ransom_interaction_effect + target = scope:recipient + type = favor_hook + } + } + } + flag = favor + localization = "RANSOM_FAVOR_OPTION" + } + + send_option = { # EP3 Influence + is_shown = { # Actor must have a government that uses influence + trigger_if = { # in the mass action ransom we only want to do it for gold + limit = { exists = scope:mass_action } + scope:mass_action = no + } + scope:actor = { + government_has_flag = government_has_influence + } + } + is_valid = { + # Actor has enough influence + scope:actor = { influence >= medium_influence_value } + # Both characters are within the same top realm + custom_tooltip = { + text = not_same_realm_tt + scope:recipient.top_liege = scope:actor.top_liege + } + } + flag = influence_send_option + localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE + } + + # MPO Herd + send_option = { + is_shown = { # Actor must have a government that uses Herd + scope:actor = { + government_has_flag = government_is_nomadic + exists = domicile + is_ai = no + } + # Recipient must care about Herd + scope:recipient ?= { + government_has_flag = government_is_nomadic + exists = domicile + } + } + is_valid = { + # Recipient has enough Herd + scope:recipient = { domicile.herd >= domicile.medium_herd_value } + } + flag = herd_send_option + localization = RANSOM_HERD_OPTION + } + + localization_values = { + EXTORTIONATE_RANSOM_COST = scope:secondary_recipient.increased_ransom_cost_value + RANSOM_COST = scope:secondary_recipient.ransom_cost_value + CURRENT_GOLD = scope:recipient.gold + RANSOM_HERD_COST = ransom_herd_value_recipient + } + + ai_accept = { + base = 0 + modifier = { # Greedy characters can have their greed get the better of them... + add = { + value = scope:recipient.ai_greed + multiply = -0.5 + } + scope:recipient.ai_greed >= medium_positive_ai_value + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + scope:recipient != scope:secondary_recipient + desc = AI_VALUE_MODIFIER_GREED + } + modifier = { # Generous characters are more willing to pay + add = { + value = scope:recipient.ai_greed + multiply = -0.10 + } + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + scope:recipient != scope:secondary_recipient + scope:recipient.ai_greed <= medium_negative_ai_value + desc = AI_VALUE_MODIFIER_GENEROUS + } + modifier = { + add = -10 + scope:recipient != scope:secondary_recipient + scope:recipient = { + NOR = { + is_spouse_of = scope:secondary_recipient + is_close_or_extended_family_of = scope:secondary_recipient + has_relation_lover = scope:secondary_recipient + has_relation_friend = scope:secondary_recipient + has_secret_relation_lover = scope:secondary_recipient + has_relation_soulmate = scope:secondary_recipient + has_relation_best_friend = scope:secondary_recipient + is_parent_of = scope:secondary_recipient + } + } + desc = "UNIMPORTANT_CHAR_REASON" + } + modifier = { + add = 100 + scope:recipient = scope:secondary_recipient + desc = "WANTS_FREEDOM_REASON" + } + modifier = { # Acceptance boon for lovers, friends, etc + add = 25 + scope:recipient != scope:secondary_recipient + scope:recipient = { + OR = { + is_spouse_of = scope:secondary_recipient + is_close_or_extended_family_of = scope:secondary_recipient + has_relation_lover = scope:secondary_recipient + has_relation_friend = scope:secondary_recipient + has_secret_relation_lover = scope:secondary_recipient + } + NOR = { + has_relation_soulmate = scope:secondary_recipient + has_relation_best_friend = scope:secondary_recipient + is_parent_of = scope:secondary_recipient + } + } + desc = "DEAR_TO_ME_REASON" + } + modifier = { # Massive acceptance boon for Soulmates and Best Friends + add = 200 + scope:recipient = { + OR = { + has_relation_soulmate = scope:secondary_recipient + has_relation_best_friend = scope:secondary_recipient + is_parent_of = scope:secondary_recipient + } + NOR = { + is_spouse_of = scope:secondary_recipient + AND = { + NOT = { + is_parent_of = scope:secondary_recipient + } + is_close_or_extended_family_of = scope:secondary_recipient + } + has_relation_lover = scope:secondary_recipient + has_relation_friend = scope:secondary_recipient + has_secret_relation_lover = scope:secondary_recipient + } + } + desc = "DEAR_TO_ME_REASON" + } + modifier = { # Say no to rivals + add = -200 + scope:recipient = { + has_relation_rival = scope:secondary_recipient + } + desc = "RIVAL_TO_ME_REASON" + } + modifier = { # Say no to rivals + add = -500 + scope:recipient = { + has_relation_nemesis = scope:secondary_recipient + } + desc = "NEMESIS_TO_ME_REASON" + } + modifier = { + add = 10 + scope:recipient = { + NOR = { + this = scope:secondary_recipient + is_spouse_of = scope:secondary_recipient + is_close_or_extended_family_of = scope:secondary_recipient + has_relation_lover = scope:secondary_recipient + has_relation_soulmate = scope:secondary_recipient + has_secret_relation_lover = scope:secondary_recipient + } + NOR = { + has_relation_rival = scope:secondary_recipient + has_relation_nemesis = scope:secondary_recipient + } + } + scope:recipient.dynasty = scope:secondary_recipient.dynasty + desc = "MY_DYNASTY_REASON" + } + modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege + add = intimidated_reason_value + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + desc = INTIMIDATED_REASON + } + + modifier = { # An Cowed recipient is significantly more likely to accept an offer from the liege + add = cowed_reason_value + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + desc = COWED_REASON + } + } + + # AI + ai_targets = { + ai_recipients = prisoners + } + ai_frequency_by_tier = { + barony = 36 + county = 6 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + OR = { + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + AND = { + scope:recipient = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + scope:current_gold = yes + } + } + } + + modifier = { + add = ai_greed + ai_greed > 0 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + } + + modifier = { + add = -100 + has_relation_rival = scope:secondary_recipient + } + + modifier = { + add = -300 + has_relation_nemesis = scope:secondary_recipient + } + + modifier = { + add = 100 + scope:favor = yes + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + # Struggle Agenda + modifier = { + scope:secondary_recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + } + } + add = 200 + } + } + } + + modifier = { # Do not ransom at war + factor = 0 + scope:actor = { is_at_war = yes } + } + + modifier = { # Don't annoy players + factor = 0 + scope:recipient = { is_ai = no } + OR = { + scope:recipient = { is_at_war = yes } + scope:secondary_recipient = { has_character_flag = character_ransom_refused_by_player } + } + } + + #don't ransom if they are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:secondary_recipient = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } + + # Needs to be after all other send options so we only default to it if everything else is blocked + send_option = { + is_shown = { # When doing the mass ransom, its possible for no option to be valid for the gold costs, so instead of defaulting wrong we explitly fail it + exists = scope:mass_action + scope:mass_action = yes + } + flag = invalid + localization = "INVALID" + } +} + +#For lieges to ransom their courtiers +pay_ransom_interaction = { + interface_priority = 50 + common_interaction = no + use_diplomatic_range = no + category = interaction_category_prison + icon = icon_gold + + redirect = { + scope:recipient = { + save_scope_as = secondary_recipient + if = { + limit = { + exists = imprisoner + } + imprisoner = { save_scope_as = recipient } + } + } + } + + desc = pay_ransom_interaction_desc + + cost = { + influence = { + value = 0 + if = { + limit = { scope:influence_send_option = yes } + add = scope:actor.medium_influence_value + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + } + + greeting = positive + notification_text = PAY_RANSOM_PROPOSAL + + is_shown = { + exists = scope:recipient + scope:secondary_recipient = { + this != scope:actor + is_imprisoned_by = scope:recipient + OR = { + liege ?= scope:actor # You can ransom anyone you have in your court + is_close_family_of = scope:actor # And anyone who is your close family + dynasty ?= { # And anyone from your Dynasty + this ?= scope:actor.dynasty + } + any_spouse = { # And anyone married to one of your close kin or dynasty members + OR = { + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + } + } + has_relation_lover = scope:actor # And Lovers + has_relation_friend = scope:actor # And Friends + } + } + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:secondary_recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + } + + on_accept = { + # Set up event scopes and trigger the exchange. + if = { + limit = { scope:secondary_recipient = { is_imprisoned_by = scope:recipient } } + scope:secondary_recipient = { + save_scope_as = prisoner + } + scope:recipient = { + save_scope_as = imprisoner + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + custom_tooltip = has_person_haggler_increase_ransom_cost + } + } + scope:actor = { + save_scope_as = payer + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + + } + scope:prisoner = { + save_scope_value_as = { + name = new_ransom_value + value = haggler_ransom_cost_modifier + } + } + custom_tooltip = has_person_haggler_decrease_ransom_cost + } + # Stress impacts + if = { + limit = { + scope:prisoner = { # Stress impact for random courtiers + NOR = { + is_vassal_of = scope:actor + is_consort_of = scope:actor + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + any_spouse = { + OR = { + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + } + } + has_relation_lover = scope:actor + has_relation_friend = scope:actor + } + } + } + stress_impact = { + compassionate = minor_stress_impact_loss + generous = medium_stress_impact_loss + } + } + else_if = { # Stress impact for 'relevant' ransoms; in other words, everyone but random courtiers + limit = { + scope:prisoner = { + OR = { + is_vassal_of = scope:actor + is_consort_of = scope:actor + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + any_spouse = { + OR = { + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + } + } + has_relation_lover = scope:actor + has_relation_friend = scope:actor + } + } + } + stress_impact = { + compassionate = medium_stress_impact_loss + generous = minor_stress_impact_loss + just = minor_stress_impact_loss + } + } + + if = { # Lustful characters want their lovers back + limit = { + scope:prisoner = { + has_relation_lover = scope:actor + } + } + stress_impact = { + lustful = major_stress_impact_loss + } + } + + if = { # Loyal characters want to free their friends and lovers + limit = { + scope:prisoner = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + stress_impact = { + loyal = major_stress_impact_loss + } + } + + if = { # Family should be free! + limit = { + scope:prisoner = { + is_close_family_of = scope:payer + } + } + stress_impact = { + family_first = miniscule_stress_impact_loss + } + } + + # If the payer doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay. + if = { + limit = { + OR = { + exists = scope:current_gold + exists = scope:extortionate_current_gold + } + } + save_scope_value_as = { + name = ransom_saved_gold_value + value = scope:payer.current_gold_value + } + } + + # Must come after we save the payment value, or the payer won't know how much they need to pay. + trigger_event = char_interaction.0140 + } + hidden_effect = { + scope:prisoner = { + send_interface_toast = { + type = event_toast_effect_good + title = ransomed_by_someone + left_icon = scope:payer + show_as_tooltip = { + scope:imprisoner = { + ransom_interaction_effect = yes + } + } + } + } + scope:prisoner = { + if = { + limit = { + liege ?= { + is_ai = no + NOR = { + this = scope:payer + this = scope:imprisoner + } + OR = { + is_close_or_extended_family_of = scope:prisoner + is_consort_of = scope:prisoner + has_relation_lover = scope:prisoner + has_relation_friend = scope:prisoner + } + } + } + liege = { + save_scope_as = prisoner_liege_scope + send_interface_toast = { + type = event_toast_effect_good + title = ransomed_by_someone_third_party + left_icon = scope:payer + right_icon = scope:prisoner + custom_tooltip = ransomed_by_someone_third_party_desc + } + } + } + } + } + scope:imprisoner = { + send_interface_message = { + type = event_prison_neutral + title = recipient_released_from_prison + right_icon = scope:prisoner + left_icon = scope:imprisoner + ransom_interaction_effect = yes + } + + # Struggle Catalyst + if = { + limit = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:prisoner + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:prisoner + } + } + activate_struggle_catalyst = { + catalyst = catalyst_ransom_important + character = scope:imprisoner + } + } + } + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:imprisoner + SECOND = scope:prisoner + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_supporter_detractor + CHAR = scope:prisoner + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_supporter_detractor + CHAR = scope:prisoner + } + } + activate_struggle_catalyst = { + catalyst = catalyst_ransom_supporter_detractor + character = scope:imprisoner + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_ransom_supporter_detractor } + } + } + } + if = { + limit = { scope:hook = yes } + scope:actor = { + use_hook = scope:recipient + } + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:prisoner + VALUE = medium_unity_gain + DESC = clan_unity_ransom.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + on_decline = { + # If a player declines this ransom offer, wait 10 years before sending another one (they presumably have reasons for keeping that character in prison). + if = { + limit = { scope:recipient = { is_ai = no } } + scope:secondary_recipient = { + add_character_flag = { + flag = character_ransom_refused_by_player + years = 10 + } + } + } + + # Trigger notification event + scope:actor = { + trigger_event = char_interaction.0141 + } + } + + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + is_valid = { + exists = scope:recipient + scope:actor = { + gold >= scope:secondary_recipient.increased_ransom_cost_value + } + } + starts_enabled = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:actor = { + gold >= scope:secondary_recipient.increased_ransom_cost_value + } + } + flag = extortionate_gold + localization = "RANSOM_EXTORTIONATE_GOLD_IMPRISONED_PERSPECTIVE_OPTION" + } + + # If you don't have what they're worth, pay me what you have (extort version)! + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:actor = { + gold < scope:secondary_recipient.increased_ransom_cost_value + gold > 0 + } + } + starts_enabled = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:actor = { + gold < scope:secondary_recipient.increased_ransom_cost_value + gold > 0 + } + } + flag = extortionate_current_gold + localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_IMPRISONED_PERSPECTIVE_OPTION" + } + + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + } + is_valid = { + exists = scope:recipient + scope:actor = { + gold >= scope:secondary_recipient.ransom_cost_value + } + } + starts_enabled = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:actor = { + gold >= scope:secondary_recipient.ransom_cost_value + } + } + flag = gold + localization = "RANSOM_GOLD_PAY_OPTION" + } + + # If you don't have what they're worth, pay me what you have! + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:actor = { + gold < scope:secondary_recipient.ransom_cost_value + gold > 0 + } + } + starts_enabled = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:actor = { + gold < scope:secondary_recipient.ransom_cost_value + gold > 0 + } + } + flag = current_gold + localization = "RANSOM_CURRENT_PAY_GOLD_OPTION" + } + + send_option = { + is_valid = { + exists = scope:recipient + scope:recipient = { + can_add_hook = { #To match the hook added through ransom_interaction_effect + target = scope:actor + type = favor_hook + } + } + } + flag = favor + localization = "RANSOM_OWE_FAVOR_OPTION" + } + + send_option = { # EP3 Influence + is_shown = { # Actor must have a government that uses influence + scope:actor = { + government_has_flag = government_has_influence + } + } + is_valid = { + # Actor has enough influence + scope:actor = { influence >= medium_influence_value } + # Both characters are within the same top realm + custom_tooltip = { + text = not_same_realm_tt + scope:recipient.top_liege = scope:actor.top_liege + } + } + flag = influence_send_option + localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE + } + + send_option = { # MPO Herd + is_shown = { # Actor must have a government that uses Herd + scope:actor = { + government_has_flag = government_is_nomadic + exists = domicile + is_ai = no + } + # Recipient must care about Herd + scope:recipient = { + government_has_flag = government_is_nomadic + exists = domicile + } + } + is_valid = { + # Actor has enough Herd + scope:actor = { domicile.herd >= domicile.medium_herd_value } + } + flag = herd_send_option + localization = PAY_FOR_BETTER_AI_ACCEPTANCE + } + + #Use hook + send_option = { + is_valid = { + exists = scope:recipient + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + localization_values = { + EXTORTIONATE_RANSOM_COST = scope:secondary_recipient.increased_ransom_cost_value + RANSOM_COST = scope:secondary_recipient.ransom_cost_value + CURRENT_GOLD = scope:actor.gold + RANSOM_HERD_COST = ransom_herd_value_actor + } + + ai_accept = { + base = 0 + modifier = { + add = 50 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + desc = "GOLD_POSITIVE_REASON" + } + modifier = { # Accept more than half the ransom (unless greedy) + add = 25 + scope:current_gold = yes + AND = { + scope:actor = { gold >= scope:secondary_recipient.half_ransom_cost_value } + NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } + } + desc = "GOLD_POSITIVE_REASON" + } + modifier = { # Accept more than half the ransom (unless greedy) + add = 25 + scope:extortionate_current_gold = yes + AND = { + scope:actor = { gold >= scope:secondary_recipient.half_increased_ransom_cost_value } + NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } + } + desc = "GOLD_POSITIVE_REASON" + } + modifier = { + add = 50 + scope:favor = yes + scope:recipient.top_liege = scope:actor.top_liege + desc = "FAVOR_POSITIVE_REASON" + } + modifier = { + add = 0 + scope:favor = yes + scope:recipient.top_liege != scope:actor.top_liege + desc = "NO_USE_FOR_A_FAVOR_REASON" + } + modifier = { # For clarification + add = 0 + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + OR = { + scope:actor = { gold < scope:secondary_recipient.half_ransom_cost_value } + scope:recipient.ai_greed >= medium_positive_ai_value + } + desc = "WANTS_MORE_GOLD" + } + modifier = { # Say no to rivals + add = -55 + scope:recipient = { + has_relation_rival = scope:secondary_recipient + } + desc = "RIVAL_TO_ME_REASON" + } + modifier = { # Say no to rivals + add = -300 + scope:recipient = { + has_relation_nemesis = scope:secondary_recipient + } + desc = "NEMESIS_TO_ME_REASON" + } + modifier = { # At war + add = -300 + scope:recipient = { + is_at_war_with = scope:actor + } + desc = "IS_AT_WAR_REASON" + } + modifier = { # At war + add = -300 + scope:recipient = { + is_at_war = yes + any_primary_war_enemy = { + scope:secondary_recipient = { + liege ?= prev + } + } + } + desc = "IS_POW_REASON" + } + modifier = { # At war + add = -300 + scope:recipient = { + is_at_war_with = scope:secondary_recipient + } + desc = "IS_AT_WAR_WITH_TARGET_REASON" + } + #opinion_modifier = { # A lot more likely if Recipient likes Actor + # who = scope:recipient + # opinion_target = scope:actor + # multiplier = 1.0 + # desc = AI_OPINION_REASON + #} + #opinion_modifier = { # A lot more likely if Recipient likes secondary_recipient/prisoner + # who = scope:recipient + # opinion_target = scope:secondary_recipient + # multiplier = 1.0 + # desc = AI_OPINION_REASON + #} + modifier = { + scope:hook = yes + add = 100 + desc = SCHEME_WEAK_HOOK_USED + } + modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege + add = 40 + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + desc = INTIMIDATED_REASON + } + + modifier = { # An Cowed recipient is significantly more likely to accept an offer from the liege + add = 100 + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + desc = COWED_REASON + } + + modifier = { + add = 25 + scope:influence_send_option = yes + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + + modifier = { + add = 25 + scope:herd_send_option = yes + desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + + + # AI + ai_targets = { + ai_recipients = family + ai_recipients = spouses + ai_recipients = scripted_relations + ai_recipients = liege + } + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = top_realm_domicile_owners + max = 5 + } + ai_frequency_by_tier = { + barony = 0 + county = 6 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + gold >= 25 + } + + ai_target_quick_trigger = { + prison = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + } + } + + modifier = { + add = -100 + has_relation_rival = scope:secondary_recipient + } + + modifier = { + add = -300 + has_relation_nemesis = scope:secondary_recipient + } + + modifier = { + add = 100 + scope:favor = yes + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + modifier = { # Ransom your primary heir first + add = 10 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + AND = { + scope:favor = yes + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + } + scope:secondary_recipient = { + is_primary_heir_of = scope:actor + } + } + + modifier = { # Only ransom people you care about... unless you're very compassionate + factor = 0 + ai_compassion < high_positive_ai_value + scope:secondary_recipient = { + NOR = { + is_heir_of = scope:actor + is_child_of = scope:actor + is_grandchild_of = scope:actor + is_great_grandchild_of = scope:actor + is_consort_of = scope:actor + is_parent_of = scope:actor + is_grandparent_of = scope:actor + is_great_grandparent_of = scope:actor + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_secret_relation_lover = scope:actor + any_spouse = { + OR = { + is_heir_of = scope:actor + is_child_of = scope:actor + is_grandchild_of = scope:actor + is_great_grandchild_of = scope:actor + is_parent_of = scope:actor + is_grandparent_of = scope:actor + is_great_grandparent_of = scope:actor + has_relation_friend = scope:actor + } + } + } + } + } + + modifier = { # If you're very compassionate, well, then you ransom most people you can! + factor = 0 + ai_compassion >= high_positive_ai_value + scope:secondary_recipient = { + NOR = { + is_heir_of = scope:actor + is_close_or_extended_family_of = scope:actor + is_consort_of = scope:actor + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_secret_relation_lover = scope:actor + any_spouse = { + OR = { + is_heir_of = scope:actor + is_close_or_extended_family_of = scope:actor + has_relation_friend = scope:actor + } + } + } + } + } + + modifier = { # If you're very greedy... then they're a little bit more restrictive! + factor = 0 + ai_greed >= high_positive_ai_value + scope:secondary_recipient = { + NOR = { # Very Greedy rulers only ransom people in their own realm, or their heir + is_courtier_of = scope:actor + is_vassal_or_below_of = scope:actor + is_heir_of = scope:actor + } + NOR = { + is_heir_of = scope:actor + is_close_or_extended_family_of = scope:actor + is_consort_of = scope:actor + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_secret_relation_lover = scope:actor + any_spouse = { + OR = { + is_heir_of = scope:actor + is_close_or_extended_family_of = scope:actor + has_relation_friend = scope:actor + } + } + } + } + } + + # Some exceptions! + modifier = { # Lustful characters want to ransom lovers + add = 100 + has_trait = lustful + ai_greed <= 50 + scope:secondary_recipient = { + has_relation_lover = scope:actor + } + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + } + } + + modifier = { # Loyal characters want to ransom their relations + add = 100 + has_trait = loyal + scope:secondary_recipient = { + OR = { + has_relation_lover = scope:actor + has_relation_friend = scope:actor + } + } + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + } + } + + modifier = { # Certain characters will try to ransom their liege! + add = 100 + ai_greed <= very_high_negative_ai_value + ai_compassion >= very_high_negative_ai_value + NOT = { exists = joined_faction } + is_at_war = no + OR = { + has_trait = loyal + ai_honor >= high_positive_ai_value + } + scope:secondary_recipient = { + is_liege_or_above_of = scope:actor + } + OR = { + scope:gold = yes + scope:extortionate_gold = yes + # They won't offer current gold, only full ransoms + } + } + + modifier = { # Favors only relevant within the realm + add = -100 + scope:favor = yes + scope:recipient = { + NOR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + modifier = { # Don't spam the player with cheapskate offers + add = -100 + scope:current_gold = yes + scope:recipient = { + is_ai = no + } + scope:secondary_recipient = { + highest_held_title_tier >= tier_duchy + } + } + + # Struggle Agenda + modifier = { + scope:secondary_recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + } + } + add = 200 + } + } + } + + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + + modifier = { # Don't give away prisoners for free + factor = 0 + NOR = { + scope:favor = yes + scope:extortionate_gold = yes + scope:extortionate_current_gold = yes + scope:gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:current_gold = yes + } + } + } + + modifier = { # Don't annoy players + factor = 0 + scope:recipient = { is_ai = no } + OR = { + scope:recipient = { is_at_war = yes } + scope:secondary_recipient = { has_character_flag = character_ransom_refused_by_player } + } + } + + #don't ransom prisoners that are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:secondary_recipient = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } +} + +#To ransom yourself +ransom_me_interaction = { + interface_priority = 50 + common_interaction = yes + use_diplomatic_range = no + category = interaction_category_prison + icon = icon_gold + + greeting = positive + notification_text = PAY_RANSOM_PROPOSAL_PERSONAL + + desc = ransom_me_interaction_desc + + redirect = { # So that users can ransom themselves by clicking on their portrait + if = { + limit = { + scope:actor = scope:recipient + exists = scope:actor.imprisoner + } + scope:actor.imprisoner = { save_scope_as = recipient } + } + } + + is_shown = { + scope:actor = { + is_imprisoned_by = scope:recipient + } + } + + is_valid_showing_failures_only = { + scope:actor = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + on_accept = { + if = { + limit = { scope:actor = { is_imprisoned_by = scope:recipient } } + scope:actor = { + save_scope_as = prisoner + } + scope:recipient = { + save_scope_as = imprisoner + } + scope:actor = { + save_scope_as = payer + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + save_scope_value_as = { + name = new_ransom_value + value = haggler_ransom_cost_modifier + } + custom_tooltip = has_person_haggler_decrease_ransom_cost + } + + # If the payer doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay. + if = { + limit = { + OR = { + exists = scope:current_gold + exists = scope:extortionate_current_gold + } + } + save_scope_value_as = { + name = ransom_saved_gold_value + value = scope:payer.current_gold_value + } + } + + # Must come after we save the payment value, or the payer won't know how much they need to pay. + trigger_event = char_interaction.0150 + } + scope:imprisoner = { + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + scope:actor = { + custom_tooltip = has_person_haggler_increase_ransom_cost + } + } + send_interface_message = { + type = event_prison_neutral + title = recipient_released_from_prison + right_icon = scope:prisoner + left_icon = scope:imprisoner + ransom_interaction_effect = yes + } + + # Struggle Catalyst + if = { + limit = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:prisoner + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:prisoner + } + } + activate_struggle_catalyst = { + catalyst = catalyst_ransom_important + character = scope:imprisoner + } + } + } + } + if = { + limit = { always = scope:hook } + scope:actor = { + use_hook = scope:recipient + } + } + } + } + + on_decline = { + # If a player declines this ransom offer, wait 10 years before sending another one (they presumably have reasons for keeping you in prison). + if = { + limit = { scope:recipient = { is_ai = no } } + scope:actor = { + add_character_flag = { + flag = character_ransom_refused_by_player + years = 10 + } + } + } + + # Trigger notification event + scope:actor = { + trigger_event = char_interaction.0151 + } + } + + cost = { + influence = { + value = 0 + if = { + limit = { scope:influence_send_option = yes } + add = scope:actor.medium_influence_value + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + } + + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + is_valid = { + scope:actor = { + gold >= increased_ransom_cost + } + } + flag = extortionate_gold + localization = "RANSOM_EXTORTIONATE_GOLD_IMPRISONED_PERSPECTIVE_OPTION" + } + + # If you don't have what they're worth, pay me what you have (extort version)! + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:actor = { + gold < increased_ransom_cost + gold > 0 + } + } + flag = extortionate_current_gold + localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_IMPRISONED_PERSPECTIVE_OPTION" + } + + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + } + is_valid = { + scope:actor = { + gold >= ransom_cost + } + } + flag = gold + localization = "RANSOM_GOLD_OPTION" + } + + # If you don't have what they're worth, pay me what you have! + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:actor = { + gold < ransom_cost + gold > 0 + } + } + flag = current_gold + localization = "RANSOM_CURRENT_GOLD_OPTION" + } + + send_option = { + is_valid = { + scope:recipient = { + can_add_hook = { #To match the hook added through ransom_interaction_effect + target = scope:actor + type = favor_hook + } + } + } + flag = favor + localization = "RANSOM_FAVOR_OPTION" + } + + send_option = { # EP3 Influence + is_shown = { # Actor must have a government that uses influence + scope:actor = { + government_has_flag = government_has_influence + } + } + is_valid = { + # Actor has enough influence + scope:actor = { influence >= medium_influence_value } + # Both characters are within the same top realm + custom_tooltip = { + text = not_same_realm_tt + scope:recipient.top_liege = scope:actor.top_liege + } + } + flag = influence_send_option + localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE + } + + send_option = { # MPO Herd + is_shown = { # Actor must have a government that uses Herd + scope:actor = { + government_has_flag = government_is_nomadic + exists = domicile + } + # Recipient must care about Herd + scope:recipient = { + government_has_flag = government_is_nomadic + exists = domicile + } + } + is_valid = { + # Actor has enough Herd + scope:actor = { domicile.herd >= domicile.medium_herd_value } + } + flag = herd_send_option + localization = PAY_FOR_BETTER_AI_ACCEPTANCE + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + localization_values = { + EXTORTIONATE_RANSOM_COST = scope:actor.increased_ransom_cost_value + RANSOM_COST = scope:actor.ransom_cost_value + CURRENT_GOLD = scope:actor.gold + RANSOM_HERD_COST = ransom_herd_value_actor + } + + ai_accept = { + base = 0 + modifier = { + add = 50 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + desc = "GOLD_POSITIVE_REASON" + } + + modifier = { # Accept more than half the ransom (unless greedy) + add = 25 + scope:current_gold = yes + AND = { + scope:actor = { gold >= half_ransom_cost_value } + NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } + } + desc = "GOLD_POSITIVE_REASON" + } + + modifier = { # Accept more than half the ransom (unless greedy) + add = 25 + scope:extortionate_current_gold = yes + AND = { + scope:actor = { gold >= half_increased_ransom_cost_value } + NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } + } + desc = "GOLD_POSITIVE_REASON" + } + + modifier = { + add = 50 + scope:favor = yes + scope:recipient.top_liege = scope:actor.top_liege + desc = "FAVOR_POSITIVE_REASON" + } + + modifier = { + add = -50 + scope:favor = yes + NOR = { + scope:gold = yes + scope:extortionate_gold = yes + } + OR = { + scope:recipient.top_liege != scope:actor.top_liege + scope:recipient.ai_greed >= medium_positive_ai_value + } + desc = "NO_USE_FOR_A_FAVOR_REASON" + } + + modifier = { # For clarification + add = 0 + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + OR = { + scope:actor = { gold < half_ransom_cost_value } + scope:recipient.ai_greed >= medium_positive_ai_value + } + desc = "WANTS_MORE_GOLD" + } + + #opinion_modifier = { # A lot more likely if Recipient likes Actor + # who = scope:recipient + # opinion_target = scope:actor + # multiplier = 1.0 + # desc = AI_OPINION_REASON + #} + + modifier = { # Say no to rivals + add = -55 + scope:recipient = { + has_relation_rival = scope:actor + } + desc = "ACTOR_RIVAL_TO_ME_REASON" + } + modifier = { # Say no to nemesis + add = -300 + scope:recipient = { + has_relation_nemesis = scope:actor + } + desc = "ACTOR_NEMESIS_TO_ME_REASON" + } + + + modifier = { # At war + add = -300 + scope:recipient = { + is_at_war_with = scope:actor + } + desc = "IS_AT_WAR_REASON" + } + + modifier = { + scope:hook = yes + add = 100 + desc = SCHEME_WEAK_HOOK_USED + } + + modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege + add = intimidated_reason_value + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + desc = INTIMIDATED_REASON + } + + modifier = { # A Cowed recipient is significantly more likely to accept an offer from the liege + add = cowed_reason_value + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + desc = COWED_REASON + } + modifier = { # Family Feud + add = -50 + trigger = { + scope:recipient = { + house_has_feud_relation_with_trigger = { TARGET = scope:actor } + + } + } + desc = INTERACTION_FAMILY_FEUD_REVERSE_REASON + } + + modifier = { + add = 25 + scope:influence_send_option = yes + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + + modifier = { + add = 25 + scope:herd_send_option = yes + desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + + # AI + ai_frequency_by_tier = { + barony = 72 + county = 24 + duchy = 24 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_targets = { + ai_recipients = self + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + OR = { + time_in_prison = { years > 1 } + has_trait = impatient #LET ME OUT! I want out! NOW! + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + scope:herd_send_option = yes + } + } + + modifier = { + add = 100 + scope:favor = yes + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + modifier = { + add = -100 + scope:favor = yes + scope:recipient = { + NOR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + # Struggle Agenda + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + } + } + add = 200 + } + } + } + + modifier = { # Don't give away prisoners for free + factor = 0 + NOR = { + scope:favor = yes + scope:gold = yes + scope:extortionate_gold = yes + scope:current_gold = yes + scope:herd_send_option = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:current_gold = yes + } + } + } + + modifier = { # Don't annoy players + factor = 0 + scope:recipient = { is_ai = no } + OR = { + scope:recipient = { is_at_war = yes } + scope:actor = { has_character_flag = character_ransom_refused_by_player } + } + } + + #don't do it if you are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:actor = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } +} + +release_from_prison_interaction = { + interface_priority = 30 + common_interaction = yes + category = interaction_category_prison + special_interaction = release_from_prison_interaction + icon = prison + + desc = release_from_prison_interaction_desc + + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:take_vows = no + scope:recruit = no + scope:disfigure = no + scope:blind = no + scope:castrate = no + } + desc = RELEASE_PRISONER_OFFER + } + desc = RELEASE_PRISONER_OFFER_CONDITIONAL + } + } + + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } + scope:recipient = { remove_character_modifier = allowed_to_go_outside } + } + if = { + limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } } + scope:recipient = { remove_character_modifier = moldy_gruel_diet } + } + if = { + limit = { scope:recipient = { is_imprisoned_by = scope:actor } } + + scope:recipient = { + # Demand Conversion + if = { + limit = { scope:demand_conversion = yes } + demand_conversion_interaction_effect = yes + add_opinion = { + modifier = demanded_my_conversion_opinion + target = scope:actor + } + + # Struggle Catalyst + if = { + limit = { + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_demanding_important_conversion + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_demanding_important_conversion + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_demanding_important_conversion + character = scope:actor + } + } + } + } + } + + # Banish Landed Character + if = { + limit = { + scope:banish = yes + scope:recipient = { is_landed_or_landless_administrative = yes } + } + banish_effect = { BANISHER = scope:actor } + if = { + limit = { + NOT = { + scope:actor = { + has_banish_reason = scope:recipient + } + } + } + scope:actor = { add_tyranny = banishment_tyranny_gain } + } + add_opinion = { + modifier = banished_me + target = scope:actor + } + } + # Banish Unlanded Character + else_if = { + limit = { + AND = { + scope:banish = yes + scope:recipient = { + is_landless_adventurer = no + is_pool_character = no # It is possible for them to end up in the pool between the interaction being sent, and it being accepted + } + } + } + if = { + limit = { + this.gold > 0 + NOR = { + has_character_flag = realm_priest + has_character_flag = was_bookmaker + } + } + pay_short_term_gold = { target = scope:actor gold = this.gold } + } + if = { + limit = { + has_any_artifact = yes + } + every_character_artifact = { + set_owner = { + target = scope:actor + history = { + location = scope:recipient.location + actor = scope:recipient + recipient = scope:actor + type = stolen + } + } + scope:actor = { + if = { + limit = { + NOT = { has_variable = stolen_artifact } + } + set_variable = { + name = stolen_artifact + value = 1 + } + } + else = { + change_variable = { + name = stolen_artifact + add = 1 + } + } + } + } + } + banish = yes + add_opinion = { + modifier = banished_me + target = scope:actor + } + } + # 'Banish' Pool Character + else_if = { + limit = { + AND = { + scope:banish = yes + scope:recipient = { + is_playable_character = no + is_pool_character = yes # They'll just leave for the pool + } + } + } + if = { + limit = { + this.gold > 0 + } + pay_short_term_gold = { target = scope:actor gold = this.gold } + } + add_opinion = { + modifier = banished_me + target = scope:actor + } + } + + # Recruit Character + if = { + limit = { scope:recruit = yes } + if = { + limit = { + scope:actor = { + culture = { + has_cultural_parameter = can_recruit_prisoners_easily + } + } + } + add_opinion = { + modifier = loyal_servant + target = scope:actor + } + scope:actor = { + if = { + limit = { + can_add_hook = { + target = scope:recipient + type = loyalty_hook + } + } + add_hook = { + type = loyalty_hook + target = scope:recipient + } + } + } + } + else = { + add_opinion = { + modifier = demanded_recruitment + target = scope:actor + } + } + scope:actor = { + if = { + limit = { + AND = { + scope:actor.faith = { + has_doctrine = tenet_communal_possessions + } + scope:recipient = { + has_trait = peasant_leader + } + } + } + scope:actor = { + add_piety = medium_piety_gain + } + } + } + scope:actor = { + add_courtier = scope:recipient + } + } + + # Renounce Claims + if = { + limit = { scope:renounce_claims = yes } + add_opinion = { + modifier = demanded_claim_renouncement + target = scope:actor + } + scope:recipient = { + every_claim = { + explicit = yes + limit = { + save_temporary_scope_as = temp_claim + OR = { + holder = scope:actor + AND = { + exists = holder + NOT = { prev = { target_is_liege_or_above = scope:actor } } + holder = { target_is_liege_or_above = scope:actor } + } + scope:actor = { + any_held_title = { + is_de_jure_liege_or_above_target = scope:temp_claim + } + } + } + } + scope:recipient = { remove_claim = prev } + } + } + } + + # Gain Hook + if = { + limit = { scope:gain_hook = yes } + add_opinion = { + modifier = demanded_hook + target = scope:actor + } + scope:actor = { + add_hook = { #Hook effect must match gain_hook option condition + target = scope:recipient + type = favor_hook + } + } + } + + # Take Vows + if = { + limit = { scope:take_vows = yes } + send_child_to_clergy_effect = yes + #Does Byzan go hay-wire with deposing vassals? + if = { + limit = { + scope:actor = { + is_ai = yes + culture = { has_cultural_pillar = heritage_byzantine } + } + } + debug_log = debug_ai_byzan_forced_vows_on_prison_release + debug_log_scopes = yes + } + #Does the AI in general go haywire with deposing prisoners? + else_if = { + limit = { + scope:actor = { is_ai = yes } + } + debug_log = debug_ai_forced_vows_on_prison_release + debug_log_scopes = yes + } + } + + # Become Executioner + if = { + limit = { scope:become_executioner = yes } + release_as_executioner_effect = yes + } + + # Disfigure + if = { + limit = { scope:disfigure = yes } + + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + add_trait = disfigured + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = disfigured } + + scope:actor = { + trigger_event = { + id = prison.1030 + days = 1 + } + } + } + + # Blind + if = { + limit = { scope:blind = yes } + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + add_trait = blind + } + } + + # Merciful Blindings + scope:actor = { + if = { + limit = { + culture = { has_cultural_parameter = merciful_blinding } + OR = { + has_execute_reason = scope:recipient + has_banish_reason = scope:recipient + } + } + add_piety = medium_piety_gain + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded } + + scope:actor = { + trigger_event = { + id = prison.1020 + days = 1 + } + } + + # If we're a clan this interaction affects unity + if = { + limit = { scope:actor.culture = { has_cultural_parameter = merciful_blinding } } # If actor's culture has Merciful Blindings, they lose less unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + # Castrate + if = { + limit = { scope:castrate = yes } + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + if = { + limit = { + age < 12 + } + ep3_child_castration_effect = yes + } + else = { + ep3_youth_castration_effect = yes + } + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated } + + scope:actor = { + trigger_event = { + id = prison.1025 + days = 1 + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_abelarding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + # Demand Admin + if = { + limit = { scope:demand_admin = yes } + scope:recipient = { + change_to_administrative_effect = yes + } + } + + # Shared Torture effects + if = { + limit = { + OR = { + scope:disfigure = yes + scope:blind = yes + scope:castrate = yes + } + } + scope:recipient.house ?= { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = torture + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + # No Demands Added + if = { + limit = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:gain_hook = no + scope:take_vows = no + scope:become_executioner = no + scope:recruit = no + scope:disfigure = no + scope:blind = no + scope:castrate = no + scope:demand_admin = no + } + # Notification to the imprisoner + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = recipient_released_from_prison + left_icon = scope:recipient + scope:recipient = { + add_opinion = { + modifier = released_from_prison + target = scope:actor + } + } + } + house ?= { + change_house_relation_effect = { + HOUSE = scope:recipient.house + VALUE = house_relation_improve_medium_value + REASON = prison_released + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + add_dread = minor_dread_loss + stress_impact = { + sadistic = medium_stress_impact_gain + callous = minor_stress_impact_gain + } + # Struggle impact + if = { + limit = { + any_character_struggle = { + involvement = involved + OR = { + has_struggle_phase_parameter = release_prisoner_diff_culture_gives_prestige + has_struggle_phase_parameter = release_prisoner_diff_faith_gives_prestige + } + } + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + } + add_prestige = medium_prestige_gain + } + + # Struggle Catalyst + if = { + limit = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_release_important + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_release_important + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_release_important + character = scope:actor + } + } + } + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_release_supporter_detractor + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_release_supporter_detractor + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_release_supporter_detractor + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_release_supporter_detractor } + } + } + } + + # If we're a clan (and not making any demands) this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_released_from_own_prison.desc + REVERSE_NON_HOUSE_TARGET = no + } + + # LEGITIMACY GAIN FROM RELEASING DUKES AND ABOVE + if = { + limit = { + exists = scope:recipient.primary_title + scope:recipient.primary_title.tier >= tier_duchy + } + # Minus 2, since we want Duchy to be 1, and it's normally 3 + save_scope_value_as = { + name = title_tier_minus_2 + value = { + value = scope:recipient.primary_title.tier + subtract = 2 + } + } + scope:actor = { + send_interface_toast = { + type = msg_legitimacy_gain + title = legitimacy_gain_toast + left_icon = scope:actor + right_icon = scope:recipient + add_legitimacy = { + value = { + value = miniscule_legitimacy_gain + multiply = scope:title_tier_minus_2 + } + } + } + } + } + } + else = { + scope:actor = { + trigger_event = char_interaction.0160 + } + } + + # If a child was imprisoned due to yearly_4021 they'll come back to say hi + if = { + limit = { + exists = var:marked_for_revenge_in_event_yearly_4021 + } + add_opinion = { + modifier = abandoned_me_opinion + target = var:marked_for_revenge_in_event_yearly_4021 + } + if = { + limit = { + var:marked_for_revenge_in_event_yearly_4021 = { + is_alive = yes + is_ai = no + } + } + save_scope_as = child + if = { + limit = { #Make sure they're sadistic! + NOT = { has_trait = sadistic } + number_of_personality_traits < personality_trait_limit + } + add_trait = sadistic + } + var:marked_for_revenge_in_event_yearly_4021 = { + add_character_flag = { #TO make sure that they don't get spammed about the release + flag = block_for_prison_release_notification + days = 10 + } + trigger_event = yearly.4022 + } + remove_variable = marked_for_revenge_in_event_yearly_4021 + } + } + + if = { + limit = { + is_imprisoned = yes + # Release is handled in follow-up events + scope:disfigure = no + scope:blind = no + scope:castrate = no + } + release_from_prison = yes + } + } + + # FP3 - If prisoner is important for war + scope:actor = { # FP3 + if = { + limit = { + exists = scope:recipient.house + any_character_war = { + using_cb = fp3_free_house_member_cb + is_defender = scope:actor + primary_attacker.house = scope:recipient.house + } + } + random_character_war = { + limit = { + using_cb = fp3_free_house_member_cb + is_defender = scope:actor + primary_attacker.house = scope:recipient.house + } + primary_attacker = { + hidden_effect = { + send_interface_message = { + type = event_war_good + title = lesson_war_final_notes_victory_step_1 + left_icon = scope:recipient + right_icon = scope:actor + + show_as_tooltip = { + scope:recipient = { release_from_prison = yes } + add_prestige = major_prestige_gain + prev.primary_defender = { add_prestige = major_prestige_loss } + } + } + } + add_prestige = major_prestige_gain + prev.primary_defender = { add_prestige = major_prestige_loss } + } + } + } + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0161 + } + } + + send_option = { + flag = demand_conversion + localization = "RELEASE_DEMAND_CONVERSION" + is_shown = { + scope:recipient.faith != scope:actor.faith + } + is_valid = { + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + scope:recipient = { + OR = { + is_close_or_extended_family_of = scope:actor + is_vassal_of = scope:actor + } + } + } + + # Cannot ask Landed Rulers to convert if they're not your vassal + custom_description = { + text = cannot_demand_unsubordinate_landed_ruler_conversion + scope:recipient = { + trigger_if = { + limit = { + is_playable_character = yes + } + is_vassal_or_below_of = scope:actor + } + } + } + + # Cannot ask Religious Heads to convert + custom_description = { + text = cannot_demand_religious_head_conversion + NAND = { + exists = scope:recipient.faith.religious_head + scope:recipient.faith.religious_head = scope:recipient + } + } + # Cannot ask Holy Order Master to convert + custom_description = { + text = cannot_demand_holy_order_master_conversion + NAND = { + exists = scope:recipient.faith + scope:recipient.faith = { + any_faith_holy_order = { leader = scope:recipient } + } + } + } + } + } + + send_option = { + flag = renounce_claims + localization = RELEASE_RENOUNCE_CLAIMS + is_shown = { + custom_description = { + text = "release_renounce_claims" + subject = scope:recipient + scope:recipient = { + any_claim = { + explicit = yes + save_temporary_scope_as = temp_claim + OR = { + holder = scope:actor + AND = { + NOT = { prev = { target_is_liege_or_above = scope:actor } } + trigger_if = { + limit = { + exists = holder + } + holder = { target_is_liege_or_above = scope:actor } + } + } + scope:actor = { + any_held_title = { + is_de_jure_liege_or_above_target = scope:temp_claim + } + } + } + } + } + } + } + current_description = { + desc = RELEASE_RENOUNCE_CLAIMS_DESC + } + } + + send_option = { + flag = banish + localization = "RELEASE_BANISH" + is_shown = { + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + scope:recipient = { + OR = { + AND = { + is_playable_character = no + is_ruler = no + gold > scope:actor.gold + gold > scope:actor.medium_gold_value + scope:actor.ai_greed > low_negative_ai_value + } + AND = { + is_playable_character = no + is_ruler = no + gold > 0 + scope:actor = { + has_banish_reason = scope:recipient + } + } + AND = { + is_playable_character = no + is_ruler = no + gold > 100 + scope:actor.ai_greed >= high_positive_ai_value + } + AND = { + scope:actor = { + has_banish_reason = scope:recipient + } + scope:actor = { + opinion = { + target = scope:recipient + value <= medium_negative_opinion + } + } + } + } + } + } + trigger_if = { + limit = { + scope:recipient = { + is_playable_character = yes + } + } + scope:recipient = { + is_vassal_of = scope:actor + } + } + trigger_else = { + scope:recipient = { + is_courtier_of = scope:actor + } + } + custom_description = { + text = "release_banish_invalid_take_vows" + object = scope:recipient + scope:take_vows = no + } + scope:recruit = no #Should be impossible to have both but just in case + NOT = { + scope:recipient = { + is_spouse_of = scope:actor + } + } + } + } + + send_option = { + flag = gain_hook + localization = "RELEASE_GAIN_HOOK" + is_shown = { + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + } + is_valid = { + scope:actor = { + can_add_hook = { + type = favor_hook #Matches the hook added in the on_accept + target = scope:recipient + } + } + } + } + + send_option = { + flag = take_vows + localization = "RELEASE_TAKE_VOWS" + is_shown = { + scope:actor = { take_vows_available_trigger = yes } + } + is_valid = { + #Handle AI + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + #We're AI and Byzantium + trigger_if = { + limit = { + scope:actor = { + culture = { has_cultural_pillar = heritage_byzantine } + } + } + scope:recipient = { + is_ai = yes #Not gonna depose player characters, for now + OR = { + is_close_or_extended_family_of = scope:actor + is_vassal_or_below_of = scope:actor #Weigh this for Byz AI in the modifiers below + has_relation_rival = scope:actor + is_courtier_of = scope:actor + } + NOT = { + is_heir_of = scope:actor + } + } + #Get rid of rivals despite potentially liking them + trigger_if = { + limit = { + scope:recipient = { has_relation_rival = scope:actor } + } + always = yes + } + #Only get rid of family members if we dislike them + trigger_else = { + scope:actor = { + opinion = { + target = scope:recipient + value <= medium_negative_opinion + } + } + } + } + #We're not Byzantium but plain AI + trigger_else = { + scope:recipient = { + is_ai = yes #Not gonna depose player characters, for now + is_close_or_extended_family_of = scope:actor + NOT = { + is_heir_of = scope:actor + } + } + scope:actor = { + opinion = { + target = scope:recipient + value <= medium_negative_opinion + } + } + custom_description = { + text = "release_vows_invalid_not_your_court" + object = scope:recipient + subject = scope:actor + OR = { + scope:recipient = { is_courtier_of = scope:actor } + scope:recruit = yes + } + } + } + } + #Enhanced Take the Vows for Byzantium players -- who do we want to boot to a monastery far, far away? + trigger_else_if = { + limit = { + scope:actor = { + culture = { has_cultural_pillar = heritage_byzantine } + } + } + scope:recipient = { + is_ai = yes #Not gonna depose player characters, for now + custom_description = { + text = "release_byz_vows_invalid" + object = scope:recipient + subject = scope:actor + OR = { + is_close_or_extended_family_of = scope:actor + is_vassal_or_below_of = scope:actor + has_relation_rival = scope:actor + is_courtier_of = scope:actor + } + } + } + } + #Otherwise standard procedure Take the Vows requirements + trigger_else = { + scope:recipient = { + is_ai = yes #Not gonna depose player characters, for now + } + scope:actor = { is_close_or_extended_family_of = scope:recipient } #Triggering I_AM_NOT instead of CHARACTER_IS_NOT makes the tooltip look less cursed + custom_description = { + text = "release_vows_invalid_not_your_court" + object = scope:recipient + subject = scope:actor + OR = { + scope:recipient = { is_courtier_of = scope:actor } + scope:recruit = yes + } + } + + } + custom_description = { + text = "release_vows_invalid_not_your_faith" + object = scope:recipient + subject = scope:actor + trigger_if = { + limit = { + scope:recipient.faith != scope:actor.faith + } + scope:demand_conversion = yes + } + } + custom_description = { + text = "release_executioner_invalid_take_vows_condition" + object = scope:recipient + scope:become_executioner = no + } + custom_description = { + text = "release_banish_invalid_take_vows" + object = scope:recipient + scope:banish = no + } + scope:recipient = { + age >= 10 + NOR = { + has_trait = excommunicated + has_trait = devoted + has_trait = incapable + } + #Do they have the "wrong" marriage type? + NOR = { + custom_description = { + text = is_married_matrilineally + subject = scope:recipient + any_spouse = { + is_female = yes + matrilinear_marriage = yes + } + } + custom_description = { + text = is_married_patrilineally + subject = scope:recipient + any_spouse = { + is_male = yes + patrilinear_marriage = yes + } + } + custom_description = { + text = matrilinear_betrothal + subject = scope:recipient + betrothed ?= { + is_female = yes + matrilinear_betrothal = yes + } + } + custom_description = { + text = patrilinear_betrothal + subject = scope:recipient + betrothed ?= { + is_male = yes + patrilinear_betrothal = yes + } + } + } + } + } + } + send_option = { + flag = become_executioner + localization = "RELEASE_AS_EXECUTIONER" + is_shown = { + has_ep1_court_positions_dlc_trigger = yes + scope:actor = { + has_royal_court = yes + } + scope:recipient = { + is_adult = yes + } + } + is_valid = { + scope:actor = { + can_employ_court_position_type = executioner_court_position + NOT = { employs_court_position = executioner_court_position } + } + scope:recipient = { + trigger_if = { + limit = { scope:recruit = yes } + custom_description = { + text = "release_executioner_invalid_recruit" + object = scope:recipient + scope:recruit = yes + } + } + trigger_else = { + is_courtier_of = scope:actor + } + + custom_description = { + text = "release_executioner_invalid_take_vows_condition" + object = scope:recipient + scope:take_vows = no + } + NOT = { is_spouse_of = scope:actor } + } + } + } + + send_option = { + flag = recruit + localization = "RELEASE_RECRUIT" + is_shown = { + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + scope:recipient = { + OR = { + has_relation_best_friend = scope:actor + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + has_secret_relation_lover = scope:actor + is_heir_of = scope:actor + } + } + } + scope:recipient = { + is_ruler = no + NOT = { is_courtier_of = scope:actor } + OR = { + is_adult = yes + AND = { + is_adult = no + OR = { + trigger_if = { + limit = { exists = liege } + NOT = { is_heir_of = liege } + } + NOT = { exists = liege } + } + } + } + } + } + } + + send_option = { + flag = disfigure + localization = "RELEASE_DISFIGURE" + is_shown = { + scope:actor = { + government_allows = administrative + culture = { has_cultural_tradition = tradition_ep3_palace_politics } + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + scope:recipient = { + is_adult = yes + } + } + is_valid = { + scope:recipient = { + NOT = { has_trait = disfigured } + } + # Byzantines can't disfigure those not in their realm + trigger_if = { + limit = { + scope:actor = { + culture = { has_cultural_pillar = heritage_byzantine } + } + } + scope:recipient = { + custom_description = { + text = "release_byz_disfigure_invalid" + object = scope:recipient + subject = scope:actor + OR = { + is_close_or_extended_family_of = scope:actor + is_vassal_or_below_of = scope:actor + has_relation_rival = scope:actor + is_courtier_of = scope:actor + } + } + } + } + custom_description = { + text = "release_prisoner_disfigure_blind_castrate_condition" + object = scope:recipient + scope:blind = no + scope:castrate = no + } + } + } + + send_option = { + flag = blind + localization = "RELEASE_BLIND" + is_shown = { + scope:actor = { + is_adult = yes + culture = { has_cultural_parameter = can_blind_prisoners } + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + scope:recipient = { + is_adult = yes + } + } + is_valid = { + scope:recipient = { + NOT = { has_trait = blind } + } + custom_description = { + text = "release_prisoner_disfigure_blind_castrate_condition" + object = scope:recipient + scope:disfigure = no + scope:castrate = no + } + } + } + + send_option = { + flag = castrate + localization = "RELEASE_CASTRATE" + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + is_eunuch_trigger = no + is_male = yes + } + scope:actor = { + is_adult = yes + culture = { + has_cultural_parameter = can_castrate_prisoners + } + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + } + is_valid = { + scope:recipient = { + is_eunuch_trigger = no + } + custom_description = { + text = "release_prisoner_disfigure_blind_castrate_condition" + object = scope:recipient + scope:disfigure = no + scope:blind = no + } + } + } + + send_option = { + flag = demand_admin + localization = "RELEASE_DEMAND_ADMIN" + is_shown = { + scope:actor = { government_allows = administrative } + scope:actor = scope:recipient.liege + scope:recipient = { #Requirements match demand admin interaction + highest_held_title_tier >= tier_county + is_landed = yes + is_ruler = yes + NOT = { government_allows = administrative } + NOT = { + scope:recipient = { government_has_flag = government_is_tribal } + } + NOT = { scope:recipient ?= scope:recipient.faith.religious_head } + NOT = { scope:recipient ?= scope:actor.diarch } + } + } + is_valid = { + scope:recipient = { + NOT = { government_allows = administrative } + } + } + } + + send_options_exclusive = no + + auto_accept = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:gain_hook = no + scope:take_vows = no + scope:recruit = no + scope:disfigure = no + scope:blind = no + scope:castrate = no + scope:demand_admin = no + } + + ai_accept = { + base = 0 + modifier = { + add = 100 + desc = "WANTS_FREEDOM_REASON" + } + # Basic modifiers + modifier = { + trigger = { + has_trait = ambitious + } + add = -20 + desc = "RECIPIENT_IS_AMBITIOUS" + } + + # Demand conversion + modifier = { + trigger = { + scope:recipient = { ai_zeal <= 20 } + scope:demand_conversion = yes + } + add = -20 + desc = "CONVERSION_NEGATIVE_REASON" + } + modifier = { + trigger = { + scope:recipient = { ai_zeal > 20 } + scope:demand_conversion = yes + } + add = { + value = ai_zeal + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value = faith_astray_level + } + } + } + multiply = -1 + } + else = { + multiply = -2 + } + } + desc = "CONVERSION_NEGATIVE_REASON" + } + # Renounce claims + modifier = { + add = -25 + trigger = { + scope:renounce_claims = yes + ai_greed < 0 + } + desc = "RENOUNCE_CLAIMS_REASON" + } + modifier = { + add = -50 + trigger = { + scope:renounce_claims = yes + ai_greed >= 0 + ai_greed < 26 + } + desc = "RENOUNCE_CLAIMS_REASON" + } + modifier = { + add = -75 + trigger = { + scope:renounce_claims = yes + ai_greed >= 26 + ai_greed < 51 + } + desc = "RENOUNCE_CLAIMS_REASON" + } + modifier = { + add = -95 + trigger = { + scope:renounce_claims = yes + ai_greed >= 51 + } + desc = "RENOUNCE_CLAIMS_REASON" + } + # Employ executioner + modifier = { + add = -50 + trigger = { + scope:become_executioner = yes + # Sadists don't care about becoming an executioner + NOR = { + has_trait = sadistic + has_trait = callous + } + } + desc = "BECOME_EXECUTIONER_REASON" + } + # Banish + modifier = { + add = -50 + trigger = { + scope:banish = yes + } + NOT = { + scope:actor = { + has_imprisonment_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + } + desc = "BANISH_NEGATIVE_REASON" + } + modifier = { # Legalistic tradition + add = legalistic_vassal_punishment_acceptance + trigger = { + scope:banish = yes + } + scope:actor = { + has_imprisonment_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + desc = tradition_legalistic_name + } + # Gain hook + modifier = { + add = { + value = -50 + if = { + limit = { + scope:recipient = { + ai_vengefulness > 0 + } + } + subtract = ai_vengefulness + } + } + trigger = { + scope:gain_hook = yes + } + desc = "GAIN_HOOK_NEGATIVE_REASON" + } + # Take vows + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + } + desc = "TAKE_VOWS_NEGATIVE_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = lustful + } + desc = "TAKE_VOWS_LUSTFUL_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = rakish + } + desc = "TAKE_VOWS_RAKISH_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = fornicator + } + desc = "TAKE_VOWS_FORNICATOR_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = seducer + } + desc = "TAKE_VOWS_SEDUCER_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = deviant + } + desc = "TAKE_VOWS_DEVIANT_REASON" + } + modifier = { + add = { + value = -15 + multiply = num_sinful_traits + } + trigger = { + scope:take_vows = yes + num_sinful_traits > 1 + } + desc = "TAKE_VOWS_SINS_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = cynical + } + desc = "TAKE_VOWS_CYNICAL_REASON" + } + # Recruitment + modifier = { + add = -10 + trigger = { + scope:recruit = yes + NOT = { + scope:actor = { + culture = { + has_cultural_parameter = can_recruit_prisoners_easily + } + } + } + } + desc = "RECRUITMET_NEGATIVE_REASON" + } + # Disfigure + modifier = { + add = { + value = -100 + if = { + limit = { + has_trait = beauty_good + } + multiply = 2 + } + } + trigger = { + scope:disfigure = yes + OR = { + NOR = { + has_trait = maimed + has_trait = beauty_bad + ai_sociability < -75 + } + has_trait = beauty_good + } + } + desc = "DISFIGURE_NEGATIVE_REASON" + } + modifier = { + add = -75 + trigger = { + scope:disfigure = yes + OR = { + has_trait = maimed + has_trait = beauty_bad + ai_sociability < -75 + } + NOT = { has_trait = beauty_good } + } + desc = "DISFIGURE_NEGATIVE_REASON" + } + # Blind + modifier = { + add = -100 + trigger = { + scope:blind = yes + NOR = { + has_trait = one_eyed + has_trait = infirm + age > 60 # I.e. they have poor eyesight already + } + } + desc = "BLIND_NEGATIVE_REASON" + } + modifier = { + add = -75 + trigger = { + scope:blind = yes + OR = { + has_trait = one_eyed + has_trait = infirm + age > 60 # I.e. they have poor eyesight already + } + } + desc = "BLIND_NEGATIVE_REASON" + } + # Castrate + modifier = { + add = -75 + trigger = { + scope:castrate = yes + any_child = { count > 0 } + ai_boldness < -50 + } + desc = "CASTRATE_NEGATIVE_REASON" + } + modifier = { + add = -100 + trigger = { + scope:castrate = yes + any_child = { count > 0 } + ai_boldness >= -50 + } + desc = "CASTRATE_NEGATIVE_REASON" + } + modifier = { + add = -100 + trigger = { + scope:castrate = yes + any_child = { count <= 0 } + } + desc = "CASTRATE_NO_CHILDREN_NEGATIVE_REASON" + } + modifier = { + add = -100 + trigger = { + scope:castrate = yes + has_trait = lustful + } + desc = "TAKE_VOWS_LUSTFUL_REASON" + } + # Demand admin + modifier = { + add = -20 + trigger = { + scope:demand_admin = yes + OR = { + culture = { + OR = { + # Historical cultures + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + this = culture:han + any_parent_culture_or_above = { + this = culture:han + } + # Bureaucratic culture + has_cultural_pillar = ethos_bureaucratic + } + } + # Another admin government + government_allows = administrative + } + } + desc = "DEMAND_ADMIN_NEGATIVE_REASON" + } + modifier = { + add = -50 + trigger = { + scope:demand_admin = yes + NOR = { + culture = { + OR = { + # Historical cultures + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + this = culture:han + any_parent_culture_or_above = { + this = culture:han + } + # Bureaucratic culture + has_cultural_pillar = ethos_bureaucratic + } + } + # Another admin government + government_allows = administrative + } + culture = { + NOR = { + has_cultural_tradition = tradition_hereditary_hierarchy + has_cultural_tradition = tradition_staunch_traditionalists + } + } + } + desc = "DEMAND_ADMIN_NEGATIVE_REASON" + } + modifier = { + add = -100 + trigger = { + scope:demand_admin = yes + NOR = { + culture = { + OR = { + # Historical cultures + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + this = culture:han + any_parent_culture_or_above = { + this = culture:han + } + # Bureaucratic culture + has_cultural_pillar = ethos_bureaucratic + } + } + # Another admin government + government_allows = administrative + } + culture = { + OR = { + has_cultural_tradition = tradition_hereditary_hierarchy + has_cultural_tradition = tradition_staunch_traditionalists + } + } + } + desc = "DEMAND_ADMIN_NEGATIVE_REASON" + } + # Struggle + modifier = { + trigger = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:gain_hook = no + scope:take_vows = no + scope:recruit = no + } + scope:recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:recipient = { + any_character_struggle = { + phase_has_catalyst = catalyst_release_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:recipient = { + any_character_struggle = { + phase_has_catalyst = catalyst_release_important + } + } + } + add = 200 + } + } + } + } + + # AI + ai_targets = { + ai_recipients = prisoners + } + ai_frequency = 1 + + ai_potential = { + has_prisoners = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 20 + scope:demand_conversion = yes + } + modifier = { + add = 100 + scope:demand_conversion = yes + scope:recipient = { + is_vassal_of = scope:actor + } + } + modifier = { + add = 30 + scope:renounce_claims = yes + } + modifier = { + add = 50 + scope:banish = yes + } + modifier = { + add = 30 + scope:take_vows = yes + } + modifier = { + add = 10 + scope:recruit = yes + } + modifier = { + add = 30 + scope:disfigure = yes + } + modifier = { + add = 20 + scope:blind = yes + } + modifier = { + add = 50 + scope:castrate = yes + } + modifier = { # Rivals can rot + add = -40 + scope:actor = { + NOT = { + has_trait = forgiving + } + } + scope:recipient = { + OR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + } + } + modifier = { # Rivals can rot FOREVER if vengeful + add = -100 + scope:actor = { + NOT = { + has_trait = forgiving + } + } + scope:actor.ai_vengefulness >= very_high_positive_ai_value + scope:recipient = { + OR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + } + } + modifier = { # Compassionate characters don't want to keep children in their dungeon for too long + add = 10 + scope:actor = { + is_at_war = no + ai_compassion >= low_positive_ai_value + } + scope:recipient = { + is_adult = no + time_in_prison = { years > 1 } + } + } + modifier = { # Very compassionate characters tend to release prisoners + add = 10 + scope:actor = { + is_at_war = no + ai_compassion >= very_high_positive_ai_value + } + scope:recipient = { + time_in_prison = { years > 1 } + } + } + modifier = { # Somewhat compassionate characters tend to keep people in their dungeon for a while + add = 10 + scope:actor = { + is_at_war = no + ai_compassion >= medium_positive_ai_value + } + scope:recipient = { + is_playable_character = no + time_in_prison = { years > 3 } + } + } + modifier = { # Only truly discompassionate characters will have their dungeon full of hapless victims after 5 years + add = 10 + scope:actor = { + is_at_war = no + ai_compassion >= low_negative_ai_value + } + scope:recipient = { + is_playable_character = no + time_in_prison = { years > 5 } + } + } + modifier = { # Most AI characters will let family out... + add = 10 + scope:actor = { + is_at_war = no + OR = { + ai_compassion >= very_high_positive_ai_value + AND = { + ai_compassion >= high_negative_ai_value + opinion = { + target = scope:recipient + value >= low_negative_opinion + } + } + } + } + scope:recipient = { + time_in_prison = { years > 1 } + is_playable_character = no + is_close_family_of = scope:actor + } + } + modifier = { # Almost all will let their own children out + add = 40 + scope:actor = { + is_at_war = no + ai_compassion >= very_high_negative_ai_value + } + scope:recipient = { + is_playable_character = no + is_child_of = scope:actor + } + } + # Struggle + modifier = { + trigger = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:gain_hook = no + scope:take_vows = no + scope:recruit = no + } + scope:recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_release_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_release_important + } + NOT = { + ai_greed >= 25 + } + OR = { + ai_compassion > 50 + AND = { + ai_compassion > 0 + scope:recipient = { + time_in_prison = { years > 1 } + } + } + } + } + } + add = 200 + } + } + } + modifier = { # Family Feud + add = -50 + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + + } + } + #Byz AI can shove vassals off to remote monasteries - weigh that here + modifier = { + add = -10 + scope:take_vows = yes + scope:actor = { + culture = { has_cultural_pillar = heritage_byzantine } + } + scope:recipient = { is_vassal_or_below_of = scope:actor } + } + + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + #don't release prisoners that are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:recipient = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } +} + +execute_prisoner_interaction = { + interface_priority = 120 + common_interaction = yes + category = interaction_category_prison + special_interaction = execute_prisoner_interaction + icon = icon_dead + + desc = execute_prisoner_interaction_desc + + ai_targets = { + ai_recipients = prisoners + } + + ai_frequency_by_tier = { + barony = 72 + county = 12 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + is_at_war = no + } + + ai_will_do = { + base = 0 + + opinion_modifier = { + trigger = { + scope:actor != scope:recipient + } + opinion_target = scope:recipient + multiplier = -1 + } + + ai_value_modifier = { + ai_compassion = -1 + } + modifier = { + add = -20 + ai_compassion >= low_positive_ai_value + scope:recipient = { is_adult = no } + } + # Try to avoid Kinslaying + modifier = { + add = -20 + scope:actor.dynasty = scope:recipient.dynasty + NOT = { faith = { has_doctrine = doctrine_kinslaying_any_dynasty_member_crime } } + } + modifier = { + add = -20 + is_close_or_extended_family_of = scope:recipient + NOT = { faith = { has_doctrine = doctrine_kinslaying_extended_family_crime } } + } + modifier = { + add = -20 + is_close_family_of = scope:recipient + NOT = { faith = { has_doctrine = doctrine_kinslaying_close_kin_crime } } + } + modifier = { + add = 50 + has_execute_reason = scope:recipient + OR = { + has_trait = sadistic + has_trait = lunatic + } + } + modifier = { # Executing your way to new titles is a worthy cause... + add = 20 + scope:actor = { + has_execute_reason = scope:recipient + ai_greed > 0 + any_heir_title = { # Execute rulers you can inherit land from + holder ?= scope:recipient + } + } + } + modifier = { # Vengeful characters enjoy executing their rivals + add = 20 + scope:actor = { + has_execute_reason = scope:recipient + ai_vengefulness >= medium_positive_ai_value + OR = { + has_relation_rival = scope:recipient # Execute rivals + has_relation_nemesis = scope:recipient # Execute rivals + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + } + } + modifier = { # Executing your way to new titles is a worthy cause... and very greedy characters need no execution reason + add = 35 + scope:actor = { + ai_greed >= very_high_positive_ai_value + any_heir_title = { # Execute rulers you can inherit land from + holder ?= scope:recipient + } + } + } + modifier = { # Vengeful characters enjoy executing their rivals, and very vengeful characters need no execution reason + add = 35 + scope:actor = { + ai_vengefulness >= very_high_positive_ai_value + OR = { + has_relation_rival = scope:recipient # Execute rivals + has_relation_nemesis = scope:recipient # Execute rivals + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + } + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { + factor = 0 + scope:actor = { + NOR = { # Do not execute unless you have some sort of reason to do it + has_execute_reason = scope:recipient + has_relation_rival = scope:recipient # Execute rivals + has_relation_nemesis = scope:recipient # Execute rivals + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + any_heir_title = { # Execute rulers you can inherit land from + holder ?= scope:recipient + } + has_trait = lunatic # Self explanatory + } + } + } + + # Agenda impact + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + } + is_important_or_vip_struggle_character = yes + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_important + } + has_character_flag = agenda_towards_escalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_important + } + } + } + add = -100 + } + } + } + + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + } + has_trait = fp3_struggle_supporter + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_supporter + } + has_trait = fp3_struggle_detractor + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_supporter + } + } + } + add = -100 + } + } + } + + #Nomads get the special beheading stuff + modifier = { + scope:actor = { + mpo_keep_prisoners_heads_trigger = yes + scope:recipient = { + is_ruler = yes + highest_held_title_tier >= tier_county + is_adult = yes + } + NOT = { + scope:recipient.top_liege ?= { + current_military_strength > scope:actor.current_military_strength + tier_difference = { + target = scope:actor + value >= -1 + } + } + } + } + NOT = { + scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } + } + add = 10 + } + #Boost further if actor if want to keep head + modifier = { + #want to keep head + scope:actor = { + mpo_keep_prisoners_heads_trigger = yes + } + scope:recipient = { + highest_held_title_tier >= tier_kingdom + is_adult = yes + } + NOT = { + scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } + } + add = 20 + } + #Boost further if actor wants to be scary + modifier = { + #want to keep head + scope:actor = { + mpo_keep_prisoners_heads_trigger = yes + scope:recipient = { + is_ruler = yes + highest_held_title_tier >= tier_county + is_adult = yes + } + OR = { + has_trait = conqueror + has_trait = greatest_of_khans + is_gurkhan = yes + } + } + NOT = { + scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } + } + add = 30 + } + + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + } + has_trait = fp3_struggle_detractor + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_detractor + } + has_trait = fp3_struggle_supporter + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_detractor + } + } + } + add = -100 + } + } + } + modifier = { + add = 200 + scope:actor.faith = { + has_doctrine = tenet_extinction_of_dharma + } + scope:recipient.faith = { + religion = root.faith.religion + NOT = { + has_doctrine = tenet_extinction_of_dharma + } + } + } + #don't kill prisoners that are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:recipient = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } + + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + + is_valid_showing_failures_only = { + scope:recipient = { NOT = { has_strong_hook = scope:actor } } + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + + # Blocked by current struggle phase + custom_tooltip = { + text = struggle_parameter_struggle_cannot_execute_involved_prisoners + NOT = { + scope:actor = { + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = struggle_cannot_execute_involved_prisoners + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:recipient + } + } + } + } + } + + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + + # For use with co-ruler diarchs. + scope:recipient = { is_imprisoned_by = scope:actor } + } + + cost = { + # Usually, this action is free, but during certain diarchies, we want it to cost. + prestige = liege_diarchy_surcharge_interaction_execute_prisoner_interaction_value + } + + on_accept = { + # If this is a co-ruler we're executing, tell us if we have alternatives. + scope:actor = { + if = { + limit = { + OR = { + AND = { + has_diarchy_active_parameter = diarchy_is_co_rulership + diarch ?= scope:recipient + } + AND = { + scope:recipient = { has_diarchy_active_parameter = diarchy_is_co_rulership } + is_diarch_of_target = scope:recipient + } + } + } + # If the player doesn't have to execute their partner, point that out. + if = { + limit = { liege_can_maim_co_ruler_without_killing_them_trigger = yes } + custom_tooltip = execute_prisoner_interaction.tt.can_maim_diarch + } + # Otherwise, if they're out diarch, we end it. + if = { + limit = { scope:actor.diarch = scope:recipient } + end_diarchy = yes + every_player = { + limit = { + NOR = { + this = scope:actor + this = scope:recipient + } + top_liege = scope:actor.top_liege + } + trigger_event = diarchy.8022 + } + } + # Else, usurp. + else = { + custom_description_no_bullet = { + text = execute_prisoner_interaction_tt_co_emperor_usurpation + object = scope:recipient + } + create_title_and_vassal_change = { + type = usurped + save_scope_as = change + } + scope:recipient = { + every_held_title = { + limit = { + OR = { + this = scope:recipient.capital_county + this = scope:recipient.capital_county.duchy + AND = { + tier = tier_county + this.duchy = scope:recipient.capital_county.duchy + } + tier >= scope:recipient.highest_held_title_tier + } + } + change_title_holder = { + holder = scope:actor + change = scope:change + } + } + every_vassal = { + custom = custom.recipient_every_vassal + change_liege = { + LIEGE = scope:actor + CHANGE = scope:change + } + } + hidden_effect = { + change_liege = { + LIEGE = scope:actor + CHANGE = scope:change + } + } + } + resolve_title_and_vassal_change = scope:change + every_player = { + limit = { + NOR = { + this = scope:actor + this = scope:recipient + } + top_liege = scope:actor.top_liege + } + trigger_event = diarchy.8023 + } + } + } + # Regardless, this is legit politics, so we don't deduct legitimacy for it. + save_scope_value_as = { + name = suppress_legitimacy_from_crime + value = yes + } + } + # Now, the rest of it. + if = { + limit = { scope:recipient = { is_imprisoned_by = scope:actor } } + # Are you HumSac'ing the HoF of a faith that doesn't practice HumSac? + hidden_effect = { + scope:actor = { + humsacd_a_hof_effect = { + SACRIFICER = scope:actor + SACRIFICED_HOF = scope:recipient + } + } + } + if = { + limit = { always = scope:execution_public } + if = { + limit = { + scope:actor.capital_county = { + NOT = { has_county_modifier = held_public_execution_modifier } + } + } + custom_description_no_bullet = { + text = public_execution_tooltip + } + + scope:actor = { + capital_county = { + add_county_modifier = { + modifier = held_public_execution_modifier + days = 1850 + } + } + custom_tooltip = public_execution_control_effect + hidden_effect = { + every_held_title = { + title_tier = county + change_county_control = executioner_control_value + } + } + } + } + else = { + custom_description_no_bullet = { + text = public_execution_too_soon_tooltip + } + } + } + # Other Effects + if = { # Boil their skull? + limit = { + NOT = { always = scope:execution_devour } + scope:actor = { + has_relation_rival = scope:recipient + has_personality_malicious_trigger = yes + has_royal_court = yes + has_dlc_feature = court_artifacts + } + scope:recipient = { + is_adult = yes + } + } + scope:actor = { + random = { + chance = { + value = 25 + if = { + limit = { + has_relation_nemesis = scope:recipient + } + add = 75 + } + } + hidden_effect = { + scope:recipient = { + save_scope_as = skull_to_boil + } + trigger_event = { + id = artifact.7000 + days = { 3 10 } + } + } + } + } + } + if = { + limit = { + NOT = { always = scope:execution_devour } + scope:actor = { + is_adult = no + age >= 4 + is_ai = no + NOT = { has_character_flag = witnessed_execution_flag } + } + scope:recipient = { + is_adult = yes + } + } + scope:actor = { trigger_event = bp1_yearly.9045 } + } + else_if = { + limit = { + NOT = { always = scope:execution_devour } + scope:actor = { + OR = { + has_relation_friend = scope:recipient + has_relation_lover = scope:recipient + } + is_ai = no + } + scope:recipient = { + is_adult = yes + } + } + scope:actor = { trigger_event = bp1_yearly.9044 } + } + # Gallowsbait. + scope:actor = { + if = { + limit = { + has_government = landless_adventurer_government + scope:recipient = { + is_landless_adventurer = no + is_ruler = yes + } + } + if = { + limit = { scope:recipient.highest_held_title_tier >= tier_empire } + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_massive_gain + XP_MIN = gallowsbait_xp_massive_gain + } + } + else_if = { + limit = { scope:recipient.highest_held_title_tier >= tier_kingdom } + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_major_gain + XP_MIN = gallowsbait_xp_major_gain + } + } + else_if = { + limit = { scope:recipient.highest_held_title_tier >= tier_duchy } + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_medium_gain + XP_MIN = gallowsbait_xp_medium_gain + } + } + else_if = { + limit = { scope:recipient.highest_held_title_tier >= tier_barony } + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + } + else = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = 2 + XP_MIN = 2 + } + } + } + } + + # FP3 + # Struggle Catalysts + scope:actor = { + if = { # Execute important + limit = { + scope:recipient = { is_important_or_vip_struggle_character = yes } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_important + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_important + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_execute_important + character = scope:actor + } + } + } + if = { # Execute Supporter/Detractor + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + } + if = { + limit = { + scope:recipient = { has_trait = fp3_struggle_detractor } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_detractor + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_detractor + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_execute_detractor + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = stabil_catalyst_execute_detractor } + } + } + else_if = { + limit = { + scope:recipient = { has_trait = fp3_struggle_supporter } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_supporter + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_supporter + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_execute_supporter + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = unrest_catalyst_execute_supporter } + } + } + } + # Free House Member CB target executed during war + if = { + limit = { + exists = scope:recipient.house + any_character_war = { + using_cb = fp3_free_house_member_cb + is_defender = scope:actor + primary_attacker.house = scope:recipient.house + } + } + random_character_war = { + limit = { + using_cb = fp3_free_house_member_cb + is_defender = scope:actor + primary_attacker.house = scope:recipient.house + } + primary_attacker = { + add_opinion = { + target = scope:actor + modifier = executed_close_relation_opinion + } + } + } + add_prestige = { + value = medium_piety_loss + multiply = { + value = ai_honor + add = 1 + } + } + every_vassal = { + limit = { + OR = { + has_vassal_stance = courtly + has_vassal_stance = glory_hound + ai_honor > 0.48 + } + } + add_opinion = { + target = scope:actor + modifier = executed_valuable_prisoner_modifier + } + } + } + } + + if = { + limit = { + scope:actor.faith = { + has_doctrine = tenet_extinction_of_dharma + } + scope:recipient.faith = { + religion = scope:actor.faith.religion + NOT = { + has_doctrine = tenet_extinction_of_dharma + } + } + } + if = { + limit = { + scope:recipient = { + is_ruler = yes + highest_held_title_tier = tier_county + } + } + scope:actor = { + add_piety = minor_piety_value + } + } + else_if = { + limit = { + scope:recipient = { + highest_held_title_tier = tier_duchy + } + } + scope:actor = { + add_piety = medium_piety_value + } + } + else_if = { + limit = { + scope:recipient = { + highest_held_title_tier = tier_kingdom + } + } + scope:actor = { + add_piety = major_piety_value + } + } + else_if = { + limit = { + scope:recipient = { + highest_held_title_tier = tier_empire + } + } + scope:actor = { + add_piety = massive_piety_value + } + } + else_if = { + limit = { + scope:recipient = { + highest_held_title_tier = tier_hegemony + } + } + scope:actor = { + add_piety = monumental_piety_value + } + } + else = { + scope:actor = { + add_piety = miniscule_piety_value + } + } + } + if = { + limit = { + scope:actor = { + faith = { + has_doctrine = tenet_cranial_trophies + } + } + scope:recipient = { + is_adult = yes + is_faith_dominant_gender = yes + } + } + tgp_cranial_trophies_beheading_effect = { + KILLER = scope:actor + DEAD = scope:recipient + } + } + # Kill the target + if = { + limit = { + scope:recipient = { is_ai = no } + scope:actor = { is_ai = yes } + } + scope:recipient = { trigger_event = char_interaction.0170 } # Give players a chance to see what's about to happen + show_as_tooltip = { + execute_prisoner_effect = { + VICTIM = scope:recipient + EXECUTIONER = scope:actor + } + } + } + else = { + scope:recipient = { trigger_event = char_interaction.0171 } + execute_prisoner_effect = { + VICTIM = scope:recipient + EXECUTIONER = scope:actor + } + } + + if = { + limit = { always = scope:execution_devour } + scope:actor = { + custom_tooltip = devour_as_execution_tooltip + if = { + limit = { + faith = { has_doctrine_parameter = cannibalism_legal } + NOT = { has_trait = cannibal } + } + add_trait = cannibal + } + stress_impact = { + base = medium_stress_impact_loss + compassionate = miniscule_stress_impact_gain + forgiving = miniscule_stress_impact_gain + } + random = { + chance = 20 + show_as_tooltip = { add_trait = ill } + hidden_effect = { + trigger_event = { + id = health.1001 + days = { 3 10 } + } + } + } + } + } + + if = { + limit = { always = scope:execution_provisions } + scope:actor = { + domicile ?= { + change_provisions = human_provision_value + } + } + } + + if = { + limit = { + always = scope:execution_burned + scope:actor.faith = { + has_doctrine = doctrine_pluralism_fundamentalist + NOT = { + has_doctrine = tenet_extinction_of_dharma + } + } + } + scope:actor = { + add_piety = miniscule_piety_value + } + } + + scope:actor = { + hidden_effect = { + send_interface_message = { + type = event_prison_neutral + title = msg_execute_prisoner + right_icon = scope:recipient + custom_tooltip = msg_execute_prisoner_desc + } + } + } + } + } + + options_heading = execution_options_heading + + send_option = { + is_shown = { + scope:actor = { + OR = { + mpo_keep_prisoners_heads_trigger = yes + faith = scope:recipient.faith + faith = { + has_doctrine = tenet_cranial_trophies + } + culture_has_asian_heritage_pillar_trigger = yes + } + NOT = { + faith = { has_doctrine_parameter = human_sacrifice_active } + } + } + } + flag = execution_beheaded + localization = "EXECUTION_BEHEADED" + } + + #Cannibal option. Should be treated as a "normal" execution, but that you eat the body afterwards (in secret if faith does not allow it). + send_option = { + is_shown = { + scope:actor = { + OR = { + scope:actor.faith = { has_doctrine_parameter = cannibalism_legal } + has_trait = cannibal + any_secret = { type = secret_cannibal } + } + } + } + flag = execution_devour + localization = "EXECUTION_DEVOUR" + } + + send_option = { + is_shown = { + scope:actor = { + NOR = { + AND = { + faith = scope:recipient.faith + faith = { has_doctrine_parameter = human_sacrifice_active } + } + mpo_keep_prisoners_heads_trigger = yes + culture_has_asian_heritage_pillar_trigger = yes + } + } + } + flag = execution_burned + localization = "EXECUTION_BURNED" + } + + send_option = { + is_shown = { + scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } + } + flag = execution_sacrifice + localization = "EXECUTION_SACRIFICE" + } + + send_option = { + is_shown = { + scope:actor = { + employs_court_position = executioner_court_position + any_court_position_holder = { + type = executioner_court_position + is_physically_able = yes + } + exists = capital_county + } + } + is_valid = { + scope:actor = { + NOT = { + capital_county = { + has_county_modifier = held_public_execution_modifier + } + } + } + } + flag = execution_public + localization = "EXECUTION_PUBLIC" + } + + send_option = { + is_shown = { + scope:actor = { + employs_court_position = kennelperson_camp_officer + any_court_position_holder = { + type = kennelperson_camp_officer + is_physically_able = yes + } + } + } + flag = execution_kennel + localization = "EXECUTION_KENNEL" + } + + send_option = { + is_shown = { + scope:actor = { + has_government = landless_adventurer_government + has_perk = fear_tax_perk + } + } + flag = execution_provisions + localization = "EXECUTION_PROVISIONS" + } + + send_options_exclusive = yes + auto_accept = yes +} + +debug_imprison_simple_interaction = { + use_diplomatic_range = no + category = interaction_debug_main + ignores_pending_interaction_block = yes + icon = prison + interface_priority = 1000 + common_interaction = yes + + is_shown = { + debug_only = yes + scope:recipient = { + is_imprisoned = no + } + scope:recipient != scope:actor + } + + on_accept = { + scope:actor = { + imprison = { + target = scope:recipient + type = house_arrest + } + } + } + + auto_accept = yes +} + +torture_interaction = { + interface_priority = 30 + common_interaction = no + icon = torture_interaction + + category = interaction_category_prison + + desc = torture_interaction_desc + + #cooldown = { years = 1 } + cooldown_against_recipient = { years = 5 } + + is_shown = { + scope:recipient = { is_imprisoned_by = scope:actor } + scope:recipient = { is_adult = yes } + scope:actor = { is_adult = yes } + } + + is_valid_showing_failures_only = { + #scope:recipient = { + # NOT = { + # health <= 1.5 #Because torture would definitely kill them + # } + #} + scope:actor = { + trigger_if = { + limit = { + domicile ?= { is_domicile_type = camp } + } + custom_tooltip = { + text = laamp_torture_requires_tools_tt + domicile = { has_domicile_parameter = camp_unlocks_torture_interaction } + } + } + } + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + is_highlighted = { + OR = { + scope:actor = { has_trait = sadistic } + scope:actor = { has_relation_rival = scope:recipient } + scope:actor = { has_relation_nemesis = scope:recipient } + } + } + + on_accept = { + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + scope:actor = { save_scope_as = bg_override_char } + ###EFFECT TOOLTIP### + torture_interaction_actor_effect = yes + show_as_tooltip = { + scope:recipient = { + add_character_modifier = { + modifier = recently_tortured + years = 5 + } + } + } + if = { + limit = { + scope:actor = { + domicile ?= { has_domicile_parameter = estate_torture_grants_influence } + } + } + scope:actor = { custom_tooltip = estate_torture_grants_influence_desc } + } + + ###EVENTS### + hidden_effect = { + #Torture method for descs + random_list = { + 3 = { save_scope_value_as = { name = torture_method value = flag:rack } } + 3 = { save_scope_value_as = { name = torture_method value = flag:whip } } + 1 = { save_scope_value_as = { name = torture_method value = flag:rats } } + 8 = { + trigger = { + scope:actor = { has_trait = lifestyle_poet } + } + save_scope_value_as = { + name = torture_method + value = flag:poetry + } + } + } + + #They have a secret I want to know about + if = { + limit = { + scope:recipient = { + OR = { + any_secret = { + torture_secret_trigger = { PARTICIPANT = scope:recipient } + } + any_known_secret = { + secret_owner = { save_temporary_scope_as = torture_secret_owner } + torture_secret_trigger = { PARTICIPANT = scope:torture_secret_owner } + } + } + } + } + scope:recipient = { + trigger_event = { + id = prison.1001 + days = 1 + } + } + } + else = { + scope:actor = { + trigger_event = { + id = prison.1010 + days = 1 + } + } + } + } + + # Dark Insights Perk: + if = { + limit = { + scope:actor = { has_perk = dark_insights_perk } + } + scope:actor = { + dark_insights_skill_gain_roll_effect = yes + } + } + + # House Relation + scope:recipient.house ?= { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = torture + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + auto_accept = yes + + # AI + ai_targets = { + ai_recipients = prisoners + } + + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 24 + kingdom = 24 + empire = 12 + hegemony = 12 + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = -25 + + modifier = { + has_trait = sadistic + add = 30 + } + ai_value_modifier = { + ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters + } + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -0.25 + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { # Family Feud + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + add = 30 + } + modifier = { + scope:actor = { + has_opinion_modifier = { + modifier = tried_to_escape_from_prison_opinion + target = scope:recipient + } + } + add = 25 + } + } +} + +castrate_interaction = { + interface_priority = 30 + icon = eunuch + + category = interaction_category_prison + desc = castrate_interaction_desc + + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + is_eunuch_trigger = no + is_male = yes + } + scope:actor = { + is_adult = yes + OR = { + culture = { has_cultural_parameter = can_castrate_prisoners } + top_liege.primary_title = { + has_variable = emulating_byz_punishment_var + } + } + + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + is_highlighted = { + OR = { + scope:actor = { has_trait = sadistic } + scope:actor = { has_relation_rival = scope:recipient } + scope:recipient = { + any_claim = { + holder = scope:actor + } + } + } + } + + on_accept = { + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + if = { + limit = { + age < 12 + } + ep3_child_castration_effect = yes + } + else = { + ep3_youth_castration_effect = yes + } + release_from_prison = yes + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated } + + scope:actor = { + save_scope_as = bg_override_char + trigger_event = { + id = prison.1025 + days = 1 + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_abelarding.desc + REVERSE_NON_HOUSE_TARGET = no + } + + # House Relation + scope:recipient.house ?= { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = torture + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + auto_accept = yes + + ai_targets = { + ai_recipients = prisoners + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = -20 + + modifier = { + has_trait = sadistic + add = 20 + } + ai_value_modifier = { + ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters + } + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -0.25 + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { # Family Feud + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + add = 30 + } + modifier = { + scope:actor = { + has_opinion_modifier = { + modifier = tried_to_escape_from_prison_opinion + target = scope:recipient + } + } + add = 25 + } + #Cruel Latins are really into this + modifier = { + top_liege.primary_title = { + has_variable = emulating_byz_punishment_var + } + add = 30 + } + } + + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 48 + kingdom = 36 + empire = 12 + hegemony = 12 + } +} + +blind_interaction = { + interface_priority = 30 + icon = blind + + category = interaction_category_prison + desc = blind_interaction_desc + + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + NOT = { has_trait = blind } + } + scope:actor = { + is_adult = yes + OR = { + culture = { has_cultural_parameter = can_blind_prisoners } + top_liege.primary_title = { + has_variable = emulating_byz_punishment_var + } + } + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + is_highlighted = { + OR = { + scope:actor = { has_trait = sadistic } + scope:actor = { has_relation_rival = scope:recipient } + scope:recipient = { + any_claim = { + holder = scope:actor + } + } + scope:actor = { + culture = { has_cultural_parameter = merciful_blinding } + OR = { + has_execute_reason = scope:recipient + has_banish_reason = scope:recipient + } + } + } + } + + on_accept = { + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + add_trait = blind + release_from_prison = yes + } + } + + # Merciful Blindings + scope:actor = { + if = { + limit = { + culture = { has_cultural_parameter = merciful_blinding } + OR = { + has_execute_reason = scope:recipient + has_banish_reason = scope:recipient + } + } + add_piety = medium_piety_gain + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded } + + scope:actor = { + save_scope_as = bg_override_char + trigger_event = { + id = prison.1020 + days = 1 + } + } + + # If we're a clan this interaction affects unity + if = { + limit = { scope:actor.culture = { has_cultural_parameter = merciful_blinding } } # If actor's culture has Merciful Blindings, they lose less unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + # House Relation + scope:recipient.house ?= { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = torture + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + auto_accept = yes + + ai_targets = { + ai_recipients = prisoners + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = -20 + + modifier = { + has_trait = sadistic + add = 20 + } + ai_value_modifier = { + ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters + } + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -0.25 + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { # Family Feud + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + add = 30 + } + modifier = { + scope:actor = { + has_opinion_modifier = { + modifier = tried_to_escape_from_prison_opinion + target = scope:recipient + } + } + add = 25 + } + #Cruel Latins are really into this + modifier = { + top_liege.primary_title = { + has_variable = emulating_byz_punishment_var + } + add = 30 + } + } + + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 48 + kingdom = 36 + empire = 12 + hegemony = 12 + } +} + +prison_break_contract_interaction = { + interface_priority = 30 + common_interaction = yes + icon = prison + + category = interaction_category_prison + + desc = prison_break_contract_interaction_desc + + cooldown_against_recipient = { years = 1 } + + is_shown = { + scope:actor = { + any_character_active_contract = { + task_contract_type = laamp_prison_break_contract + OR = { + var:task_contract_target = scope:recipient + var:task_contract_object = scope:recipient + var:task_contract_employer = scope:recipient + } + } + } + } + + redirect = { + scope:actor = { + random_character_active_contract = { + task_contract_type = laamp_prison_break_contract + limit = { + OR = { + var:task_contract_target = scope:recipient + var:task_contract_object = scope:recipient + var:task_contract_employer = scope:recipient + } + } + var:task_contract_object = { + save_scope_as = secondary_recipient + } + var:task_contract_target = { + save_scope_as = recipient + } + var:task_contract_employer = { + save_scope_as = secondary_actor + } + } + } + } + + is_highlighted = { + always = yes + } + + on_accept = { + scope:actor = { + start_scheme = { + type = laamp_prison_break_scheme + target_character = scope:recipient + } + random_scheme = { + type = laamp_prison_break_scheme + limit = { + scheme_target_character = scope:recipient + } + save_scope_as = scheme + } + #save scopes for scheme start event + scope:secondary_recipient = { + save_scope_as = task_contract_object + } + scope:recipient = { + save_scope_as = task_contract_target + } + scope:secondary_actor = { + save_scope_as = task_contract_employer + } + trigger_event = laamp_extra_contract_schemes.0011 + } + } + + auto_accept = yes +} + +systematically_maim_character_interaction = { + interface_priority = 30 + icon = torture_interaction + category = interaction_category_diarch + common_interaction = no + desc = systematically_maim_character_interaction_desc + + is_shown = { + scope:actor = { liege_should_systematically_maim_co_ruler_trigger = yes } + } + + is_valid_showing_failures_only = { + scope:actor = { is_adult = yes } + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + scope:recipient = { is_imprisoned_by = scope:actor } + # There's literally nothing left to remove. + scope:recipient = { + NAND = { + OR = { + is_eunuch_trigger = yes + is_female = yes + } + has_trait = blind + has_trait = disfigured + has_trait = maimed + has_trait = one_legged + } + } + } + + send_option = { + flag = maim_castrate + is_valid = { + scope:recipient = { + NOR = { + is_eunuch_trigger = yes + is_female = yes + } + } + } + localization = maim_castrate_name + current_description = maim_castrate + } + send_option = { + flag = maim_blind + is_valid = { + scope:recipient = { + NOT = { has_trait = blind } + } + } + localization = maim_blind_name + current_description = maim_blind + + } + send_option = { + flag = maim_face + is_valid = { + scope:recipient = { + NOT = { has_trait = disfigured } + } + } + localization = maim_face_name + current_description = maim_face + } + send_option = { + flag = maim_leg + is_valid = { + scope:recipient = { + NOT = { has_trait = one_legged } + } + } + localization = maim_leg_name + current_description = maim_leg + } + send_option = { + flag = maim_arm + is_valid = { + scope:recipient = { + NOT = { has_trait = maimed } + } + } + localization = maim_arm_name + current_description = maim_arm + } + + on_accept = { + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + # Stress & dread + blind_castrate_and_disfigure_effect = yes + # Our diarchy will be destroyed. + save_scope_value_as = { + name = destroy_diarchy + value = yes + } + show_as_tooltip = { + scope:actor = { maiming_destroy_diarchy_effect = yes } + } + + # Let the enchoppening begin. + ## Castrate. + if = { + limit = { scope:maim_castrate = yes } + show_as_tooltip = { + scope:recipient = { + if = { + limit = { + age < 12 + } + ep3_child_castration_effect = yes + } + else = { + ep3_youth_castration_effect = yes + } + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated } + scope:actor = { + clear_designated_heir = yes + trigger_event = { + id = prison.1025 + days = 1 + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_abelarding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + ## Blind. + if = { + limit = { scope:maim_blind = yes } + show_as_tooltip = { + scope:recipient = { + add_trait = blind + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded } + scope:actor = { + clear_designated_heir = yes + # Merciful Blindings + if = { + limit = { + culture = { has_cultural_parameter = merciful_blinding } + OR = { + has_execute_reason = scope:recipient + has_banish_reason = scope:recipient + } + } + add_piety = medium_piety_gain + } + trigger_event = { + id = prison.1020 + days = 1 + } + } + # If actor's culture has Merciful Blindings, they lose less unity. + if = { + limit = { + scope:actor.culture = { has_cultural_parameter = merciful_blinding } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + ## Disfigure. + if = { + limit = { scope:maim_face = yes } + show_as_tooltip = { + scope:recipient = { + add_trait = disfigured + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = disfigured } + scope:actor = { + clear_designated_heir = yes + trigger_event = { + id = prison.1030 + days = 1 + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_maimed.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + ## Take off an arm. + if = { + limit = { scope:maim_arm = yes } + show_as_tooltip = { + scope:recipient = { + apply_maimed_trait_and_modifier_effect = yes + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = maimed } + scope:actor = { + clear_designated_heir = yes + save_scope_value_as = { + name = maim_type + value = flag:arm + } + trigger_event = { + id = prison.1041 + days = 1 + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_maimed.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + ## Take off a leg. + if = { + limit = { scope:maim_leg = yes } + show_as_tooltip = { + scope:recipient = { + add_trait = one_legged + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = maimed } + scope:actor = { + clear_designated_heir = yes + save_scope_value_as = { + name = maim_type + value = flag:leg + } + trigger_event = { + id = prison.1041 + days = 1 + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_maimed.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + auto_accept = yes + + ai_targets = { ai_recipients = prisoners } + + ai_potential = { + has_diarchy_active_parameter = diarchy_is_co_rulership + liege_can_maim_co_ruler_without_killing_them_trigger = yes + } + + ai_will_do = { + base = -50 + + modifier = { + has_trait = sadistic + add = 50 + } + modifier = { + has_trait = callous + add = 40 + } + ai_value_modifier = { + ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters + } + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { # Family Feud + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + add = 30 + } + modifier = { + scope:actor = { + has_opinion_modifier = { + modifier = tried_to_escape_from_prison_opinion + target = scope:recipient + } + } + add = 25 + } + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 60 + empire = 60 + hegemony = 60 + } +} diff --git a/common/character_interactions/00_religious_interactions.txt b/common/character_interactions/00_religious_interactions.txt index f401cd66..239dac97 100644 --- a/common/character_interactions/00_religious_interactions.txt +++ b/common/character_interactions/00_religious_interactions.txt @@ -12,6 +12,7 @@ ask_for_conversion_interaction = { scope:actor.faith != scope:recipient.faith scope:recipient.liege = scope:actor NOT = { scope:recipient = { government_has_flag = government_is_landless_minority } } + NOT = { scope:recipient = { culture = { has_cultural_tradition = tradition_diasporic } } } } is_valid_showing_failures_only = { @@ -524,6 +525,8 @@ demand_conversion_interaction = { is_ruler = yes } NOT = { scope:recipient = { government_has_flag = government_is_landless_minority } } + + NOT = { scope:recipient = { culture = { has_cultural_tradition = tradition_diasporic } } } } cooldown_against_recipient = { years = 15 } @@ -807,6 +810,7 @@ demand_conversion_vassal_ruler_interaction = { is_ruler = yes } NOT = { scope:recipient = { government_has_flag = government_is_landless_minority } } + NOT = { scope:recipient = { culture = { has_cultural_tradition = tradition_diasporic } } } } cooldown_against_recipient = { years = 15 } @@ -822,7 +826,7 @@ demand_conversion_vassal_ruler_interaction = { is_ruler = yes OR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -832,7 +836,7 @@ demand_conversion_vassal_ruler_interaction = { scope:recipient = { OR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -1260,6 +1264,7 @@ demand_conversion_player_ruler_interaction = { faith != scope:actor.faith } NOT = { scope:recipient = { government_has_flag = government_is_landless_minority } } + NOT = { scope:recipient = { culture = { has_cultural_tradition = tradition_diasporic } } } } cooldown_against_recipient = { years = 15 } @@ -1869,6 +1874,10 @@ convert_to_religion_interaction = { } } NOT = { scope:actor = { government_has_flag = government_is_landless_minority } } + OR = { + is_ai = no + NOT = { scope:actor = { culture = { has_cultural_tradition = tradition_diasporic } } } + } } is_valid_showing_failures_only = { @@ -1957,6 +1966,10 @@ convert_to_religion_adventurer_interaction = { } } NOT = { scope:actor = { government_has_flag = government_is_landless_minority } } + OR = { + is_ai = no + NOT = { scope:actor = { culture = { has_cultural_tradition = tradition_diasporic } } } + } } is_valid_showing_failures_only = { @@ -7104,6 +7117,14 @@ attempt_conversion_of_local_ruler_interaction = { is_ruler = yes is_landed = yes } + OR = { + is_ai = no + NOT = { scope:actor = { government_has_flag = government_is_landless_minority } } + } + OR = { + is_ai = no + NOT = { scope:actor = { culture = { has_cultural_tradition = tradition_diasporic } } } + } } is_highlighted = { diff --git a/common/character_interactions/00_revoke_title_interaction.txt b/common/character_interactions/00_revoke_title_interaction.txt new file mode 100644 index 00000000..6100af44 --- /dev/null +++ b/common/character_interactions/00_revoke_title_interaction.txt @@ -0,0 +1,1572 @@ +revoke_title_interaction = { + category = interaction_category_vassal + common_interaction = no + highlighted_reason = HIGHLIGHTED_HAS_REVOKE_TITLE_REASON + notification_text = REVOKE_TITLE_PROPOSAL + interface_priority = 110 + + name = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor = { + government_allows = administrative + } + scope:recipient = { + government_allows = administrative + } + } + desc = revoke_governorship_interaction + } + desc = revoke_title_interaction + } + } + + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor = { + government_allows = administrative + } + scope:recipient = { + government_allows = administrative + } + } + desc = revoke_governorship_interaction_desc + } + desc = revoke_title_interaction_desc + } + } + + icon = { + trigger = { + scope:actor = { + government_allows = administrative + } + scope:recipient = { + government_allows = administrative + } + } + reference = revoke_governorship + } + icon = revoke_title + + special_interaction = revoke_title_interaction + interface = revoke_title + target_type = title + target_filter = recipient_domain_titles + ai_maybe = yes + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + interface_priority = 60 + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + on_decline_summary = general_rebellion_decline_summary + + # actor character giving the titles + # recipient character receiving the titles + + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_true_herder } # They have their own interaction without cooldowns/maluses + is_landed_or_landless_administrative = yes + # should be shown but be disabled for indirect vassals + target_is_liege_or_above = scope:actor + # is_vassal_of = scope:actor + } + } + + is_valid_showing_failures_only = { + title_revocation_standard_valid_showing_failures_only_trigger = yes + # Plus make sure there's a legal right to revoke. + scope:actor = { + trigger_if = { + limit = { government_has_flag = government_is_tribal } + custom_description = { + text = "has_law_allowing_title_revocation_tribal" + has_realm_law_flag = title_revocation_allowed + } + } + trigger_else_if = { + limit = { government_is_japanese_trigger = yes } + custom_description = { + text = "has_law_allowing_title_revocation_soryo" + has_realm_law_flag = title_revocation_allowed + } + } + trigger_else_if = { + limit = { government_allows = administrative } + } + trigger_else = { + custom_description = { + text = "has_law_allowing_title_revocation_crown" + has_realm_law_flag = title_revocation_allowed + } + } + } + trigger_if = { + limit = { + scope:recipient = { + vassal_contract_has_flag = vassal_contract_cannot_revoke_titles + } + } + custom_description = { + text = vassal_contract_forbids_revocation + scope:recipient = { + NOT = { vassal_contract_has_flag = vassal_contract_cannot_revoke_titles } + } + } + } + trigger_if = { + limit = { + scope:recipient = { + vassal_contract_has_flag = admin_cannot_revoke_titles_without_cause + } + scope:actor = { + NOT = { has_revoke_title_reason = scope:recipient } + } + } + custom_tooltip = { + text = admin_contract_forbids_revocation_desc + scope:recipient = { + NOT = { vassal_contract_has_flag = admin_cannot_revoke_titles_without_cause } + } + } + } + # And uhh... the sensible check. + scope:recipient = { + is_vassal_of = scope:actor + NOT = { has_strong_hook = scope:actor } + trigger_if = { # If admin, they need to hold a title that isn't their noble family title + limit = { government_allows = administrative } + custom_tooltip = { + text = admin_no_valid_appointment + any_held_title = { is_landless_type_title = no } + } + } + } + custom_tooltip = { + text = cannot_take_overt_hostile_actions_against_diarch.tt + NOT = { scope:recipient ?= scope:actor.diarch } + } + custom_tooltip = { + text = protected_from_revocation.tt + NOT = { scope:recipient = { has_character_flag = titles_protected } } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + scope:recipient ?= { + custom_tooltip = { + text = petition_liege_house_fief_allowed_flag_tt + trigger_if = { + limit = { + government_has_flag = government_is_japan_feudal + var:petition_liege_house_fief_allowed_flag ?= scope:actor + } + NOT = { + ask_for_pardon_available_trigger = { ACTOR = scope:recipient } + } + } + } + } + # TGP + tgp_ceremonial_title_revoke_restriction_trigger = yes + } + + # Highlighted in the interaction menu when right-clicking a character + is_highlighted = { + OR = { + scope:actor = { + has_revoke_title_reason = scope:recipient + } + scope:recipient = { + any_held_title = { + scope:actor = { + has_claim_on = prev + } + } + NOT = { + any_ally = { + this = scope:actor + } + } + } + } + } + + can_be_picked_title = { + scope:target = { + title_revocation_standard_can_pick_title_trigger = yes + trigger_if = { + limit = { + scope:actor = { government_allows = administrative } + scope:recipient = { government_allows = administrative } + } + custom_description = { + text = "admin_revoke_primary_tier_only" + subject = scope:actor + object = scope:target + scope:target.tier = scope:recipient.highest_held_title_tier + } + } + } + } + + has_valid_target = { + scope:target = { + NOR = { + is_noble_family_title = yes + is_nomad_title = yes + } + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + } + + cost = { + # Usually, this action is free, but during certain diarchies, we want it to cost. + prestige = liege_diarchy_surcharge_interaction_revoke_title_interaction_value + + # Admin has to pay an influence cost unless they have a revocation reason on the recipient + influence = { + value = 0 + if = { + limit = { + scope:actor = { + government_allows = administrative + NOT = { has_revoke_title_reason = scope:recipient } + } + scope:recipient.highest_held_title_tier >= tier_county + } + scope:recipient ?= { + if = { + limit = { + any_held_title = { + title_tier = kingdom + is_landless_type_title = no + is_noble_family_title = no + } + } + add = { + add = { + value = scope:recipient.massive_influence_value + multiply = 3 + } + desc = GOVERNOR_RESIGNATION_KINGDOM_COST + } + } + else_if = { + limit = { + any_held_title = { + title_tier = duchy + is_landless_type_title = no + is_noble_family_title = no + } + } + add = { + add = scope:recipient.massive_influence_value + desc = GOVERNOR_RESIGNATION_DUCHY_COST + } + } + else = { + add = { + add = scope:recipient.major_influence_value + desc = concept_county + } + } + if = { + limit = { house ?= { is_powerful_family = yes } } + add = { + value = scope:recipient.massive_influence_value + desc = GOVERNOR_RESIGNATION_POWERFUL_COST + } + } + else_if = { + limit = { house ?= { is_dominant_family = yes } } + add = { + value = scope:recipient.monumental_influence_value + desc = GOVERNOR_RESIGNATION_DOMINANT_COST + } + } + if = { + limit = { scope:recipient.governor_efficiency < 1 } + add = { + value = -100 + add = { + value = scope:recipient.governor_efficiency + multiply = 100 + } + desc = GOVERNOR_RESIGNATION_EFFICIENCY_COST + } + } + else_if = { + limit = { scope:recipient.governor_efficiency > 1 } + add = { + value = -100 + add = { + value = scope:recipient.governor_efficiency + multiply = 100 + } + desc = GOVERNOR_RESIGNATION_EFFICIENCY_COST + } + } + if = { + limit = { + influence_level != 1 + } + add = { + value = { + value = influence_level + subtract = 1 + } + multiply = 50 + desc = GOVERNOR_RESIGNATION_INFLUENCE_LEVEL_COST + } + } + multiply = 1.25 + } + } + if = { + limit = { + scope:actor = { + scope:recipient.top_liege ?= this + any_character_situation = { + OR = { + situation_type = natural_disaster_earthquake + situation_type = natural_disaster_flood + } + has_situation_top_phase_parameter = natural_disaster_governorships_more_easily_revoked + any_participant_group = { + participant_group_type = affected_vassal + participant_group_has_character = scope:recipient + } + } + } + } + multiply = { + value = 0.5 + desc = vassal_in_disaster_situation + } + } + if = { + limit = { + scope:actor = { has_realm_law_flag = manor_reform_law } + } + multiply = 0.5 + } + } + } + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0200 + } + } + + on_accept = { + save_scope_value_as = { + name = revoke_title_interaction + value = yes + } + if = { # Safety flag to ensure admin revocations behave properly + limit = { + scope:actor = { government_allows = administrative } + scope:recipient = { government_allows = administrative } + } + save_scope_value_as = { + name = administrative_revocation + value = yes + } + } + scope:actor = { + if = { # Admin has to pay an influence cost unless they have a revocation reason on the recipient + limit = { + government_allows = administrative + NOT = { has_revoke_title_reason = scope:recipient } + scope:recipient = { + highest_held_title_tier >= tier_county + } + } + show_as_tooltip = { # Actual cost is deducted in the the interaction cost + change_influence = { + scope:recipient ?= { + if = { + limit = { + any_held_title = { + title_tier = kingdom + is_landless_type_title = no + is_noble_family_title = no + } + } + add = { + add = { + value = scope:recipient.massive_influence_value + multiply = 3 + } + desc = GOVERNOR_RESIGNATION_KINGDOM_COST + } + } + else_if = { + limit = { + any_held_title = { + title_tier = duchy + is_landless_type_title = no + is_noble_family_title = no + } + } + add = { + add = scope:recipient.massive_influence_value + desc = GOVERNOR_RESIGNATION_DUCHY_COST + } + } + else = { + add = { + add = scope:recipient.major_influence_value + desc = concept_county + } + } + if = { + limit = { house ?= { is_powerful_family = yes } } + add = { + value = scope:recipient.massive_influence_value + desc = GOVERNOR_RESIGNATION_POWERFUL_COST + } + } + else_if = { + limit = { house ?= { is_dominant_family = yes } } + add = { + value = scope:recipient.monumental_influence_value + desc = GOVERNOR_RESIGNATION_DOMINANT_COST + } + } + if = { + limit = { scope:recipient.governor_efficiency < 1 } + add = { + value = -100 + add = { + value = scope:recipient.governor_efficiency + multiply = 100 + } + desc = GOVERNOR_RESIGNATION_EFFICIENCY_COST + } + } + else_if = { + limit = { scope:recipient.governor_efficiency > 1 } + add = { + value = -100 + add = { + value = scope:recipient.governor_efficiency + multiply = 100 + } + desc = GOVERNOR_RESIGNATION_EFFICIENCY_COST + } + } + if = { + limit = { + influence_level != 1 + } + add = { + value = { + value = influence_level + subtract = 1 + } + multiply = 50 + desc = GOVERNOR_RESIGNATION_INFLUENCE_LEVEL_COST + } + } + } + multiply = -1.25 + if = { + limit = { has_realm_law_flag = manor_reform_law } + multiply = 0.5 + } + } + } + } + trigger_event = char_interaction.0199 + } + revoke_title_interaction_effect = yes + + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + + # Harrying logic. + scope:actor = { + if = { + limit = { + character_is_valid_for_harrying_of_the_north_trigger = yes + scope:recipient = { + character_is_valid_for_harrying_of_the_north_trigger = yes + is_important_or_vip_struggle_character = yes + } + culture != scope:recipient.culture + } + global_var:harrying_of_the_north = { save_scope_as = story } + if = { + limit = { + character_is_valid_norman_for_harrying_of_the_north_trigger = yes + scope:recipient = { character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes } + } + ep3_increase_pacification_effect = { AMOUNT = harrying_minor_increase_value } + } + else_if = { + limit = { + character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes + scope:recipient = { character_is_valid_norman_for_harrying_of_the_north_trigger = yes } + } + ep3_increase_resistance_effect = { AMOUNT = harrying_minor_increase_value } + } + } + } + } + + on_decline = { + scope:actor = { + if = { # Admin has to pay an influence cost unless they have a revocation reason on the recipient + limit = { + government_allows = administrative + NOT = { has_revoke_title_reason = scope:recipient } + scope:recipient = { + highest_held_title_tier >= tier_county + } + NOT = { has_realm_law_flag = manor_reform_law } + } + show_as_tooltip = { # Actual cost is deducted in the the interaction cost + change_influence = { + scope:recipient ?= { + if = { + limit = { + any_held_title = { + title_tier = kingdom + is_landless_type_title = no + is_noble_family_title = no + } + } + add = { + add = { + value = scope:recipient.massive_influence_value + multiply = 3 + } + desc = GOVERNOR_RESIGNATION_KINGDOM_COST + } + } + else_if = { + limit = { + any_held_title = { + title_tier = duchy + is_landless_type_title = no + is_noble_family_title = no + } + } + add = { + add = scope:recipient.massive_influence_value + desc = GOVERNOR_RESIGNATION_DUCHY_COST + } + } + else = { + add = { + add = scope:recipient.major_influence_value + desc = concept_county + } + } + if = { + limit = { house ?= { is_powerful_family = yes } } + add = { + value = scope:recipient.massive_influence_value + desc = GOVERNOR_RESIGNATION_POWERFUL_COST + } + } + else_if = { + limit = { house ?= { is_dominant_family = yes } } + add = { + value = scope:recipient.monumental_influence_value + desc = GOVERNOR_RESIGNATION_DOMINANT_COST + } + } + if = { + limit = { scope:recipient.governor_efficiency < 1 } + add = { + value = -100 + add = { + value = scope:recipient.governor_efficiency + multiply = 100 + } + desc = GOVERNOR_RESIGNATION_EFFICIENCY_COST + } + } + else_if = { + limit = { scope:recipient.governor_efficiency > 1 } + add = { + value = -100 + add = { + value = scope:recipient.governor_efficiency + multiply = 100 + } + desc = GOVERNOR_RESIGNATION_EFFICIENCY_COST + } + } + if = { + limit = { + influence_level != 1 + } + add = { + value = { + value = influence_level + subtract = 1 + } + multiply = 50 + desc = GOVERNOR_RESIGNATION_INFLUENCE_LEVEL_COST + } + } + } + multiply = -1.25 + } + } + } + } + if = { + limit = { + scope:landed_title.tier != tier_barony + NOT = { + scope:recipient = { government_has_flag = government_is_true_herder } + } + } + scope:actor = { + revocation_tyranny_effect = { VASSAL = scope:recipient } + title_revocation_stress_effect = { VASSAL = scope:recipient } + } + } + if = { + limit = { + scope:recipient = { government_has_flag = government_is_true_herder } + } + scope:recipient = { + add_opinion = { + target = scope:actor + opinion = -10 # Herders don't care much + modifier = revoked_title + } + } + } + else = { + war_for_revoke_effect = { + LIEGE = scope:actor + REBEL = scope:recipient + } + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = revoked_title + } + } + } + if = { + limit = { + scope:actor = { has_realm_law_flag = vassal_refusal_is_treason } + NOT = { + scope:recipient = { government_has_flag = government_is_true_herder } + } + } + scope:actor = { + add_opinion = { + target = scope:recipient + modifier = treasonous_revoke_refusal + } + } + } + + # Harrying logic. + scope:actor = { + if = { + limit = { + character_is_valid_for_harrying_of_the_north_trigger = yes + scope:recipient = { + character_is_valid_for_harrying_of_the_north_trigger = yes + is_important_or_vip_struggle_character = yes + } + culture != scope:recipient.culture + } + global_var:harrying_of_the_north = { save_scope_as = story } + if = { + limit = { + character_is_valid_norman_for_harrying_of_the_north_trigger = yes + scope:recipient = { character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes } + } + ep3_increase_resistance_effect = { AMOUNT = harrying_minor_increase_value } + } + else_if = { + limit = { + character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes + scope:recipient = { character_is_valid_norman_for_harrying_of_the_north_trigger = yes } + } + ep3_increase_pacification_effect = { AMOUNT = harrying_minor_increase_value } + } + } + } + + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + } + + auto_accept = { + scope:recipient = { + calc_true_if = { + amount >= 1 + custom_description = { + text = "baron_revocation" + highest_held_title_tier = tier_barony + } + custom_description = { + text = "prisoner_revocation" + is_imprisoned_by = scope:actor + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + custom_description = { + text = "foreign_prison_revocation" + subject = scope:actor + object = scope:recipient + scope:recipient = { + is_imprisoned = yes + NOT = { is_imprisoned_by = scope:actor } + } + } + custom_tooltip = { + text = "has_admin_gov" + scope:actor = { government_allows = administrative } + scope:recipient = { + government_allows = administrative + highest_held_title_tier = tier_county + is_ai = yes + } + } + } + } + } + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + modifier = { + has_game_rule = hard_difficulty + scope:actor = { is_ai = no } + add = -50 + desc = game_rule_base_value + } + + modifier = { + has_game_rule = very_hard_difficulty + scope:actor = { is_ai = no } + add = -100 + desc = game_rule_base_value + } + + modifier = { + has_game_rule = hard_difficulty + scope:actor = { is_ai = yes } + add = 50 + } + + modifier = { + has_game_rule = very_hard_difficulty + scope:actor = { is_ai = yes } + add = 100 + } + + modifier = { + scope:hook = yes + add = 40 + desc = SCHEME_WEAK_HOOK_USED + } + + modifier = { + scope:recipient = { + government_has_flag = government_is_true_herder + } + add = 40 + desc = MIGRATION_INTERACTION_HERDER + } + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.8 + desc = AI_OPINION_REASON + } + + modifier = { + add = 20 + scope:actor = { + has_realm_law_flag = vassal_refusal_is_treason + } + desc = AI_REFUSAL_IS_TREASON + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = trusting + } + desc = TAKE_THE_VOWS_TRUSTING + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = content + } + desc = INTERACTION_CONTENT + } + + modifier = { + add = 20 + scope:actor.current_military_strength > scope:recipient.current_military_strength + scope:recipient = { + has_trait = craven + } + desc = INTERACTION_CRAVEN + } + + modifier = { + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:landed_title = scope:actor.primary_title.title_capital_county + scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege + } + add = 50 + desc = AI_TITLE_IS_REALM_CAPITAL + } + + modifier = { + exists = scope:actor.primary_title.title_capital_county + NOR = { + scope:landed_title = scope:actor.primary_title.title_capital_county + scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege + } + scope:landed_title.de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege + add = 30 + desc = AI_TITLE_IS_IN_CAPITAL_DUCHY + } + + modifier = { + add = 30 + scope:actor = { + has_claim_on = scope:landed_title + } + desc = AI_LIEGE_HAS_CLAIM_ON_TITLE + } + + ai_value_modifier = { + who = scope:recipient + ai_greed = { + if = { + limit = { + scope:recipient = { NOT = { ai_greed = 0 } } + } + value = -0.75 + } + } + ai_honor = { + if = { + limit = { + scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey. + ai_honor > 0 + } + scope:actor = { + has_realm_law_flag = vassal_refusal_is_treason + } + } + value = 0.5 + } + } + } + modifier = { #I am a King! + desc = offer_vassalization_interaction_aibehavior_hightier_tt + trigger = { + scope:recipient = { highest_held_title_tier = tier_kingdom } + } + add = -20 + } + modifier = { #Title is part of vassal's primary title de-jure. Not relevant for Admin. + add = -25 + NOT = { scope:recipient = { government_allows = administrative } } + scope:recipient.primary_title.tier > tier_county + OR = { + scope:recipient.primary_title = { + is_de_jure_liege_or_above_target = scope:landed_title + } + scope:recipient.primary_title = scope:landed_title + } + desc = AI_REFUSAL_IS_DE_JURE_UNDER + } + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + modifier = { #Comparative military strength. + desc = offer_vassalization_interaction_aibehavior_power_tt + add = { + value = 1 + subtract = { + value = scope:recipient.current_military_strength + divide = { value = scope:actor.current_military_strength min = 1 } + } + multiply = 50 + max = 20 + } + } + modifier = { # Legalistic tradition + desc = tradition_legalistic_name + scope:actor = { + has_revoke_title_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + add = legalistic_vassal_punishment_acceptance + } + modifier = { # AI Mongols, tyranny wars just delay the inevitable fun! + scope:actor = { + is_ai = yes + OR = { + has_trait = greatest_of_khans + has_character_modifier = the_great_khan_modifier + ai_should_get_conqueror_bonuses = yes + } + } + scope:recipient = { + is_ai = yes + } + add = 500 + } + modifier = { + add = -25 + scope:recipient = { + culture = { has_cultural_parameter = vassals_more_likely_to_refuse_demands } + } + desc = VASSALS_REFUSAL_indomitable_azatani + } + } + + # AI + ai_targets = { + ai_recipients = vassals + } + ai_frequency = 0 # This is handled via code instead; see REVOKE_TITLE_TICK in the AI defines. All the logic for *if* to send a revoke though is scripted below + + ai_potential = { + has_realm_law_flag = title_revocation_allowed + primary_title.tier >= tier_county + } + + ai_will_do = { + base = -1000 + + # We want to avoid tyranny unless we've got a good reason + # And even if we can avoid tyranny we don't want to revoke just because we can, so this only gets us to -10 + # Certain characters will revoke despite tyranny, if their rationality is sufficiently low + modifier = { + scope:actor = { + OR = { + NOT = { + title_revocation_is_tyrannical_trigger = { VASSAL = scope:recipient } + } + AND = { + ai_rationality <= very_high_negative_ai_value + OR = { + has_trait = lunatic + has_trait = possessed + has_trait = arbitrary + } + } + } + } + + add = 990 + } + # Only certain rulers won't revoke vassals who have revolted against them + modifier = { + scope:actor = { + ai_compassion <= 75 + ai_greed >= -50 + ai_honor <= 50 + scope:recipient = { + is_imprisoned = yes + trigger_if = { + limit = { + NOT = { has_dlc_feature = landless_playable } + } + # Be kinder to players if they'd get game overed. + is_ai = yes + } + opinion = { + target = scope:actor + value <= 0 + } + } + NOT = { + title_revocation_is_tyrannical_trigger = { VASSAL = scope:recipient } + } + OR = { + has_opinion_modifier = { + modifier = rebellious_vassal_opinion + target = scope:recipient + } + has_opinion_modifier = { + modifier = vassal_lost_faction_revolt_war + target = scope:recipient + } + has_opinion_modifier = { + modifier = vassal_wp_faction_revolt_war + target = scope:recipient + } + } + } + add = { + value = 100 + add = scope:actor.ai_greed + add = { + value = scope:actor.ai_honor + multiply = -1 + } + if = { + limit = { + scope:actor.ai_vengefulness > 0 + } + add = scope:actor.ai_vengefulness + } + } + } + # Vengeful AI's want to revoke + modifier = { + scope:actor = { + ai_vengefulness > 0 + scope:recipient = { + is_imprisoned = yes + } + NOT = { + title_revocation_is_tyrannical_trigger = { VASSAL = scope:recipient } + } + } + add = { + value = scope:actor.ai_vengefulness + multiply = 2 + } + } + # Always revoke preferred capital and capital duchy + modifier = { + years_from_game_start >= 3 + OR = { + scope:actor = { + is_at_war = no + OR = { + AND = { + has_treasury = no + gold > 0 + } + AND = { + has_treasury = yes + treasury > 0 + } + } + } + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + scope:actor = { # The HRE doesn't need endless civil wars + NOT = { + primary_title = title:e_hre + } + } + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:landed_title = scope:actor.primary_title.title_capital_county + scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege + } + NAND = { # Don't revoke player titles tyranically, it must be possible to play and succeed as Ulm! + scope:landed_title.holder = { + is_ai = no + } + scope:actor = { + title_revocation_is_tyrannical_trigger = { VASSAL = scope:recipient } + } + } + add = 1100 + } + # If below domain limit, try to revoke counties in your capital duchy despite tyranny, sometimes + modifier = { + years_from_game_start >= 3 + OR = { + scope:actor = { + is_at_war = no + OR = { + AND = { + has_treasury = no + gold > 0 + } + AND = { + has_treasury = yes + treasury > 0 + } + } + } + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + scope:actor = { # The HRE doesn't need endless civil wars + NOT = { + primary_title = title:e_hre + } + } + scope:actor.domain_size < scope:actor.domain_limit + scope:actor.primary_title.tier > tier_county + trigger_if = { + limit = { + scope:actor = { + title_revocation_is_tyrannical_trigger = { VASSAL = scope:recipient } + domain_size > 3 + } + } + scope:actor = { + NOR = { + has_trait = generous + has_trait = just + } + } + } + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:actor.primary_title.title_capital_county.holder = scope:actor # You have your de jure capital already + NOT = { + scope:actor.primary_title.title_capital_county.holder.top_liege = scope:actor.top_liege # Or your De Jure capital isn't in your realm + } + } + scope:landed_title.tier = tier_county # Only Counties + OR = { # The AI gives away wrong-holding counties almost instantly, so we restrict to counties with holdings they can hold + scope:landed_title.title_province = { has_holding_type = castle_holding } # Everyone is valid for castles + AND = { + scope:actor = { + government_has_flag = government_is_tribal + } + scope:landed_title.title_province = { has_holding_type = tribal_holding } + } + AND = { + scope:actor = { + government_has_flag = government_is_republic + } + scope:landed_title.title_province = { has_holding_type = city_holding } + } + AND = { + scope:actor = { + OR = { + government_has_flag = government_is_clan + government_has_flag = government_is_theocracy + } + } + scope:landed_title.title_province = { has_holding_type = church_holding } + } + } + OR = { # And the capital duchy, if it exists at all + AND = { + exists = scope:actor.primary_title.title_capital_county.de_jure_liege.holder + scope:actor.primary_title.title_capital_county.de_jure_liege.holder = scope:actor + } + AND = { + exists = scope:actor.primary_title.title_capital_county.de_jure_liege.holder + scope:actor.primary_title.title_capital_county.de_jure_liege.holder.top_liege != scope:actor.top_liege + } + scope:actor.primary_title.title_capital_county.de_jure_liege = { + is_title_created = no + } + } + + scope:landed_title.de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege # Under the same Duchy as your capital + + scope:recipient = { # Not from players + is_ai = yes + } + + OR = { # Tyranny tolerance is based on rationality + AND = { + scope:actor.ai_rationality < 0 + scope:actor.tyranny <= 15 # Don't go crazy with tyranny, just a bit is fine + } + AND = { + scope:actor.ai_rationality >= 0 + scope:actor.ai_rationality < 50 + scope:actor.tyranny <= 5 # Don't go crazy with tyranny, just a bit is fine + } + AND = { + scope:actor.ai_rationality >= 50 + scope:actor.tyranny <= 0 # Don't go crazy with tyranny, just a bit is fine + } + AND = { + scope:actor.ai_rationality >= 0 + scope:recipient = { + is_imprisoned_by = scope:actor + } + scope:actor = { has_revoke_title_reason = scope:recipient } + } + AND = { + scope:actor.ai_rationality < 0 + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + } + # To do this, the target must be weak or willing in some way + OR = { + scope:actor.current_military_strength > scope:recipient.current_military_strength # Must be stronger + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + scope:recipient = { + OR = { + AND = { + scope:recipient.primary_title.tier <= tier_county + scope:actor.primary_title.tier >= tier_duchy + } + has_trait = craven + has_trait = content + has_trait = trusting + has_dread_level_towards = { + target = scope:actor + level >= 1 + } + opinion = { target = scope:actor value >= 40 } + is_imprisoned_by = scope:actor + scope:actor = { has_revoke_title_reason = scope:recipient } + } + } + + add = 1100 + } + # Revoke counties we're dejure liege of if below domain limit + modifier = { + scope:actor.domain_size < scope:actor.domain_limit + scope:landed_title.tier = tier_county + scope:landed_title.de_jure_liege.holder = scope:actor + add = 500 + } + # Revoke appropriate baronies if below domain limit, it's tyranny free + modifier = { + scope:actor.domain_size < scope:actor.domain_limit + scope:recipient = { highest_held_title_tier = tier_barony } + scope:landed_title.tier = tier_barony + OR = { + scope:landed_title.title_province = { has_holding_type = castle_holding } + scope:landed_title.title_province = { has_holding_type = temple_citadel_holding } + AND = { + OR = { + scope:actor = { government_has_flag = government_is_clan } + scope:actor = { government_has_flag = government_is_theocracy } + scope:actor = { government_has_flag = government_is_mandala } + scope:actor.faith = { has_doctrine_parameter = lay_clergy } + } + scope:landed_title.title_province = { has_holding_type = church_holding } + } + AND = { + OR = { + scope:actor = { government_has_flag = government_is_republic } + scope:actor = { government_has_flag = government_is_administrative } + scope:actor = { government_has_flag = government_is_celestial } + scope:actor = { government_has_flag = government_is_steppe_admin } + scope:actor = { government_has_flag = government_is_meritocratic } + scope:actor = { government_has_flag = government_is_japan_administrative } + } + scope:landed_title.title_province = { has_holding_type = city_holding } + } + } + add = 1100 + } + # Revoke from vassals of the wrong faith if you can do it without tyranny + modifier = { + scope:actor.faith != scope:recipient.faith + scope:recipient.primary_title.tier > tier_barony + OR = { + scope:actor.faith.religion != scope:recipient.faith.religion + scope:actor.ai_zeal >= low_negative_ai_value + NOT = { + scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + } + OR = { # Chill a bit until you've dealth with the ones already in your prison + scope:recipient = { + is_imprisoned_by = scope:actor + } + NOT = { + any_vassal = { + faith != scope:actor.faith + primary_title.tier > tier_barony + is_imprisoned_by = scope:actor + time_in_prison = { years < 1 } + } + } + } + add = 100 + } + # Revoke from characters you dislike if you can do it without tyranny + modifier = { + scope:actor = { + OR = { + has_relation_rival = scope:recipient + has_relation_nemesis = scope:recipient + } + } + add = 100 + } + # Slight preference for higher-tier titles + modifier = { + add = scope:landed_title.tier + } + # Do not revoke titles from certain characters + modifier = { + scope:actor = { + OR = { + has_relation_friend = scope:recipient + has_relation_best_friend = scope:recipient + has_relation_lover = scope:recipient + has_relation_soulmate = scope:recipient + is_parent_of = scope:recipient + is_grandparent_of = scope:recipient + is_great_grandparent_of = scope:recipient + } + } + add = -5000 + } + # Do not revoke titles when the chance of success if exceedingly low + modifier = { + NOR = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + scope:recipient = { + highest_held_title_tier = tier_barony + } + } + scope:actor = { + OR = { + AND = { + has_treasury = no + OR = { + gold < minimum_ai_gold_value_for_tyranny_wars + AND = { + scope:actor.current_military_strength < scope:recipient.current_military_strength + gold < comfortable_ai_gold_value_for_tyranny_wars + } + } + } + AND = { + has_treasury = yes + OR = { + gold < minimum_ai_treasury_value_for_tyranny_wars + AND = { + scope:actor.current_military_strength < scope:recipient.current_military_strength + treasury < comfortable_ai_treasury_value_for_tyranny_wars + } + } + } + } + } + add = -2000 + } + + modifier = { # The AI will always use a Hook if they can + scope:hook = yes + add = 1 + } + + modifier = { # The AI shouldn't ruin the player's fun + add = -5000 + scope:recipient = { has_character_flag = is_party_baron } + } + + modifier = { # Avoid triggering Tyranny wars mid-war + factor = 0 + scope:actor = { + is_at_war = yes + } + NOR = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + scope:recipient = { + highest_held_title_tier = tier_barony + } + } + } + + # Clan Government: Avoid revoking titles from house members if the AI wants to have high unity + modifier = { + scope:actor = { + government_has_flag = government_is_clan + exists = house + ai_wants_high_unity = yes + } + scope:recipient = { + government_has_flag = government_is_clan + house ?= scope:actor.house + } + add = -1000 + } + + modifier = { # Avoid triggering Tyranny wars mid-grand activity + factor = 0 + scope:actor = { + has_ongoing_grand_activity_trigger = yes + } + NOR = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + scope:recipient = { + highest_held_title_tier = tier_barony + } + } + } + + # Admin Government: Do not revoke titles from your house unless it's really needed + modifier = { + scope:actor = { government_allows = administrative } + exists = scope:recipient.house + scope:actor.house ?= scope:recipient.house + add = -500 + } + # Admin rulers should be less likely to revoke titles without a revocation reason, as they should prefer to depose governors + modifier = { + scope:actor = { + government_allows = administrative + NOT = { has_revoke_title_reason = scope:recipient } + } + scope:recipient = { + NOT = { highest_held_title_tier = tier_barony } + government_allows = administrative + trigger_if = { + limit = { + scope:actor = { has_government = japan_administrative_government } + } + highest_held_title_tier >= tier_county + } + trigger_else = { highest_held_title_tier >= tier_duchy } + } + factor = { # Honorable AI's will never revoke titles without a reason + value = 0 + if = { + limit = { + ai_honor < 0 + } + add = 0.5 + } + } + } + + # Japanese Admin wants to revoke Japanese Feudal if they have a reason + modifier = { + add = 5000 + scope:actor = { + government_has_flag = government_is_japan_administrative + exists = house + has_revoke_title_reason = scope:recipient + NOT = { has_relation_friend = scope:recipient } + } + scope:recipient = { + government_has_flag = government_is_japan_feudal + is_imprisoned = yes + house != scope:actor.house + } + } + # And Japanese Feudal wants to revoke Japanese Admin if they have a reason + modifier = { + add = 5000 + scope:actor = { + government_has_flag = government_is_japan_feudal + exists = house + has_revoke_title_reason = scope:recipient + NOT = { has_relation_friend = scope:recipient } + } + scope:recipient = { + government_has_flag = government_is_japan_administrative + is_imprisoned = yes + house != scope:actor.house + } + } + + # TGP Be more careful with blocs generally + house_bloc_tyranny_war_modifiers = yes + + #Don't revoke titles from the frankokratia leader + modifier = { + scope:recipient = { + any_owned_story = { + type = frankokratia_story + NOT = { has_variable = franko_war_complete } + } + } + factor = 0 + } + } +} diff --git a/common/character_interactions/00_scheme_interactions.txt b/common/character_interactions/00_scheme_interactions.txt new file mode 100644 index 00000000..226b87ca --- /dev/null +++ b/common/character_interactions/00_scheme_interactions.txt @@ -0,0 +1,2838 @@ +#Character interactions relating to schemes + +start_murder_interaction = { + icon = icon_scheme_murder + common_interaction = yes + interface_priority = 90 + category = interaction_category_hostile + + ignores_pending_interaction_block = yes + + scheme = murder + + send_name = START_SCHEME + + is_shown = { + scope:recipient != scope:actor + + NAND = { # Game Rules! + has_game_rule = no_players_multiplayer_murder_schemes + scope:actor = { + is_ai = no + } + scope:recipient = { + is_ai = no + } + } + + NAND = { + has_game_rule = no_player_families_multiplayer_murder_schemes + scope:actor = { + is_ai = no + } + scope:recipient = { + OR = { + is_ai = no + any_close_family_member = { + AND = { + is_ai = no + this != scope:actor + } + } + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = murder + target_character = scope:recipient + } + } + scope:recipient = { NOT = { has_strong_hook = scope:actor } } + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + trigger_if = { + limit = { scope:actor = { has_variable = no_scheming_allowed_var } } + custom_tooltip = { + text = no_scheming_allowed_var_tt + scope:actor.var:no_scheming_allowed_var != scope:recipient + } + } + } + + desc = { + triggered_desc = { + trigger = { + scope:actor = { + can_start_scheme = { + type = murder + target_character = scope:recipient + } + } + } + desc = scheme_interaction_tt_murder_approved + } + } + + # Scheme Starter Packages + options_heading = schemes.t.agent_packages + send_options_exclusive = yes + ## Balanced agents. + send_option = { + flag = agent_focus_balance + current_description = start_murder_interaction.tt.agent_focus_balance + } + ## Focused on Success Chance. + send_option = { + flag = agent_focus_success + current_description = start_murder_interaction.tt.agent_focus_success + } + ## Focused on Speed. + send_option = { + flag = agent_focus_speed + current_description = start_murder_interaction.tt.agent_focus_speed + } + ## Focused on Secrecy. + send_option = { + flag = agent_focus_secrecy + current_description = start_murder_interaction.tt.agent_focus_secrecy + } + + on_accept = { + scope:actor = { + stress_impact = { + compassionate = major_stress_impact_gain + honest = medium_stress_impact_gain + just = medium_stress_impact_gain + } + } + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = start_murder_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + # Success. + if = { + limit = { scope:agent_focus_success ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = murder + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_assassin + AGENT_2 = agent_assassin + AGENT_3 = agent_thug + # Speed. + AGENT_4 = agent_infiltrator + # Secrecy. + AGENT_5 = agent_alibi + } + } + # Speed. + else_if = { + limit = { scope:agent_focus_speed ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = murder + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Speed. + AGENT_1 = agent_infiltrator + AGENT_2 = agent_infiltrator + AGENT_3 = agent_footpad + # Success. + AGENT_4 = agent_assassin + # Secrecy. + AGENT_5 = agent_alibi + } + } + # Secrecy. + else_if = { + limit = { scope:agent_focus_secrecy ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = murder + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Secrecy. + AGENT_1 = agent_alibi + AGENT_2 = agent_alibi + AGENT_3 = agent_lookout + # Success. + AGENT_4 = agent_assassin + # Speed. + AGENT_5 = agent_infiltrator + } + } + # Balanced. + else = { + begin_scheme_with_agents_effect = { + SCHEME_TYPE = murder + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_assassin + AGENT_2 = agent_assassin + # Speed. + AGENT_3 = agent_infiltrator + AGENT_4 = agent_footpad + # Secrecy. + AGENT_5 = agent_alibi + } + } + } + # Plus any on_start modifiers we may need. + if = { + limit = { var:feast_events_ewan_0001_bonus_value ?= scope:recipient } + # Hand over the modifier. + random_scheme = { + type = murder + limit = { + scheme_target_character = scope:recipient + } + add_scheme_modifier = { type = feast_learnt_habits_modifier } + } + # Remove the variable now that we're done with it. + remove_variable = feast_events_ewan_0001_bonus_value + } + } + } + + auto_accept = yes + + # AI for murders is handled in event murder_scheme_maintenance.1, fired from the five_year_playable_pulse +} + +start_abduct = { + icon = icon_scheme_abduct + interface_priority = 70 + category = interaction_category_hostile + + send_name = START_SCHEME + + scheme = abduct + ignores_pending_interaction_block = yes + + is_shown = { + scope:actor = { + OR = { + has_perk = kidnapper_perk # Scheme unlocked by the Kidnapper Perk + domicile ?= { has_domicile_parameter = camp_unlocks_abduct_scheme } + AND = { + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = unlocks_abduct_for_all + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:recipient + } + } + } + } + } + + NOR = { + scope:recipient = scope:actor + scope:recipient = { is_imprisoned_by = scope:actor } + } + #exists = scope:recipient.court_owner + + NAND = { # Game Rules! + has_game_rule = no_players_multiplayer_murder_schemes + scope:actor = { + is_ai = no + } + scope:recipient = { + is_ai = no + } + } + + NAND = { + has_game_rule = no_player_families_multiplayer_murder_schemes + scope:actor = { + is_ai = no + } + scope:recipient = { + OR = { + is_ai = no + any_close_family_member = { + AND = { + is_ai = no + this != scope:actor + } + } + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = abduct + target_character = scope:recipient + } + } + scope:recipient = { NOT = { has_strong_hook = scope:actor } } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + trigger_if = { + limit = { scope:actor = { has_variable = no_scheming_allowed_var } } + custom_tooltip = { + text = no_scheming_allowed_var_tt + scope:actor.var:no_scheming_allowed_var != scope:recipient + } + } + } + + desc = { + triggered_desc = { + trigger = { + scope:actor = { + can_start_scheme = { + type = abduct + target_character = scope:recipient + } + } + } + desc = scheme_interaction_tt_abduct_approved + } + } + + # Scheme Starter Packages + options_heading = schemes.t.agent_packages + send_options_exclusive = yes + ## Balanced agents. + send_option = { + flag = agent_focus_balance + current_description = start_abduct.tt.agent_focus_balance + } + ## Focused on Success Chance. + send_option = { + flag = agent_focus_success + current_description = start_abduct.tt.agent_focus_success + } + ## Focused on Speed. + send_option = { + flag = agent_focus_speed + current_description = start_abduct.tt.agent_focus_speed + } + ## Focused on Secrecy. + send_option = { + flag = agent_focus_secrecy + current_description = start_abduct.tt.agent_focus_secrecy + } + + on_accept = { + scope:actor = { + stress_impact = { + compassionate = medium_stress_impact_gain + honest = minor_stress_impact_gain + just = minor_stress_impact_gain + } + } + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = start_abduct_notification + + left_icon = scope:actor + right_icon = scope:recipient + + # Success. + if = { + limit = { scope:agent_focus_success ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = abduct + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_thug + AGENT_2 = agent_thug + AGENT_3 = agent_muscle + # Speed. + AGENT_4 = agent_footpad + # Secrecy. + AGENT_5 = agent_lookout + } + } + # Speed. + else_if = { + limit = { scope:agent_focus_speed ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = abduct + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Speed. + AGENT_1 = agent_footpad + AGENT_2 = agent_footpad + AGENT_3 = agent_infiltrator + # Success. + AGENT_4 = agent_thug + # Secrecy. + AGENT_5 = agent_lookout + } + } + # Secrecy. + else_if = { + limit = { scope:agent_focus_secrecy ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = abduct + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Secrecy. + AGENT_1 = agent_lookout + AGENT_2 = agent_lookout + AGENT_3 = agent_decoy + # Success. + AGENT_4 = agent_thug + # Speed. + AGENT_5 = agent_footpad + } + } + # Balanced. + else = { + begin_scheme_with_agents_effect = { + SCHEME_TYPE = abduct + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_thug + AGENT_2 = agent_muscle + # Speed. + AGENT_3 = agent_footpad + AGENT_4 = agent_infiltrator + # Secrecy. + AGENT_5 = agent_lookout + } + } + } + } + } + + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 60 + duchy = 60 + kingdom = 60 + empire = 0 + hegemony = 0 + } + + ai_potential = { + liege ?= { has_diarchy_active_parameter = diarchy_is_co_rulership } + is_diarch = yes + is_ruler = yes + ai_diarch_would_maim_execute_superior_if_got_chance_trigger = { LIEGE = liege } + } + + ai_will_do = { + # They shouldn't always do this. + base = -100 + + # Obvious factor. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + ai_value_modifier = { ai_honor = -1 } + # Traits. + ## Disloyal. + modifier = { + add = 100 + has_trait = disloyal + } + ## Ambitious. + modifier = { + add = 75 + has_trait = ambitious + } + ## Arrogant. + modifier = { + add = 25 + has_trait = arrogant + } + ## Fickle. + modifier = { + add = 25 + has_trait = fickle + } + ## Callous. + modifier = { + add = 25 + has_trait = callous + } + ## Compassionate. + modifier = { + add = -50 + has_trait = compassionate + } + ## Humble. + modifier = { + add = -50 + has_trait = humble + } + ## Content. + modifier = { + add = -100 + has_trait = content + } + ## Loyal. + modifier = { + add = -300 + has_trait = loyal + } + # Time as a diarch — the longer they've been waiting, the more eager they are. + modifier = { + add = { + value = years_as_diarch + multiply = 2 + } + always = yes + } + } + + auto_accept = yes +} + +end_scheme = { + is_shown = { + #debug_only = yes + } + special_interaction = remove_scheme_interaction + use_diplomatic_range = no + hidden = yes + on_accept = { + scope:scheme = { + end_scheme = yes + } + } + + auto_accept = yes + ignores_pending_interaction_block = yes +} + +befriend_interaction = { + icon = icon_scheme_befriend + category = interaction_category_friendly + + interface_priority = 90 + scheme = befriend + + send_name = START_SCHEME + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = liege + ai_recipients = neighboring_rulers + } + ai_targets = { + ai_recipients = vassals + ai_recipients = peer_vassals + chance = 0.25 + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 24 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + is_shown = { + scope:actor = { + can_use_befriend_scheme_trigger = { TARGET = scope:recipient } + } + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = befriend + target_character = scope:recipient + } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + cost = { + prestige = { + value = 0 + if = { + limit = { + scope:actor = { + government_has_flag = government_is_nomadic + NOR = { + has_perk = befriend_perk + AND = { + exists = dynasty + dynasty = { + has_dynasty_perk = fp1_adventure_legacy_5 + } + target_is_vassal_or_below = scope:recipient + } + culture = { has_cultural_parameter = automatic_befriend_access } + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = struggle_unlocks_befriend_schemes_for_everyone + } + AND = { + government_has_flag = government_is_clan + is_in_same_clan_as_trigger = { CHARACTER = scope:recipient } + house = { has_house_unity_stage = harmonious } + } + } + } + } + add = scope:actor.minor_prestige_value + if = { + limit = { + scope:recipient = { + is_vassal_of = scope:actor + } + } + add = scope:actor.miniscule_prestige_value + } + if = { + limit = { + scope:actor = { + is_vassal_of = scope:recipient + } + } + add = scope:actor.minor_prestige_value + } + } + } + } + + desc = { + triggered_desc = { + trigger = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + can_start_scheme = { + type = befriend + target_character = scope:recipient + } + } + } + desc = scheme_interaction_tt_befriend_approved + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = befriend_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = befriend + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + } + } + if = { #Stubborness effect + limit = { + scope:recipient = { + has_trait = stubborn + } + } + scope:actor = { + random_scheme = { + type = befriend + limit = { + scheme_target_character = scope:recipient + } + scheme_target_character = { + random_list = { + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -5 + } + } + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -10 + } + } + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -15 + } + } + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -20 + } + } + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -25 + } + } + } + } + } + } + } + } + + ai_potential = { + OR = { + has_perk = befriend_perk # Unlocked by the Befriend Perk + dynasty ?= { + has_dynasty_perk = fp1_adventure_legacy_5 + } + culture = { has_cultural_parameter = automatic_befriend_access } + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = struggle_unlocks_befriend_schemes_for_everyone + } + house ?= { has_house_power_parameter = aspect_of_serenity } + } + NOR = { + has_trait = shy + has_trait = callous + any_scheme = { + OR = { + scheme_type = befriend + #scheme_type = sway # We allow the AI to override Sway with Befriend + scheme_type = seduce + scheme_type = courting + scheme_type = elope + scheme_type = learn_language + scheme_type = teach_governor + } + } + AND = { # No one cares about City barons + is_lowborn = yes + primary_title.tier <= tier_barony + } + } + } + + auto_accept = yes + + ai_will_do = { + base = 50 + + modifier = { # Try to befriend those who you might want to vassalize + add = 30 + scope:actor = { + top_liege = this + primary_title.tier >= tier_county + NOT = { + any_targeting_faction = { + exists = yes + OR = { + faction_is_type = liberty_faction + faction_is_type = claimant_faction + faction_is_type = independence_faction + } + } + } + } + scope:recipient = { + top_liege = this + is_playable_character = yes + primary_title.tier < scope:actor.primary_title.tier + OR = { + faith.religion = scope:actor.faith.religion + AND = { + faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + scope:actor.faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + } + + modifier = { + factor = 0.1 + scope:actor = { + opinion = { + target = scope:recipient + value < -50 + } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + opinion = { + target = scope:actor + value > 50 + } + } + } + + modifier = { + factor = 0.5 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value < 2 + } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value < 1 + } + } + } + + # Struggle + modifier = { + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_friend_lover_with_character + } + } + scope:recipient = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_friend_lover_with_character + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + trait_compatibility = { + target = scope:recipient + value >= low_positive_trait_compatibility + } + } + scope:recipient = { + has_character_flag = agenda_towards_deescalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + trait_compatibility = { + target = scope:recipient + value >= low_positive_trait_compatibility + } + } + } + add = 50 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -200 + } + else = { + add = 10 + } + } + } + + modifier = { + factor = 25 + OR = { + has_focus = diplomacy_family_focus + house ?= { has_house_power_parameter = aspect_of_serenity } + } + } + + modifier = { + factor = 2 + scope:recipient.liege = scope:actor + } + + modifier = { + factor = 0.5 + scope:recipient.faith != scope:actor.faith + } + + modifier = { + factor = 0.25 + scope:actor = { + is_ruler = yes + tier_difference = { + target = scope:recipient + value > 2 + } + } + } + modifier = { + factor = 0.35 + scope:actor = { + has_personality_malicious_trigger = yes + } + } + modifier = { + factor = 2 + scope:actor = { + OR = { + has_trait = gregarious + has_trait = diplomat + has_trait = family_first + has_trait = august + } + } + } + modifier = { + factor = 1.5 + scope:actor = { + num_of_relation_friend < 3 + } + } + modifier = { #Better to Court rather than befriend. + factor = 0.25 + scope:actor = { + is_spouse_of = scope:recipient + } + } + modifier = { + factor = 0.75 + scope:recipient = { + is_child_of = scope:actor + } + } + modifier = { + factor = 2 + scope:actor = { + is_child_of = scope:recipient + } + } + modifier = { + factor = 2 + scope:actor = { #Friends of friends + any_relation = { + type = friend + any_relation = { + type = friend + this = scope:recipient + } + } + } + } + modifier = { + factor = 0.25 + scope:recipient = { + any_claim = { + this = scope:actor.primary_title + } + } + } + } +} + +seduce_interaction = { + icon = icon_scheme_seduce + category = interaction_category_friendly + interface_priority = 45 + scheme = seduce + common_interaction = no + + send_name = START_SCHEME + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = family + max = 2 + } + ai_targets = { + ai_recipients = guests + ai_recipients = courtiers + max = 10 + } + ai_targets = { + ai_recipients = neighboring_rulers + max = 5 + } + ai_targets = { + ai_recipients = vassals + max = 5 + } + ai_targets = { + ai_recipients = peer_vassals + max = 5 + } + + # We don't want this to grow ludicrously large in big realms + ai_targets = { + ai_recipients = realm_characters + max = 10 + } + + ai_target_quick_trigger = { + adult = yes + attracted_to_owner = yes + owner_attracted = yes + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 36 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + is_shown = { + scope:actor != scope:recipient + scope:recipient = { is_adult = yes } + scope:actor = { is_adult = yes } + + # Avoid seducing lowborn nobodies in foreign courts + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + NOT = { + scope:recipient = { + is_lowborn = yes + is_playable_character = no + NOR = { + is_courtier_of = scope:actor + is_foreign_court_or_pool_guest_of = scope:actor + } + } + } + } + scope:actor = { # Some early filtering for the AI to focus it towards fruitful seductions + trigger_if = { + limit = { + is_ai = yes + } + trigger_if = { # Deviants will seduce anyone + limit = { + is_deviant_trigger = yes + } + } + trigger_else_if = { # It's always fine to seduce your spouse + limit = { + scope:recipient = { is_consort_of = scope:actor } + } + } + trigger_else_if = { # If the target is a close family member, only certain AI's will seduce much older members + limit = { + ai_rationality <= -50 + is_close_family_of = scope:recipient + OR = { + has_trait = lustful + has_trait = rakish + is_incestuous_trigger = yes + has_opinion_modifier = { + modifier = childhood_crush + target = scope:recipient + } + } + } + scope:recipient.age <= scope:actor.age_plus_25 + } + trigger_else_if = { # Lustful/seduction-focused characters have a wider range + limit = { + OR = { + has_trait = lustful + has_trait = rakish + has_focus = intrigue_temptation_focus + } + } + OR = { + scope:recipient.age <= scope:actor.age_plus_10 + AND = { # Seducing your vassals/liege/realm priest is good realm management, AND drama! + has_focus = intrigue_temptation_focus + OR = { + scope:recipient = { + is_vassal_of = scope:actor + } + liege ?= scope:recipient + + scope:recipient = { + is_theocratic_lessee = yes + is_courtier_of = scope:actor + } + } + } + } + trigger_if = { # The AI should focus on bastard-producing seductions, it's more dramatic + limit = { + is_male = yes + scope:recipient = { + is_female = yes + } + } + scope:recipient.age <= scope:recipient.marriage_female_fertility_cutoff_age_value + } + } + trigger_else_if = { # Male characters with no children that are seducing women want to produce bastards + limit = { + is_male = yes + scope:recipient = { is_female = yes } + any_child = { + count <= 1 + } + } + scope:recipient.age <= scope:actor.age_plus_5 + scope:recipient.age <= scope:recipient.marriage_female_fertility_cutoff_age_value + } + trigger_else = { # Otherwise, try to not seduce with *too* large an age gap + scope:recipient.age <= scope:actor.age_plus_5 + scope:recipient.age >= scope:actor.age_minus_10 + } + } + trigger_else = { + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + can_start_scheme = { + type = seduce + target_character = scope:recipient + } + } + trigger_if = { + limit = { + scope:recipient = { exists = primary_spouse } + } + scope:recipient = { primary_spouse = { NOT = { has_strong_hook = scope:actor } } } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + desc = scheme_interaction_tt_seduce_approved + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = seduce_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = seduce + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + + seduce_interaction_stress_effect = yes + } + } + scope:actor = { + if = { + limit = { + NOT = { is_attracted_to_gender_of = scope:recipient } + } + custom_tooltip = scheme_interaction_tt_wrong_gender_no_lover + } + } + } + + ai_potential = { + is_adult = yes + NOR = { + has_trait = celibate + has_trait = chaste + scheme_generic_ai_blocker_trigger = yes + primary_title = { + is_mercenary_company = yes + } + AND = { # No one cares about City barons + is_lowborn = yes + primary_title.tier <= tier_barony + } + } + might_cheat_on_every_partner_trigger = yes + } + + auto_accept = yes + + ai_will_do = { + base = 5 + + modifier = { + add = -50 + scope:actor = { + primary_spouse ?= { has_strong_hook = scope:actor } + } + } + + modifier = { + add = 50 + scope:actor = { + has_focus = intrigue_temptation_focus + } + } + + modifier = { + add = 50 + scope:actor = { + has_opinion_modifier = { + modifier = childhood_crush + target = scope:recipient + } + } + } + + modifier = { + add = 25 + exists = scope:actor.dynasty + scope:actor.dynasty = { + has_dynasty_perk = fp1_adventure_legacy_2 + } + } + + modifier = { # Focus on befriending if that's the path you've chosen + add = -50 + scope:actor = { + has_perk = befriend_perk + } + } + + modifier = { # Non-lustful clergy tend to not seduce + add = -25 + scope:actor = { + is_clergy = yes + faith = { + NOT = { has_doctrine_parameter = clergy_can_marry } + } + NOR = { + has_trait = lustful + has_focus = intrigue_temptation_focus + } + } + } + + modifier = { # Seducing your unmarried courtiers is good for producing bastards, which the AI will want to do if they have few heirs + add = 10 + scope:actor = { + any_child = { + count <= 1 + } + } + scope:recipient = { + is_married = no + fertility > low_fertility + OR = { + is_courtier_of = scope:actor + is_pool_guest_of = scope:actor + } + } + } + + modifier = { + add = 30 + scope:actor = { + has_trait = lustful + } + } + + modifier = { # ( ͡° ͜ʖ ͡°) + add = 50 + scope:actor = { + is_close_or_extended_family_of = scope:recipient + is_deviant_trigger = yes + } + scope:recipient = { + OR = { + is_deviant_trigger = yes + has_trait = lustful + } + } + } + + modifier = { + add = 25 + scope:actor = { + is_close_or_extended_family_of = scope:recipient + is_deviant_trigger = yes + } + scope:recipient = { + NOR = { + is_deviant_trigger = yes + has_trait = lustful + } + } + } + + modifier = { + add = 50 + scope:actor = { + is_close_or_extended_family_of = scope:recipient + faith = { has_doctrine = tenet_divine_marriage } + } + } + + modifier = { # Seducing the spouse of your rival is good drama... + add = 25 + scope:recipient = { + primary_spouse ?= { + OR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + } + } + } + } + + modifier = { + add = -20 + scope:actor = { + NOR = { + has_trait = lustful + has_trait = arbitrary + is_deviant_trigger = yes + faith = { has_doctrine = tenet_divine_marriage } + has_perk = subtle_desire_perk + } + } + scope:recipient = { + is_close_family_of = scope:actor + } + } + + modifier = { # Seducing someone's spouse is not a clever prospect for most characters, so lowering the attractiveness a bit + add = -20 + scope:recipient = { + is_married = yes + primary_spouse != scope:actor + } + scope:actor = { + NOR = { + has_trait = lustful + has_focus = intrigue_temptation_focus + } + } + } + + modifier = { # Try to avoid agressive seduction unless you're geared for it + add = -10 + scope:actor = { + NOR = { + has_trait = lustful + has_focus = intrigue_temptation_focus + } + } + scope:recipient = { + is_lowborn = no + NOT = { is_pool_guest_of = scope:actor } + } + } + + # Struggle + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_friend_lover_with_character + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_friend_lover_with_character + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + trait_compatibility = { + target = scope:recipient + value >= low_positive_trait_compatibility + } + } + scope:recipient = { + has_character_flag = agenda_towards_deescalation + } + } + add = 50 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -200 + } + else = { + add = 5 + } + } + } + + modifier = { + factor = 1.25 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value >= 1 + } + } + } + + modifier = { + factor = 1.5 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value >= 2 + } + } + } + + modifier = { + factor = 2 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value >= 3 + } + } + } + + modifier = { + factor = 1.5 + scope:recipient = { + is_playable_character = yes + } + } + + modifier = { # Target the player less aggressively + factor = 0.5 + scope:recipient = { + OR = { + is_ai = no + any_consort = { + is_ai = no + } + } + } + } + + modifier = { + factor = 1.25 + scope:recipient = { + OR = { + has_trait = lustful + has_trait = beauty_good + } + } + } + + modifier = { # Try to avoid 0% success chance + factor = { + value = 0.1 + if = { + limit = { + scope:recipient = { + opinion = { + target = scope:actor + value < -15 + } + } + } + value = 0 + } + } + scope:recipient = { + opinion = { + target = scope:actor + value < -5 + } + } + } + + modifier = { # Try to avoid 0% success chance + factor = 0.1 + scope:recipient = { + number_of_opposing_personality_traits = { + target = scope:actor + value >= 1 + } + } + } + + modifier = { + factor = 0.75 + scope:recipient = { + is_lowborn = yes + } + } + + modifier = { # Barons tend to not seduce anyone landed above them + factor = 0.1 + scope:actor = { + is_playable_character = yes + primary_title = { + tier = tier_barony + } + } + scope:recipient = { + OR = { + AND = { + is_playable_character = yes + primary_title = { + tier > tier_barony + } + } + any_spouse = { + is_playable_character = yes + primary_title = { + tier > tier_barony + } + } + } + } + } + + modifier = { + factor = 0.2 + scope:recipient = { + is_ai = yes + any_targeting_scheme = { + scheme_type = seduce + } + } + } + + modifier = { # + factor = 0.1 + scope:recipient = { + is_ai = yes + has_trait = chaste + } + } + + modifier = { + factor = 0 + scope:recipient = { + is_ai = yes + any_relation = { type = soulmate } + } + } + + modifier = { # Family Feud + add = 50 + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + } + } +} + +court_interaction = { + icon = icon_scheme_romance + category = interaction_category_friendly + + send_name = START_SCHEME + + interface_priority = 40 + scheme = courting + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = spouses + ai_recipients = neighboring_rulers + } + + ai_targets = { + ai_recipients = vassals + max = 5 + } + + ai_targets = { + ai_recipients = peer_vassals + max = 5 + } + + ai_targets = { + ai_recipients = family + max = 5 + } + + ai_targets = { + ai_recipients = realm_characters + max = 30 + } + + ai_target_quick_trigger = { + adult = yes + attracted_to_owner = yes + owner_attracted = yes + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 36 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + is_shown = { + scope:recipient = { + is_adult = yes + is_attracted_to_gender_of = scope:actor + } + + scope:actor = { + this != scope:recipient + is_adult = yes + #Some asexuality handling + trigger_if = { + limit = { has_sexuality = asexual } + trigger_if = { + limit = { is_ai = yes } + always = no + } + trigger_else = { + scope:recipient = { is_consort_of = scope:actor } + } + } + # Some early filtering for the AI to focus it towards fruitful romance + trigger_if = { + limit = { is_ai = yes } + trigger_if = { # Deviants will romance anyone + limit = { is_deviant_trigger = yes } + } + trigger_else_if = { # It's always fine to romance your spouse + limit = { + scope:recipient = { is_consort_of = scope:actor } + } + } + trigger_else_if = { # If the target is a close family member, only certain AI's will romance much older members + limit = { + ai_rationality <= -50 + is_close_family_of = scope:recipient + OR = { + has_trait = lustful + has_trait = rakish + is_incestuous_trigger = yes + has_opinion_modifier = { + modifier = childhood_crush + target = scope:recipient + } + } + } + scope:recipient.age <= scope:actor.age_plus_25 + } + trigger_else_if = { # Lustful/seduction-focused characters have a wider range + limit = { + OR = { + has_trait = lustful + has_trait = rakish + has_focus = intrigue_temptation_focus + } + } + OR = { + scope:recipient.age <= scope:actor.age_plus_10 + AND = { # Romancing your vassals/liege/realm priest is good realm management, AND drama! + has_focus = intrigue_temptation_focus + OR = { + scope:recipient = { + is_vassal_of = scope:actor + } + liege ?= scope:recipient + + scope:recipient = { + is_theocratic_lessee = yes + is_courtier_of = scope:actor + } + } + } + } + trigger_if = { # The AI should focus on bastard-producing romances, it's more dramatic + limit = { + is_male = yes + scope:recipient = { + is_female = yes + } + } + scope:recipient.age <= scope:recipient.marriage_female_fertility_cutoff_age_value + } + } + trigger_else_if = { # Male characters with no children that are romancing women want to produce children + limit = { + is_male = yes + scope:recipient = { is_female = yes } + any_child = { + count <= 1 + } + } + scope:recipient.age <= scope:actor.age_plus_5 + scope:recipient.age <= scope:recipient.marriage_female_fertility_cutoff_age_value + } + trigger_else = { # Otherwise, try to not seduce with *too* large an age gap + scope:recipient.age <= scope:actor.age_plus_5 + scope:recipient.age >= scope:actor.age_minus_10 + } + } + trigger_else = { + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + can_start_scheme = { + type = courting + target_character = scope:recipient + } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + desc = scheme_interaction_tt_courtship_approved + + on_accept = { + scope:actor = { + # If you already have a soulmate, they get very mad + every_relation = { + type = soulmate + limit = { soulmate_relation_is_exclusive_trigger = yes } + + add_opinion = { + modifier = betrayed_our_promise + target = scope:actor + } + } + } + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = court_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = courting + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + + show_as_tooltip = { + # If you already have a soulmate, they get very mad + every_relation = { + type = soulmate + limit = { soulmate_relation_is_exclusive_trigger = yes } + + add_opinion = { + modifier = betrayed_our_promise + target = scope:actor + } + } + } + } + } + scope:recipient = { + if = { + limit = { + is_ai = no + } + add_character_flag = { + flag = courting_cooldown + years = 5 + } + } + } + } + + ai_potential = { + is_adult = yes + trigger_if = { + limit = { + NOR = { + culture = { + has_cultural_parameter = ai_romance_scheme_increase + } + AND = { + has_character_flag = agenda_towards_deescalation + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + } + } + ai_honor >= high_positive_ai_value + ai_compassion >= low_positive_ai_value + } + highest_held_title_tier > tier_barony + NOR = { + has_trait = celibate + has_trait = chaste + scheme_generic_ai_blocker_trigger = yes + AND = { # No one cared about City barons + is_lowborn = yes + primary_title.tier <= tier_barony + } + } + } + + auto_accept = yes + + ai_will_do = { + base = 0 + + + + # Struggle + modifier = { + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + scope:recipient = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + } + scope:recipient = { + has_character_flag = agenda_towards_deescalation + } + } + add = 25 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -200 + } + else = { + add = 5 + } + } + } + + modifier = { # Motivate AI's to use it on catalyst providers exclusively + add = -50 + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + scope:recipient = { + NOT = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + } + } + + opinion_modifier = { + opinion_target = scope:recipient + multiplier = 0.4 + } + + compatibility_modifier = { + compatibility_target = scope:recipient + multiplier = 1 + max = court_scheme_max_compatability_value + } + + modifier = { + factor = 25 + culture = { + has_cultural_parameter = ai_romance_scheme_increase + } + } + + modifier = { + factor = 25 + has_focus = martial_chivalry_focus + } + + modifier = { + add = 50 + scope:actor = { + has_opinion_modifier = { + modifier = childhood_crush + target = scope:recipient + } + } + } + + modifier = { + add = -50 + scope:actor = { + is_close_family_of = scope:recipient + NOR = { + is_deviant_trigger = yes + has_trait = lustful + } + } + } + + modifier = { + factor = 3 + scope:recipient = { + OR = { + is_playable_character = yes + any_spouse = { + is_playable_character = yes + } + } + } + } + + modifier = { + factor = 1.25 + scope:recipient = { + has_trait = beauty_good + } + } + + modifier = { # Try to avoid 0% success chance + factor = { + value = 0.1 + if = { + limit = { + scope:recipient = { + opinion = { + target = scope:actor + value < -20 + } + } + } + value = 0 + } + } + scope:recipient = { + opinion = { + target = scope:actor + value < 0 + } + } + } + + modifier = { + factor = 0.2 + scope:recipient = { + is_ai = yes + any_targeting_scheme = { + scheme_type = courting + } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + any_relation = { type = soulmate } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + is_lowborn = yes + is_married = no + } + } + } +} + +sway_interaction = { + icon = icon_scheme_sway + category = interaction_category_friendly + common_interaction = yes + + send_name = START_SCHEME + + interface_priority = 75 + + scheme = sway + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = liege + ai_recipients = neighboring_rulers + max = 10 + } + ai_targets = { + ai_recipients = vassals + ai_recipients = peer_vassals + max = 10 + } + ai_targets = { + ai_recipients = councillors + } + ai_frequency_by_tier = { + barony = 0 + county = 120 + duchy = 24 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + is_shown = { + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = sway + target_character = scope:recipient + } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + desc = scheme_interaction_tt_sway_approved + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = sway_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = sway + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + } + } + } + + ai_potential = { + NOR = { + scheme_generic_ai_blocker_trigger = yes + primary_title = { + is_mercenary_company = yes + } + } + #Don't override Befriend with Sway? + trigger_if = { + limit = { + OR = { + AND = { + has_royal_court = yes + has_dlc_feature = royal_court + has_court_type = court_diplomatic + court_grandeur_current_level >= 10 + } + AND = { + dynasty ?= { has_dynasty_perk = glory_legacy_5 } + has_royal_court = yes + has_dlc_feature = royal_court + has_court_type = court_diplomatic + court_grandeur_current_level >= 10 + } + } + } + always = yes + } + trigger_else = { + NOT = { + any_scheme = { scheme_type = befriend } + } + } + } + + auto_accept = yes + + ai_will_do = { + base = 10 + + modifier = { # Prefer seducing if you've got the focus for it + add = -20 + scope:actor = { + has_focus = intrigue_temptation_focus + } + } + + modifier = { + add = 10 + scope:recipient = { + is_vassal_of = scope:actor + } + } + + modifier = { # Try to sway those who you might want to vassalize + add = 30 + scope:actor = { + top_liege = this + primary_title.tier >= tier_county + NOT = { + any_targeting_faction = { + exists = yes + OR = { + faction_is_type = liberty_faction + faction_is_type = claimant_faction + faction_is_type = independence_faction + } + } + } + } + scope:recipient = { + top_liege = this + is_playable_character = yes + primary_title.tier < scope:actor.primary_title.tier + OR = { + faith.religion = scope:actor.faith.religion + AND = { + faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + scope:actor.faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + } + + modifier = { + add = 10 + scope:recipient = { + joined_faction ?= { + faction_target = scope:actor + faction_is_type = liberty_faction + faction_is_at_war = no + } + } + } + + modifier = { + add = 20 + scope:recipient = { + joined_faction ?= { + faction_target = scope:actor + faction_is_type = claimant_faction + faction_is_at_war = no + } + } + } + + modifier = { + add = 30 + scope:recipient = { + joined_faction ?= { + faction_target = scope:actor + faction_is_type = independence_faction + faction_is_at_war = no + } + } + } + + modifier = { + factor = 2 + scope:recipient = { + is_a_faction_leader = yes + is_vassal_of = scope:actor + } + } + + modifier = { + factor = 3 + scope:recipient = { + is_vassal_of = scope:actor + opinion = { + target = scope:actor + value < 0 + } + } + } + + modifier = { + factor = 4 + scope:recipient = { + is_powerful_vassal_of = scope:actor + opinion = { + target = scope:actor + value < 0 + } + } + } + + modifier = { + factor = 0.5 + scope:recipient.faith != scope:actor.faith + } + + modifier = { + factor = 0.25 + scope:actor = { + is_ruler = yes + tier_difference = { + target = scope:recipient + value > 2 + } + } + scope:recipient = { + is_theocratic_lessee = no + } + } + modifier = { + factor = 0.5 + scope:actor = { + has_personality_malicious_trigger = yes + } + } + modifier = { + factor = 2 + scope:actor = { + OR = { + has_trait = gregarious + has_trait = diplomat + has_trait = family_first + has_trait = august + } + } + } + modifier = { + factor = 0.75 + scope:recipient = { + is_child_of = scope:actor + } + } + modifier = { + factor = 2 + scope:actor = { + is_child_of = scope:recipient + } + } + modifier = { + factor = 0.25 + scope:recipient = { + any_claim = { + this = scope:actor.primary_title + } + } + } + modifier = { # Butter up the realm priest + factor = 10 + scope:recipient = { + is_theocratic_lessee = yes + opinion = { + target = scope:actor + value <= 50 + } + } + } + modifier = { # Try to make your tax collectors like you + factor = 10 + scope:actor = { + government_has_flag = government_is_clan + } + scope:recipient = { + is_tax_collector = yes + opinion = { + target = scope:actor + value <= 50 + } + } + } + + modifier = { # No point in swaying if opinion is already at 100 + factor = 0 + scope:recipient = { + opinion = { + target = scope:actor + value >= 100 + } + } + } + + modifier = { # If they are unlanded, they have to be a realm priest or spymaster, or in the case for clan rulers, a tax collector + factor = 0 + scope:recipient = { + is_ruler = no + NOR = { + is_theocratic_lessee = yes + has_council_position = councillor_spymaster + AND = { + is_tax_collector = yes + scope:actor = { government_has_flag = government_is_clan } + } + } + } + } + + modifier = { # Ignore rivals unless forgiving + factor = 0 + scope:actor = { + has_relation_rival = scope:recipient + NOT = { has_trait = forgiving } + } + } + + modifier = { # Ignore non-councillor barons + factor = 0 + scope:recipient = { + primary_title.tier = tier_barony + is_councillor = no + } + } + + modifier = { # Ignore neighboring Kings+ + factor = 0 + scope:recipient = { + top_liege = this + is_playable_character = yes + primary_title.tier >= tier_kingdom + } + } + + modifier = { # Ignore neighboring Herders + factor = 0 + scope:recipient = { + government_has_flag = government_is_true_herder + } + } + } +} + +learn_language_interaction = { + icon = icon_scheme_learn_language + category = interaction_category_friendly + common_interaction = yes + + send_name = START_SCHEME + + interface_priority = 42 + scheme = learn_language + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = liege + ai_recipients = head_of_faith + ai_recipients = spouses + ai_recipients = scripted_relations + } + ai_targets = { + ai_recipients = vassals + ai_recipients = peer_vassals + max = 10 + } + ai_targets = { + ai_recipients = neighboring_rulers + max = 5 + } + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 48 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + is_shown = { + scope:actor = { + NOT = { + culture = { + has_same_culture_language = scope:recipient.culture + } + } + } + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = learn_language + target_character = scope:recipient + } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + desc = scheme_interaction_tt_learn_language_approved + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = learn_language_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = learn_language + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + } + } + } + + ai_potential = { + primary_title.tier >= tier_county + NOR = { + has_trait = lazy + has_trait = paranoid + scheme_generic_ai_blocker_trigger = yes + primary_title = { + is_mercenary_company = yes + } + } + } + + auto_accept = yes + + ai_will_do = { + base = 0 + + # Struggle + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_learned_new_language_important + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_learned_new_language_important + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + } + } + add = 100 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -50 + } + } + } + + modifier = { # Focus on befriending if that's the path you've chosen + add = -50 + scope:actor = { + has_perk = befriend_perk + } + } + + modifier = { # Prefer seducing if you've got the focus for it + add = -20 + scope:actor = { + has_focus = intrigue_temptation_focus + } + } + + modifier = { + add = 50 + scope:actor = { + has_perk = open_minded_perk + } + } + + modifier = { + add = 50 + scope:actor = { + culture = { + has_cultural_parameter = rulers_want_to_learn_languages_of_coreligionists + } + } + scope:actor.religion = scope:recipient.religion + } + + modifier = { + add = 25 + scope:actor = { + has_trait = curious + } + } + + modifier = { + add = 50 + scope:actor = { + is_adult = no + } + } + + modifier = { + add = 25 + scope:recipient = { + has_relation_friend = scope:actor + } + } + + modifier = { + add = 25 + scope:recipient = { + has_relation_lover = scope:actor + } + } + + modifier = { + add = 10 + scope:recipient = { + has_relation_potential_friend = scope:actor + } + } + + modifier = { + add = 5 + scope:recipient = { + is_close_family_of = scope:actor + is_ruler = yes + } + } + + modifier = { # Muslims want to learn arabic + add = 25 + scope:actor = { + faith.religion = religion:islam_religion + NOT = { + knows_language = language_arabic + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_arabic + } + } + } + + modifier = { # Catholic clergy/pious people want to learn latin + add = 50 + scope:actor = { + faith = faith:catholic + OR = { + has_trait = zealous + has_trait = humble + is_clergy = yes + } + NOT = { + knows_language = language_latin + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_latin + } + } + } + + modifier = { # Catholic clergy/pious people want to learn Italian + add = 50 + scope:actor = { + faith = faith:catholic + OR = { + has_trait = zealous + has_trait = humble + is_clergy = yes + } + NOT = { + knows_language = language_italian + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_italian + } + } + } + + modifier = { # Clergy/pious people want to learn their HoF's language + add = 50 + scope:actor = { + exists = faith.religious_head + OR = { + has_trait = zealous + is_clergy = yes + } + NOT = { knows_language_of_culture = scope:actor.faith.religious_head.culture } + } + scope:recipient = { knows_language_of_culture = scope:actor.faith.religious_head.culture } + } + + modifier = { # Coptic/Orthodox clergy/pious people want to learn greek + add = 50 + scope:actor = { + OR = { + faith = faith:orthodox + faith = faith:coptic + } + OR = { + has_trait = zealous + has_trait = humble + is_clergy = yes + } + NOT = { + knows_language = language_greek + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_greek + } + } + } + + modifier = { # Nestorian clergy/pious people want to learn aramaic + add = 50 + scope:actor = { + faith = faith:nestorian + OR = { + has_trait = zealous + has_trait = humble + is_clergy = yes + } + NOT = { + knows_language = language_aramaic + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_aramaic + } + } + } + + modifier = { + add = 20 + scope:actor = { + has_focus = diplomacy_foreign_affairs_focus + any_neighboring_realm_same_rank_owner = { + this = scope:recipient + } + } + } + + modifier = { + add = 20 + scope:actor = { + OR = { + has_focus = learning_scholarship_focus + has_focus = stewardship_duty_focus + } + } + scope:recipient = { + is_vassal_of = scope:actor + } + } + + modifier = { + add = 10 + exists = scope:actor.capital_county + scope:recipient.culture = { + has_same_culture_language = scope:actor.capital_county.culture + } + } + + modifier = { + add = 100 + scope:actor.culture = { + has_cultural_tradition = tradition_loyal_soldiers + } + top_liege != this + scope:actor = { + liege = scope:recipient + } + } + + modifier = { + factor = 2 + scope:recipient = { + is_powerful_vassal_of = scope:actor + } + } + + modifier = { + factor = 2 + scope:actor = { + learning >= 12 + } + } + + modifier = { + factor = 0.5 + scope:actor = { + learning <= 6 + } + } + + modifier = { + factor = 0 + + scope:actor.num_of_known_languages >= 5 + scope:actor = { + NOR = { + has_perk = pedagogy_perk + has_trait = intellect_good_2 + has_trait = intellect_good_3 + age < 25 + } + } + } + + modifier = { + factor = 0 + + scope:actor.num_of_known_languages >= language_soft_cap + } + } +} + diff --git a/common/character_interactions/00_tradition_interactions.txt b/common/character_interactions/00_tradition_interactions.txt new file mode 100644 index 00000000..5eb44c8f --- /dev/null +++ b/common/character_interactions/00_tradition_interactions.txt @@ -0,0 +1,511 @@ +spar_with_knight_interaction = { + icon = icon_combat + interface_priority = 30 + common_interaction = yes + category = interaction_category_friendly + ai_min_reply_days = 0 + ai_max_reply_days = 0 + popup_on_receive = yes + pause_on_receive = yes + desc = spar_with_knight_interaction_desc + + greeting = positive + notification_text = REQUEST_SPARRING_TEXT + + is_shown = { + scope:actor = { + OR = { + culture = { + has_cultural_parameter = can_use_sparring_duel + } + top_participant_group:dynastic_cycle ?= { + participant_group_type = expansion_movement + } + } + } + scope:recipient = { + is_knight_of = scope:actor + } + # Can't duel yourself. + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { can_start_single_combat_trigger = yes } + scope:actor = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:actor } } + # Scope:recipient must be able to fight personally. + scope:recipient = { can_start_single_combat_trigger = yes } + # Scope:recipient must not be banned from single combat. + scope:recipient = { + custom_description = { + text = fp1_tbc_recipient_banned_from_combat + can_start_single_combat_banned_checks_trigger = no + } + } + # Neither of the characters can be imprisoned. + scope:actor = { is_imprisoned = no } + scope:recipient = { is_imprisoned = no } + + scope:actor = { is_at_war = no } + scope:recipient = { is_at_war = no } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + cost = { prestige = medium_prestige_value } + cooldown = { years = 5 } + cooldown_against_recipient = { years = 10 } + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + } + + on_accept = { + # Set up the bout immediately. + ## First inform. + scope:actor = { + custom_tooltip = challenge_to_single_combat_interaction.enter_non_lethal_bout.tt + custom_tooltip = spar_with_knight_interaction.effect.tt + custom_tooltip = spar_with_knight_interaction.negative_effect.tt + } + scope:recipient = { + custom_tooltip = spar_with_knight_interaction.effect.tt + custom_tooltip = spar_with_knight_interaction.negative_effect.tt + } + ## Finally, begin. + configure_start_single_combat_effect = { + SC_INITIATOR = scope:actor + SC_ATTACKER = scope:actor + SC_DEFENDER = scope:recipient + FATALITY = no + FIXED = no + LOCALE = army_camp + OUTPUT_EVENT = culture_tradition_events.0001 + INVALIDATION_EVENT = perk_interaction.0102 + } + } + + ai_accept = { + base = 10 # Try to make it 0 for most interactions + + modifier = { + desc = CTSC_RELATIVE_PROWESS + scope:recipient.prowess < scope:actor.prowess + add = { + value = scope:actor.prowess + subtract = scope:recipient.prowess + multiply = -2 + } + } + + # Personality values + ai_value_modifier = { + who = scope:recipient + ai_boldness = 0.5 + ai_honor = { + if = { + limit = { + scope:recipient = { + ai_honor > 0 + } + } + value = 0.25 + } + } + } + modifier = { + desc = AI_REFUSAL_WOUNDED + scope:recipient = { + OR = { + has_trait = wounded + has_trait = maimed + } + } + add = -200 + } + } + + # AI + ai_potential = { + culture = { + has_cultural_parameter = can_use_sparring_duel + } + NOT = { has_trait = craven } + is_imprisoned = no + can_start_single_combat_trigger = yes + number_of_knights > 0 + } + + ai_target_quick_trigger = { + adult = yes + } + ai_targets = { + ai_recipients = vassals + max = 10 + } + ai_targets = { + ai_recipients = courtiers + max = 10 + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 72 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + ai_will_do = { + base = -25 + + # Factor for personality (excluding realism). + modifier = { + add = { + value = ai_boldness + multiply = 1 + } + } + modifier = { + add = { + value = ai_energy + multiply = 0.5 + } + } + modifier = { + add = -50 + prowess <= low_skill_rating + } + modifier = { + factor = 0 + OR = { + has_trait = wounded + has_trait = maimed + } + } + } +} + + +#Appointing a Podesta over a Commune - Turning a one county holder into a Republican Vassal +#Local culture must have the parameter, as does the granting character. +#Recipient does not need to have local culture. +appoint_podesta_interaction = { + icon = grant_titles_interaction + interface_priority = 30 + common_interaction = yes + category = interaction_category_vassal + ai_min_reply_days = 0 + ai_max_reply_days = 0 + popup_on_receive = yes + pause_on_receive = yes + desc = appoint_podesta_desc + + greeting = positive + notification_text = REQUEST_REPUBLIC_TEXT + + is_shown = { + scope:actor != scope:recipient # Can't make yourself a Podesta. + scope:actor = { + culture = { + has_cultural_parameter = can_make_republican_vassals + } + any_held_title = { + count > 1 + } + } + scope:recipient = { + is_ai = yes + is_landed = yes + target_is_liege_or_above = scope:actor + NOR = { + government_has_flag = government_is_republic + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + + } + } + + is_valid_showing_failures_only = { + scope:recipient = { can_be_granted_titles_by = { RULER = scope:actor } } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + + custom_description = { + text = too_many_republics + scope:actor = { + any_vassal = { + count < 4 #Use Script Value + highest_held_title_tier >= tier_county + government_has_flag = government_is_republic + } + } + } + + + scope:recipient = { + target_is_liege_or_above = scope:actor + NOR = { + government_has_flag = government_is_republic + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + is_claimant = no + + custom_description = { + text = must_be_one_county_count + any_held_title = { + count = 1 + title_tier = county + } + } + + custom_description = { + text = must_not_have_landed_relatives + NOT = { + any_close_or_extended_family_member = { + is_landed_or_landless_administrative = yes + } + } + } + + custom_description = { + text = must_not_be_heir_to_any_title + scope:recipient = { + any_heir_title = { + count < 1 + tier >= tier_county + } + } + } + + custom_description = { #The county must be developed or have at least one city + text = county_must_have_city + any_held_title = { + count = 1 + title_tier = county + OR = { + any_county_province = { + has_holding_type = city_holding + } + development_level > 20 + } + } + } + custom_description = { #County must be of a culture that has the tradition parameter + text = county_must_have_culture + any_held_title = { + count = 1 + title_tier = county + OR = { + any_county_province = { + culture = { + has_cultural_parameter = can_make_republican_vassals + } + } + OR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + } + } + } + } + + trigger_if = { + limit = { + scope:recipient = { + is_ruler = no + } + } + scope:recipient = { + is_imprisoned = no + } + } + } + + cost = { prestige = minor_prestige_value } + cooldown = { years = 5 } + cooldown_against_recipient = { years = 10 } + + on_accept = { + scope:actor = { + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = appoint_podesta_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + if = { + limit = { + scope:actor = { government_has_flag = government_is_urepublic } + } + scope:recipient = { + show_as_tooltip = { + change_government = urbanrepublic_government + create_title_and_vassal_change = { + type = returned + save_scope_as = change + add_claim_on_loss = no + } + primary_title = { + add_to_global_variable_list = { + name = urepublic_list + target = prev + } + } + every_vassal = { + limit = { + government_has_flag = government_is_republic + } + every_held_title = { + change_title_holder = { + holder = scope:recipient + change = scope:change + take_baronies = yes + } + } + } + resolve_title_and_vassal_change = scope:change + } + } + } + else_if = { + limit = { + scope:actor = { government_has_flag = government_is_prepublic } + } + scope:recipient = { + show_as_tooltip = { + change_government = peasantrepublic_government + create_title_and_vassal_change = { + type = returned + save_scope_as = change + add_claim_on_loss = no + } + primary_title = { + add_to_global_variable_list = { + name = prepublic_list + target = prev + } + } + every_vassal = { + limit = { + government_has_flag = government_is_republic + } + every_held_title = { + change_title_holder = { + holder = scope:recipient + change = scope:change + take_baronies = yes + } + } + } + resolve_title_and_vassal_change = scope:change + } + } + } + else = { + scope:recipient = { + show_as_tooltip = { + change_government = republic_government + create_title_and_vassal_change = { + type = returned + save_scope_as = change + add_claim_on_loss = no + } + every_vassal = { + limit = { + government_has_flag = government_is_republic + } + every_held_title = { + change_title_holder = { + holder = scope:recipient + change = scope:change + take_baronies = yes + } + } + } + resolve_title_and_vassal_change = scope:change + } + } + } + } + } + } + scope:recipient = { + change_government = republic_government + create_title_and_vassal_change = { + type = returned + save_scope_as = change + add_claim_on_loss = no + } + every_vassal = { + limit = { + government_has_flag = government_is_republic + } + every_held_title = { + change_title_holder = { + holder = scope:recipient + change = scope:change + take_baronies = yes + } + } + } + resolve_title_and_vassal_change = scope:change + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_podesta.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = yes + + # AI + ai_potential = { + culture = { + has_cultural_parameter = can_make_republican_vassals + has_cultural_era_or_later = culture_era_high_medieval + } + primary_title.tier > tier_county + } + + ai_target_quick_trigger = { + adult = yes + } + ai_targets = { + ai_recipients = vassals + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 240 + kingdom = 60 + empire = 60 + hegemony = 60 + } + + ai_will_do = { + base = 100 + } +} diff --git a/common/character_interactions/00_tribal_interactions.txt b/common/character_interactions/00_tribal_interactions.txt new file mode 100644 index 00000000..ed8efab9 --- /dev/null +++ b/common/character_interactions/00_tribal_interactions.txt @@ -0,0 +1,948 @@ +feudalize_holding_interaction = { + category = interaction_category_uncategorized + hidden = yes + special_interaction = feudalize_holding + + desc = feudalize_holding_interaction_desc + + target_type = title + target_filter = actor_domain_titles + + auto_accept = yes + + is_shown = { + scope:actor = { + this = scope:recipient + NOR = { + government_has_flag = government_is_tribal + government_has_flag = government_is_nomadic + government_has_flag = government_is_true_herder + } + } + } + + can_be_picked_title = { + scope:target = { + holder = scope:actor + is_capital_barony = no # we'll use the county in that case + trigger_if = { + limit = { tier <= tier_county } + title_province = { + OR = { + has_holding_type = tribal_holding + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + trigger_else = { + custom_description = { + text = "feudalize_holding_interaction_title_not_county_or_below" + always = no + } + } + } + } + + has_valid_target_showing_failures_only = { + scope:target = { + trigger_if = { + limit = { tier <= tier_county } + title_province = { + barony_controller = scope:actor + has_ongoing_construction = no + } + } + } + } + + cost = { + treasury_or_gold = { + scope:actor = { + if = { + limit = { + scope:target.county = { + has_variable = was_razed + } + } + add = { + value = 50 + desc = BASE + } + } + else_if = { + limit = { + scope:target.county = { + culture = scope:actor.culture + } + } + add = { + value = 200 + desc = BASE + } + } + else = { + add = { + value = feudalize_holding_interaction_cost + desc = BASE + } + } + if = { + limit = { # More expensive for admin to make barbarians civilized... + government_has_flag = government_is_administrative + } + add = { + value = feudalize_holding_interaction_cost + multiply = 0.25 + desc = has_admin_government + } + if = { + limit = { # Admin get a bonus for high bureaucracy levels + OR = { + has_realm_law = imperial_bureaucracy_2 + has_realm_law = imperial_bureaucracy_3 + } + } + subtract = { + value = feudalize_holding_interaction_cost + multiply = { + value = 0.1 + if = { + limit = { + has_realm_law = imperial_bureaucracy_3 + } + add = 0.15 + } + } + desc = imperial_bureaucracy + } + } + } + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = feudalize_holding_interaction_notification + + right_icon = scope:actor + + if = { + limit = { + scope:target.title_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + if = { + limit = { + OR = { + scope:target.county.culture = scope:actor.culture + scope:target.county = { has_variable = was_razed } + } + } + } + else_if = { + limit = { + OR = { + government_has_flag = government_is_tribal + scope:target.county.culture = { has_same_culture_heritage = scope:actor.culture } + } + } + scope:target.county = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 5 + } + } + } + else = { + scope:target.county = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 30 + } + } + } + # SILK ROAD + scope:target = { + tgp_silk_road_feudalize_holding_effect = yes + } + } + + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = castle_holding + } + } + + if = { + limit = { + scope:target = { + title_province = { + geographical_region = geographical_region:mpo_region_permafrost + } + } + } + if = { + limit = { + scope:target = { has_county_modifier = mpo_siberian_permafrost_modifier } + } + scope:target = { remove_county_modifier = mpo_siberian_permafrost_modifier } + } + else_if = { + limit = { + scope:target = { has_county_modifier = mpo_siberian_permafrost_modifier_bad } + } + scope:target = { remove_county_modifier = mpo_siberian_permafrost_modifier_bad } + } + } + } + } + } + + # Interaction frequency determined by code, do not change + ai_frequency = 0 + + # Used to determine which holding should be feudalized over another AND how important this AI goal is compared to others, like creating titles and constructing new holdings + ai_will_do = { + base = 1500 + } +} + +tribalize_holding_interaction = { + category = interaction_category_uncategorized + hidden = yes + special_interaction = tribalize_holding + + desc = tribalize_holding_interaction_desc + + target_type = title + target_filter = actor_domain_titles + + auto_accept = yes + + is_shown = { + scope:actor = { + this = scope:recipient + government_has_flag = government_is_tribal + } + } + + can_be_picked_title = { + scope:target = { + holder = scope:actor + is_capital_barony = no # we'll use the county in that case + trigger_if = { + limit = { tier <= tier_county } + title_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + trigger_else = { + custom_description = { + text = "feudalize_holding_interaction_title_not_county_or_below" + always = no + } + } + } + } + + has_valid_target_showing_failures_only = { + scope:target = { + trigger_if = { + limit = { tier <= tier_county } + title_province = { + barony_controller = scope:actor + has_ongoing_construction = no + } + } + } + } + + cost = { + gold = { + scope:actor = { + if = { + limit = { + scope:target.county = { + has_variable = was_razed + } + } + add = { + value = 15 + desc = BASE + } + } + else = { + add = { + value = 50 + desc = BASE + } + } + } + } + prestige = { + scope:actor = { + if = { + limit = { + scope:target.county = { + has_variable = was_razed + } + } + add = { + value = 25 + desc = BASE + } + } + else_if = { + limit = { + scope:target.county.culture = scope:actor.culture + } + add = { + value = 50 + desc = BASE + } + } + else_if = { + limit = { + scope:target.county.culture = { has_same_culture_heritage = scope:actor.culture } + } + add = { + value = 100 + desc = BASE + } + } + else = { + add = { + value = 300 + desc = BASE + } + } + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = feudalize_holding_interaction_notification + + right_icon = scope:actor + + if = { + limit = { + OR = { + scope:target.county.culture = scope:actor.culture + scope:target.county = { + has_variable = was_razed + } + } + } + } + else = { + scope:target.county = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 5 + } + } + } + + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = tribal_holding + } + } + + if = { + limit = { + scope:target = { + title_province = { + geographical_region = geographical_region:mpo_region_permafrost + } + } + } + if = { + limit = { + scope:target = { has_county_modifier = mpo_siberian_permafrost_modifier } + } + scope:target = { remove_county_modifier = mpo_siberian_permafrost_modifier } + } + else_if = { + limit = { + scope:target = { has_county_modifier = mpo_siberian_permafrost_modifier_bad } + } + scope:target = { remove_county_modifier = mpo_siberian_permafrost_modifier_bad } + } + } + } + } + } + + # Interaction frequency determined by code, do not change + ai_frequency = 0 + + # Used to determine which holding should be feudalized over another AND how important this AI goal is compared to others, like creating titles and constructing new holdings + ai_will_do = { + base = 1500 + } +} + +support_feudalize_tribal_holding_interaction = { + category = interaction_category_vassal + icon = request_funding_interaction + + desc = support_feudalize_tribal_holding_interaction_desc + + target_type = title + target_filter = recipient_domain_titles + + auto_accept = yes + + is_shown = { + scope:actor = { + NOR = { + government_has_flag = government_is_tribal + government_has_flag = government_is_nomadic + } + } + scope:recipient = { + target_is_liege_or_above = scope:actor + NOR = { + government_has_flag = government_is_tribal + government_has_flag = government_is_nomadic + } + this != scope:actor + any_held_title = { + tier <= tier_county + title_province = { + OR = { + has_holding_type = tribal_holding + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + } + } + + can_be_picked_title = { + scope:target = { + is_capital_barony = no # we'll use the county in that case + + trigger_if = { + limit = { tier <= tier_county } + title_province = { + barony_controller = scope:recipient + has_ongoing_construction = no + } + } + } + } + + has_valid_target_showing_failures_only = { + scope:target = { + trigger_if = { + limit = { tier <= tier_county } + title_province = { + OR = { + has_holding_type = tribal_holding + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + trigger_else = { + custom_description = { + text = "feudalize_holding_interaction_title_not_county_or_below" + always = no + } + } + } + } + + cost = { + gold = { + value = 0 + scope:actor = { + if = { + limit = { + has_treasury = no + } + add = { + value = feudalize_holding_interaction_cost + desc = BASE + } + if = { + limit = { # More expensive for admin to make these barbarians civilized... + government_has_flag = government_is_administrative + } + add = { + value = feudalize_holding_interaction_cost + multiply = 0.25 + desc = has_admin_government + } + if = { + limit = { # Admin get a bonus for high bureaucracy levels + OR = { + has_realm_law = imperial_bureaucracy_2 + has_realm_law = imperial_bureaucracy_3 + } + } + subtract = { + value = feudalize_holding_interaction_cost + multiply = { + value = 0.1 + if = { + limit = { + has_realm_law = imperial_bureaucracy_3 + } + add = 0.15 + } + } + desc = imperial_bureaucracy + } + } + } + } + } + } + treasury = { + value = 0 + scope:actor = { + if = { + limit = { + has_treasury = yes + } + add = { + value = feudalize_holding_interaction_cost + desc = BASE + } + if = { + limit = { # More expensive for admin to make these barbarians civilized... + government_has_flag = government_is_administrative + } + add = { + value = feudalize_holding_interaction_cost + multiply = 0.25 + desc = has_admin_government + } + if = { + limit = { # Admin get a bonus for high bureaucracy levels + OR = { + has_realm_law = imperial_bureaucracy_2 + has_realm_law = imperial_bureaucracy_3 + } + } + subtract = { + value = feudalize_holding_interaction_cost + multiply = { + value = 0.1 + if = { + limit = { + has_realm_law = imperial_bureaucracy_3 + } + add = 0.15 + } + } + desc = imperial_bureaucracy + } + } + } + } + } + } + } + + is_highlighted = { + # Highlight the interaction if we have the gold to spare + scope:actor = { + gold >= { + value = feudalize_holding_interaction_cost + if = { + limit = { # More expensive for admin to convert these... Barbarians... + government_has_flag = government_is_administrative + } + multiply = { + value = 1.25 + desc = has_admin_government + } + } + } + } + } + + on_accept = { + scope:recipient = { + # Add some opinion to make it worthwhile + add_opinion = { + target = scope:actor + modifier = grateful_opinion + opinion = 30 + } + + if = { + limit = { + scope:target.title_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + if = { + limit = { + OR = { + scope:target.culture = scope:recipient.culture + scope:target = { has_variable = was_razed } + } + } + } + else_if = { + limit = { + OR = { + government_has_flag = government_is_tribal + scope:target.culture = { has_same_culture_heritage = scope:recipient.culture } + } + } + scope:target = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 5 + } + } + } + else = { + scope:target = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 30 + } + } + } + # SILK ROAD + scope:target = { + tgp_silk_road_feudalize_holding_effect = yes + } + } + + # Notify actor and recipient + scope:actor = { + if = { #Temple Citadel + limit = { government_has_flag = government_is_mandala } + send_interface_toast = { + type = event_toast_effect_good + title = sanctified_holding_interaction_notification + + left_icon = scope:actor + right_icon = scope:target + + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = temple_citadel_holding + } + } + mandala_piety_gain_effect = { PIETY_AMOUNT = massive_piety_gain } + add_legitimacy_effect = { LEGITIMACY = medium_legitimacy_gain } + } + hidden_effect = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = liege_sanctified_holding_interaction_notification + + left_icon = scope:actor + right_icon = scope:target + + show_as_tooltip = { + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = temple_citadel_holding + } + } + } + } + } + } + } + else = { #Castle + send_interface_toast = { + type = event_toast_effect_good + title = feudalize_holding_interaction_notification + + left_icon = scope:actor + right_icon = scope:target + + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = castle_holding + } + } + add_legitimacy_effect = { LEGITIMACY = medium_legitimacy_gain } + } + hidden_effect = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = liege_feudalized_holding_interaction_notification + + left_icon = scope:actor + right_icon = scope:target + + show_as_tooltip = { + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = castle_holding + } + } + } + } + } + } + } + } + } + scope:actor = { + # If you are admin, you get some influence for your efforts + if = { + limit = { government_has_flag = government_is_administrative } + change_influence = medium_influence_gain + } + } + } + + # The AI doesn't check this very often - So if they have more important expenses, they will put their gold to better use first. + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 72 + kingdom = 72 + empire = 72 + hegemony = 72 + } + + ai_targets = { + ai_recipients = vassals + max = 10 + } + + ai_potential = { + # Some basic triggers + is_at_war = no + is_adult = yes + # The AI only does this if they have plenty of gold to spare + gold >= { value = feudalize_holding_interaction_cost multiply = 4 } + # Warring AI don't do this - They want to spend their gold on war! + ai_has_warlike_personality = no + # Piety and Legitimacy, you say... ? + ai_has_pious_builder_personality = yes + NOT = { has_variable = conqueror } + } + + ai_will_do = { + base = 25 + modifier = { + scope:actor = { ai_has_economical_boom_personality = yes } + add = 50 + } + modifier = { + scope:actor = { ai_has_pious_builder_personality = yes } + add = 100 + } + } +} + +turn_subject_into_mandala_interaction = { + category = interaction_category_vassal + icon = icon_scheme_coerce_tributary + + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + ai_accept_negotiation = yes + popup_on_receive = yes + common_interaction = no + + interface_priority = 4 + + ai_targets = { + ai_recipients = vassals + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + desc = turn_subject_into_mandala_interaction_desc + + is_shown = { + scope:actor = { government_has_flag = government_is_mandala } + scope:recipient = { + NOT = { government_has_flag = government_is_mandala } + is_ai = yes + highest_held_title_tier >= tier_county + is_landed = yes + is_ruler = yes + OR = { + liege = scope:actor + AND = { + overlord = scope:actor + scope:actor = { + has_realm_law_flag = can_convert_all_subjects_to_mandalas + } + } + } + } + } + + cooldown_against_recipient = { years = 10 } + + is_valid_showing_failures_only = { + #Dharmic Mandalas require Dharmic converts + #Reformed Pagan Mandalas require reformed faiths + scope:actor.religion = { + switch = { + trigger = is_in_family + rf_eastern = { + scope:recipient.religion = { + is_in_family = rf_eastern + } + } + rf_pagan = { + scope:recipient.faith = { NOT = { has_doctrine_parameter = unreformed } } + scope:recipient.religion = { + is_in_family = rf_pagan + } + } + } + } + scope:recipient = { + NOT = { has_strong_hook = scope:actor } + is_at_war = no + } + scope:actor = { is_at_war = no } + custom_tooltip = { + text = cannot_take_overt_hostile_actions_against_diarch.tt + NOT = { scope:recipient ?= scope:actor.diarch } + } + custom_tooltip = { + text = head_of_faith_unable_to_change_government_desc + NOT = { + scope:recipient = { faith.religious_head ?= this } + } + } + } + + #Spend piety + send_option = { + flag = piety + is_valid = { + scope:actor.piety >= piety_bribe_value + } + localization = PAY_PIETY + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.piety >= piety_bribe_value } + desc = SCHEME_AGENT_PIETY_VALID + } + } + } + #Use hook + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + + on_send = { + scope:recipient = { + primary_title = { save_scope_as = demanded_mandala } + trigger_event = { + id = tgp_east_asia_interaction_events.1002 + days = 5 + } + } + } + + on_accept = { + show_as_tooltip = { + change_to_mandala_interaction_effect = yes + } + } + + on_decline = { + scope:recipient = { custom_tooltip = demand_mandala_interaction_vassal_refuses } + } + + ai_potential = { + government_has_flag = government_is_mandala + is_adult = yes + } + + ai_will_do = { + base = 100 + modifier = { + factor = 0 + scope:recipient = { highest_held_title_tier >= tier_county } + gold >= 300 + } + modifier = { + factor = 0 + scope:recipient = { highest_held_title_tier >= tier_duchy } + gold >= 600 + } + modifier = { + factor = 0 + scope:recipient = { highest_held_title_tier >= tier_kingdom } + gold >= 2000 + } + } + + ai_accept = { + base = -50 + turn_subject_into_mandala_acceptance_modifier = yes + } +} + diff --git a/common/character_interactions/00_tributary_interactions.txt b/common/character_interactions/00_tributary_interactions.txt new file mode 100644 index 00000000..d926656f --- /dev/null +++ b/common/character_interactions/00_tributary_interactions.txt @@ -0,0 +1,6068 @@ +#Interactions relating to tributary relationship management + +### Become Tributary - bilateral +# actor = offerer / potential tributary +# recipient = receiver / potential suzerain + +become_tributary_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = become_tributary_interaction + + desc = become_tributary_interaction_desc + + is_shown = { + scope:actor = { + trigger_if = { + limit = { is_ai = yes } + current_military_strength < scope:recipient.one_and_a_half_times_current_military_strength + primary_title.tier < scope:recipient.primary_title.tier + } + } + scope:recipient = { + is_independent_ruler = yes # while it's possible for tributaries to have their own tributaries, it should not be possible to create a tributary relationship with a non-independent ruler + NOR = { + this = scope:actor + this = scope:actor.suzerain + top_suzerain = scope:actor + } + can_have_tributaries_trigger = yes + } + } + + is_valid_showing_failures_only = { + #These triggers need to match the Tribute Mission Decision + trigger_if = { + limit = { + scope:recipient = { primary_title.tier = tier_hegemony } + } + custom_tooltip = { + text = become_tributary_interaction_hegemony_not_neighbor_tt + scope:actor = { + OR = { + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_china } + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_roman_empire } + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_eastern_roman_empire } + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_dar_al_islam } + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_india } + } + } + } + } + #Mandalas can into Mandalas and Tributaries + trigger_if = { + limit = { + scope:recipient = { government_has_flag = government_is_mandala } + scope:actor = { + OR = { + government_has_flag = government_is_tribal + government_has_flag = government_is_mandala + } + } + } + always = yes + } + #Rulers who aren't Mandala or Tribal should really only be interested if you're big enough + trigger_else = { + custom_tooltip = { + text = offer_tributarization_interaction_aibehavior_not_higher_rank + scope:recipient.highest_held_title_tier >= scope:actor.highest_held_title_tier + } + } + scope:actor = { + is_physically_able = yes + is_travelling = no + NOT = { exists = involved_activity } + is_confederation_member = no + is_at_war = no + } + trigger_if = { + limit = { scope:recipient = title:h_china.holder } + scope:actor = { + custom_tooltip = { + text = neighbor_is_china + is_tributary = no + is_independent_ruler = yes + OR = { + has_variable = wants_to_become_tributary_of_china + any_neighboring_and_across_water_top_liege_realm_owner = { + primary_title = title:h_china + } + } + } + } + } + } + + needs_confirmation = { + scope:recipient = { highest_held_title_tier < tier_hegemony } # acknowledging a hegemon requires a tribute mission; open the decision UI instead of confirming acceptance + } + + greeting = positive + notification_text = BECOME_TRIBUTARY_INTERACTION_NOTIFICATION + + # Low starting obligations + send_option = { + flag = low_obligations + localization = low_tributary_obligations + } + + # Medium starting obligations + send_option = { + flag = normal_obligations + localization = normal_tributary_obligations + starts_enabled = { always = yes } + } + + # High starting obligations + send_option = { + flag = high_obligations + localization = high_tributary_obligations + } + + send_options_exclusive = yes + + on_send = { + if = { + limit = { scope:recipient = { highest_held_title_tier >= tier_hegemony } } + if = { + limit = { scope:recipient.primary_title = title:h_china } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_china + player = scope:actor + } + } + else_if = { + limit = { scope:recipient.primary_title = title:h_roman_empire } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_roman_empire + player = scope:actor + } + } + else_if = { + limit = { scope:recipient.primary_title = title:h_eastern_roman_empire } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_eastern_roman_empire + player = scope:actor + } + } + else_if = { + limit = { scope:recipient.primary_title = title:h_dar_al_islam } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_dar_al_islam + player = scope:actor + } + } + else_if = { + limit = { scope:recipient.primary_title = title:h_india } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_india + player = scope:actor + } + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { highest_held_title_tier < tier_hegemony } } + scope:actor = { + if = { + limit = { is_tributary = yes } + mandala_end_tributary_with_notification_effect = yes + } + } + start_tributary_interaction_effect = { + TRIBUTARY = scope:actor + SUZERAIN = scope:recipient + } + scope:actor = { + trigger_event = char_interaction.0360 + } + scope:recipient = { + if = { + limit = { scope:high_obligations = yes } + add_opinion = { + modifier = tributary_volunteered_opinion + target = scope:actor + opinion = 20 + } + } + else_if = { + limit = { scope:normal_obligations = yes } + add_opinion = { + modifier = tributary_volunteered_opinion + target = scope:actor + } + } + + consume_all_criminal_reasons_effect = { + LIEGE = scope:recipient + CRIMINAL = scope:actor + } + } + } + else = {} # Do nothing if the recipient is hegemony-tier or higher; these require a tribute mission to establish + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0361 + } + } + + is_available = { + NOT = { government_has_flag = cannot_be_vassal_or_liege } + top_liege = this # You have to be independent - This check exists to prevent a lot of edge-cases where you can change liege + is_confederation_member = no + } + + ai_targets = { + ai_recipients = neighboring_rulers_including_tributary_borders + max = 5 + } + + ai_targets = { + ai_recipients = neighboring_top_overlords_connected_by_land + } + + # this might appear fairly frequent but is necessary in order to ensure AI can respond to sudden threats on their borders + ai_frequency_by_tier = { + barony = 0 + county = 6 + duchy = 6 + kingdom = 0 + empire = 0 + hegemony = 0 + } + + force_notification = yes + + ai_will_do = { + base = -50 + #MINOR MODIFIERS + ai_military_threat_modifier_with_cbs = { + SENDER = scope:actor + RECEIVER = scope:recipient + MULTIPLIER = 1 + } + #Obedience + modifier = { + is_obedient_to = scope:recipient + add = 40 + desc = obedient_interaction_reason + } + # Rivalry modifier + modifier = { + desc = offer_vassalization_interaction_aibehavior_rival_tt + trigger = { + scope:actor = { + has_relation_rival = scope:recipient + NOT = { has_relation_nemesis = scope:recipient } + } + } + add = -10 + } + # Nemesis modifier + modifier = { + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + trigger = { + scope:actor = { + has_relation_nemesis = scope:recipient + } + } + add = -100 + } + # Different faith, no pluralism + modifier = { + desc = offer_vassalization_interaction_aibehavior_differentfaith_tt + trigger = { + scope:actor = { + NOR = { # Of two different faiths AND the potential vassal's faith is not pluralistic. + faith = scope:recipient.faith + faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + # Cultural Acceptance + modifier = { + scope:actor = { + NOT = { # cultural condition below doesn't have to apply if both actor and recipient have nomadic_philosophy + has_trait = nomadic_philosophy + scope:recipient = { has_trait = nomadic_philosophy } + } + NOT = { has_same_culture_as = scope:recipient } + culture = { + cultural_acceptance = { target = scope:recipient.culture value < 50 } + } + } + add = { + add = -10 + if = { + limit = { scope:actor.culture = { has_cultural_pillar = ethos_bellicose } } + add = -10 + } + } + desc = cultural_acceptance_interaction_reason + } + # Same language + modifier = { + add = 5 + desc = speaks_same_language_interaction_reason + trigger = { + scope:actor = { + knows_language_of_culture = scope:recipient.culture + } + } + } + + ### MANDALA ### + #Added threshold for Mandalas who already are Tributaries + modifier = { + scope:recipient = { is_tributary = yes } + NOT = { scope:recipient.suzerain = scope:actor } + scope:recipient.suzerain = { primary_title.tier = tier_duchy } + add = -25 + desc = already_tributary_threshold + } + modifier = { + scope:recipient = { is_tributary = yes } + NOT = { scope:recipient.suzerain = scope:actor } + scope:recipient.suzerain = { primary_title.tier = tier_kingdom } + add = -50 + desc = already_tributary_threshold + } + modifier = { + scope:recipient = { is_tributary = yes } + NOT = { scope:recipient.suzerain = scope:actor } + scope:recipient.suzerain = { primary_title.tier >= tier_empire } + add = -75 + desc = already_tributary_threshold + } + #A devaraja should never willingly _offer_ to become a tributary + modifier = { + scope:actor = { + government_has_flag = government_is_mandala + OR = { + has_unruined_mandala_capital_trigger = yes + has_mandala_aspect_trigger = yes + has_variable = mandala_godking + } + } + add = -1000 + } + #I am a Tribal! ... and you're a Mandala + modifier = { + scope:actor = { government_has_flag = government_is_tribal } + scope:recipient = { government_has_flag = government_is_mandala } + add = 30 + desc = actor_is_a_tribal_government + } + #Mandala Piety Level - this is only checked if you are not a Devaraja/haven't got a capital temple complex - Otherwise we use Radiance + mandala_devaraja_piety_level_add_weight_modifier = { DEVARAJA = scope:recipient } + #Recipient Radiance - Radiance Value x2 + modifier = { + scope:recipient = { has_unruined_mandala_capital_trigger = yes } + add = { + value = scope:recipient.mandala_radiance_value + multiply = 2 + } + desc = recipient_positive_mandala_radiance + } + #Tributary Realm Size + subject_realm_size_lose_weight_modifier = { + DEVARAJA = scope:actor + SUBJECT = scope:recipient + } + #Devaraja Mandala Capital + mandala_devaraja_capital_add_weight_modifier = { + DEVARAJA = scope:actor + TRIBUTARY = scope:recipient + } + #Are they independent but a neighboring Mandala more Radiant than you? + #We reduce acceptance by the radiance difference x2 + modifier = { + trigger_if = { + limit = { + scope:recipient = { has_unruined_mandala_capital_trigger = yes } + scope:actor = { + is_tributary = no + OR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_tribal + } + } + } + scope:recipient = { + OR = { + any_neighboring_top_liege_realm_owner = { + has_unruined_mandala_capital_trigger = yes + government_has_flag = government_is_mandala + NOR = { + this = scope:recipient + this = scope:actor + } + save_temporary_scope_as = suzerain_comparison + } + any_neighboring_top_suzerain_realm_owner = { + has_unruined_mandala_capital_trigger = yes + government_has_flag = government_is_mandala + NOR = { + this = scope:recipient + this = scope:actor + } + save_temporary_scope_as = suzerain_comparison + } + } + } + always = yes + } + trigger_else = { always = no } + add = { + #Double it as we would with your own radiance impact above and reduce acceptance by that value + value = { + value = scope:suzerain_comparison.mandala_radiance_value + multiply = 2 + } + multiply = -1 + } + desc = other_devaraja_radiance + } + #Prosperity Decree + modifier = { + desc = is_prosperity_mandala_tributary + scope:actor = { + is_tributary = yes + suzerain = { has_realm_law_flag = tributaries_less_likely_to_break_free } + } + add = 15 + } + #SEA legacy + modifier = { + desc = tgp_sea_legacy_2_modifier_desc + scope:recipient = { + dynasty ?= { + has_dynasty_perk = tgp_sea_legacy_2 + } + } + add = tgp_sea_legacy_tributary_acceptance_value + } + # I am higher rank than you + modifier = { + desc = tributary_interaction_aibehavior_recipient_tier_tt + trigger = { + scope:actor = { + highest_held_title_tier > scope:recipient.highest_held_title_tier + } + } + add = { + value = scope:actor.highest_held_title_tier + subtract = scope:recipient.highest_held_title_tier + multiply = 50 + multiply = -1 + } + } + # Same Faith and Actor is a god King + modifier = { + desc = embrace_as_tributary_interaction_same_faith + scope:recipient = { + faith = scope:actor.faith + has_unruined_mandala_capital_trigger = yes + } + add = { + value = 10 + } + } + # Different faith, no pluralism. + modifier = { + desc = offer_vassalization_interaction_aibehavior_differentfaith_tt + trigger = { + scope:recipient = { + faith = { + NOR = { # Of two different faiths AND the potential tributary's faith is not pluralistic + this = scope:actor.faith + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + # Different religion Family - We prefer god kings to be vaguely within our own world view + modifier = { + desc = embrace_as_tributary_interaction_other_religion_family + scope:actor = { + NOT = { government_has_flag = government_is_wanua } + } + scope:recipient.faith.religion = { + switch = { + trigger = is_in_family + rf_pagan = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_pagan } } + } + rf_sinitic = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_sinitic } } + } + rf_eastern = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_eastern } } + } + rf_abrahamic = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_abrahamic } } + } + } + } + add = -25 + } + # They are not Mandalas nor Tribes + modifier = { + trigger = { + scope:recipient = { + NOR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_tribal + } + } + } + add = { + value = -50 + #Would cause a lot of issues + if = { + limit = { + scope:recipient = { + OR = { + government_allows = administrative + government_is_japanese_trigger = yes + government_has_flag = government_is_nomadic + } + } + } + subtract = 950 #Some governments are especially unlikely to agree + } + #Not radiant enough + if = { + limit = { + scope:recipient = { + government_has_flag = government_is_mandala + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value <= 40 + } + } + subtract = 100 + } + } + } + #Far away + modifier = { + desc = offer_vassalization_interaction_aibehavior_remoterealm_tt + trigger = { + scope:recipient = { + NOT = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:actor + } + } + } + trigger_if = { #Islands we can get farther away + limit = { + scope:actor.capital_county = { is_coastal_county = yes } + any_sub_realm_county = { is_coastal_county = yes } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_huge } } + } + trigger_else = { #Inland is harder + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + } + add = -250 + } + #Legitimacy + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -15 + scope:recipient = { + has_legitimacy_flag = slightly_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -25 + scope:recipient = { + has_legitimacy_flag = reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -50 + scope:recipient = { + has_legitimacy_flag = very_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -75 + scope:recipient = { + has_legitimacy_flag = massively_reduced_tributarization_acceptance + } + } + # HIGH LEGITIMACY + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 25 + scope:recipient = { + has_legitimacy_flag = increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 50 + scope:recipient = { + has_legitimacy_flag = very_increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 75 + scope:recipient = { + has_legitimacy_flag = extra_increased_tributarization_acceptance + } + } + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:actor + opinion_target = scope:recipient + multiplier = 1 + } + } + + ai_min_reply_days = 5 + ai_max_reply_days = 10 + + auto_accept = { scope:recipient = { highest_held_title_tier >= tier_hegemony } } # Hegemons always "accepts", but this only opens the Tribute Mission UI + + ai_accept = { + base = 50 + + modifier = { + desc = interaction_is_nomadic + scope:recipient = { + government_has_flag = government_is_nomadic + } + add = 100 + } + + modifier = { # Can't flee the conqueror this way + add = -1000 + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + scope:actor = { has_variable = conqueror } + } + + modifier = { # Wide difference in rank + desc = offer_vassalization_interaction_aibehavior_widetitletier_tt + trigger = { + scope:actor = { + tier_difference = { + target = scope:recipient + value > 1 + } + } + } + add = 20 + } + modifier = { # Distant Realm. + desc = offer_vassalization_interaction_aibehavior_distantrealm_tt + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value < squared_distance_major } } + } + add = -15 + } + modifier = { # Remote Realm. + desc = offer_vassalization_interaction_aibehavior_remoterealm_tt + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + add = -25 + } + + # MINOR + modifier = { # Rivalry modifier. + desc = offer_vassalization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -10 + } + modifier = { # Nemesis modifier. + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { # Same Dynasty modifier. + desc = offer_vassalization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + + # PERSONALITY + ai_value_modifier = { + ai_greed = 0.75 + min = 0 + } + + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + trigger = { + NOT = { + scope:recipient = { government_has_flag = government_is_mandala } + } + } + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + + # CONTRACT OPTIONS + modifier = { + add = -25 + scope:low_obligations = yes + desc = CONTRACT_LOW_TRIBUTARY_TAXES_REASON + } + modifier = { + add = 25 + scope:high_obligations = yes + desc = CONTRACT_HIGH_TRIBUTARY_TAXES_REASON + } + } +} + +### Demand Tributary - bilateral +# actor = offerer / potential suzerain +# recipient = receiver / potential tributary + +demand_tributary_interaction = { + category = interaction_category_diplomacy + common_interaction = yes + icon = demand_tributary_interaction + + desc = demand_tributary_interaction_desc + + is_shown = { + scope:actor = { + NOT = { + this = scope:recipient + top_suzerain = scope:recipient.top_suzerain # ensures the actor and recipient is not already in the same "suzerain bloc" + } + can_get_tributaries_peacefully_trigger = yes + + highest_held_title_tier < tier_hegemony # hegemonies get tributaries from exacting tribute + + #Mandala Embraces; not Demand + trigger_if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + always = no + } + trigger_else = { can_get_tributaries_peacefully_trigger = yes } + #Should be neighboring to increase growth organically + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:recipient + } + trigger_if = { + limit = { + is_ai = yes + } + current_military_strength >= scope:recipient.one_and_a_half_times_current_military_strength + primary_title.tier >= scope:recipient.primary_title.tier + } + } + scope:recipient = { + highest_held_title_tier >= tier_county + is_independent_ruler = yes # target cannot be a vassal + NOR = { + government_has_flag = cannot_be_vassal_or_liege + government_has_flag = government_is_mandala + } + } + # Temujin cannot make Jamukha his subject once he leaves him + NOT = { + scope:actor = { + has_variable = had_mpo_temujin_flavor_0010 + var:had_mpo_temujin_flavor_0010 ?= scope:recipient + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { has_truce = scope:actor } + is_physically_able = yes + is_travelling = no + NOT = { exists = involved_activity } + } + scope:recipient = { + is_tributary = no + is_at_war = no + custom_tooltip = { + text = demand_tributary_interaction_cooldown_active_tt + NOT = { + has_opinion_modifier = { + modifier = tributary_demanded_opinion + target = scope:actor + } + } + } + is_confederation_member = no + } + scope:actor = { + custom_tooltip = { + text = mpo_interaction_not_neighbouring_tt + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:recipient + } + } + } + } + + cost = { + prestige = minor_prestige_value + } + + greeting = positive + notification_text = DEMAND_TRIBUTARY_INTERACTION_NOTIFICATION + + on_accept = { + start_tributary_interaction_effect = { + TRIBUTARY = scope:recipient + SUZERAIN = scope:actor + } + scope:actor = { + trigger_event = char_interaction.0362 + } + scope:recipient = { + add_opinion = { + modifier = tributary_demanded_opinion # this opinion also acts as a built-in cooldown + target = scope:actor + } + } + consume_all_criminal_reasons_effect = { + LIEGE = scope:actor + CRIMINAL = scope:recipient + } + } + + on_decline = { + scope:recipient = { + add_opinion = { + modifier = tributary_demanded_opinion # this opinion also acts as a built-in cooldown + target = scope:actor + } + custom_tooltip = demand_tributary_interaction_cooldown_tt + } + scope:actor = { + trigger_event = char_interaction.0363 + if = { + limit = { highest_held_title_tier >= tier_hegemony } + add_legitimacy = -50 + } + } + } + + ai_maybe = yes + + ai_potential = { + highest_held_title_tier > 1 # at least a count-level ruler + is_independent_ruler = yes + + # Hegemonic Tributary AIs never proactively demand tributaries, they wait for offers instead + NOT = { highest_held_title_tier >= tier_hegemony } + } + + ai_targets = { + ai_recipients = neighboring_rulers_including_tributary_borders + max = 5 + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 4 + kingdom = 4 + empire = 4 + hegemony = 4 + } + + force_notification = yes + + ai_will_do = { # AI will often do this to valid targets that aren't a military threat to them, especially if they're rich + base = 0 + + modifier = { + add = { + add = scope:recipient.gold + divide = 10 + max = 100 + } + desc = accumulated_wealth_reason + } + + ai_military_threat_modifier_with_cbs = { + SENDER = scope:actor + RECEIVER = scope:recipient + MULTIPLIER = -1 + } + + modifier = { + scope:recipient = { is_obedient_to = scope:actor } + add = 40 + desc = obedient_interaction_reason + } + + modifier = { # Generally don't try to tributarize those of higher rank than you + trigger = { + "scope:recipient.tier_difference(scope:actor)" > 1 + } + add = -20 + } + + modifier = { # Generally don't try to tributarize those of higher dominance than you + trigger = { + scope:recipient.dominance_value > scope:actor.dominance_value + } + add = -30 + } + + modifier = { # Remote Realm. + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + add = -25 + } + + modifier = { + trigger = { + scope:recipient = { government_has_flag = government_is_true_herder } + } + add = 1000 + } + } + + ai_min_reply_days = 5 + ai_max_reply_days = 10 + + auto_accept = { + custom_tooltip = { + text = scheme_agent_aptitude.is_herder + scope:recipient = { government_has_flag = government_is_true_herder } + } + } + + ai_accept = { + base = -60 + + modifier = { # Hegemonic Tributaries are gentler and kinder + trigger = { + scope:actor = { highest_held_title_tier >= tier_hegemony } + } + add = 100 + desc = tributary_interaction_aibehavior_actor_hegemon_tier_tt + } + + modifier = { # Special case for Confucian-style governments towards China + scope:actor = { + primary_title = title:h_china + } + government_has_flag = government_is_meritocratic + add = 25 + desc = tributary_interaction_aibehavior_recipient_confucian_government_tt + } + + modifier = { # Perk boost + desc = offer_vassalization_true_ruler_perk_tt + trigger = { + scope:actor = { has_perk = true_ruler_perk } + } + add = true_ruler_value + } + + #Yurt bonuses + modifier = { + desc = tributary_yurt_02_domicile_building + trigger = { + scope:actor.domicile ?= { has_domicile_parameter = nomad_yurt_increased_tributary_acceptance_lvl_1 } + } + add = 5 + } + + modifier = { + desc = tributary_yurt_02_domicile_building + trigger = { + scope:actor.domicile ?= { has_domicile_parameter = nomad_yurt_increased_tributary_acceptance_lvl_2 } + } + add = 10 + } + + modifier = { + desc = tributary_yurt_02_domicile_building + trigger = { + scope:actor.domicile ?= { has_domicile_parameter = nomad_yurt_increased_tributary_acceptance_lvl_3 } + } + add = 15 + } + + modifier = { # the bolder they are, the less likely they will agree to this and vice versa + NOT = { ai_boldness = 0 } + add = { + value = ai_boldness + multiply = -1 + divide = 2 + } + desc = TRIBUTARY_BOLDNESS_REASON + } + + modifier = { # the greedier they are, the less likely they will agree to this + ai_greed > 0 + add = { + value = ai_greed + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_GREED_REASON + } + + modifier = { + is_obedient_to = scope:actor + add = 40 + desc = obedient_interaction_reason + } + + modifier = { + scope:actor = { is_gurkhan = yes } + scope:recipient = { government_has_flag = government_is_nomadic } + add = 20 + desc = gurkhan_interaction_reason + } + + # Easier to make Tributaries during the Zud season + modifier = { + any_character_situation = { + any_situation_sub_region = { + has_sub_region_phase_parameter = the_great_steppe_easier_tributaries + any_situation_sub_region_participant_group = { + participant_group_type = nomad_rulers_capital + participant_group_has_character = scope:actor + } + } + } + scope:recipient = { government_has_flag = government_is_nomadic } + add = 25 + desc = zud_season_reason + } + + # if the actor is a major threat to the recipient they're more likely to accept + ai_military_threat_modifier_with_cbs = { + SENDER = scope:recipient + RECEIVER = scope:actor + MULTIPLIER = 1 + } + + modifier = { # They are a King + desc = tributary_interaction_aibehavior_recipient_tier_tt + trigger = { + scope:recipient = { highest_held_title_tier = tier_kingdom } + } + add = -100 + } + + modifier = { # They are an Emperor or greater + desc = tributary_interaction_aibehavior_recipient_tier_tt + trigger = { + scope:recipient = { highest_held_title_tier >= tier_empire } + } + add = -200 + } + + modifier = { # Recipient has higher Dominance than the actor + desc = demand_tributary_interaction_aibehavior_dominance_tt + trigger = { + scope:actor = { government_has_flag = government_is_nomadic } + scope:recipient = { government_has_flag = government_is_nomadic } + scope:recipient.dominance_value > scope:actor.dominance_value + } + add = -20 + } + + modifier = { # Actor has higher Dominance than the recipient + desc = demand_tributary_interaction_aibehavior_dominance_tt + trigger = { + scope:actor = { government_has_flag = government_is_nomadic } + scope:recipient = { government_has_flag = government_is_nomadic } + scope:actor.dominance_value > scope:recipient.dominance_value + } + add = 20 + } + + modifier = { # Actor is a Meritocratic Khanate trying to tributarize a Nomad + desc = demand_tributary_interaction_steppe_admin + trigger = { + scope:actor = { government_has_flag = government_is_steppe_admin } + scope:recipient = { government_has_flag = government_is_nomadic } + } + add = 60 # This offsets base reluctance + } + + # Non-nomadic + modifier = { + desc = AI_FILTHY_HORSE_LORD_REASON + trigger = { + scope:actor = { government_has_flag = government_is_nomadic } + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + add = { + value = -50 + if = { + limit = { + scope:recipient = { government_has_flag = government_is_tribal } + } + multiply = 0.5 + } + } + } + + # MINOR + modifier = { # Rivalry modifier. + desc = offer_vassalization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -100 + } + modifier = { # Nemesis modifier. + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -200 + } + modifier = { # Same Dynasty modifier. + desc = offer_vassalization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + modifier = { # Different faith, no pluralism. + desc = offer_vassalization_interaction_aibehavior_differentfaith_tt + trigger = { + scope:actor = { + NOT = { # faith condition below doesn't have to apply if both actor and recipient have nomadic_philosophy + has_trait = nomadic_philosophy + scope:recipient = { has_trait = nomadic_philosophy } + } + faith = { + NOR = { # Of two different faiths AND the potential vassal's faith is not pluralistic + this = scope:recipient.faith + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + + modifier = { # Encircled + desc = offer_vassalization_interaction_aibehavior_encircled_tt + trigger = { + scope:recipient = { + NOT = { + any_neighboring_top_suzerain_realm_owner = { + exists = this + NOT = { this = scope:actor } + } + } + NOT = { + any_realm_county = { is_coastal_county = yes } + } + } + } + add = 30 + } + + modifier = { # Cultural Acceptance + scope:actor = { + NOT = { # cultural condition below doesn't have to apply if both actor and recipient have nomadic_philosophy + has_trait = nomadic_philosophy + scope:recipient = { has_trait = nomadic_philosophy } + } + NOT = { has_same_culture_as = scope:recipient } + culture = { + cultural_acceptance = { target = scope:recipient.culture value < 50 } + } + } + add = { + add = -10 + if = { + limit = { scope:actor.culture = { has_cultural_pillar = ethos_bellicose } } + add = -10 + } + } + desc = cultural_acceptance_interaction_reason + } + + modifier = { # Same language + add = 5 + desc = speaks_same_language_interaction_reason + trigger = { + scope:actor = { + knows_language_of_culture = scope:recipient.culture + } + } + } + + #Legitimacy + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -15 + scope:actor = { + has_legitimacy_flag = slightly_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -25 + scope:actor = { + has_legitimacy_flag = reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -50 + scope:actor = { + has_legitimacy_flag = very_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -75 + scope:actor = { + has_legitimacy_flag = massively_reduced_tributarization_acceptance + } + } + + # HIGH LEGITIMACY + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 25 + scope:actor = { + has_legitimacy_flag = increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 50 + scope:actor = { + has_legitimacy_flag = very_increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 75 + scope:actor = { + has_legitimacy_flag = extra_increased_tributarization_acceptance + } + } + + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + + #Severed head acceptance + modifier = { + add = 200 + scope:actor = { + has_variable = severed_head_vassalization + var:severed_head_vassalization = { + this = scope:recipient + } + } + } + } +} + + + +### Cease Paying Tribute - unilateral +### Name referenced in code! Don't change it without notification! +# actor = tributary +# recipient = suzerain + +cease_paying_tribute_interaction = { + category = interaction_category_vassal + common_interaction = yes + use_diplomatic_range = no + icon = cease_paying_tributary_interaction + + desc = cease_paying_tribute_interaction_desc + + is_shown = { + scope:actor = { + this != scope:recipient + suzerain = scope:recipient + is_tributary = yes + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_physically_able = yes + is_travelling = no + NOT = { exists = involved_activity } + trigger_if = { + limit = { + OR = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:recipient + } + scope:recipient = { + is_landed = no + } + } + } + NOT = { has_truce = scope:recipient } + } + trigger_else = { + NOT = { has_truce = scope:recipient } + subject_can_break_tributary = yes + } + } + } + + cost = { + prestige = { + value = 0 + if = { + limit = { + scope:actor = { + OR = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:recipient + } + scope:recipient = { + is_landed = no + } + } + } + } + add = minor_prestige_value + } + } + } + + auto_accept = yes + on_accept = { + scope:actor = { + end_tributary = yes + if = { + limit = { + scope:recipient = { government_has_flag = government_is_mandala } + } + add_opinion = { + modifier = tributary_ceased_payments_opinion + target = scope:recipient + opinion = -100 + } + } + + } + scope:recipient = { + # Losing legitimacy if you are the Chinese Hegemon in the Dynastic Cycle Instability phase + if = { + limit = { + top_participant_group:dynastic_cycle ?= { + has_participant_group_parameter = dynastic_cycle_external_tributaries_vassals_increased_independence_desire + } + } + add_legitimacy_effect = { LEGITIMACY = minor_legitimacy_loss } + } + + #Some cooldown for Mandala rulers + if = { + limit = { government_has_flag = government_is_mandala } + if = { + limit = { is_ai = yes } + set_variable = { + name = tributary_recently_ceased + years = 1 + } + } + else = { + set_variable = { + name = tributary_recently_ceased + months = 6 + } + } + + } + + if = { + limit = { is_ai = yes } + trigger_event = { + id = char_interaction.0370 + days = 14 # we delay the response from the AI for 2 weeks to make it feel more like a "diplomacy response" + } + } + else = { + trigger_event = char_interaction.0370 + } + + add_opinion = { + modifier = tributary_ceased_payments_opinion + target = scope:actor + } + } + } + + ai_potential = { + is_at_war = no + is_migrating = no + trigger_if = { + limit = { + suzerain = { + highest_held_title_tier >= tier_hegemony + } + } + subject_standing < 20 + } + suzerain = { + is_migrating = no + + OR = { + is_landed = no + NOT = { # disconnected tributaries can always do this, even herders + any_land_neighboring_realm_with_tributaries_owner = { + this = root + } + } + AND = { + NOT = { root = { government_has_flag = government_is_true_herder } } + trigger_if = { # Obedience is a hard blocker, but only if suzerain is landed + limit = { + is_landed = yes + } + root = { is_obedient = no } + } + } + } + trigger_if = { + limit = { + any_character_situation = { + situation_type = dynastic_cycle + } + } + OR = { + root.subject_standing <= 0 + any_character_situation = { + situation_type = dynastic_cycle + OR = { + situation_current_phase = situation_dynastic_cycle_phase_instability + situation_current_phase = situation_dynastic_cycle_phase_instability_conquest + } + } + } + } + } + } + + ai_targets = { + ai_recipients = suzerain + } + + # this must be 12 (1 year) in order to ensure the integrity of the UI-visualized chance the tributary will break the contract + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + # visualized in the UI as the annual chance the tributary will break the contract, based on a percentage chance per year + ai_will_do = { + base = 0 + #Base + modifier = { + NOT = { + suzerain = { government_has_flag = government_is_mandala } + } + add = -25 + desc = base_with_value + } + + # if the actor is sufficiently scared of the recipient they're way less likely to do this + ai_military_threat_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + MULTIPLIER = -2 + } + + ### Nomad + modifier = { + scope:recipient = { exists = obedience_target } + add = { + add = obedience_value + subtract = obedience_threshold + multiply = -1 + max = obedience_threshold + min = { + value = obedience_threshold + multiply = -1 + } + } + desc = obedience_value_reason + } + + modifier = { + scope:recipient = { + has_variable = temp_tributary_protection + } + add = -150 + desc = temp_tributary_protection_reason + } + + modifier = { + dominance_value > suzerain.dominance_value + add = 30 + desc = cease_tribute_higher_dominance_reason + } + + modifier = { + suzerain = { + any_memory = { + has_memory_type = nomad_showed_weakness_in_war + memory_age_years < 5 + } + } + add = 30 + desc = cease_tribute_showed_weakness_in_war_reason + } + + modifier = { + any_memory = { + has_memory_type = suzerain_defended_me_in_war + has_memory_participant = root.suzerain + memory_age_years < 10 + } + add = -100 + desc = cease_tribute_defended_me_in_war_reason + } + + modifier = { + suzerain = { + any_memory = { + has_memory_type = had_chaotic_kurultai_succession + memory_age_years < 5 + } + } + add = 30 + desc = cease_tribute_had_chaotic_kurultai_succession_reason + } + #General Modifiers + #Is the Tributary Connected? + modifier = { + scope:recipient = { + trigger_if = { #Mandalas, China, Wanua, and Meritocratic realms can keep overseas tributaries, if they are coastal. + limit = { + scope:actor = { + OR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_celestial + government_has_flag = government_is_wanua + government_has_flag = government_is_meritocratic + } + } + } + NOR = { + scope:recipient.capital_county = { is_coastal_county = yes } + any_sub_realm_county = { is_coastal_county = yes } + any_tributary = { + any_sub_realm_county = { is_coastal_county = yes } + } + } + } + NOT = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:actor + } + } + } + add = 1000 + desc = cease_tribute_disconnected_suzerain + } + #Is the suzerain landless? + modifier = { + scope:recipient = { + is_landed = no + is_migrating = no + is_at_war = no + } + add = 10000 + desc = cease_tribute_landless_suzerain + } + #Subject Standing + modifier = { + subject_standing >= 0 # applied only if the subject contract uses Subject Standing + add = { # every point of subject standing reduces the chance by 5 + add = subject_standing + multiply = -5 + } + desc = ai_will_do_debug + } + # TGP Dynastic Cycle in Instability phase + modifier = { + desc = "FACTION_REASON_DYNASTIC_CYCLE_INSTABILITY" + add = 25 + scope:recipient = { + top_participant_group:dynastic_cycle ?= { + has_participant_group_parameter = dynastic_cycle_external_tributaries_vassals_increased_independence_desire + } + } + } + + #Legitimacy + modifier = { + desc = "RECIPIENT_LOW_LEGITIMACY_REASON" + add = 75 + scope:recipient = { + has_legitimacy_flag = massively_reduced_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_LOW_LEGITIMACY_REASON" + add = 50 + scope:recipient = { + has_legitimacy_flag = very_reduced_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_LOW_LEGITIMACY_REASON" + add = 25 + scope:recipient = { + has_legitimacy_flag = reduced_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_LOW_LEGITIMACY_REASON" + add = 15 + scope:recipient = { + has_legitimacy_flag = slightly_reduced_tributarization_acceptance + } + } + # HIGH LEGITIMACY + modifier = { + desc = "RECIPIENT_HIGH_LEGITIMACY_REASON" + add = -25 + scope:recipient = { + has_legitimacy_flag = increased_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_HIGH_LEGITIMACY_REASON" + add = -50 + scope:recipient = { + has_legitimacy_flag = very_increased_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_HIGH_LEGITIMACY_REASON" + add = -75 + scope:recipient = { + has_legitimacy_flag = extra_increased_tributarization_acceptance + } + } + ### MANDALA ### + #I am a Tribal! + modifier = { + scope:recipient = { government_has_flag = government_is_mandala } + scope:actor = { government_has_flag = government_is_tribal } + add = -20 + desc = actor_is_a_tribal_government + } + #Your Radiance + #Radiance Value x2 + modifier = { + scope:recipient = { + government_has_flag = government_is_mandala + has_unruined_mandala_capital_trigger = yes + } + add = { + value = { + value = scope:recipient.mandala_radiance_value + multiply = 2 + } + multiply = -1 + } + desc = recipient_negative_mandala_radiance + } + #You're Prosperity + modifier = { + desc = is_prosperity_mandala_tributary + scope:recipient = { has_realm_law_flag = tributaries_less_likely_to_break_free } + add = -15 + } + #Mandala Piety Level - This is only checked if you are not a Devaraja/haven't got a capital temple complex - Otherwise we use Radiance + mandala_devaraja_piety_level_remove_weight_modifier = { DEVARAJA = scope:recipient } + #Tributary Realm Size + subject_realm_size_add_weight_modifier = { + DEVARAJA = scope:recipient + SUBJECT = scope:actor + } + + ##Radience of other potential Suzerains is not calculated here since they can directly ask the tributary to switch over to them. + + #Pacing for Mandala Suzerains + modifier = { + scope:recipient = { + government_has_flag = government_is_mandala + has_variable = tributary_recently_ceased + } + factor = 0.1 + } + #You're Disbelieved, son + modifier = { + suzerain = { has_character_modifier = disbelieved_mandala_modifier } + add = 40 + desc = is_disbelieved_mandala + } + #SEA Legacy + modifier = { + desc = tgp_sea_legacy_2_modifier_desc + scope:recipient = { + dynasty ?= { + has_dynasty_perk = tgp_sea_legacy_2 + } + } + add = { + value = { + value = tgp_sea_legacy_tributary_acceptance_value + multiply = -1 + } + } + } + # I am higher rank than you + modifier = { + desc = tributary_interaction_aibehavior_actor_tier_tt + scope:actor = { highest_held_title_tier > scope:recipient.highest_held_title_tier } + add = { + value = scope:actor.highest_held_title_tier + subtract = scope:recipient.highest_held_title_tier + multiply = 50 + } + } + # I have a Capital Temple Complex of my own (I am also a God King) + modifier = { + desc = tributary_interaction_aibehavior_actor_capital_complex + scope:recipient = { government_has_flag = government_is_mandala } + scope:actor = { + government_has_flag = government_is_mandala + capital_province = { + has_building_with_flag = mandala_capital_building + has_ruined_great_building = no + } + } + add = 50 + } + #AI Godkings should NOT want to be subjects + modifier = { + has_variable = mandala_godking + add = 100 + desc = mandala_ai_godking_modifier + } + # Same Faith and Recipient is a God King + modifier = { + desc = tributary_interaction_aibehavior_recipient_same_faith + scope:recipient = { + government_has_flag = government_is_mandala + faith = scope:actor.faith + capital_province = { + has_building_with_flag = mandala_capital_building + has_ruined_great_building = no + } + } + add = -10 + } + # Different religion Family - We prefer god kings to be vaguely within our own world view + modifier = { + desc = tributary_interaction_aibehavior_recipient_other_religion_family + scope:actor = { + NOT = { government_has_flag = government_is_wanua } + } + scope:recipient.faith.religion = { + switch = { + trigger = is_in_family + rf_pagan = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_pagan } } + } + rf_sinitic = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_sinitic } } + } + rf_eastern = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_eastern } } + } + rf_abrahamic = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_abrahamic } } + } + } + } + add = 25 + } + ### + # Rivalry modifier. + modifier = { + desc = embrace_tributarization_interaction_aibehavior_rival_tt + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + add = 30 + } + # Nemesis modifier. + modifier = { + desc = embrace_tributarization_interaction_aibehavior_nemesis_tt + scope:recipient = { has_relation_nemesis = scope:actor } + add = 50 + } + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:actor + opinion_target = scope:recipient + multiplier = -1 + } + } +} + +### Release Tributary - unilateral +# actor = suzerain +# recipient = tributary + +release_tributary_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = release_tributary_interaction + + desc = release_tributary_interaction_desc + + is_shown = { + scope:recipient = { + this != scope:actor + suzerain = scope:actor + OR = { # AI should only ever consider releasing unruly subjects + scope:actor = { is_ai = no } + NOT = { is_obedient_to = scope:actor } + } + } + } + + is_valid_showing_failures_only = { + #scope:recipient = { + # trigger_if = { + # limit = { subject_standing >= 0 } + # subject_standing = 0 + # } + #} + } + + cost = { + prestige = { + value = minor_prestige_value + if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + multiply = 0 + } + } + piety = { + value = medium_piety_value + if = { + limit = { + scope:actor = { + NOT = { government_has_flag = government_is_mandala } + } + } + multiply = 0 + } + } + } + + auto_accept = yes + on_accept = { + scope:recipient = { + end_tributary = yes + save_scope_as = tributary_loc + scope:actor = { save_scope_as = suzerain_loc } + add_truce_both_ways = { + character = scope:actor + years = 5 + name = TRUCE_TRIBUTARY_STOPPED + } + add_opinion = { + target = scope:actor + modifier = tributary_released_opinion + opinion = 25 + } + if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + set_variable = { + name = recent_mandala_suzerain + value = scope:actor + years = 5 + } + } + trigger_event = char_interaction.0380 + } + } +} + +### Release as Tributary - unilateral +# actor = suzerain +# recipient = tributary + +release_as_tributary_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = release_as_tributary + interface_priority = 4 + + desc = release_as_tributary_interaction_desc + + is_shown = { + scope:actor = { + OR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_mandala + government_has_flag = government_is_wanua + } + } + scope:recipient = { + is_vassal_of = scope:actor + highest_held_title_tier >= tier_county + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_independent_ruler = yes + is_at_war = no + } + } + + auto_accept = yes + + on_accept = { + scope:actor = { + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = release_as_tributary_interaction_toast + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = release_as_tributary_interaction_toast_desc + } + } + } + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = granted_independence_opinion + opinion = 10 + } + create_title_and_vassal_change = { + type = independency + save_scope_as = change + add_claim_on_loss = yes + } + becomes_independent = { + change = scope:change + } + + resolve_title_and_vassal_change = scope:change + } + start_tributary_interaction_effect = { + SUZERAIN = scope:actor + TRIBUTARY = scope:recipient + } + } + + ai_potential = { + OR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_mandala + government_has_flag = government_is_wanua + } + this = top_liege + vassal_count > vassal_limit + } + + ai_targets = { + ai_recipients = vassals + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 36 + kingdom = 4 + empire = 4 + hegemony = 4 + } + + ai_will_do = { + base = 0 + modifier = { + scope:recipient = { # Only on your borders + any_held_title = { + tier = tier_county + is_coastal_county = yes + } + } + add = 10 + } + modifier = { + scope:recipient = { # Only on your borders + any_held_title = { + tier = tier_county + any_neighboring_county = { + holder.top_liege != scope:recipient.top_liege + } + } + } + add = 100 + } + } +} + +exact_tribute_interaction = { + category = interaction_category_vassal + icon = demand_tributary_interaction + + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + popup_on_receive = yes + common_interaction = yes + + interface_priority = 4 + + ai_targets = { + ai_recipients = tributaries + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 9 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + desc = exact_tribute_interaction_desc + + is_shown = { + scope:recipient = { is_ai = yes } + scope:actor = { + OR = { + highest_held_title_tier >= tier_hegemony + AND = { + government_has_flag = government_is_mandala + scope:recipient = { is_tributary_of = scope:actor } + } + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + is_available_adult = yes + #Has recently gone on a Tribute Mission (to you) + custom_tooltip = { + text = exact_tribute_interaction_recently_tribute_missioned_tt + NOT = { var:tribute_mission_grace ?= scope:actor } + } + + trigger_if = { + limit = { + scope:actor = { + highest_held_title_tier >= tier_hegemony + } + } + scope:recipient = { + trigger_if = { + limit = { is_tributary_of = scope:actor } + subject_standing < exact_tribute_subject_standing_value + } + trigger_else = { + is_independent_ruler = yes + highest_held_title_tier < tier_hegemony + is_tributary = no + custom_tooltip = { + text = exact_tribute_interaction_hegemony_not_neighbor_tt + any_neighboring_and_across_water_top_liege_realm_owner = { + this = scope:actor + } + } + } + } + } + trigger_else = { + scope:actor = { government_has_flag = government_is_mandala } + scope:recipient = { is_tributary_of = scope:actor } + } + + #Has something to offer as Tribute Mission + trigger_if = { + limit = { + NOR = { + var:declined_requested_tribute_recently ?= scope:actor + var:requested_tribute_mission ?= scope:actor + } + } + custom_tooltip = { + text = exact_tribute_interaction_no_tribute_tt + OR = { + has_gold_tribute_trigger = yes + has_herd_tribute_trigger = yes + has_artifact_tribute_trigger = yes + AND = { + any_courtier_or_guest = { + can_become_concubine_of_character_valid_trigger = { CHARACTER = scope:actor } + } + scope:actor = { + allowed_more_concubines = yes + is_adult = yes + } + } + AND = { + has_eunuch_tribute_trigger = yes + scope:actor = { + culture = { has_cultural_parameter = can_appoint_chief_eunuch } + } + } + } + } + } + #Has recently refused + custom_tooltip = { + text = exact_tribute_interaction_recently_refused_tt + NOT = { var:declined_requested_tribute_recently ?= scope:actor } + } + #Is already engaged + custom_tooltip = { + text = exact_tribute_interaction_already_engaged_tt + NOR = { + var:requested_tribute_mission ?= scope:actor + has_variable = tribute_mission_type + } + } + } + } + + greeting = positive + notification_text = EXACT_TRIBUTE_INTERACTION_NOTIFICATION + + #Request Gold + send_option = { + flag = gold + is_valid = { + scope:recipient ?= { has_gold_tribute_trigger = yes } + } + localization = request_gold_tribute + } + + #Request Herd + send_option = { + flag = herd + is_valid = { + scope:recipient ?= { has_herd_tribute_trigger = yes } + } + localization = request_herd_tribute + } + + #Request Artifact + send_option = { + flag = artifact + is_valid = { + scope:recipient = { + custom_tooltip = { + text = exact_tribute_interaction_no_suitable_artifact_tt + has_artifact_tribute_trigger = yes + } + } + } + localization = request_artifact_tribute + } + + #Request Concubine + send_option = { + flag = concubine + is_valid = { + scope:actor = { + is_adult = yes + can_have_concubines_trigger = { CHAR = scope:actor } + } + scope:recipient = { + custom_tooltip = { + text = exact_tribute_interaction_no_suitable_concubine_tt + any_courtier_or_guest = { + can_become_concubine_of_character_valid_trigger = { CHARACTER = scope:actor } + } + } + } + } + localization = request_concubine_tribute + } + + #Request Eunuch + send_option = { + flag = eunuch + is_valid = { + trigger_if = { + limit = { + scope:actor = { + can_employ_court_eunuchs_trigger = { CHAR = scope:actor } + } + } + scope:recipient = { + custom_tooltip = { + text = exact_tribute_interaction_no_suitable_eunuchs_tt + has_eunuch_tribute_trigger = yes + } + } + } + trigger_else = { + scope:actor = { + can_employ_court_eunuchs_trigger = { CHAR = scope:actor } + } + } + } + localization = request_eunuch_tribute + } + + send_options_exclusive = yes + + on_accept = { + scope:actor = { + if = { + limit = { is_ai = no } + trigger_event = tribute_mission.9010 + } + } + scope:recipient = { + set_variable = { + name = requested_tribute_mission + value = scope:actor + years = requested_tribute_mission_deadline_years + } + trigger_event = { + id = tribute_mission.9500 + years = requested_tribute_mission_deadline_years + } + switch = { + trigger = yes + scope:gold ?= { + set_variable = { + name = requested_tribute_mission_type_gold + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_gold_tt + } + scope:herd ?= { + set_variable = { + name = requested_tribute_mission_type_herd + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_herd_tt + } + scope:artifact ?= { + set_variable = { + name = requested_tribute_mission_type_artifact + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_artifact_tt + random_character_artifact = { + limit = { is_suitable_artifact_tribute_trigger = yes } + scope:recipient = { + set_variable = { + name = predetermined_artifact_tribute + value = prev + } + } + } + } + scope:concubine ?= { + set_variable = { + name = requested_tribute_mission_type_concubine + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_concubine_tt + every_courtier_or_guest = { + limit = { + can_be_offered_as_concubine_to_character_trigger = { + GIVER = scope:recipient + CHARACTER = scope:actor + } + is_adult = yes + has_any_disease_trigger = no + has_easily_mocked_physical_attribute_trigger = no + } + add_to_list = potential_concubine_tribute_list + random_in_list = { + list = potential_concubine_tribute_list + weight = { + #Let's try to make a sane choice here + base = 0 + #No marginally relevant court people + modifier = { + add = 10 + NOR = { + is_councillor = yes + has_any_court_position = yes + } + } + #No knights + modifier = { + add = 5 + is_knight = no + } + #No inspired people? + modifier = { + add = 20 + NOT = { exists = inspiration } + } + #No close family + modifier = { + add = 15 + NOT = { is_close_or_extended_family_of = scope:recipient } + } + #No friends? + modifier = { + add = 20 + NOT = { has_relation_friend = scope:recipient } + } + #No children + modifier = { + add = 25 + NOT = { is_child_of = scope:recipient } + } + } + scope:recipient = { + set_variable = { + name = predetermined_concubine_tribute + value = prev + } + } + } + } + } + scope:eunuch ?= { + set_variable = { + name = requested_tribute_mission_type_eunuch + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_eunuch_tt + every_courtier = { + limit = { + tribute_mission_is_available_eunuch_trigger = yes + NAND = { + faith = { has_doctrine = doctrine_theocracy_temporal } + this = scope:actor.cp:councillor_court_chaplain + } + has_any_disease_trigger = no + } + add_to_list = potential_eunuch_tribute_list + random_in_list = { + list = potential_eunuch_tribute_list + weight = { + #Let's try to make a sane choice here + base = 0 + #No marginally relevant court people + modifier = { + add = 10 + NOR = { + is_councillor = yes + has_any_court_position = yes + } + } + #No knights + modifier = { + add = 5 + is_knight = no + } + #No inspired people? + modifier = { + add = 20 + NOT = { exists = inspiration } + } + #No close family + modifier = { + add = 15 + NOT = { is_close_or_extended_family_of = scope:recipient } + } + #No friends? + modifier = { + add = 20 + NOT = { has_relation_friend = scope:recipient } + } + #No children + modifier = { + add = 25 + NOT = { is_child_of = scope:recipient } + } + } + scope:recipient = { + set_variable = { + name = predetermined_eunuch_tribute + value = prev + } + } + } + } + } + } + if = { + limit = { scope:actor = { government_has_flag = government_is_mandala } } + execute_decision = tribute_mission_decision_mandala + } + else_if = { + limit = { scope:actor.primary_title = title:h_china } + execute_decision = tribute_mission_decision_china + } + else_if = { + limit = { scope:actor.primary_title = title:h_roman_empire } + execute_decision = tribute_mission_decision_roman_empire + } + else_if = { + limit = { scope:actor.primary_title = title:h_eastern_roman_empire } + execute_decision = tribute_mission_decision_eastern_roman_empire + } + else_if = { + limit = { scope:actor.primary_title = title:h_dar_al_islam } + execute_decision = tribute_mission_decision_dar_al_islam + } + else_if = { + limit = { scope:actor.primary_title = title:h_india } + execute_decision = tribute_mission_decision_india + } + } + } + + on_decline = { + scope:recipient = { + if = { + limit = { has_legitimacy = yes } + add_legitimacy = minor_legitimacy_loss + } + set_variable = { + name = declined_requested_tribute_recently + value = scope:actor + years = requested_tribute_mission_deadline_years + } + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = declined_tribute_mission_opinion + opinion = -30 + target = scope:actor + } + } + } + scope:actor = { + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = declined_tribute_mission_opinion + opinion = -30 + target = scope:recipient + } + } + if = { + limit = { is_ai = no } + trigger_event = tribute_mission.9000 + } + } + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 50 + modifier = { + scope:actor = { has_realm_law = mandala_decree_reverence } + factor = 2 + } + modifier = { + NOT = { ai_boldness = 0 } + add = { + value = ai_boldness + divide = 4 + } + desc = TRIBUTARY_BOLDNESS_REASON + } + modifier = { + ai_greed > 0 + add = { + value = ai_greed + divide = 4 + } + desc = TRIBUTARY_GREED_REASON + } + + } + + ai_accept = { + base = 0 + #Base + modifier = { + government_has_flag = government_is_mandala + add = -25 + desc = base_with_value + } + modifier = { # Special case for Hegemonic Tributaries + scope:actor = { + highest_held_title_tier >= tier_hegemony + } + add = { + add = 25 + if = { + limit = { + OR = { + NOT = { scope:recipient.primary_title = title:h_china } + government_has_flag = government_is_meritocratic + } + } + add = 25 + } + } + desc = tributary_interaction_aibehavior_recipient_hegemon_tier_tt + } + # Unstable Phase + modifier = { + scope:actor = { highest_held_title_tier >= tier_hegemony } + situation:dynastic_cycle ?= { + OR = { + situation_current_phase = situation_dynastic_cycle_phase_instability + situation_current_phase = situation_dynastic_cycle_phase_instability_conquest + } + } + add = -50 + desc = tributary_interaction_aibehavior_actor_unstable_cycle_tt + } + # Stable Phase + modifier = { + scope:actor = { + highest_held_title_tier >= tier_hegemony + legitimacy_level < dynastic_cycle_legitimacy_expectation + } + situation:dynastic_cycle ?= { + NOR = { + situation_current_phase = situation_dynastic_cycle_phase_instability + situation_current_phase = situation_dynastic_cycle_phase_instability_conquest + } + } + add = -25 + desc = tributary_interaction_aibehavior_actor_low_legitimacy_tt + } + modifier = { + scope:actor = { + highest_held_title_tier >= tier_hegemony + legitimacy_level > dynastic_cycle_legitimacy_expectation + } + situation:dynastic_cycle ?= { + NOR = { + situation_current_phase = situation_dynastic_cycle_phase_instability + situation_current_phase = situation_dynastic_cycle_phase_instability_conquest + } + } + add = 25 + desc = tributary_interaction_aibehavior_actor_high_legitimacy_tt + } + + #MINOR MODIFIERS + modifier = { # the bolder they are, the less likely they will agree to this and the more cowardly the more likely + NOT = { ai_boldness = 0 } + add = { + value = ai_boldness + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_BOLDNESS_REASON + } + + modifier = { # the greedier they are, the less likely they will agree to this + ai_greed > 0 + add = { + value = ai_greed + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_GREED_REASON + } + modifier = { # Rivalry modifier. + desc = embrace_tributarization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -30 + } + modifier = { # Nemesis modifier. + desc = embrace_tributarization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { # Same Dynasty modifier. + desc = embrace_tributarization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + #Prosperity Mandala + modifier = { + desc = is_prosperity_mandala_tributary + scope:recipient = { + is_tributary = yes + suzerain = { has_realm_law = mandala_decree_prosperity } + } + add = 15 + } + #Mandala Piety Level + #This is only checked if you are not a Devaraja/haven't got a capital temple complex - Otherwise we use Radiance + mandala_devaraja_piety_level_add_weight_modifier = { DEVARAJA = scope:actor } + + #Your Radiance + modifier = { + scope:actor = { has_unruined_mandala_capital_trigger = yes } + add = { + value = scope:actor.mandala_radiance_value + multiply = 2 + } + desc = actor_positive_mandala_radiance + } + opinion_modifier = { # Compare Opinion modifier. + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + + # if the actor is a major threat to the recipient they're more likely to accept + ai_military_threat_modifier = { + SENDER = scope:recipient + RECEIVER = scope:actor + MULTIPLIER = 1 + } + } +} + +#If the target is a player +exact_tribute_player_interaction = { + category = interaction_category_vassal + icon = demand_tributary_interaction + + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + ai_accept_negotiation = yes + popup_on_receive = yes + common_interaction = yes + + interface_priority = 4 + + ai_targets = { + ai_recipients = tributaries + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 9 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + desc = exact_tribute_player_interaction_desc + + is_shown = { + scope:recipient = { is_ai = no } + trigger_if = { + limit = { + scope:actor = { highest_held_title_tier >= tier_hegemony } + } + scope:recipient = { + trigger_if = { + limit = { is_tributary_of = scope:actor } + subject_standing < exact_tribute_subject_standing_value + } + trigger_else = { + is_tributary = no + is_independent_ruler = yes + any_neighboring_top_liege_realm_owner = { primary_title = title:h_china } + } + } + } + trigger_else = { + scope:actor = { government_has_flag = government_is_mandala } + scope:recipient = { is_tributary_of = scope:actor } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + is_available_adult = yes + #Has recently gone on a Tribute Mission (to you) + custom_tooltip = { + text = exact_tribute_interaction_recently_tribute_missioned_tt + NOT = { var:tribute_mission_grace ?= scope:actor } + } + #Has something to offer as Tribute Mission + trigger_if = { + limit = { + NOR = { + var:declined_requested_tribute_recently ?= scope:actor + var:requested_tribute_mission ?= scope:actor + } + } + custom_tooltip = { + text = exact_tribute_interaction_no_tribute_tt + OR = { + has_gold_tribute_trigger = yes + has_herd_tribute_trigger = yes + has_artifact_tribute_trigger = yes + AND = { + any_courtier_or_guest = { + can_become_concubine_of_character_valid_trigger = { CHARACTER = scope:actor } + } + scope:actor = { allowed_more_concubines = yes } + } + AND = { + has_eunuch_tribute_trigger = yes + scope:actor = { + culture = { has_cultural_parameter = can_appoint_chief_eunuch } + } + } + } + } + } + #Has recently refused + custom_tooltip = { + text = exact_tribute_interaction_recently_refused_tt + NOT = { var:declined_requested_tribute_recently ?= scope:actor } + } + #Is already engaged + custom_tooltip = { + text = exact_tribute_interaction_already_engaged_tt + NOR = { + var:requested_tribute_mission ?= scope:actor + has_variable = tribute_mission_type + } + } + } + } + + greeting = positive + notification_text = EXACT_TRIBUTE_PLAYER_INTERACTION_NOTIFICATION + + on_accept = { + scope:actor = { + if = { + limit = { is_ai = no } + trigger_event = tribute_mission.9010 + } + } + scope:recipient = { + set_variable = { + name = requested_tribute_mission + value = scope:actor + years = requested_tribute_mission_deadline_years + } + trigger_event = { + id = tribute_mission.9500 + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_player_interaction_accept_tt + if = { + limit = { scope:actor = { highest_held_title_tier >= tier_hegemony } } + if = { + limit = { scope:actor.primary_title = title:h_china } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_china + player = scope:recipient + } + } + else_if = { + limit = { scope:actor.primary_title = title:h_roman_empire } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_roman_empire + player = scope:recipient + } + } + else_if = { + limit = { scope:actor.primary_title = title:h_eastern_roman_empire } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_eastern_roman_empire + player = scope:recipient + } + } + else_if = { + limit = { scope:actor.primary_title = title:h_dar_al_islam } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_dar_al_islam + player = scope:recipient + } + } + else_if = { + limit = { scope:actor.primary_title = title:h_india } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_india + player = scope:recipient + } + } + } + else_if = { + limit = { scope:actor = { government_has_flag = government_is_mandala } } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_mandala + player = scope:recipient + } + } + else = { + error_log = "Exacting tribute as an invalid actor!" + } + } + } + + on_decline = { + scope:recipient = { + add_legitimacy = minor_legitimacy_loss + set_variable = { + name = declined_requested_tribute_recently + value = scope:actor + years = requested_tribute_mission_deadline_years + } + } + scope:actor = { + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = declined_tribute_mission_opinion + opinion = -30 + target = scope:recipient + } + } + if = { + limit = { is_ai = no } + trigger_event = tribute_mission.9000 + } + } + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 50 + modifier = { + scope:actor = { has_realm_law = mandala_decree_reverence } + factor = 2 + } + } +} + +# Offer Courtier +offer_courtier_interaction = { + category = interaction_category_diplomacy + common_interaction = no + icon = courtier_interaction + interface_priority = 40 + + desc = offer_courtier_interaction_desc + + ai_targets = { + ai_recipients = suzerain + ai_recipients = liege + ai_recipients = scripted_relations + max = 5 + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 36 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + greeting = positive + notification_text = OFFER_COURTIER_NOTIFICATION + + needs_recipient_to_open = yes + + populate_actor_list = { + scope:actor = { + every_courtier = { + limit = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:actor + is_heir_of = scope:actor + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + } + add_to_list = characters + } + } + } + + is_shown = { + scope:actor != scope:recipient + scope:recipient = { + is_ruler = yes + NOT = { government_has_flag = government_is_true_herder } + } + } + + is_valid_showing_failures_only = { + custom_tooltip = { + text = offer_courtier_valid_courtier_tt + scope:actor = { + any_courtier = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:actor + is_heir_of = scope:actor + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + } + } + } + + trigger_if = { #For adventurers we check range + limit = { + scope:actor = { + is_landless_adventurer = yes + } + } + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + can_be_picked = { + is_adult = yes + } + + can_send = { + custom_tooltip = { + text = no_heirs_can_be_sent_tt + scope:secondary_actor = { + NOT = { + is_heir_of = scope:actor + } + } + } + custom_tooltip = { + text = no_spouses_can_be_sent_tt + scope:secondary_actor = { + NOT = { + is_consort_of = scope:actor + } + } + } + } + + auto_accept = { + scope:actor = { + has_title = title:e_minister_of_personnel + custom_tooltip = { + text = same_realm_tt + top_liege = scope:recipient.top_liege + } + } + scope:recipient = { + is_ai = yes + } + } + + ai_accept = { + base = -10 + + modifier = { + add = 100 + scope:secondary_actor = { + OR = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + has_relation_lover = scope:recipient # Shhh, don't tell anyone, of course you're 'skilled'! + trigger_if = { + limit = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + OR = { + AND = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_average + scope:recipient = { + any_courtier = { + count < 10 + } + } + } + aptitude:master_of_hunt_court_position >= 4 + aptitude:keeper_of_the_horses_court_position >= 4 + aptitude:boyan_court_position >= 4 + aptitude:siege_engineer_court_position >= 4 + aptitude:yurtchi_court_position >= 4 + aptitude:cherbi_court_position >= 4 + aptitude:yeke_jarquchi_court_position >= 4 + aptitude:foreign_emissary_court_position >= 4 + } + } + } + } + desc = AI_INTERESTING_COURTIER_REASON + } + + modifier = { + add = 100 + scope:secondary_actor.prowess >= decent_skill_rating + scope:recipient.number_of_knights < scope:recipient.max_number_of_knights + desc = AI_KNIGHT_REASON + } + + modifier = { + add = 100 + exists = scope:secondary_actor.inspiration + desc = AI_INSPIRED_REASON + } + + modifier = { + add = 100 + scope:secondary_actor = { + is_close_or_extended_family_of = scope:recipient + } + desc = AI_FAMILY_REASON + } + + modifier = { + add = 100 + scope:secondary_actor = { + is_consort_of = scope:recipient + } + desc = AI_SPOUSE_REASON + } + + modifier = { + add = 100 + scope:secondary_actor = { + has_relation_friend = scope:recipient + } + desc = AI_FRIEND_REASON + } + + modifier = { + add = -200 + scope:secondary_actor = { + has_relation_rival = scope:recipient + } + desc = AI_RIVAL_REASON + } + + modifier = { + add = 100 + scope:recipient = { + any_courtier = { + is_consort_of = scope:secondary_actor + } + } + desc = AI_SPOUSE_OF_COURTIER_REASON + } + + modifier = { + add = 100 + scope:recipient = { + any_courtier = { + count < 5 + } + } + desc = AI_LACK_COURTIERS_REASON + } + } + + ai_potential = { + OR = { + ai_greed <= 25 + is_obedient = yes + } + OR = { + is_tributary = yes + num_of_relation_friend > 0 + num_of_relation_lover > 0 + } + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + + modifier = { + add = 100 + scope:recipient = { + is_tributary_of = scope:actor + OR = { + ai_greed <= -50 + is_obedient_to = scope:actor + opinion = { + target = scope:actor + value >= 50 + } + } + } + } + + modifier = { + factor = 0 + scope:secondary_actor = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + + modifier = { + factor = 0 + scope:actor = { + NOR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_true_herder + } + } + scope:secondary_actor = { + is_close_or_extended_family_of = scope:actor + } + } + + modifier = { # The AI only offers really good characters + factor = 0 + scope:secondary_actor = { + NOR = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + exists = inspiration + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + trigger_if = { + limit = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + OR = { + AND = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_average + scope:recipient = { + any_courtier = { + count < 10 + } + } + } + aptitude:master_of_hunt_court_position >= 4 + aptitude:keeper_of_the_horses_court_position >= 4 + aptitude:boyan_court_position >= 4 + aptitude:siege_engineer_court_position >= 4 + aptitude:yurtchi_court_position >= 4 + aptitude:cherbi_court_position >= 4 + aptitude:yeke_jarquchi_court_position >= 4 + aptitude:foreign_emissary_court_position >= 4 + } + } + } + } + } + modifier = { + factor = 0 + scope:actor = { + has_title = title:e_minister_of_personnel + } + } + } + + on_send = { + scope:secondary_actor = { # to block the same character from being offered twice + add_character_flag = { + flag = has_been_offered_as_concubine + days = 5 + } + } + } + + on_accept = { + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_personnel + } + scope:recipient = { + top_liege = scope:actor.top_liege + } + } + scope:recipient = { + add_courtier = scope:secondary_actor + scope:secondary_actor = { + every_consort = { + limit = { + is_courtier_of = scope:actor + } + scope:recipient = { + add_courtier = prev + } + } + every_child = { + limit = { + is_adult = no + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + } + } + scope:actor = { + if = { + limit = { + government_has_flag = government_has_influence + } + change_influence = { + value = scope:secondary_actor.average_of_all_skills_and_prowess + multiply = 5 + if = { + limit = { + scope:secondary_actor = { + is_close_or_extended_family_of = scope:actor + } + } + add = 100 + } + } + } + } + } + else = { + scope:secondary_actor = { + add_opinion = { + target = scope:recipient + modifier = annoyed_opinion + opinion = 10 + } + } + scope:recipient = { + add_courtier = scope:secondary_actor + scope:secondary_actor = { + every_consort = { + limit = { + is_courtier_of = scope:actor + } + scope:recipient = { + add_courtier = prev + } + } + every_child = { + limit = { + is_adult = no + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + } + add_opinion = { + target = scope:actor + modifier = grateful_opinion + opinion = 10 + } + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = msg_courtier_offer_rejected_title + right_icon = scope:recipient + left_icon = scope:secondary_actor + custom_tooltip = msg_courtier_offer_rejected + } + } + } +} + +# Demand Courtier +demand_courtier_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = request_courtier_interaction + interface_priority = 45 + + desc = demand_courtier_interaction_desc + + ai_targets = { + ai_recipients = tributaries + ai_recipients = vassals + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 0 + county = 60 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + cooldown_against_recipient = { years = 3 } + + greeting = positive + notification_text = DEMAND_COURTIER_NOTIFICATION + + highlighted_reason = HIGHLIGHTED_SKILLED_COURTIER + is_highlighted = { + scope:recipient = { + any_courtier = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:recipient + is_heir_of = scope:recipient + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + OR = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + trigger_if = { + limit = { + scope:actor = { + government_has_flag = government_is_nomadic + } + } + OR = { + aptitude:master_of_hunt_court_position >= 4 + aptitude:keeper_of_the_horses_court_position >= 4 + aptitude:boyan_court_position >= 4 + aptitude:siege_engineer_court_position >= 4 + aptitude:yurtchi_court_position >= 4 + aptitude:cherbi_court_position >= 4 + aptitude:yeke_jarquchi_court_position >= 4 + aptitude:foreign_emissary_court_position >= 4 + } + } + } + } + } + } + + needs_recipient_to_open = yes + + populate_actor_list = { + scope:recipient = { + every_courtier = { + limit = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:recipient + is_heir_of = scope:recipient + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + } + add_to_list = characters + } + } + } + + is_shown = { + scope:actor != scope:recipient + scope:recipient = { + OR = { + trigger_if = { + limit = { + scope:actor = { + government_allows = obedience + } + } + is_vassal_of = scope:actor + } + is_tributary_of = scope:actor + AND = { # Celestial has this available towards vassals + scope:actor = { government_has_flag = government_is_celestial } + liege = scope:actor + } + AND = { # The minister of personnel can use it against every ruler in the realm + scope:actor = { has_title = title:e_minister_of_personnel } + is_ruler = yes + top_liege = scope:actor.top_liege + # Except the top liege + top_liege != this + } + } + } + } + + is_valid_showing_failures_only = { + custom_tooltip = { + text = demand_courtier_valid_courtier_tt + scope:recipient = { + any_courtier = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:recipient + is_heir_of = scope:recipient + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + } + } + } + } + + can_be_picked = { + is_adult = yes + } + + can_send = { + } + + auto_accept = { + scope:actor = { + has_title = title:e_minister_of_personnel + custom_tooltip = { + text = same_realm_tt + top_liege = scope:recipient.top_liege + } + } + scope:recipient = { + is_ai = yes + } + } + + send_options_exclusive = no + + # Use hook + send_option = { + is_shown = { # Not available towards tributaries + scope:recipient = { + NOT = { is_tributary_of = scope:actor } + } + } + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { + has_usable_hook = scope:recipient + } + scope:recipient = { + NOT = { is_tributary_of = scope:actor } + } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + ai_accept = { + base = 0 + + modifier = { + add = 1000 + scope:recipient = { + is_obedient_to = scope:actor + } + desc = AI_OBEDIENT_REASON + } + + modifier = { + add = 25 + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + + modifier = { + add = 50 + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + modifier = { + add = -25 + scope:secondary_actor = { + OR = { + is_councillor = yes + has_any_court_position = yes + } + } + desc = AI_EMPLOYED_COURTIER_REASON + } + + modifier = { + add = -15 + scope:secondary_actor = { + is_knight = yes + } + desc = AI_IS_KNIGHT_REASON + } + + modifier = { + add = -50 + exists = scope:secondary_actor.inspiration + desc = AI_INSPIRED_REASON + } + + modifier = { + add = -25 + scope:secondary_actor = { + is_close_or_extended_family_of = scope:recipient + } + desc = AI_FAMILY_REASON + } + + modifier = { + add = -50 + scope:secondary_actor = { + has_relation_friend = scope:recipient + } + desc = AI_FRIEND_REASON + } + + # Used a hook + modifier = { + add = 100 + scope:hook ?= yes + desc = SCHEME_WEAK_HOOK_USED + } + + modifier = { + add = 1000 + scope:secondary_actor = { + has_relation_rival = scope:recipient + } + desc = AI_RIVAL_REASON + } + } + + ai_potential = { + ai_greed >= 0 + any_tributary = { } + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:secondary_actor = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + exists = inspiration + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + trigger_if = { + limit = { + scope:actor = { + government_allows = obedience + } + } + OR = { + AND = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_average + scope:actor = { + any_courtier = { + count < 10 + } + } + } + aptitude:master_of_hunt_court_position >= 4 + aptitude:keeper_of_the_horses_court_position >= 4 + aptitude:boyan_court_position >= 4 + aptitude:siege_engineer_court_position >= 4 + aptitude:yurtchi_court_position >= 4 + aptitude:cherbi_court_position >= 4 + aptitude:yeke_jarquchi_court_position >= 4 + aptitude:foreign_emissary_court_position >= 4 + } + } + } + } + } + + modifier = { + factor = 0 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + modifier = { + factor = 0 + scope:actor = { + has_title = title:e_minister_of_personnel + } + } + } + + on_send = { + scope:secondary_actor = { # to block the same character from being offered twice + add_character_flag = { + flag = has_been_offered_as_concubine + days = 5 + } + } + } + + on_accept = { + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_personnel + } + scope:recipient = { + top_liege = scope:actor.top_liege + } + } + scope:actor = { + add_courtier = scope:secondary_actor + scope:secondary_actor = { + every_consort = { + limit = { + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + every_child = { + limit = { + is_adult = no + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + } + } + } + else = { + scope:secondary_actor = { + add_opinion = { + target = scope:recipient + modifier = annoyed_opinion + opinion = -10 + } + } + scope:actor = { + add_courtier = scope:secondary_actor + scope:secondary_actor = { + every_consort = { + limit = { + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + every_child = { + limit = { + is_adult = no + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + } + add_opinion = { + target = scope:recipient + modifier = pleased_opinion + opinion = 20 + } + # Use Hook + if = { + limit = { scope:hook = yes } + use_hook = scope:recipient + } + } + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = upset_opinion + opinion = -15 + } + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = msg_courtier_demand_rejected_title + right_icon = scope:recipient + left_icon = scope:secondary_actor + custom_tooltip = msg_courtier_demand_rejected + } + } + scope:actor = { + add_opinion = { + target = scope:recipient + modifier = upset_opinion + opinion = -15 + } + } + } +} + +# Demand Concubine +demand_concubine_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = request_concubine_interaction + interface_priority = 44 + + desc = demand_concubine_interaction_desc + + ai_targets = { + ai_recipients = tributaries + ai_recipients = vassals + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + cooldown_against_recipient = { years = 3 } + + greeting = positive + notification_text = DEMAND_CONCUBINE_NOTIFICATION + + needs_recipient_to_open = yes + + populate_actor_list = { + scope:recipient = { + every_courtier = { + limit = { + is_physically_able_adult = yes + is_ruler = no + could_marry_character_trigger = { CHARACTER = scope:actor } + } + add_to_list = characters + } + } + } + + is_shown = { + scope:actor != scope:recipient + scope:actor = { + allowed_concubines = yes + NOR = { # We expect scope:actor to Exact Tribute for this purpose when Merit- or Mandala-based instead + government_has_flag = government_has_merit + government_has_flag = government_is_mandala + } + } + scope:recipient = { + OR = { + trigger_if = { + limit = { + scope:actor = { + government_has_flag = government_is_nomadic + } + } + is_vassal_of = scope:actor + } + is_tributary_of = scope:actor + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + allowed_more_concubines = yes + is_physically_able_adult = yes + } + custom_tooltip = { + text = must_have_valid_concubine_tt + scope:recipient = { + any_courtier = { + is_physically_able_adult = yes + is_ruler = no + could_marry_character_trigger = { CHARACTER = scope:actor } + } + } + } + } + + can_be_picked = { + is_adult = yes + } + + can_send = { + } + + auto_accept = no + + ai_accept = { + base = 0 + + modifier = { + add = 1000 + scope:recipient = { + is_obedient_to = scope:actor + } + desc = AI_OBEDIENT_REASON + } + + modifier = { + add = 25 + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + + modifier = { + add = 50 + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + modifier = { + add = -25 + scope:secondary_actor = { + OR = { + is_councillor = yes + has_any_court_position = yes + } + } + desc = AI_EMPLOYED_COURTIER_REASON + } + + modifier = { + add = -15 + scope:secondary_actor = { + is_knight = yes + } + desc = AI_IS_KNIGHT_REASON + } + + modifier = { + add = -50 + exists = scope:secondary_actor.inspiration + desc = AI_INSPIRED_REASON + } + + modifier = { + add = -25 + scope:secondary_actor = { + is_close_or_extended_family_of = scope:recipient + } + desc = AI_FAMILY_REASON + } + + modifier = { + add = -50 + scope:secondary_actor = { + has_relation_friend = scope:recipient + } + desc = AI_FRIEND_REASON + } + + modifier = { + add = -50 + scope:secondary_actor = { + is_consort_of = scope:recipient + } + desc = AI_SPOUSE_REASON + } + + modifier = { + add = -50 + scope:secondary_actor = { + is_child_of = scope:recipient + } + desc = AI_CHILD_REASON + } + + modifier = { + add = 1000 + scope:secondary_actor = { + has_relation_rival = scope:recipient + } + desc = AI_RIVAL_REASON + } + } + + ai_potential = { + OR = { + has_trait = lustful + ai_honor <= 0 + } + any_tributary = { } + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:secondary_actor = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + exists = inspiration + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + has_conventionally_attractive_trigger = yes + num_of_good_genetic_traits > 1 + } + } + } + + modifier = { + factor = 0 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + + modifier = { + factor = 0 + scope:secondary_actor = { + OR = { + has_conventionally_ugly_trigger = yes + age >= 30 + is_visibly_fertile = no + } + } + } + } + + on_send = { + scope:secondary_actor = { # to block the same character from being offered twice + add_character_flag = { + flag = has_been_offered_as_concubine + days = 5 + } + } + } + + on_accept = { + scope:recipient = { + if = { + limit = { + scope:secondary_actor = { + NOR = { + is_consort_of = scope:recipient + is_close_or_extended_family_of = scope:recipient + } + } + } + add_opinion = { + target = scope:actor + modifier = upset_opinion + opinion = -15 + } + } + else = { + scope:secondary_actor = { save_scope_as = relationship_reason_involved_character } + progress_towards_rival_effect = { + REASON = rival_demanded_concubine + CHARACTER = scope:actor + OPINION = 0 + } + add_opinion = { + target = scope:actor + modifier = upset_opinion + opinion = -50 + } + clear_saved_scope = secondary_actor + } + } + demand_concubine_interaction_on_accept_effect = yes + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = msg_concubine_demand_rejected_title + right_icon = scope:recipient + left_icon = scope:secondary_actor + custom_tooltip = msg_courtier_demand_rejected + } + } + scope:actor = { + add_opinion = { + target = scope:recipient + modifier = upset_opinion + opinion = -15 + } + } + } +} + +### Offer Tributary Status - bilateral +# actor = suzerain +# recipient = tributary + +offer_tributary_status_interaction = { #Embrace as Tributary + category = interaction_category_vassal + common_interaction = yes + icon = icon_liege + + desc = offer_tributary_status_interaction_desc + + is_shown = { + scope:actor = { + government_allows = ask_for_tribute #Mandala Government + is_landed = yes + NOT = { + this = scope:recipient + top_suzerain = scope:recipient.top_suzerain # ensures the actor and recipient is not already in the same "suzerain bloc" + } + } + scope:recipient = { + this != scope:actor + is_independent_ruler = yes # target cannot be a vassal + is_landed = yes + NOT = { government_has_flag = cannot_be_vassal_or_liege } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { has_truce = scope:actor } + is_physically_able = yes + custom_tooltip = { + text = offer_tributary_status_interaction_cant_use_tributaries_tt + can_have_tributaries_trigger = yes + } + } + scope:recipient = { + trigger_if = { + limit = { is_tributary = yes } + NOT = { scope:actor = scope:recipient.suzerain } + custom_tooltip = { + text = offer_tributary_status_interaction_tributary_was_recently_subjugated + NOT = { has_truce = scope:recipient.suzerain } + } + } + trigger_else = { is_tributary = no } + custom_tooltip = { + text = offer_tributary_status_interaction_cooldown_active_tt + NOT = { + has_opinion_modifier = { + modifier = tributary_request_denied_opinion + target = scope:actor + } + } + } + custom_tooltip = { + text = offer_tributary_status_interaction_warred_cooldown_active_tt + NOT = { + has_opinion_modifier = { + modifier = warred_into_submission_opinion + target = scope:actor + } + } + } + trigger_if = { + limit = { government_has_flag = government_is_celestial } + highest_held_title_tier <= tier_duchy + } + trigger_else = { highest_held_title_tier < tier_hegemony } #Hegemons bow to one + } + } + + cost = { + piety = { + value = { + value = { + value = minor_piety_value + divide = 2 + } + multiply = scope:actor.primary_title.tier + if = { + limit = { + scope:recipient = { + has_opinion_modifier = { + modifier = tributary_ceased_payments_opinion + target = scope:actor + } + } + } + multiply = activity_cost_scale_by_era + } + #Mandala Godking AI + if = { + limit = { + scope:actor = { + has_variable = mandala_godking + is_ai = yes + } + } + multiply = 0.25 + } + } + } + } + + greeting = positive + notification_text = OFFER_TRIBUTARY_STATUS_INTERACTION_NOTIFICATION + + # Low starting obligations + send_option = { + flag = low_obligations + localization = low_tributary_obligations + starts_enabled = { + scope:actor = { is_ai = yes } + } + } + + # Medium starting obligations + send_option = { + flag = normal_obligations + localization = normal_tributary_obligations + starts_enabled = { + scope:actor = { is_ai = no } + } + is_valid = { + scope:actor = { is_ai = no } + } + } + + # High starting obligations + send_option = { + flag = high_obligations + localization = high_tributary_obligations + is_valid = { + scope:actor = { is_ai = no } + } + } + + send_options_exclusive = yes + + on_accept = { + #They have a Suzerain? Uh-oh + if = { + limit = { + scope:recipient = { is_tributary = yes } + } + show_as_tooltip = { + scope:recipient = { + end_tributary = yes + } + random_list = { + 50 = { + show_chance = no + desc = offer_tributary_status_interaction_suzerain_intervene.t + custom_tooltip = offer_tributary_status_interaction_suzerain_starts_war_tt + } + 50 = { + show_chance = no + desc = offer_tributary_status_interaction_suzerain_nothing.t + mandala_embrace_tributary_effect = yes + } + } + } + #Trigger the Suzerain + scope:recipient.suzerain = { trigger_event = tgp_east_asia_interaction_events.0030 } + } + #No Suzerain? No problem! + else = { + mandala_embrace_tributary_effect = yes + } + #Drop the Confederation pls + scope:recipient = { + if = { + limit = { + is_confederation_member = yes + confederation ?= { is_house_based = no } + } + confederation = { remove_confederation_member = scope:recipient } + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0363 + } + scope:recipient = { + add_opinion = { + modifier = tributary_request_denied_opinion # this opinion also acts as a built-in cooldown + target = scope:actor + years = 3 + } + } + } + + ai_maybe = yes + + ai_potential = { + is_independent_ruler = yes + } + + ai_targets = { + ai_recipients = neighboring_rulers_including_tributary_borders + } + + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + force_notification = yes + + ai_will_do = { + base = 0 + + modifier = { + add = { + add = scope:recipient.gold + divide = 10 + max = 100 + } + desc = accumulated_wealth_reason + } + + ai_military_threat_modifier = { SENDER = scope:actor RECEIVER = scope:recipient MULTIPLIER = -1 } + + modifier = { # Generally don't try to tributarize those of higher rank than you + trigger = { + "scope:recipient.tier_difference(scope:actor)" > 1 + } + add = -20 + } + + modifier = { # Generally don't try to tributarize those of higher piety_level than you + trigger = { + scope:recipient.piety_level > scope:actor.piety_level + } + add = -30 + } + + modifier = { # Remote Realm. + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + add = -25 + } + + modifier = { # Remote Realm. + trigger = { + NOT = { + scope:recipient = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:actor + } + } + } + } + add = -25 + } + + #Generally don't try to Tributarize those larger than you + modifier = { + trigger = { + scope:actor.realm_size < scope:recipient.realm_size + } + factor = 0 + } + } + + ai_min_reply_days = 5 + ai_max_reply_days = 10 + + ai_accept = { + base = -50 + #I am a Tribal! + modifier = { + scope:recipient = { government_has_flag = government_is_tribal } + add = 30 + desc = recipient_is_a_tribal_government + } + #... but I am in a confederation + modifier = { + scope:recipient = { is_confederation_member = yes } + add = -50 + desc = recipient_is_in_a_confederation + } + + #Your Radiance + #Radiance Value x2 + modifier = { + scope:actor = { has_unruined_mandala_capital_trigger = yes } + add = { + value = scope:actor.mandala_radiance_value + multiply = 2 + } + desc = actor_positive_mandala_radiance + } + #Are they independent but a neighboring Mandala more Radiant than you? + #We reduce acceptance by the radience difference x2 + modifier = { + trigger_if = { + limit = { + scope:actor = { has_unruined_mandala_capital_trigger = yes } + scope:recipient = { + is_tributary = no + OR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_tribal + } + } + } + scope:recipient = { + OR = { + any_neighboring_top_liege_realm_owner = { + has_unruined_mandala_capital_trigger = yes + government_has_flag = government_is_mandala + NOR = { + this = scope:actor + this = scope:recipient + } + save_temporary_scope_as = suzerain_comparison + } + any_neighboring_top_suzerain_realm_owner ?= { + has_unruined_mandala_capital_trigger = yes + government_has_flag = government_is_mandala + NOR = { + this = scope:actor + this = scope:recipient + } + save_temporary_scope_as = suzerain_comparison + } + } + } + always = yes + } + trigger_else = { always = no } + add = { + #Double it as we would with your own radiance impact above and reduce acceptance by that value + value = { + value = scope:suzerain_comparison.mandala_radiance_value + multiply = 2 + } + multiply = -1 + } + desc = other_devaraja_radiance + } + #Is their current Devaraja Suzerain more Radiant than you? + #We reduce acceptance by the radiance difference x2 + modifier = { + trigger_if = { + limit = { + scope:recipient = { + is_tributary = yes + overlord = { + government_has_flag = government_is_mandala + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value > 0 + } + } + scope:actor = { + has_unruined_mandala_capital_trigger = yes + } + } + always = yes + } + trigger_else = { always = no } + add = { + #Double it as we would with your own radiance impact above and reduce acceptance by that value + value = { + value = scope:recipient.overlord.mandala_radiance_value + multiply = 2 + } + multiply = -1 + } + desc = devaraja_overlord_radiance + } + + modifier = { + desc = is_prosperity_mandala_tributary + scope:recipient = { + is_tributary = yes + suzerain = { has_realm_law_flag = tributaries_less_likely_to_break_free } + } + add = 15 + } + + # + modifier = { + desc = tgp_sea_legacy_2_modifier_desc + scope:actor = { + dynasty ?= { + has_dynasty_perk = tgp_sea_legacy_2 + } + } + add = tgp_sea_legacy_tributary_acceptance_value + } + + #Mandala Piety Level + #This is only checked if you are not a Devaraja/haven't got a capital temple complex - Otherwise we use Radiance + mandala_devaraja_piety_level_add_weight_modifier = { DEVARAJA = scope:actor } + + #Tributary Realm Size + subject_realm_size_lose_weight_modifier = { + DEVARAJA = scope:actor + SUBJECT = scope:recipient + } + + ai_military_threat_modifier = { SENDER = scope:recipient RECEIVER = scope:actor MULTIPLIER = 1 } # if the actor is a major threat to the recipient they're more likely to accept + + modifier = { # I have a Capital Temple Complex of my own (I am also a God King) + desc = tributary_interaction_aibehavior_recipient_capital_complex + trigger = { + scope:recipient.capital_province ?= { + has_building_with_flag = mandala_capital_building + has_ruined_great_building = no + } + } + add = -200 + } + + modifier = { # I am higher rank than you + desc = tributary_interaction_aibehavior_recipient_tier_tt + trigger = { + scope:recipient = { + highest_held_title_tier > scope:actor.highest_held_title_tier + } + } + add = { + value = scope:recipient.highest_held_title_tier + subtract = scope:actor.highest_held_title_tier + multiply = 50 + multiply = -1 + } + } + + modifier = { # Same Faith and Actor is a god King + desc = embrace_as_tributary_interaction_same_faith + trigger = { + scope:actor.faith = scope:recipient.faith + scope:actor.capital_province = { + has_building_with_flag = mandala_capital_building + has_ruined_great_building = no + } + } + add = { + value = 10 + } + } + + modifier = { # Different faith, no pluralism. + desc = offer_vassalization_interaction_aibehavior_differentfaith_tt + trigger = { + scope:recipient = { + faith = { + NOR = { # Of two different faiths AND the potential tributary's faith is not pluralistic + this = scope:actor.faith + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + + modifier = { # Different religion Family - We prefer god kings to be vaguely within our own world view + desc = embrace_as_tributary_interaction_other_religion_family + trigger = { + scope:recipient = { + NOT = { government_has_flag = government_is_wanua } + } + scope:actor.faith.religion = { + switch = { + trigger = is_in_family + rf_pagan = { + scope:recipient.faith.religion = { NOT = { is_in_family = rf_pagan } } + } + rf_sinitic = { + scope:recipient.faith.religion = { NOT = { is_in_family = rf_sinitic } } + } + rf_eastern = { + scope:recipient.faith.religion = { NOT = { is_in_family = rf_eastern } } + } + rf_abrahamic = { + scope:recipient.faith.religion = { NOT = { is_in_family = rf_abrahamic } } + } + } + } + } + add = { + value = -25 + if = { + limit = { + government_has_flag = government_is_theocracy + } + subtract = 975 #Bishops, popes, etc, feel more strongly about this. + } + } + } + # They are not Mandalas nor Tribes + modifier = { + desc = embrace_as_tributary_interaction_wrong_government + scope:recipient = { + NOR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_tribal + } + } + add = { + value = -50 + if = { + limit = { + scope:recipient = { + OR = { + government_allows = administrative + government_has_flag = government_is_nomadic + } + } + #If you're radiant enough... + scope:actor = { + trigger_if = { + limit = { has_unruined_mandala_capital_trigger = yes } + mandala_radiance_value < 80 + } + } + } + subtract = 950 #Some governments are especially unlikely to agree + } + #Not radiant enough + if = { + limit = { + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value <= 40 + } + } + subtract = 100 + } + } + } + #We single out Japan specifically + modifier = { + desc = embrace_as_tributary_interaction_wrong_government + scope:recipient = { government_is_japanese_trigger = yes } + add = -1000 + } + #Far away + modifier = { + desc = offer_vassalization_interaction_aibehavior_remoterealm_tt + trigger = { + scope:recipient = { + NOT = { + any_neighboring_top_liege_realm_owner = { + OR = { + this = scope:actor + top_overlord ?= scope:actor + } + } + } + } + trigger_if = { #Islands we can get farther away + limit = { + scope:recipient.capital_county ?= { is_coastal_county = yes } + any_sub_realm_county = { is_coastal_county = yes } + } + scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value >= squared_distance_huge } } + } + trigger_else = { #Inland is harder + scope:recipient.capital_province ?= { squared_distance = { target = scope:actor.capital_province value >= squared_distance_major } } + } + } + add = -250 + } + + #Monotheist targets really shouldn't want to... unless you're Radiant enough + modifier = { + scope:recipient = { + faith = { has_doctrine = doctrine_monotheist } + } + #If you're radiant enough... + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value < 25 + } + add = -200 + desc = they_are_monotheist + } + modifier = { + scope:recipient = { + faith = { has_doctrine = doctrine_monotheist } + } + #If you're radiant enough... + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value >= 25 + mandala_radiance_value < 50 + } + add = -175 + desc = they_are_monotheist + } + modifier = { + scope:recipient = { + faith = { has_doctrine = doctrine_monotheist } + } + #If you're radiant enough... + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value >= 75 + mandala_radiance_value < 100 + } + add = -150 + desc = they_are_monotheist + } + modifier = { + scope:recipient = { + faith = { has_doctrine = doctrine_monotheist } + } + #If you're radiant enough... + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value >= 100 + } + add = -100 + desc = they_are_monotheist + } + + ### MANDALA ### + #Added threshold for Mandalas who already are Tributaries + modifier = { + scope:recipient = { is_tributary = yes } + NOT = { scope:recipient.suzerain = scope:actor } + add = { + value = 0 + if = { + limit = { + scope:recipient.suzerain = { has_unruined_mandala_capital_trigger = yes } + } + subtract = { + value = scope:recipient.mandala_radiance_value + multiply = 3 + } + } + else = { add = -15 } + max = -10 + } + desc = already_tributary_threshold_duchy_suzerain + } + + #AI Godkings should NOT want to become subjects + modifier = { + has_variable = mandala_godking + add = -1000 + desc = mandala_ai_godking_modifier + } + + #MINOR MODIFIERS + modifier = { # the bolder they are, the less likely they will agree to this and the more cowardly the more likely + NOT = { ai_boldness = 0 } + add = { + value = ai_boldness + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_BOLDNESS_REASON + } + + modifier = { # the greedier they are, the less likely they will agree to this + ai_greed > 0 + add = { + value = ai_greed + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_GREED_REASON + } + modifier = { # Rivalry modifier. + desc = embrace_tributarization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -30 + } + modifier = { # Nemesis modifier. + desc = embrace_tributarization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { # Same Dynasty modifier. + desc = embrace_tributarization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + + modifier = { # Cultural Acceptance + add = -5 + desc = cultural_acceptance_interaction_reason + trigger = { + scope:actor = { + NOT = { # cultural condition below doesn't have to apply if both actor and recipient have nomadic_philosophy + has_trait = nomadic_philosophy + scope:recipient = { has_trait = nomadic_philosophy } + } + NOT = { has_same_culture_as = scope:recipient } + culture = { + cultural_acceptance = { target = scope:recipient.culture value < 50 } + } + } + } + } + + modifier = { # Same language + add = 5 + desc = speaks_same_language_interaction_reason + trigger = { + scope:actor = { + knows_language_of_culture = scope:recipient.culture + } + } + } + + modifier = { # Encircled + desc = offer_vassalization_interaction_aibehavior_encircled_tt + trigger = { + scope:recipient = { + NOT = { + any_neighboring_top_liege_realm_owner = { this != scope:actor } + } + NOT = { + any_realm_county = { is_coastal_county = yes } + } + } + } + add = 20 + } + + #Mandala Obligation level matters + modifier = { + trigger_if = { + limit = { exists = scope:low_obligations } + scope:low_obligations = yes + } + trigger_else = { always = no } + add = 15 + desc = proposed_obligation_level_low + } + modifier = { + trigger_if = { + limit = { exists = scope:high_obligations } + scope:high_obligations = yes + } + trigger_else = { always = no } + add = -30 + desc = proposed_obligation_level_high + } + + #Legitimacy + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -15 + scope:actor = { + has_legitimacy_flag = slightly_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -25 + scope:actor = { + has_legitimacy_flag = reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -50 + scope:actor = { + has_legitimacy_flag = very_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -75 + scope:actor = { + has_legitimacy_flag = massively_reduced_tributarization_acceptance + } + } + + # HIGH LEGITIMACY + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 25 + scope:actor = { + has_legitimacy_flag = increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 50 + scope:actor = { + has_legitimacy_flag = very_increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 75 + scope:actor = { + has_legitimacy_flag = extra_increased_tributarization_acceptance + } + } + + + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + + } +} + +### Reassert Tributary - unilateral +# actor = suzerain +# recipient = tributary + +reassert_tributary_interaction = { + category = interaction_category_vassal + common_interaction = yes + icon = icon_liege + + desc = reassert_tributary_interaction_desc + + is_shown = { + scope:actor = { + government_has_flag = government_is_mandala + } + scope:recipient = { + is_tributary_of = scope:actor + is_ai = yes + cease_tribute_payments_ai_chance > 0 + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_physically_able = yes + } + scope:recipient = { + custom_tooltip = { + text = reassert_tributary_interaction_cooldown_active_tt + NOT = { + has_opinion_modifier = { + modifier = reassertion_request_denied_opinion + target = scope:actor + } + } + } + custom_tooltip = { + text = reassert_tributary_interaction_reasserted_recently_tt + NOT = { has_variable = tributary_has_been_reasserted_recently } + } + } + } + + cost = { + piety = { + value = minor_piety_value + multiply = activity_cost_scale_by_era + #Mandala Godking AI + if = { + limit = { + scope:actor = { + has_variable = mandala_godking + is_ai = yes + } + } + multiply = 0.25 + } + } + } + + greeting = positive + notification_text = OFFER_TRIBUTARY_STATUS_INTERACTION_NOTIFICATION + + #Lower Obligations + ##Taxes + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + OR = { + vassal_contract_obligation_level:mandala_government_taxes = 1 + vassal_contract_obligation_level:mandala_government_taxes = 0 + } + } + } + is_valid = { + custom_tooltip = { + text = ALREADY_LOWEST_TAX_OBLIGATION + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 1 + } + } + } + flag = decrease_tax_obligation_1 + localization = DECREASE_TAX_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 2 + } + } + flag = decrease_tax_obligation_2 + localization = DECREASE_TAX_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 3 + } + } + flag = decrease_tax_obligation_3 + localization = DECREASE_TAX_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 4 + } + } + flag = decrease_tax_obligation_4 + localization = DECREASE_TAX_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 5 + } + } + flag = decrease_tax_obligation_5 + localization = DECREASE_TAX_OBLIGATIONS + } + + ##Piety + send_option = { + is_shown = { + scope:recipient = { + has_subject_contract_group = tributary_mandala + OR = { + vassal_contract_obligation_level:mandala_government_piety = 1 + vassal_contract_obligation_level:mandala_government_piety = 0 + } + } + } + is_valid = { + custom_tooltip = { + text = ALREADY_LOWEST_PIETY_OBLIGATION + scope:recipient = { + has_subject_contract_group = tributary_mandala + vassal_contract_obligation_level:mandala_government_piety = 1 + } + } + } + flag = decrease_piety_obligation_1 + localization = DECREASE_PIETY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + has_subject_contract_group = tributary_mandala + vassal_contract_obligation_level:mandala_government_piety = 2 + } + } + flag = decrease_piety_obligation_2 + localization = DECREASE_PIETY_OBLIGATIONS + } + + ##Prestige + send_option = { + is_shown = { + scope:recipient = { + has_subject_contract_group = tributary_mandala_tribal + OR = { + vassal_contract_obligation_level:mandala_government_prestige = 1 + vassal_contract_obligation_level:mandala_government_prestige = 0 + } + } + } + is_valid = { + custom_tooltip = { + text = ALREADY_LOWEST_PRESTIGE_OBLIGATION + scope:recipient = { + has_subject_contract_group = tributary_mandala + vassal_contract_obligation_level:mandala_government_prestige = 1 + } + } + } + flag = decrease_prestige_obligation_1 + localization = DECREASE_PRESTIGE_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + has_subject_contract_group = tributary_mandala_tribal + vassal_contract_obligation_level:mandala_government_prestige = 2 + } + } + flag = decrease_prestige_obligation_2 + localization = DECREASE_PRESTIGE_OBLIGATIONS + } + + ##Levies + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + OR = { + vassal_contract_obligation_level:mandala_government_levies = 1 + vassal_contract_obligation_level:mandala_government_levies = 0 + } + } + } + is_valid = { + custom_tooltip = { + text = ALREADY_LOWEST_LEVY_OBLIGATION + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 1 + } + } + } + flag = decrease_levy_obligation_1 + localization = DECREASE_LEVY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 2 + } + } + flag = decrease_levy_obligation_2 + localization = DECREASE_LEVY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 3 + } + } + flag = decrease_levy_obligation_3 + localization = DECREASE_LEVY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 4 + } + } + flag = decrease_levy_obligation_4 + localization = DECREASE_LEVY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 5 + } + } + flag = decrease_levy_obligation_5 + localization = DECREASE_LEVY_OBLIGATIONS + } + + #Dread + send_option = { + is_valid = { + scope:actor = { dread >= high_dread } + } + flag = dread + localization = GENERIC_USE_DREAD + } + + #Strong Hook + send_option = { + is_shown = { + NOT = { + scope:actor = { + house = { has_house_head_parameter = unlock_weak_hooks_to_reassert_tributaries } + } + } + } + is_valid = { + scope:actor = { has_strong_usable_hook = scope:recipient } + } + flag = hook + localization = GENERIC_USE_STRONG_HOOK + } + should_use_extra_icon = { + scope:actor = { has_strong_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_strong.dds" + + #Any Hook + send_option = { + is_shown = { + scope:actor = { + house = { has_house_head_parameter = unlock_weak_hooks_to_reassert_tributaries } + } + } + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = any_hook + localization = GENERIC_USE_HOOK + } + + #Pay Piety + send_option = { + is_shown = { + scope:actor = { has_realm_law_flag = can_use_piety_to_reassert_tributary } + } + is_valid = { + scope:actor.piety >= piety_bribe_value + } + flag = pay_piety + localization = PAY_PIETY + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.piety >= piety_bribe_value } + desc = SCHEME_AGENT_PIETY_VALID + } + } + } + + send_options_exclusive = no + + on_accept = { + scope:recipient = { + custom_tooltip = { + text = reassert_tributary_interaction_effect_tt + set_variable = { + name = tributary_has_been_reasserted_recently + value = flag:yes + months = reassert_stickiness_months + } + } + } + + #LOWER OBLIGATIONS + ##Taxes + if = { + limit = { + OR = { + scope:decrease_tax_obligation_1 = yes + scope:decrease_tax_obligation_2 = yes + scope:decrease_tax_obligation_3 = yes + scope:decrease_tax_obligation_4 = yes + scope:decrease_tax_obligation_5 = yes + } + } + scope:recipient = { + if = { + limit = { vassal_contract_obligation_level:mandala_government_taxes = 5 } + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 4 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_taxes = 4 } + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 3 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_taxes = 3 } + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 2 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_taxes = 2 } + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 1 + } + } + else = { + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 0 + } + } + } + } + ##Piety + if = { + limit = { + OR = { + scope:decrease_piety_obligation_1 = yes + scope:decrease_piety_obligation_2 = yes + } + } + scope:recipient = { + if = { + limit = { vassal_contract_obligation_level:mandala_government_piety = 2 } + tributary_contract_set_obligation_level = { + type = mandala_government_piety + level = 1 + } + } + else = { + tributary_contract_set_obligation_level = { + type = mandala_government_piety + level = 0 + } + } + } + } + ##Prestige + if = { + limit = { + OR = { + scope:decrease_prestige_obligation_1 = yes + scope:decrease_prestige_obligation_2 = yes + } + } + scope:recipient = { + if = { + limit = { vassal_contract_obligation_level:mandala_government_prestige = 2 } + tributary_contract_set_obligation_level = { + type = mandala_government_prestige + level = 1 + } + } + else = { + tributary_contract_set_obligation_level = { + type = mandala_government_prestige + level = 0 + } + } + } + } + ##Levies + if = { + limit = { + OR = { + scope:decrease_levy_obligation_1 = yes + scope:decrease_levy_obligation_2 = yes + scope:decrease_levy_obligation_3 = yes + scope:decrease_levy_obligation_4 = yes + scope:decrease_levy_obligation_5 = yes + } + } + scope:recipient = { + if = { + limit = { vassal_contract_obligation_level:mandala_government_levies = 5 } + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 4 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_levies = 4 } + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 3 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_levies = 3 } + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 2 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_levies = 2 } + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 1 + } + } + else = { + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 0 + } + } + } + } + + #Strong hook + if = { + limit = { + scope:hook = yes + scope:actor = { has_strong_usable_hook = scope:recipient } + } + scope:actor = { + use_hook = scope:recipient + } + } + #Weak Hook + if = { + limit = { + scope:any_hook = yes + scope:actor = { has_usable_hook = scope:recipient } + } + scope:actor = { + use_hook = scope:recipient + } + } + #Dread + if = { + limit = { scope:dread = yes } + scope:actor = { + add_piety = minor_piety_loss + } + scope:recipient = { + add_opinion = { + modifier = intimidated_tributary_opinion + target = scope:actor + opinion = -20 + } + } + } + #Piety + if = { + limit = { scope:pay_piety = yes } + scope:actor = { + add_piety = { + value = { + add = piety_bribe_half_value + multiply = -1 + } + } + } + scope:recipient = { add_piety = piety_bribe_half_value } + } + + #Look ma', no hands! + if = { + limit = { + NOR = { + scope:decrease_tax_obligation_1 = yes + scope:decrease_tax_obligation_2 = yes + scope:decrease_tax_obligation_3 = yes + scope:decrease_tax_obligation_4 = yes + scope:decrease_tax_obligation_5 = yes + scope:decrease_piety_obligation_1 = yes + scope:decrease_piety_obligation_2 = yes + scope:decrease_prestige_obligation_1 = yes + scope:decrease_prestige_obligation_2 = yes + scope:decrease_levy_obligation_1 = yes + scope:decrease_levy_obligation_2 = yes + scope:decrease_levy_obligation_3 = yes + scope:decrease_levy_obligation_4 = yes + scope:decrease_levy_obligation_5 = yes + scope:hook = yes + scope:dread = yes + scope:any_hook = yes + scope:pay_piety = yes + } + } + #You're quite the smooth-talker huh + show_as_tooltip = { + scope:actor.dynasty ?= { + add_dynasty_prestige = { + value = miniscule_dynasty_prestige_value + divide = 2 + } + } + } + } + + scope:actor = { + trigger_event = tgp_east_asia_interaction_events.0020 + } + + } + + on_decline = { + scope:actor = { + show_as_tooltip = { add_prestige = medium_prestige_loss } + trigger_event = tgp_east_asia_interaction_events.0025 + } + scope:recipient = { + show_as_tooltip = { + add_opinion = { + modifier = reassertion_request_denied_opinion # this opinion also acts as a built-in cooldown + target = scope:actor + opinion = -20 + } + } + } + } + + auto_accept = { + switch = { + trigger = always + scope:any_hook = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + OR = { + AND = { + scope:hook = yes + scope:actor = { has_strong_usable_hook = scope:recipient } + } + AND = { + scope:any_hook = yes + scope:actor = { has_usable_hook = scope:recipient } + } + } + } + } + scope:dread = { + custom_description = { + text = "leverage_dread_tt" + subject = scope:actor + object = scope:recipient + scope:dread = yes + } + } + scope:pay_piety = { + custom_description = { + text = "pay_piety_tt" + subject = scope:actor + object = scope:recipient + scope:pay_piety = yes + } + } + scope:decrease_tax_obligation_1 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_1 = yes + } + } + scope:decrease_tax_obligation_2 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_2 = yes + } + } + scope:decrease_tax_obligation_3 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_3 = yes + } + } + scope:decrease_tax_obligation_4 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_4 = yes + } + } + scope:decrease_tax_obligation_5 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_5 = yes + } + } + scope:decrease_piety_obligation_1 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_piety_obligation_1 = yes + } + } + scope:decrease_piety_obligation_2 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_prestige_obligation_2 = yes + } + } + scope:decrease_levy_obligation_1 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_1 = yes + } + } + scope:decrease_levy_obligation_2 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_2 = yes + } + } + scope:decrease_levy_obligation_3 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_3 = yes + } + } + scope:decrease_levy_obligation_4 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_4 = yes + } + } + scope:decrease_levy_obligation_5 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_5 = yes + } + } + } + } + + ai_maybe = yes + + ai_potential = { + government_has_flag = government_is_mandala + } + + ai_targets = { + ai_recipients = tributaries + } + + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + force_notification = yes + + ai_will_do = { # AI will often do this to valid targets that aren't a military threat to them, especially if they're rich + base = 50 + + modifier = { # Remote Realm. + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + add = -25 + } + } + + ai_min_reply_days = 3 + ai_max_reply_days = 7 + + ai_accept = { + base = -100 + + ai_military_threat_modifier = { SENDER = scope:recipient RECEIVER = scope:actor MULTIPLIER = 1 } # if the actor is a major threat to the recipient they're more likely to accept + + # MINOR + modifier = { # Rivalry modifier. + desc = embrace_tributarization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -10 + } + modifier = { # Nemesis modifier. + desc = embrace_tributarization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { # Same Dynasty modifier. + desc = embrace_tributarization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + + modifier = { + suzerain = { + government_has_flag = government_is_mandala + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value > 0 + } + add = { + value = suzerain.mandala_radiance_value + multiply = 2 + } + desc = devaraja_overlord_radiance + } + + #Devaraja Piety Level + mandala_devaraja_piety_level_add_weight_modifier = { DEVARAJA = scope:actor } + + #Tributary Realm Size + subject_realm_size_lose_weight_modifier = { + DEVARAJA = scope:actor + SUBJECT = scope:recipient + } + + #Devaraja Mandala Capital + mandala_devaraja_capital_add_weight_modifier = { + DEVARAJA = scope:actor + TRIBUTARY = scope:recipient + } + + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + } +} diff --git a/common/character_interactions/00_vassal_interactions.txt b/common/character_interactions/00_vassal_interactions.txt new file mode 100644 index 00000000..468d3fa4 --- /dev/null +++ b/common/character_interactions/00_vassal_interactions.txt @@ -0,0 +1,4033 @@ +#Interactions relating to vassals + +grant_vassal_interaction = { + category = interaction_category_vassal + common_interaction = yes + interface = transfer_vassal + icon = icon_vassal + + special_interaction = grant_vassal_interaction + + populate_actor_list = { + scope:actor = { + every_vassal = { + add_to_list = characters + } + } + } + + desc = grant_vassal_interaction_desc + + prompt = GRANT_VASSAL_SELECT_VASSAL_TO_TRANSFER + + greeting = positive + notification_text = GRANT_VASSAL_PROPOSAL + + pre_answer_yes_key = ACCEPT + pre_answer_no_key = DECLINE + + is_shown = { + scope:recipient != scope:actor + OR = { + AND = { + exists = scope:recipient.liege + scope:recipient.liege = scope:actor + } + AND = { + exists = scope:actor.liege + scope:actor.liege = scope:recipient + } + AND = { + scope:actor.faith.religious_head = scope:recipient + scope:recipient = { + top_liege = this + } + } + } + scope:recipient.highest_held_title_tier > tier_barony + } + + is_valid_showing_failures_only = { + scope:recipient = { + is_landed = yes # Landless rulers should not have Vassals + # Gallivanters won't accept additional responsibilities. + NOT = { has_trait = gallivanter } + } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + trigger_if = { + limit = { exists = scope:secondary_actor } + NOT = { scope:secondary_actor = { is_at_war_with = scope:recipient } } + scope:recipient.primary_title.tier > scope:secondary_actor.primary_title.tier + } + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + exists = scope:secondary_actor + } + trigger_if = { + limit = { + NOT = { + scope:recipient.primary_title = { + any_in_de_jure_hierarchy = { + holder = scope:secondary_actor + } + } + } + } + scope:recipient.vassal_count < scope:recipient.vassal_limit # Avoid creating vassals with unsustainable situations + } + scope:secondary_actor = { + NOT = { has_character_flag = ai_should_not_transfer } + } + } + trigger_if = { + limit = { scope:recipient.highest_held_title_tier <= tier_county } + scope:recipient = { highest_held_title_tier > tier_county } + } + trigger_else = { + scope:actor = { + custom_description = { + text = "basic_valid_vassal_to_tranfer" + object = scope:recipient + any_vassal = { + NOT = { highest_held_title_tier = tier_barony } + scope:recipient.highest_held_title_tier > highest_held_title_tier + } + } + } + } + # Prevent Admin AI transferring admin vassals under non-admin vassals + NAND = { + scope:actor ?= { + is_ai = yes + government_allows = administrative + } + scope:recipient ?= { + NOT = { government_allows = administrative } + } + scope:secondary_actor ?= { government_allows = administrative } + } + # Ritsuryo cannot transfer Soryo to Ritsuryo + custom_tooltip = { + text = ritsuryo_to_soryo_invalid_to_transfer + NAND = { + scope:actor ?= { has_government = japan_administrative_government } + scope:recipient ?= { has_government = japan_administrative_government } + scope:secondary_actor ?= { has_government = japan_feudal_government } + } + } + custom_tooltip = { + text = cannot_transfer_bloc_leader_as_vassal_tt + NOT = { + scope:secondary_actor ?= { + exists = house.house_confederation.leading_house + house.house_confederation.leading_house ?= house + is_house_head = yes + } + } + } + } + + can_be_picked = { + scope:recipient != root + highest_held_title_tier > tier_barony + highest_held_title_tier < scope:recipient.highest_held_title_tier + + trigger_if = { + limit = { scope:actor.liege = scope:recipient } + custom_tooltip = { + text = is_de_jure_liege_of_target + NOT = { + primary_title = { + any_this_title_or_de_jure_above = { + holder = scope:actor + } + } + } + } + } + + # You can't give your diarch away as a vassal. + custom_description = { + text = cannot_grant_own_diarch_as_vassal + subject = scope:actor.diarch + NOT = { root ?= scope:actor.diarch } + } + + # Not at war with the vassal being transferred (blocks explicit transfer of war enemies, which invalidates the war). + custom_description = { + text = "basic_is_at_war_with_vassal" + subject = root + object = scope:actor + NOT = { + root = { + is_at_war_with = scope:actor + } + } + } + + # Not at war with a vassal under the vassal being transferred (blocks implicit transfers of war enemies). + custom_description = { + text = "basic_is_at_war_with_sub_vassal" + subject = root + object = scope:actor + NOT = { + any_vassal_or_below = { + is_at_war_with = root + } + } + } + + # EP3 Admin - You cannot give away noble families + custom_description = { + text = admin_cannot_grant_vassal_noble_family + subject = root + trigger_if = { + limit = { + government_allows = administrative + } + any_held_title = { + is_noble_family_title = no + } + } + } + } + + auto_accept = { + scope:recipient = { + custom_description = { + text = wants_more_vassals + is_ai = yes + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = grant_vassal_interaction_notification + right_icon = scope:recipient + left_icon = scope:secondary_actor + + # If we're granting a vassal to our liege, gain a truce with our former vassal (we can't immediately reconquer them, and they can't attack us either). + if = { + limit = { + scope:actor = { + is_vassal_of = scope:recipient + } + } + add_truce_both_ways = { + character = scope:secondary_actor + days = 3650 + name = TRUCE_GRANT_INDEPENDENCE + } + } + + # Transfer the vassal over to their new liege. + create_title_and_vassal_change = { + type = granted + save_scope_as = change + add_claim_on_loss = no + } + scope:secondary_actor = { + change_liege = { + liege = scope:recipient + change = scope:change + } + } + resolve_title_and_vassal_change = scope:change + + # Gain an opinion bonus with the person we gave a vassal to. + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = granted_vassal + } + } + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = miniscule_unity_gain + DESC = clan_unity_grant_vassal.desc + REVERSE_NON_HOUSE_TARGET = yes + } + + hidden_effect = { + # Struggle catalyst + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + scope:actor = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_grants_vassal_to_de_jure_liege_supporter_detractor + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:recipient + } + } + } + scope:recipient.primary_title = { + any_this_title_or_de_jure_above = { + holder = scope:secondary_actor + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_grants_vassal_to_de_jure_liege_supporter_detractor + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_grants_vassal_to_de_jure_liege_supporter_detractor } + } + } + } + if = { + limit = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + while = { + limit = { + scope:secondary_actor ?= { + any_held_title = { + vassal_grant_de_jure_shift_trigger = yes + } + } + } + scope:secondary_actor ?= { + random_held_title = { + limit = { + vassal_grant_de_jure_shift_trigger = yes + } + set_de_jure_liege_title = scope:recipient.primary_title + } + } + } + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0211 + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:recipient + TARGET = scope:actor + VALUE = miniscule_unity_loss + DESC = clan_unity_grant_vassal_decline.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + # AI handled entirely though code +} + +retract_vassal_interaction = { + category = interaction_category_vassal + special_interaction = retract_vassal_interaction + interface = transfer_vassal + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + popup_on_receive = yes + pause_on_receive = yes + icon = icon_liege + + interface_priority = 109 #after revoke title + + desc = retract_vassal_interaction_desc + + on_decline_summary = general_rebellion_decline_summary + + prompt = RETRACT_VASSAL_SELECT_VASSAL_TO_RETRACT + + notification_text = RETRACT_VASSAL_PROPOSAL + + populate_recipient_list = { + scope:recipient = { + every_vassal = { + add_to_list = characters + } + } + } + + is_shown = { + scope:recipient != scope:actor + scope:recipient = { + highest_held_title_tier > tier_barony + liege = scope:actor + } + } + + is_valid_showing_failures_only = { + vassal_retraction_standard_valid_showing_failures_only_trigger = yes + # Make sure this exactly matches "can_be_picked" section below + scope:recipient = { + custom_description = { + text = "basic_vassal_to_retract" + any_vassal = { + highest_held_title_tier > tier_barony + } + } + } + # Plus make sure there's a legal right to retract. + scope:actor = { + trigger_if = { + limit = { + government_has_flag = government_is_tribal + } + custom_description = { + text = "has_law_allowing_vassal_retraction_tribal" + has_realm_law_flag = vassal_retraction_allowed + } + } + trigger_else_if = { + limit = { + government_has_flag = government_is_administrative + } + custom_description = { + text = "has_law_allowing_vassal_retraction_admin" + has_realm_law_flag = vassal_retraction_allowed + } + } + trigger_else = { + custom_description = { + text = "has_law_allowing_vassal_retraction_crown" + has_realm_law_flag = vassal_retraction_allowed + } + } + } + scope:recipient = { + NOT = { has_strong_hook = scope:actor } + } + custom_tooltip = { + text = cannot_take_overt_hostile_actions_against_diarch.tt + NOT = { scope:recipient ?= scope:actor.diarch } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + can_be_picked = { + highest_held_title_tier > tier_barony + } + + cost = { + # Usually, this action is free, but during certain diarchies, we want it to cost. + prestige = liege_diarchy_surcharge_interaction_retract_vassal_interaction_value + } + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + hidden_effect = { + scope:secondary_recipient = { + add_character_flag = { + flag = ai_should_not_transfer + years = 3 + } + } + } + } + + on_accept = { + retract_vassal_interaction_effect = yes + + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + + scope:actor = { + trigger_event = char_interaction.0220 + } + } + + on_decline = { + scope:actor = { vassal_revocation_tyranny_effect = yes } + war_for_retraction_effect = yes + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + if = { + limit = { + scope:actor = { has_realm_law_flag = vassal_refusal_is_treason } + } + scope:actor = { + add_opinion = { + target = scope:recipient + modifier = treasonous_retract_refusal + } + } + } + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + } + + auto_accept = { + OR = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + can_be_blocked = { + custom_description = { #Hook from Recipient can counteract, but only if Actor is not forcing the action via Strong Hook. + text = "spending_hook" + subject = scope:recipient + object = scope:actor + scope:recipient = { has_hook = scope:actor } + NAND = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + on_blocked_effect = { + scope:recipient = { + remove_hook = { + target = scope:actor + } + } + } + + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + modifier = { + has_game_rule = hard_difficulty + scope:actor = { is_ai = no } + add = -50 + desc = FACTION_REASON_DIFFICULTY_HARD + } + + modifier = { + has_game_rule = very_hard_difficulty + scope:actor = { is_ai = no } + add = -100 + desc = FACTION_REASON_DIFFICULTY_VERY_HARD + } + + modifier = { + has_game_rule = hard_difficulty + scope:actor = { is_ai = yes } + add = 50 + } + + modifier = { + has_game_rule = very_hard_difficulty + scope:actor = { is_ai = yes } + add = 100 + } + + modifier = { + scope:hook = yes + add = 40 + desc = SCHEME_WEAK_HOOK_USED + } + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + modifier = { + add = 25 + scope:actor = { + has_realm_law_flag = vassal_refusal_is_treason + } + desc = AI_REFUSAL_IS_TREASON + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = trusting + } + desc = TAKE_THE_VOWS_TRUSTING + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = content + } + desc = INTERACTION_CONTENT + } + + modifier = { + add = 20 + scope:actor.current_military_strength > scope:recipient.current_military_strength + scope:recipient = { + has_trait = craven + } + desc = INTERACTION_CRAVEN + } + + ai_value_modifier = { + who = scope:recipient + ai_greed = { + if = { + limit = { + scope:recipient = { NOT = { ai_greed = 0 } } + } + value = -0.25 + } + } + ai_honor = { + if = { + limit = { + scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey. + ai_honor > 0 + } + scope:actor = { + has_realm_law_flag = vassal_refusal_is_treason + } + } + value = 0.75 + } + } + } + modifier = { + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + OR = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + } + add = 50 + desc = AI_VASSAL_HOLDS_REALM_CAPITAL + } + + modifier = { + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + NOR = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + primary_title.tier = tier_county + any_sub_realm_county = { + de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + add = 30 + desc = AI_VASSAL_IS_IN_CAPITAL_DUCHY + } + + modifier = { #Sub-Vassal is NOT De jure of current Vassal. + add = 25 + NOT = { + scope:recipient = { + any_held_title = { + is_de_jure_liege_or_above_target = scope:secondary_recipient.primary_title + } + } + } + desc = AI_REFUSAL_IS_NOT_DE_JURE_LIEGE + } + modifier = { #Sub-Vassal is De jure of liege title. + add = 15 + scope:actor = { + any_held_title = { + this = scope:secondary_recipient.primary_title.de_jure_liege + } + } + desc = AI_REFUSAL_IS_DE_JURE_LIEGE + } + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + modifier = { #Comparative military strength. + desc = offer_vassalization_interaction_aibehavior_power_tt + add = { + value = 1 + subtract = { + value = scope:recipient.current_military_strength + divide = { value = scope:actor.current_military_strength min = 1 } + } + multiply = 100 + } + } + modifier = { #Different faith, no pluralism. + desc = AI_REFUSAL_SPLITTING_SAME_FAITH_VASSALS + trigger = { + scope:actor.faith = scope:secondary_recipient.faith #Will not care as much if the vassal being retracted is of a different faith. + scope:actor = { + NOR = { #Of two different faiths AND the potential vassal's faith is not pluralistic. + faith = scope:recipient.faith + faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + modifier = { # AI Mongols, tyranny wars just delay the inevitable fun! + scope:actor = { + is_ai = yes + OR = { + has_trait = greatest_of_khans + has_character_modifier = the_great_khan_modifier + } + } + scope:recipient = { + is_ai = yes + } + add = 500 + } + modifier = { + add = -25 + scope:recipient = { + culture = { has_cultural_parameter = vassals_more_likely_to_refuse_demands } + } + desc = VASSALS_REFUSAL_indomitable_azatani + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + can_send_despite_rejection = yes + + # AI + ai_targets = { + ai_recipients = vassals + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + has_realm_law_flag = title_revocation_allowed + primary_title.tier > tier_county + } + + ai_will_do = { + base = -1000 + + # We want to avoid tyranny unless we've got a good reason + # And even if we can avoid tyranny we don't want to retract just because we can, so this only gets us to -10 + # Certain characters will retract despite tyranny, if their rationality is sufficiently low + modifier = { + scope:actor = { + OR = { + has_revoke_title_reason = scope:recipient + AND = { + ai_rationality <= very_high_negative_ai_value + OR = { + has_trait = lunatic + has_trait = possessed + has_trait = arbitrary + } + } + } + } + + add = 990 + } + # Always retract preferred capital if you hold the duchy, or the duchy is uncreated + modifier = { + years_from_game_start >= 3 + OR = { + scope:actor = { + is_at_war = no + gold > 0 + } + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + scope:actor = { # The HRE doesn't need endless civil wars + NOT = { + primary_title = title:e_hre + } + } + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:actor = { + any_held_title = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + scope:actor.primary_title.title_capital_county.de_jure_liege = { + is_title_created = no + } + } + scope:secondary_recipient = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + } + NAND = { # Don't retract player vassals tyrannically + scope:recipient = { + is_ai = no + } + scope:actor = { + NOT = { has_revoke_title_reason = scope:recipient } + } + } + add = 1100 + } + # If below domain limit, try to revoke counties in your capital duchy despite tyranny, sometimes + modifier = { + years_from_game_start >= 3 + scope:actor = { is_at_war = no } + scope:actor = { # The HRE doesn't need endless civil wars + NOT = { + primary_title = title:e_hre + } + } + scope:actor.domain_size < scope:actor.domain_limit + scope:actor.primary_title.tier >= tier_kingdom + trigger_if = { + limit = { + scope:actor = { + domain_size > 3 + } + } + scope:actor = { + NOR = { + has_trait = generous + has_trait = just + } + } + } + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:actor.primary_title.title_capital_county.holder = scope:actor # You have your de jure capital already + NOT = { + scope:actor.primary_title.title_capital_county.holder.top_liege = scope:actor.top_liege # Or your De Jure capital isn't in your realm + } + } + scope:secondary_recipient = { + primary_title.tier = tier_county + any_sub_realm_county = { + de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege # Under the same Duchy as your capital + } + } + OR = { # And the capital duchy, if it exists at all + AND = { + exists = scope:actor.primary_title.title_capital_county.de_jure_liege.holder + scope:actor.primary_title.title_capital_county.de_jure_liege.holder = scope:actor + } + AND = { + exists = scope:actor.primary_title.title_capital_county.de_jure_liege.holder + scope:actor.primary_title.title_capital_county.de_jure_liege.holder.top_liege != scope:actor.top_liege + } + scope:actor.primary_title.title_capital_county.de_jure_liege = { + is_title_created = no + } + } + + scope:recipient = { # Not from players + is_ai = yes + } + + OR = { # Tyranny tolernance is based on rationality + AND = { + scope:actor.ai_rationality < 0 + scope:actor.tyranny <= 15 # Don't go crazy with tyranny, just a bit is fine + } + AND = { + scope:actor.ai_rationality >= 0 + scope:actor.ai_rationality < 50 + scope:actor.tyranny <= 5 # Don't go crazy with tyranny, just a bit is fine + } + AND = { + scope:actor.ai_rationality >= 50 + scope:actor.tyranny <= 0 # Don't go crazy with tyranny, just a bit is fine + } + AND = { + scope:actor.ai_rationality >= 0 + scope:recipient = { + is_imprisoned_by = scope:actor + } + scope:actor = { has_revoke_title_reason = scope:recipient } + } + AND = { + scope:actor.ai_rationality < 0 + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + } + # To do this, the target must be weak or willing in some way + OR = { + scope:actor.current_military_strength > scope:recipient.current_military_strength # Must be stronger + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + scope:recipient = { + OR = { + has_trait = craven + has_trait = content + has_trait = trusting + has_dread_level_towards = { + target = scope:actor + level >= 1 + } + opinion = { target = scope:actor value >= 40 } + is_imprisoned_by = scope:actor + scope:actor = { has_revoke_title_reason = scope:recipient } + } + } + + add = 1100 + } + # Always retract preferred capital duchy + modifier = { + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + NAND = { # Don't retract player vassals tyranically + scope:recipient = { + is_ai = no + } + scope:actor = { + NOT = { has_revoke_title_reason = scope:recipient } + } + } + add = 1000 + } + # Retract vassal we're dejure liege of if below domain limit + modifier = { + scope:actor = { + vassal_limit_available > 0 + } + scope:secondary_recipient.primary_title.de_jure_liege.holder = scope:actor + add = 500 + } + # Retract non-De Jure vassals from Megadukes (only if a revoke reason is present, so we don't end up in massive tyranny war spirals) + modifier = { + scope:actor = { + has_revoke_title_reason = scope:recipient + } + scope:recipient = { + primary_title.tier = tier_duchy + any_sub_realm_county = { + count > 30 + } + } + scope:secondary_recipient.primary_title.de_jure_liege.holder != scope:recipient + add = 500 + } + # Do not revoke titles from certain characters + modifier = { + scope:actor = { + OR = { + has_relation_friend = scope:recipient + has_relation_best_friend = scope:recipient + has_relation_lover = scope:recipient + has_relation_soulmate = scope:recipient + is_heir_of = scope:recipient + } + } + add = -2000 + } + # Do not revoke titles when the chance of success if exceedingly low + modifier = { + NOT = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + scope:actor = { + OR = { + gold < minimum_ai_gold_value_for_tyranny_wars + AND = { + scope:actor.current_military_strength < scope:recipient.current_military_strength + gold < comfortable_ai_gold_value_for_tyranny_wars + } + } + } + add = -2000 + } + + modifier = { # The AI will only use a Hook if they couldn't otherwise do this + scope:hook = yes + add = -1 + } + + modifier = { # The AI shouldn't ruin the player's fun + add = -2000 + scope:recipient = { has_character_flag = is_party_baron } + } + + modifier = { # Avoid triggering Tyranny wars mid-war + factor = 0 + scope:actor = { + is_at_war = yes + } + scope:recipient = { + NOT = { + is_imprisoned_by = scope:actor + } + } + } + + modifier = { # Avoid triggering Tyranny wars mid-grand activity + factor = 0 + scope:actor = { + has_ongoing_grand_activity_trigger = yes + } + NOR = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + scope:recipient = { + highest_held_title_tier = tier_barony + } + } + } + } +} + +start_independence_faction_interaction = { + icon = independence + category = interaction_category_vassal + desc = start_independence_faction_interaction_desc + + is_shown = { + scope:actor != scope:recipient + scope:actor = { + highest_held_title_tier > tier_barony + liege = scope:recipient + is_a_faction_member = no + } + scope:recipient = { + is_landed_or_landless_administrative = no + NOT = { + any_targeting_faction = { + faction_type = independence_faction + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + can_create_faction = { + target = scope:recipient + type = independence_faction + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = start_independence_faction_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + create_faction = { + type = independence_faction + target = scope:recipient + } + if = { + limit = { + is_de_jure_vassal_of_liege_trigger = yes + } + stress_impact = { + just = medium_stress_impact_gain + } + } + } + } + } + + auto_accept = yes +} + +join_independence_faction_interaction = { + icon = independence + category = interaction_category_vassal + desc = join_independence_faction_interaction_desc + + is_shown = { + scope:actor != scope:recipient + scope:actor.liege = scope:recipient + scope:actor = { + is_landed_or_landless_administrative = no + is_a_faction_member = no + highest_held_title_tier > tier_barony + } + scope:recipient = { + highest_held_title_tier > tier_barony + any_targeting_faction = { + faction_type = independence_faction + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "basic_independence_faction_at_war" + object = scope:recipient + any_targeting_faction = { + faction_type = independence_faction + faction_is_at_war = no + } + } + } + scope:actor = { + can_join_or_create_faction_against = { + who = scope:recipient + faction = independence_faction + } + } + } + + on_accept = { + scope:recipient = { + random_targeting_faction = { + faction_type = independence_faction + save_scope_as = faction_target + } + } + + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = join_independence_faction_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + join_faction = scope:faction_target + if = { + limit = { + is_de_jure_vassal_of_liege_trigger = yes + } + stress_impact = { + just = minor_stress_impact_gain + } + } + } + } + } + + auto_accept = yes +} + +create_claimant_faction_against_interaction = { + icon = vassal_claim_liege_title_interaction + category = interaction_category_vassal + interface_priority = 270 + use_diplomatic_range = no + needs_recipient_to_open = no + + desc = create_claimant_faction_against_interaction_desc + + special_interaction = create_claimant_faction_against_interaction + interface = create_claimant_faction_against + + is_shown = { + scope:actor = { + NOT = { scope:secondary_actor ?= this } + scope:secondary_actor ?= liege + custom_description = { + text = "faction_can_join_create_in_another_faction" + is_a_faction_member = no + } + highest_held_title_tier > tier_barony + } + } + + is_valid_showing_failures_only = { + NOT = { + scope:actor = { has_truce = scope:secondary_actor } + } + scope:secondary_actor = { + trigger_if = { + limit = { + NOT = { + any_held_title = { + any_claimant = {} + } + } + } + custom_description = { + text = "basic_claimant_found" + always = no + } + } + trigger_else = { + custom_description = { + text = "basic_capable_claimant_found" + any_held_title = { + any_claimant = { + NOT = { has_trait = incapable } + } + } + } + } + trigger_if = { + limit = { + exists = scope:landed_title + } + custom_description = { + text = "claimant_faction_already_exists" + subject = scope:landed_title + object = scope:recipient + NOT = { + any_targeting_faction = { + faction_type = claimant_faction + special_character = scope:recipient + special_title = scope:landed_title + } + } + } + } + } + scope:actor = { + can_join_or_create_faction_against = { + who = scope:secondary_actor + faction = claimant_faction + check_in_a_faction = no # already checked in is_shown. Via the faction interface we'd see this twice if it fails (TIT-11380) + } + } + trigger_if = { + limit = { + exists = scope:recipient + } + scope:recipient = { + NOT = { is_at_war_with = scope:actor } + NOT = { has_trait = incapable } + } + } + scope:secondary_actor = { NOT = { has_strong_hook = scope:actor } } + + # Admin vassals can only start and join a claimant faction if the target is independent + trigger_if = { + limit = { + scope:actor = { government_allows = administrative } + } + trigger_if = { + limit = { + scope:secondary_actor = { government_allows = administrative } + } + scope:secondary_actor = { is_independent_ruler = yes } + } + } + + # Under Byzantine law, a ruler must be unblemished + trigger_if = { + limit = { + scope:landed_title.holder.culture ?= { has_cultural_parameter = physical_disfigurement_blocks_inheritance } + } + scope:recipient ?= { + custom_description = { + text = "byzantine_claimant_is_disfigured" + object = scope:recipient + valid_for_byz_succession_trigger = yes + } + } + } + # Ceremonial Liege + trigger_if = { + limit = { + exists = scope:landed_title + scope:actor.top_liege.primary_title.var:administrative_ui_special_title ?= scope:landed_title + } + scope:recipient = { + tgp_is_in_ceremonial_house_trigger = yes + trigger_if = { + limit = { + scope:landed_title = { + holder.faith = { has_doctrine = doctrine_gender_male_dominated } + any_claimant = { is_male = yes } + } + } + is_male = yes + } + trigger_else_if = { + limit = { + scope:landed_title = { + holder.faith = { has_doctrine = doctrine_gender_female_dominated } + any_claimant = { is_female = yes } + } + } + is_female = yes + } + trigger_else = { always = yes } + } + } + # TGP - Use Coup against Kampaku instead + trigger_if = { + limit = { + scope:recipient ?= { tgp_realm_has_ceremonial_liege_trigger = yes } + } + custom_tooltip = { + text = cannot_create_claimant_faction_against_kampaku_tooltip + scope:recipient ?= { + # TGP - Use Coup against Kampaku instead + tgp_is_ceremonial_regent_trigger = no + } + } + } + # Ministers cannot be claimants unless we are targeting h_china + trigger_if = { + limit = { + exists = scope:recipient + exists = scope:landed_title + scope:recipient = { + OR = { + has_title = title:e_minister_chancellor + has_title = title:e_minister_censor + has_title = title:e_minister_grand_marshal + has_title = title:e_minister_of_personnel + has_title = title:e_minister_of_revenue + has_title = title:e_minister_of_rites + has_title = title:e_minister_of_war + has_title = title:e_minister_of_justice + has_title = title:e_minister_of_works + } + } + } + scope:recipient = { + custom_description = { + text = target_is_a_minister_desc + subject = this + scope:landed_title = { this = title:h_china } + } + } + } + } + + can_send = { + NOT = { + scope:recipient ?= { has_title = title:e_japan } + } + } + + on_send = { + scope:actor = { + set_variable = { + name = claiming_title + value = scope:landed_title + } + + if = { + limit = { + can_create_faction = { + type = claimant_faction + target = scope:secondary_actor + } + } + + create_faction = { + type = claimant_faction + target = scope:secondary_actor + } + joined_faction = { + set_special_character = scope:recipient + set_special_title = scope:landed_title + } + scope:recipient = { + add_to_variable_list = { + name = claimant_factions + target = scope:actor.joined_faction + } + } + + if = { + limit = { this != scope:recipient } + save_scope_as = faction_invite_from + joined_faction = { save_scope_as = faction } + scope:secondary_actor = { save_scope_as = faction_target } + scope:recipient = { + trigger_event = faction_invitation.0001 + } + } + } + + remove_variable = claiming_title + } + } + + auto_accept = yes +} + +invite_to_council_position_interaction = { + category = interaction_category_vassal + popup_on_receive = yes + pause_on_receive = yes + + hidden = yes + + special_interaction = invite_to_council_interaction + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:recipient = { + is_councillor_of = scope:actor + } + } + desc = liege_offer_council_position_exchange + } + triggered_desc = { + trigger = { + scope:actor = { + opinion = { + value >= 30 + target = scope:recipient + } + } + } + desc = liege_offer_council_position_liked + } + triggered_desc = { + trigger = { + scope:actor = { + opinion = { + value <= -30 + target = scope:recipient + } + } + } + desc = liege_offer_council_position_disliked + } + triggered_desc = { + trigger = { + scope:recipient = { + is_powerful_vassal_of = scope:actor + } + } + desc = liege_offer_council_position_powerful + } + triggered_desc = { + trigger = { + scope:recipient = { + OR = { + diplomacy > high_skill_rating + martial > high_skill_rating + stewardship > high_skill_rating + intrigue > high_skill_rating + learning > high_skill_rating + } + } + } + desc = liege_offer_council_position_skilled + } + desc = liege_offer_council_position_fallback + } + } + + is_valid_showing_failures_only = { + ALL_FALSE = { + scope:recipient.council_task = scope:target + scope:actor = { is_at_war_with = scope:recipient } + } + trigger_if = { + limit = { + exists = scope:target.councillor + } + scope:target = { can_fire_position = yes } + NOT = { + scope:target.councillor = { + is_blocked_from_being_fired_from_council_trigger = { COURT_OWNER = scope:actor } + } + } + } + } + + on_accept = { + # Assign the councillor to their new responsibilities. + scope:actor = { + assign_council_task = { + target = scope:recipient + council_task = scope:target + } + } + + # If the new councillor is a player, inform their liege that they have accepted the offer. + if = { + limit = { + scope:recipient = { + is_ai = no + } + } + scope:actor = { + trigger_event = { + id = council_interaction.0001 + days = 1 + } + } + } + # If we're a clan this interaction affects unity + #if = { + # limit = { scope:actor = { NOT = { has_character_flag = fp3_consulted_house } } } + # add_clan_unity_interaction_effect = { + # CHARACTER = scope:actor + # TARGET = scope:recipient + # VALUE = miniscule_unity_gain + # DESC = clan_unity_council_position.desc + # REVERSE_NON_HOUSE_TARGET = yes + # } + #} + } + + on_decline = { + # If the requested councillor is a player, inform their liege that they have declined the offer. + if = { + limit = { + scope:recipient = { + is_ai = no + } + } + scope:actor = { + trigger_event = { + id = council_interaction.0002 + days = 1 + } + } + } + } + + auto_accept = { + custom_description = { + text = auto_accept_interaction_ai + object = scope:recipient + scope:recipient = { + is_ai = yes + } + } + } +} + +force_onto_council = { + category = interaction_category_vassal + interface_priority = 120 + icon = council + + desc = force_onto_council_desc + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor = { has_strong_hook = scope:recipient } + } + desc = force_onto_council.notification.strong_hook + } + desc = force_onto_council.notification.fallback + } + } + + special_interaction = force_onto_council_interaction + interface = council_task_interaction + + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + is_shown = { + scope:recipient != scope:actor + scope:actor = { + liege = scope:recipient + NOT = { + is_councillor = yes + } + # Merit based realms cannot force themselves onto the council - they should compete with merit and score instead + NOT = { government_allows = merit } + } + + trigger_if = { + limit = { + exists = scope:target.councillor + } + scope:target = { can_fire_position = yes } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + custom_description = { + text = "has_usable_hook_or_council_rights_through_vassal_contract" + subject = scope:actor + OR = { + has_usable_hook = scope:recipient + vassal_contract_has_flag = can_demand_council_seat + vassal_contract_has_flag = can_demand_kurultai_seat + } + } + is_adult = yes + NOT = { + is_at_war_with = scope:recipient + } + NAND = { + has_council_position = councillor_court_chaplain + faith = { + OR = { + has_doctrine = doctrine_clerical_succession_temporal_fixed_appointment + has_doctrine = doctrine_clerical_succession_spiritual_fixed_appointment + } + } + } + } + } + + has_valid_target_showing_failures_only = { + trigger_if = { + limit = { + exists = scope:target.councillor + } + scope:target.councillor = { + NOT = { + is_blocked_from_being_fired_from_council_trigger = { + COURT_OWNER = scope:recipient + } + } + } + } + } + + on_accept = { + scope:target = { + save_scope_as = council_task + } + scope:actor = { + if = { + limit = { + NOR = { + vassal_contract_has_flag = can_demand_council_seat + vassal_contract_has_flag = can_demand_kurultai_seat + } + } + save_scope_value_as = { + name = used_hook + value = yes + } + } + block_firing_councillor_effect = { COURT_OWNER = scope:recipient } + #And notify exactly which councillor type they've become. + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_good + title = force_onto_council.actor.tt + left_icon = scope:recipient + custom_tooltip = force_onto_council.actor.tt.duration + } + } + stress_impact = { content = minor_stress_impact_gain } + } + scope:recipient = { + assign_council_task = { + target = scope:actor + council_task = scope:council_task + } + custom_tooltip = force_onto_council.desc.tt + #And notify exactly which councillor type they've become. + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = force_onto_council.recipient.tt + left_icon = scope:actor + if = { + limit = { exists = scope:used_hook } + show_as_tooltip = { scope:actor = { use_hook = scope:recipient } } + } + custom_tooltip = force_onto_council.recipient.tt.duration + } + } + } + #Done in the end so that all tooltips will show correct information + scope:actor = { + if = { + limit = { + exists = scope:used_hook + } + use_hook = scope:recipient + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_forced_unto_council.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + ai_set_target = { + scope:actor = { + random_list = { + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_chancellor + can_be_chancellor_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = diplomacy + } + modifier = { + trigger = { highest_skill = diplomacy } + factor = 10 + } + scope:recipient.council_task:councillor_chancellor = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_steward + can_be_steward_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = stewardship + } + modifier = { + trigger = { highest_skill = stewardship } + factor = 10 + } + scope:recipient.council_task:councillor_steward = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_marshal + can_be_marshal_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_marshal = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_spymaster + can_be_spymaster_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = intrigue + } + modifier = { + trigger = { highest_skill = intrigue } + factor = 10 + } + scope:recipient.council_task:councillor_spymaster = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_court_chaplain + can_be_court_chaplain_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = learning + } + modifier = { + trigger = { highest_skill = learning } + factor = 10 + } + scope:recipient.council_task:councillor_court_chaplain = { + save_scope_as = target + } + } + # Kurultai Demanded + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_kurultai_1 + can_be_kurultai_trigger = { + COURT_OWNER = scope:actor.liege_or_court_owner + CP1 = councillor_kurultai_2 + CP2 = councillor_kurultai_3 + CP3 = councillor_kurultai_4 + } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_council_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_kurultai_1 = { + save_scope_as = target + } + } + # Repeated so they don't always demand the same position + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_kurultai_2 + can_be_kurultai_trigger = { + COURT_OWNER = scope:actor.liege_or_court_owner + CP1 = councillor_kurultai_1 + CP2 = councillor_kurultai_3 + CP3 = councillor_kurultai_4 + } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_council_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_kurultai_2 = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_kurultai_3 + can_be_kurultai_trigger = { + COURT_OWNER = scope:actor.liege_or_court_owner + CP1 = councillor_kurultai_1 + CP2 = councillor_kurultai_2 + CP3 = councillor_kurultai_4 + } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_council_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_kurultai_3 = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_kurultai_4 + can_be_kurultai_trigger = { + COURT_OWNER = scope:actor.liege_or_court_owner + CP1 = councillor_kurultai_1 + CP2 = councillor_kurultai_2 + CP3 = councillor_kurultai_3 + } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_council_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_kurultai_4 = { + save_scope_as = target + } + } + } + } + } + + ai_potential = { + top_liege != this + is_councillor = no + } + + ai_targets = { + ai_recipients = liege + } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 36 + kingdom = 24 + empire = 24 + hegemony = 0 + } + + auto_accept = yes + force_notification = yes + + ai_will_do = { + base = 100 + + modifier = { + factor = 0 + scope:actor = { + ai_greed <= medium_positive_ai_value + OR = { + has_relation_friend = scope:recipient + has_relation_lover = scope:recipient + has_relation_best_friend = scope:recipient + has_relation_soulmate = scope:recipient + } + } + } + + modifier = { + factor = 0 + is_councillor = yes + } + } +} + +stop_attacker_vassal_war_interaction = { + category = interaction_category_vassal + interface = interfere_in_war + special_interaction = interfere_in_war_interaction + ai_accept_negotiation = yes + popup_on_receive = yes + pause_on_receive = yes + icon = icon_retreat + + send_name = "stop_attacker_vassal_war_interaction" + + ai_maybe = yes + + prompt = STOP_VASSAL_WAR_ATTACKER + + desc = { + desc = stop_vassal_war_negotiation + triggered_desc = { + trigger = { scope:actor = { has_usable_hook = scope:recipient } } + desc = stop_vassal_war_use_hook + } + desc = might_ask_for_something_in_return_warning_double_line_break + } + + on_decline_summary = stop_attacker_vassal_war_decline_summary + + is_shown = { + scope:recipient != scope:actor + scope:recipient = { + liege ?= scope:actor + highest_held_title_tier > tier_barony + any_character_war = { + primary_attacker = scope:recipient + save_temporary_scope_as = target_war + } + } + scope:actor = { + NOT = { is_participant_in_war = scope:target_war } + } + } + + is_valid_showing_failures_only = { + custom_description = { + text = cannot_stop_war_when_already_fighting + object = scope:recipient + scope:recipient = { + NOT = { + any_war_enemy = { + this = scope:actor + } + } + } + } + custom_description = { + text = cannot_stop_war_timer + object = scope:recipient + NOT = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = attempt_to_force_end_war_opinion + } + } + } + } + NOT = { + scope:recipient = { + has_strong_hook = scope:actor + } + } + } + + can_be_picked = { + scope:target.primary_attacker = scope:recipient + } + + on_accept = { + scope:recipient = { + add_opinion = { + modifier = attempt_to_force_end_war_opinion + target = scope:actor + } + } + hidden_effect = { + scope:recipient = { + trigger_event = vassal_interaction.0001 #Starts "negotiations" + } + } + show_as_tooltip = { + scope:target ?= { end_war = white_peace } + } + + # If we're a clan this interaction affects unity - But we only show it in the tooltip, actual effect is applied in the respective follow-up events + show_as_tooltip = { + if = { + limit = { # If we are asking a non-house member to stop attacking a house member, gain unity + exists = scope:recipient.house + exists = scope:actor.house + scope:recipient.house != scope:actor.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:target.primary_defender + VALUE = medium_unity_gain + DESC = clan_unity_aided_in_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else_if = { + limit = { # If we are asking a house member to stop attacking a non-house member, lose unity + exists = scope:actor.house + exists = scope:target.primary_defender.house + scope:target.primary_defender.house != scope:actor.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_stopped_vassal_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + } + + on_decline = { + show_as_tooltip = { + scope:recipient = { + add_opinion = { + modifier = attempt_to_force_end_war_opinion + target = scope:actor + } + } + scope:actor = { add_prestige = minor_prestige_loss } + } + } + + auto_accept = yes +} + +stop_defender_vassal_war_interaction = { + category = interaction_category_vassal + interface = interfere_in_war + special_interaction = interfere_in_war_interaction + ai_accept_negotiation = yes + popup_on_receive = yes + pause_on_receive = yes + send_name = "SEND_DEMAND" + icon = icon_retreat + + ai_maybe = yes + + prompt = STOP_VASSAL_WAR_DEFENDER + + desc = { + desc = stop_vassal_war_negotiation + triggered_desc = { + trigger = { scope:actor = { has_usable_hook = scope:recipient } } + desc = stop_vassal_war_use_hook + } + desc = might_ask_for_something_in_return_warning_double_line_break + } + + on_decline_summary = stop_attacker_vassal_war_decline_summary + + is_shown = { + scope:recipient != scope:actor + scope:recipient = { + liege ?= scope:actor + highest_held_title_tier > tier_barony + any_character_war = { + primary_defender = scope:recipient + save_temporary_scope_as = target_war + } + } + scope:actor = { + NOT = { is_participant_in_war = scope:target_war } + } + } + + is_valid_showing_failures_only = { + custom_description = { + text = cannot_stop_war_when_already_fighting + object = scope:recipient + NOT = { + scope:recipient = { + any_war_enemy = { + this = scope:actor + } + } + } + } + custom_description = { + text = cannot_stop_war_timer + object = scope:recipient + NOT = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = attempt_to_force_surrender_opinion + } + } + } + } + NOT = { + scope:recipient = { + has_strong_hook = scope:actor + } + } + } + + can_be_picked = { + scope:target.primary_defender = scope:recipient + } + + on_accept = { + scope:recipient = { + add_opinion = { + modifier = attempt_to_force_surrender_opinion + target = scope:actor + } + } + hidden_effect = { + scope:recipient = { + trigger_event = vassal_interaction.0011 #Starts "negotiations" + } + } + + # If we're a clan this interaction affects unity - But we only show it in the tooltip, actual effect is applied in the respective follow-up events + show_as_tooltip = { + if = { + limit = { # If recipient is a house member and the attacker is not, lose unity + exists = scope:actor.house + exists = scope:target.primary_attacker.house + scope:target.primary_attacker.house != scope:actor.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_stop_defender_vassal_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else_if = { + limit = { # If recipient is a non-house member and the attacker is, gain unity + exists = scope:actor.house + exists = scope:recipient.house + scope:recipient.house != scope:actor.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:target.primary_attacker + VALUE = medium_unity_gain + DESC = clan_unity_aided_in_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + } + + auto_accept = yes +} + +ask_for_pardon_interaction = { + category = interaction_category_vassal + icon = scroll_scales + + filter_tags = { celestial_ministry } + + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor != scope:recipient.liege + } + desc = ask_for_pardon_interaction_minister_desc + } + desc = ask_for_pardon_interaction_desc + } + } + notification_text = ASK_FOR_PARDON_NOTIFICATION + + is_shown = { + ask_for_pardon_available_trigger = { ACTOR = scope:actor } + OR = { + scope:actor.top_liege = scope:recipient + scope:recipient = { + top_liege = scope:actor.top_liege + has_title = title:e_minister_of_justice + } + } + } + + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + NOT = { is_imprisoned_by = scope:recipient }#Then you use the regular ransom interactions + } + } + + highlighted_reason = { + triggered_desc = { + trigger = { + scope:recipient = { + has_title = title:e_minister_of_justice + } + } + desc = HIGHLIGHTED_MINISTER_WILLING_TO_PARDON + } + } + + is_highlighted = { + OR = { + has_usable_hook = scope:recipient + AND = { + scope:recipient = { + has_title = title:e_minister_of_justice + } + scope:recipient = { + is_character_interaction_potentially_accepted = { + recipient = scope:recipient + interaction = ask_for_pardon_interaction + } + } + } + } + } + + ai_accept = { + base = -50 + + #How bad is it, really? + modifier = { + scope:recipient = { + has_banish_reason = scope:actor + NOR = { #These are worse + has_execute_reason = scope:actor + has_revoke_title_reason = scope:actor + } + } + desc = AI_BANISHMENT_REASON_MODIFIER + add = -20 + } + modifier = { + scope:recipient = { + has_revoke_title_reason = scope:actor + NOT = { #This is worse are worse + has_execute_reason = scope:actor + } + } + desc = AI_REVOKE_TITLE_REASON_MODIFIER + add = -30 + } + modifier = { + scope:recipient = { + has_execute_reason = scope:actor + } + desc = AI_EXECUTE_REASON_MODIFIER + add = -40 + } + + #Willing to forgive + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + + ai_min_reply_days = 1 + ai_max_reply_days = 5 + + on_accept = { + ask_for_pardon_interaction_effect = yes + scope:actor = { + trigger_event = vassal_interaction.0030 + } + + scope:recipient = { + if = { + limit = { + culture = { + has_cultural_parameter = pardoning_gives_prestige + } + } + add_prestige = minor_prestige_gain + } + add_merit_if_relevant_effect = { + MERIT = minor_merit_value + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_pardon_granted.desc + REVERSE_NON_HOUSE_TARGET = no + } + + hidden_effect = { + # Struggle catalysts + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + scope:recipient = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_grants_pardon_supporter_detractor + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:actor + } + } + } + } + scope:recipient = { + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_grants_pardon_supporter_detractor + character = scope:recipient + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_grants_pardon_supporter_detractor } + } + } + } + } + } + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0240 + } + } + + on_decline = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_bad + title = ask_for_pardon_interaction_decline_toast + left_icon = scope:actor + + custom_tooltip = ask_for_pardon_interaction_accept_decline + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:recipient + TARGET = scope:actor + VALUE = minor_unity_loss + DESC = clan_unity_refused_pardon.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no + + ai_targets = { + ai_recipients = liege + } + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 0 + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:actor = { + has_usable_hook = scope:recipient + } + } + + modifier = { + add = 100 + scope:hook = yes + } + } +} + +pardon_interaction = { + category = interaction_category_friendly + icon = scroll_scales + + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor != scope:recipient.liege + } + desc = pardon_interaction_minister_desc + } + desc = pardon_interaction_desc + } + triggered_desc = { + trigger = { + scope:actor = { + culture = { + has_cultural_parameter = pardoning_gives_prestige + } + } + } + desc = pardon_interaction_has_jirga_desc + } + } + is_shown = { + scope:actor = { + OR = { + has_imprisonment_reason = scope:recipient + AND = { + has_title = title:e_minister_of_justice + scope:recipient = { + any_liege_or_above = { + has_imprisonment_reason = scope:recipient + } + } + } + } + } + scope:recipient = { + OR = { + scope:actor = { + has_title = title:e_minister_of_justice + top_liege = scope:recipient.top_liege + } + target_is_liege_or_above = scope:actor + } + } + } + cost = { + influence = { + value = 0 + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + NOT = { has_imprisonment_reason = scope:recipient } + } + } + add = { + value = 25 + if = { + limit = { + scope:actor.top_liege = { + has_realm_law = celestial_bureaucracy_0 + } + } + add = 75 + } + else_if = { + limit = { + scope:actor.top_liege = { + has_realm_law = celestial_bureaucracy_1 + } + } + add = 50 + } + else_if = { + limit = { + scope:actor.top_liege = { + has_realm_law = celestial_bureaucracy_2 + } + } + add = 25 + } + } + } + } + treasury = { + value = 0 + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + has_treasury = yes + NOT = { has_imprisonment_reason = scope:recipient } + } + } + add = scope:actor.minor_treasury_value + } + } + } + + auto_accept = yes + + is_highlighted = { + scope:recipient = { + is_imprisoned = no + } + scope:actor = { + has_title = title:e_minister_of_justice + } + } + + on_accept = { + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + } + } + scope:actor = { + add_merit_if_relevant_effect = { + MERIT = minor_merit_value + } + if = { + limit = { + government_has_flag = government_has_influence + } + change_influence = { + value = minor_influence_gain + multiply = scope:recipient.highest_held_title_tier + } + } + } + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_neutral + title = pardon_interaction_toast_title + desc = pardon_interaction_toast_minister + right_icon = scope:actor + if = { + limit = { + OR = { + scope:recipient.liege = { + has_extra_criminal_reason_against_trigger = { + CRIMINAL = scope:recipient + } + } + is_close_or_extended_family_of = scope:actor + } + } + scope:actor = { + change_strife_opinion = massive_strife_gain + situation:dynastic_cycle = { + trigger_situation_catalyst = { + catalyst = catalyst_minister_pardoned_dangerous_criminal + character = scope:actor + } + } + } + } + consume_all_criminal_reasons_effect = { + LIEGE = scope:recipient.liege + CRIMINAL = scope:recipient + } + } + } + hidden_effect = { + scope:recipient.liege = { + send_interface_toast = { + type = event_toast_effect_neutral + title = pardon_interaction_toast_title + desc = pardon_interaction_toast_minister_liege + right_icon = scope:actor + left_icon = scope:recipient + show_as_tooltip = { + if = { + limit = { + OR = { + has_extra_criminal_reason_against_trigger = { + CRIMINAL = scope:recipient + } + scope:recipient = { + is_close_or_extended_family_of = scope:actor + } + } + } + scope:actor = { + change_strife_opinion = massive_strife_gain + situation:dynastic_cycle = { + trigger_situation_catalyst = { + catalyst = catalyst_minister_pardoned_dangerous_criminal + character = scope:actor + } + } + } + } + consume_all_criminal_reasons_effect = { + LIEGE = scope:recipient.liege + CRIMINAL = scope:recipient + } + } + } + } + } + } + else = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_neutral + title = pardon_interaction_toast_title + desc = pardon_interaction_toast + right_icon = scope:actor + consume_all_criminal_reasons_effect = { + LIEGE = scope:actor + CRIMINAL = scope:recipient + } + } + } + } + + scope:actor = { + stress_impact = { + forgiving = medium_stress_loss + } + } + + scope:actor = { + if = { + limit = { + culture = { + has_cultural_parameter = pardoning_gives_prestige + } + } + add_prestige = minor_prestige_gain + } + + hidden_effect = { + # Struggle catalysts + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + scope:recipient = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_grants_pardon_supporter_detractor + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:actor + } + } + } + } + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_grants_pardon_supporter_detractor + character = scope:recipient + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_grants_pardon_supporter_detractor } + } + } + } + } + + scope:recipient = { + if = { + limit = { + scope:actor = { + culture = { + has_cultural_parameter = pardoning_gives_loyalty + } + } + } + add_opinion = { + modifier = loyal_servant + target = scope:actor + } + scope:actor = { + if = { + limit = { + can_add_hook = { + target = scope:recipient + type = loyalty_hook + } + } + add_hook = { + type = loyalty_hook + target = scope:recipient + } + } + } + } + else = { + add_opinion = { + target = scope:actor + modifier = grateful_opinion + opinion = 15 + } + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_forgiveness.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + ai_potential = { + OR = { + ai_vengefulness <= 0 + culture = { + has_cultural_parameter = pardoning_gives_loyalty + } + } + } + ai_targets = { + ai_recipients = vassals + } + ai_targets = { + ai_recipients = courtiers + chance = 0.25 + } + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 72 + kingdom = 36 + empire = 36 + hegemony = 36 + } + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + is_primary_heir_of = scope:actor + } + } + } + + modifier = { + add = 25 + scope:actor = { + scope:actor.ai_vengefulness <= 0 + culture = { + has_cultural_parameter = pardoning_gives_loyalty + } + } + } + + modifier = { + add = { + value = ai_vengefulness + multiply = -1 + } + scope:actor.ai_vengefulness <= -25 + } + } +} + +vassal_claim_liege_title_interaction = { + category = interaction_category_vassal + interface_priority = 269 # after Start Claimant Faction + desc = vassal_claim_liege_title_interaction_desc + target_type = title + target_filter = recipient_domain_titles + ignores_pending_interaction_block = yes + icon = vassal_claim_liege_title_interaction + + cost = { + prestige = { + value = { + add = monumental_prestige_value + if = { + limit = { + scope:actor.prestige_level > scope:recipient.prestige_level + } + subtract = { + value = major_prestige_value + multiply = { + value = scope:actor.prestige_level + subtract = scope:recipient.prestige_level + } + desc = higher_prestige_level_than_liege + } + } + else_if = { + limit = { + scope:actor.prestige_level < scope:recipient.prestige_level + } + add = { + value = major_prestige_value + multiply = { + value = scope:recipient.prestige_level + subtract = scope:actor.prestige_level + } + desc = lower_prestige_level_than_liege + } + } + min = 0 + } + } + } + + is_shown = { + scope:recipient != scope:actor + + scope:actor = { + is_physically_able_adult = yes + } + + scope:recipient = scope:actor.liege + + scope:recipient = { + is_playable_character = yes + any_held_title = { + title_tier >= duchy + NOR = { + has_title_law = noble_family_succession_law + has_title_law = landless_adventurer_succession_law + has_title_law = mandala_succession_law + } + scope:actor = { + NOT = { + has_claim_on = prev + } + } + } + } + } + + is_highlighted = { + scope:actor.prestige >= vassal_claim_liege_title_interaction_highlight_value + } + + can_be_picked = { + trigger_if = { + limit = { + scope:actor = { + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = powerful_vassal_can_claim_liege_titles + } + } + } + scope:actor = { is_powerful_vassal_of = scope:recipient } + } + trigger_if = { + limit = { + scope:actor = { legitimacy_level = 5 } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_15_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.15 + } + } + } + } + trigger_if = { + limit = { + scope:actor = { legitimacy_level = 4 } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_21_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.21 + } + } + } + } + trigger_if = { + limit = { + scope:actor = { legitimacy_level = 3 } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_31_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.31 + } + } + } + } + trigger_if = { + limit = { + scope:actor = { legitimacy_level = 2 } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_41_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.41 + } + } + } + } + trigger_if = { + limit = { + scope:actor = { + OR = { + legitimacy_level = 1 + legitimacy_level = 0 + has_legitimacy = no #if you don't have legitimacy at all we fall back to the default + } + } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_51_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.51 + } + } + } + } + + custom_description = { + NOT = { + scope:actor = { + has_claim_on = scope:target + } + } + text = "already_have_a_claim_on_this_title" + } + trigger_if = { + limit = { + scope:target = { + tier = tier_duchy + } + } + custom_description = { + text = not_family_or_adventurer_title + scope:target = { + NOR = { + has_title_law = noble_family_succession_law + has_title_law = landless_adventurer_succession_law + has_title_law = mandala_succession_law + } + } + } + } + } + + has_valid_target_showing_failures_only = { + scope:target = { + tier >= tier_duchy + } + } + + is_valid_showing_failures_only = { + custom_description = { + scope:recipient = { + any_held_title = { + title_tier >= county + NOT = { any_claimant = { this = scope:actor } } + } + } + + object = scope:recipient + text = "already_have_claims_on_all_titles" + } + scope:recipient = { NOT = { has_strong_hook = scope:actor } } + NOT = { + scope:actor = { + is_allied_to = scope:recipient + } + } + } + + on_auto_accept = { + scope:target = { + random_in_de_jure_hierarchy = { + limit = { + tier = tier_county + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + } + title_province = { + save_scope_as = county_in_title + } + } + } + scope:recipient = { + trigger_event = vassal_interaction.0040 + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = buy_claim_interaction.message + left_icon = scope:actor + right_icon = scope:recipient + vassal_claim_liege_title_interaction_effect = yes + } + claim_title_achievement_effect = yes + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_title_claim.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = yes + + ai_targets = { + ai_recipients = liege + } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 0 + } + + ai_potential = { + domain_size > 1 + NOR = { + has_trait = content + has_trait = craven + } + } + + ai_will_do = { + base = 25 + + ai_value_modifier = { + who = scope:actor + ai_greed = 1 + ai_boldness = 0.5 + ai_honor = -0.5 + } + + modifier = { + add = scope:actor.ai_zeal + scope:actor = { + ai_zeal > 0 + } + scope:actor.faith != scope:recipient.faith + } + + modifier = { + add = 25 + scope:actor = { + is_powerful_vassal_of = scope:recipient + } + } + + modifier = { + add = 50 + scope:actor = { + opinion = { + target = scope:recipient + value <= 0 + } + } + } + + modifier = { + add = 25 + scope:recipient = { + OR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + } + } + } + + modifier = { + add = -15 + scope:recipient = { + has_relation_lover = scope:actor + } + } + + # Agenda impact + modifier = { + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_gain_claim_on_title_fp2 + } + has_character_flag = agenda_towards_escalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_gain_claim_on_title_fp2 + } + } + } + add = -100 + } + } + } + + modifier = { + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = persian_struggle + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_gain_claim_on_title_fp3 + } + has_trait = fp3_struggle_detractor + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_gain_claim_on_title_fp3 + } + } + } + add = -100 + } + } + } + + modifier = { + factor = 0.25 + scope:actor = { + ai_greed < 100 + opinion = { + target = scope:recipient + value >= 50 + } + } + } + + modifier = { + factor = 0 + scope:actor = { + ai_greed < 100 + opinion = { + target = scope:recipient + value >= 75 + } + } + } + + modifier = { + add = -25 + scope:actor = { + has_dread_level_towards = { + target = scope:recipient + level = 1 + } + } + } + + modifier = { + factor = 0 + scope:actor = { + has_dread_level_towards = { + target = scope:recipient + level = 2 + } + } + } + + modifier = { + factor = 0 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + has_relation_soulmate = scope:actor + } + } + } + } +} + +give_vassal_directive_interaction = { + category = interaction_category_vassal + icon = icon_scheme_challenge_status + interface_priority = 60 + desc = give_vassal_directive_interaction_desc + + auto_accept = yes + + is_shown = { + scope:recipient = { + trigger_if = { + limit = { + scope:actor = { government_allows = administrative } + } + is_vassal_or_below_of = scope:actor + } + trigger_else = { + is_vassal_of = scope:actor + } + is_landed = yes + NOT = { government_has_flag = government_is_true_herder } + highest_held_title_tier >= tier_county + is_ai = yes + } + } + + is_valid = { + vassal_follows_directive_trigger = { VASSAL = scope:recipient LIEGE = scope:actor } + } + + is_valid_showing_failures_only = { + vassal_follows_directive_valid_trigger = { VASSAL = scope:recipient LIEGE = scope:actor } + scope:recipient = { is_physically_able = yes } + } + + send_option = { + flag = improve_development + is_shown = { + scope:recipient = { + government_allows = administrative + } + } + is_valid = { + scope:recipient = { + highest_held_title_tier >= tier_duchy + } + } + } + + send_option = { + flag = train_commanders + is_shown = { + scope:recipient = { + government_allows = administrative + } + } + is_valid = { + } + } + + send_option = { + flag = build_maa + is_shown = { + scope:recipient = { + government_allows = administrative + } + } + is_valid = { + } + } + + send_option = { + flag = convert_faith + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + scope:recipient = { + custom_tooltip = { + text = subrealm_has_county_of_other_faith + any_sub_realm_county = { + faith != scope:recipient.faith + } + } + } + } + } + + send_option = { + flag = convert_culture + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + scope:recipient = { + custom_tooltip = { + text = subrealm_has_county_of_other_culture + any_sub_realm_county = { + culture != scope:recipient.culture + } + } + } + } + } + + send_option = { + flag = improve_cultural_acceptance + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + scope:recipient = { + highest_held_title_tier >= tier_duchy + custom_tooltip = { + text = subrealm_has_county_of_other_culture + any_sub_realm_county = { + culture != scope:recipient.culture + } + } + } + } + } + + send_option = { + flag = building_focus_fortification + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + } + } + + send_option = { + flag = building_focus_military + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + } + } + + send_option = { + flag = building_focus_economy + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + } + } + + send_option = { + flag = manage_fertility + is_shown = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + is_valid = { + } + } + send_option = { + flag = explore_cultures + is_shown = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + is_valid = { + scope:recipient = { + custom_tooltip = { + text = subrealm_has_county_of_other_culture + any_sub_realm_county = { + NOT = { culture = scope:recipient.culture } + } + } + } + } + } + send_option = { + flag = raid_innovation_intent + is_shown = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + is_valid = { + custom_tooltip = { + text = has_any_directive + scope:recipient = { + NOT = { + has_character_flag = vassal_directive_raid_innovation_intent + } + } + } + } + } + send_option = { + flag = raid_herd_intent + is_shown = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + is_valid = { + } + } + + send_option = { + flag = remove_directive + is_shown = { + } + is_valid = { + custom_tooltip = { + text = has_any_directive + scope:recipient = { + OR = { + has_character_flag = vassal_directive_improve_development + has_character_flag = vassal_directive_train_commanders + has_character_flag = vassal_directive_build_maa + has_character_flag = vassal_directive_convert_faith + has_character_flag = vassal_directive_convert_culture + has_character_flag = vassal_directive_improve_cultural_acceptance + has_character_flag = vassal_directive_building_focus_fortification + has_character_flag = vassal_directive_building_focus_military + has_character_flag = vassal_directive_building_focus_economy + has_character_flag = vassal_directive_manage_fertility + has_character_flag = vassal_directive_explore_cultures + has_character_flag = vassal_directive_raid_innovation_intent + has_character_flag = vassal_directive_raid_herd_intent + } + } + } + } + } + + on_accept = { + scope:recipient = { + if = { + limit = { + OR = { + has_character_flag = vassal_directive_improve_development + has_character_flag = vassal_directive_train_commanders + has_character_flag = vassal_directive_build_maa + has_character_flag = vassal_directive_convert_faith + has_character_flag = vassal_directive_convert_culture + has_character_flag = vassal_directive_improve_cultural_acceptance + has_character_flag = vassal_directive_building_focus_fortification + has_character_flag = vassal_directive_building_focus_military + has_character_flag = vassal_directive_building_focus_economy + has_character_flag = vassal_directive_manage_fertility + has_character_flag = vassal_directive_explore_cultures + has_character_flag = vassal_directive_raid_innovation_intent + has_character_flag = vassal_directive_raid_herd_intent + } + } + custom_tooltip = { + text = vassal_directive_remove_directive + remove_vassal_directives = yes + } + } + switch = { + trigger = yes + + scope:improve_development ?= { + custom_tooltip = { + text = vassal_directive_improve_development + remove_vassal_directives = yes + add_character_flag = vassal_directive_improve_development + } + } + + scope:train_commanders ?= { + custom_tooltip = { + text = vassal_directive_train_commanders + remove_vassal_directives = yes + add_character_flag = vassal_directive_train_commanders + } + } + + scope:build_maa ?= { + custom_tooltip = { + text = vassal_directive_build_maa + remove_vassal_directives = yes + add_character_flag = vassal_directive_build_maa + } + } + + scope:convert_faith ?= { + custom_tooltip = { + text = vassal_directive_convert_faith + remove_vassal_directives = yes + add_character_flag = vassal_directive_convert_faith + } + } + + scope:convert_culture ?= { + custom_tooltip = { + text = vassal_directive_convert_culture + remove_vassal_directives = yes + add_character_flag = vassal_directive_convert_culture + } + } + + scope:improve_cultural_acceptance ?= { + custom_tooltip = { + text = vassal_directive_improve_cultural_acceptance + remove_vassal_directives = yes + add_character_flag = vassal_directive_improve_cultural_acceptance + } + } + + scope:building_focus_fortification ?= { + custom_tooltip = { + text = vassal_directive_building_focus_fortification + remove_vassal_directives = yes + add_character_flag = vassal_directive_building_focus_fortification + } + } + + scope:building_focus_military ?= { + custom_tooltip = { + text = vassal_directive_building_focus_military + remove_vassal_directives = yes + add_character_flag = vassal_directive_building_focus_military + } + } + + scope:building_focus_economy ?= { + custom_tooltip = { + text = vassal_directive_building_focus_economy + remove_vassal_directives = yes + add_character_flag = vassal_directive_building_focus_economy + } + } + + scope:manage_fertility ?= { + custom_tooltip = { + text = vassal_directive_manage_fertility + remove_vassal_directives = yes + add_character_flag = vassal_directive_manage_fertility + } + } + scope:explore_cultures ?= { + custom_tooltip = { + text = vassal_directive_explore_cultures + remove_vassal_directives = yes + add_character_flag = vassal_directive_explore_cultures + } + } + scope:raid_innovation_intent ?= { + custom_tooltip = { + text = vassal_directive_raid_innovation_intent + remove_vassal_directives = yes + add_character_flag = vassal_directive_raid_innovation_intent + } + } + scope:raid_herd_intent ?= { + custom_tooltip = { + text = vassal_directive_raid_herd_intent + remove_vassal_directives = yes + add_character_flag = vassal_directive_raid_herd_intent + } + } + + scope:remove_directive ?= { + custom_tooltip = { + text = vassal_directive_remove_directive + remove_vassal_directives = yes + } + } + } + } + } + + ai_potential = { + government_allows = administrative + } + ai_targets = { + ai_recipients = vassals + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 12 + empire = 1 + hegemony = 1 + } + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:improve_development ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_economy + has_character_flag = vassal_directive_improve_development + } + OR = { + vassal_contract_has_flag = admin_theme_civilian + vassal_contract_has_flag = admin_theme_balanced + } + } + } + + modifier = { + add = 100 + scope:building_focus_economy ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_economy + has_character_flag = vassal_directive_improve_development + } + OR = { + vassal_contract_has_flag = admin_theme_civilian + vassal_contract_has_flag = admin_theme_balanced + } + } + } + + modifier = { + add = 100 + scope:building_focus_fortification ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_fortification + has_character_flag = vassal_directive_build_maa + } + vassal_contract_has_flag = admin_theme_frontier + } + } + + modifier = { + add = 100 + scope:build_maa ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_fortification + has_character_flag = vassal_directive_building_focus_military + has_character_flag = vassal_directive_build_maa + } + OR = { + vassal_contract_has_flag = admin_theme_military + vassal_contract_has_flag = admin_theme_frontier + } + } + } + + modifier = { + add = 100 + scope:building_focus_military ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_military + has_character_flag = vassal_directive_build_maa + } + OR = { + vassal_contract_has_flag = admin_theme_military + vassal_contract_has_flag = admin_theme_naval + } + } + } + } +} + + + +request_court_position = { + category = interaction_category_vassal + interface_priority = 120 + icon = seneschal_court_position + + desc = request_court_position_desc + + special_interaction = request_court_position + interface = court_task_interaction + target_type = court_position_type + + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + is_shown = { + NOT = { scope:recipient = scope:actor } + scope:actor.liege ?= scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { + tgp_is_ceremonial_liege_trigger = no + } + } + + on_accept = { + scope:recipient = { + appoint_court_position = { + recipient = scope:actor + court_position = scope:target + } + } + scope:actor = { + if = { + limit = { always = scope:claim_hook } + use_hook = scope:recipient + } + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:claim_hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + + send_option = { + is_shown = { + NOT = { scope:actor = scope:recipient } + } + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = claim_hook + localization = GENERIC_SPEND_A_HOOK + } + + send_options_exclusive = no + + ai_accept = { + base = -75 + + modifier = { + scope:claim_hook ?= yes + add = 100 + desc = SCHEME_WEAK_HOOK_USED + } + + opinion_modifier = { # More likely if Recipient likes Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + } + + force_notification = yes +} + +grant_court_position = { + category = interaction_category_vassal + interface_priority = 120 + icon = seneschal_court_position + + desc = grant_court_position_desc + + special_interaction = grant_court_position + interface = court_task_interaction + target_type = court_position_type + + is_shown = { + NOT = { scope:recipient = scope:actor } + scope:recipient = { + liege ?= scope:actor + tgp_is_ceremonial_liege_trigger = no + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + NOT = { + is_imprisoned_by = scope:actor + } + is_adult = yes + } + } + + on_accept = { + scope:actor = { + appoint_court_position = { + recipient = scope:recipient + court_position = scope:target + } + } + } + + auto_accept = yes +} diff --git a/common/character_interactions/00_war.txt b/common/character_interactions/00_war.txt new file mode 100644 index 00000000..2867e253 --- /dev/null +++ b/common/character_interactions/00_war.txt @@ -0,0 +1,2372 @@ +declare_war_interaction = { + category = interaction_category_diplomacy + common_interaction = yes + special_interaction = declare_war_interaction + interface = declare_war + interface_priority = 70 + popup_on_receive = yes + pause_on_receive = no # this is handled by the interface instead + + desc = declare_war_desc + + is_shown = { + scope:recipient != scope:actor + scope:recipient = { + is_playable_character = yes + } + scope:actor = { + NOT = { + is_at_war_with = scope:recipient + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + custom_tooltip = { + text = sworn_peace_tt + NOT = { has_character_flag = sworn_peace } + } + NOT = { has_trait = incapable } + can_attack_in_hierarchy = scope:recipient + trigger_if = { + limit = { + NOT = { + government_has_flag = can_start_war_with_raised_troops + } + } + NOT = { + has_raised_armies = yes + } + } + trigger_else = { + custom_description = { + text = army_blocks_defender_army + NOT = { + any_army = { + location.county.holder ?= scope:recipient + } + } + } + } + has_any_display_cb_on = scope:recipient + NOT = { + is_allied_in_war = scope:recipient + } + custom_description = { + text = "is_not_bankrupt" + is_in_debt = no + } + NOT = { + custom_description = { + text = "is_in_an_activity" + exists = involved_activity + } + } + trigger_if = { + limit = { + culture = { has_cultural_parameter = cannot_attack_allies } + } + NOT = { + is_allied_to = scope:recipient + } + } + trigger_if = { + limit = { + culture = { has_cultural_parameter = cannot_attack_truces } + } + NOT = { + has_truce = scope:recipient + } + } + is_imprisoned = no + trigger_if = { + limit = { + has_variable_list = subjugation_offer_under_consideration + } + custom_description = { + text = is_not_considering_offer_of_subjugation + NOT = { + is_target_in_variable_list = { + name = subjugation_offer_under_consideration + target = scope:recipient + } + } + } + } + trigger_if = { + limit = { + has_realm_law = japanese_bureaucracy_3 + this != top_liege + } + custom_tooltip = { + text = non_admin_vassal_japanese_bureaucracy_3 + government_allows = administrative + } + } + } + scope:recipient = { + custom_tooltip = { + text = is_a_herder_recipient_tt + NOT = { government_has_flag = government_is_true_herder } # herders can't fight + } + NOT = { is_tributary_of_suzerain_or_above = scope:actor } # can't fight your tributaries or your tributaries' tributaries + NOT = { has_strong_hook = scope:actor } + trigger_if = { + limit = { is_imprisoned = yes } + imprisoner != scope:actor + } + } + scope:actor = { + trigger_if = { + limit = { + NOT = { government_allows = administrative } + liege ?= { + has_realm_law_flag = vassal_all_wars_banned_permanent + this != scope:actor + } + } + custom_tooltip = { + text = admin_all_vassal_wars_banned + always = no + } + } + trigger_if = { + limit = { + government_allows = administrative + top_liege = scope:recipient.top_liege + scope:recipient = { government_allows = administrative } + top_liege != scope:recipient + NOT = { + top_participant_group:dynastic_cycle ?= { + has_participant_group_parameter = dynastic_cycle_vassal_internal_wars_allowed + } + } + } + custom_tooltip = { + text = admin_cannot_declare_internal_wars + always = no + } + } + trigger_if = { # Admin - Laws only allow frontier and naval themes to declare war + limit = { + government_allows = administrative + top_liege != this + top_liege = { + this != scope:recipient.top_liege + has_realm_law_flag = admin_vassal_wars_restricted + } + } + custom_tooltip = { + text = admin_all_vassal_wars_banned + OR = { + vassal_contract_has_flag = admin_theme_frontier + vassal_contract_has_flag = admin_theme_naval + } + } + } + trigger_if = { # Admin - Laws only allow frontier and naval themes to declare war IF they have permission + limit = { + government_allows = administrative + OR = { + vassal_contract_has_flag = admin_theme_frontier + vassal_contract_has_flag = admin_theme_naval + } + top_liege = { + this != scope:recipient.top_liege + has_realm_law_flag = admin_vassal_wars_permission_only + NOT = { has_realm_law_flag = admin_vassal_wars_banned } + } + } + custom_tooltip = { + text = admin_vassal_wars_permission_only_desc + has_variable = admin_permission_to_declare_war + } + } + trigger_if = { # Admin - Laws prevent all vassals from declaring war + limit = { + government_allows = administrative + OR = { + vassal_contract_has_flag = admin_theme_frontier + vassal_contract_has_flag = admin_theme_naval + } + top_liege = { + this != scope:recipient.top_liege + has_realm_law_flag = admin_vassal_wars_banned + } + } + custom_tooltip = { + text = admin_all_vassal_wars_banned + always = no + } + } + trigger_if = { + limit = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_celestial + has_subject_contract_group = tributary_hegemonic + } + } + is_independent_ruler = no # to avoid duplicating tooltips already applying to the top_liege + } + NOT = { + scope:recipient = { + is_tributary_of = scope:actor.top_liege + } + } + } + } + scope:actor = { + trigger_if = { + limit = { has_government = landless_adventurer_government } + custom_tooltip = { + text = camp_located_in_defender_realm.tt + domicile.domicile_location.county.holder = { + NOR = { + this = scope:recipient + any_liege_or_above = { this = scope:recipient } + } + } + } + } + } + trigger_if = { + limit = { + scope:actor = { + is_confederation_member = yes + } + } + NOT = { + scope:recipient = { + is_member_of_confederation = scope:actor.confederation + } + } + } + } + + has_valid_target_showing_failures_only = { + custom_description = { + text = "declare_war_hook_on_liege" + OR = { + war_declarer_needs_hook_on_liege = no + always = scope:hook + } + } + scope:actor = { + NOR = { + is_at_war_with = scope:recipient + custom_description = { #A vassal cannot go to war against someone their Liege is already at war with + text = liege_is_at_war_with_recipient + object = scope:recipient + liege = { + is_at_war_with = scope:recipient + } + } + } + } + } + + send_options_exclusive = no + send_option = { + is_shown = { + war_declarer_needs_hook_on_liege = yes + } + is_valid = { + scope:actor = { + has_usable_hook = liege + } + } + flag = hook + localization = WAR_LIEGE_HOOK + can_invalidate_interaction = yes + } + should_use_extra_icon = { + war_declarer_needs_hook_on_liege = yes + scope:actor = { has_usable_hook = liege } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_accept = { + scope:actor = { + #Feedback! + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = declare_war_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = declare_war_interaction_notification_tooltip + + show_as_tooltip = { + if = { + limit = { always = scope:hook } + use_hook = liege + } + } + } + } + + #Has the instigator promised a vassal a war (vassal.2601)? + if = { + limit = { + exists = var:promised_war + var:promised_war = { + is_alive = yes + this != scope:recipient + } + } + trigger_event = { + id = vassal.2610 + days = { 7 10 } + } + } + + if = { + limit = { always = scope:hook } + use_hook = liege + } + + #Send break up event if they are your lover + if = { + limit = { + has_relation_lover = scope:recipient + NOT = { has_relation_rival = scope:recipient } #To enable really strange love stories + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + primary_defender = scope:recipient + any_target_title = { } + } + } + } + scope:recipient = { + trigger_event = { + id = lover.0103 + days = { 14 30 } + } + } + } + + #Invalidate any wars your vassals have going against recipient atm + scope:recipient = { + if = { + limit = { + any_character_war = { + primary_attacker = { + is_vassal_or_below_of = scope:actor + trigger_if = { #Ai should never invalidate a player's war! + limit = { + this = { is_ai = no } + } + scope:actor = { + is_ai = no + } + } + } + } + } + every_character_war = { + limit = { + primary_attacker = { + is_vassal_or_below_of = scope:actor + trigger_if = { #Ai should never invalidate a player's war! + limit = { + this = { is_ai = no } + } + scope:actor = { + is_ai = no + } + } + } + } + show_as_tooltip = { end_war = invalidated } #Actually ended in the event + primary_attacker = { trigger_event = war_event.1001 } + } + } + } + #Notify defender's vassals if the war is targeting one or more of their titles + scope:recipient = { + if = { + limit = { + any_vassal = { + save_temporary_scope_as = attacked_vassal + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + primary_defender = scope:recipient + any_target_title = { + holder = { + OR = { + this = scope:attacked_vassal + is_vassal_or_below_of = scope:attacked_vassal + } + } + } + } + } + } + } + every_vassal = { + save_temporary_scope_as = attacked_vassal + limit = { + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + primary_defender = scope:recipient + any_target_title = { + holder = { + OR = { + this = scope:attacked_vassal + is_vassal_or_below_of = scope:attacked_vassal + } + } + } + } + } + } + send_interface_toast = { + type = msg_war_declared_on_liege + title = declare_war_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = declare_war_interaction_notification_tooltip + } + } + } + } + + # If you are admin and had permission to start war, spend said permission + if = { + limit = { + has_variable = admin_permission_to_declare_war + } + remove_variable = admin_permission_to_declare_war + } + } + } + + auto_accept = yes +} + +end_war_attacker_victory_interaction = { + special_interaction = end_war_attacker_victory_interaction + hidden = yes + use_diplomatic_range = no + secondary_scopes_optional = yes + + ai_targets = { + ai_recipients = primary_war_enemies + } + + ai_frequency_by_tier = { + barony = 0 + county = 1 + duchy = 1 + kingdom = 1 + empire = 1 + hegemony = 1 + } + + # Depending on who was the attacker, we need to send a different notification message to the recipient. + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:recipient = { + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + } + } + } + } + desc = end_war_attacker_victory_attacker_desc + } + desc = end_war_attacker_victory_defender_desc + } + } + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + can_be_picked = { + scope:war ?= { + custom_tooltip = { + text = hostage_exchange_invalid_for_crusade_tt + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + custom_tooltip = { + text = hostage_exchange_invalid_for_cb_tt + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + } + + redirect = { + # secondary recipient is always set, so we need to clear it + # if can_send condition depends on the scope being empty + clear_saved_scope = secondary_recipient + } + + on_accept = { + casus_belli = { + primary_attacker = { + save_scope_as = attacker_winner + } + primary_defender = { + save_scope_as = defender_loser + } + } + + if = { + limit = { + scope:war ?= { + using_cb = fp3_free_house_member_cb + } + } + } + else = { + release_prisoners_of_war_effect = yes + } + + # Hostages + # Save scopes for clarity + if = { + limit = { + scope:war ?= { + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + if = { + limit = { + exists = scope:secondary_actor + scope:recipient = { is_landed_or_landless_administrative = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_actor + WARDEN = scope:recipient + HOME_COURT = scope:actor + } + } + if = { + limit = { + exists = scope:secondary_recipient + scope:actor = { is_landed_or_landless_administrative = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_recipient + WARDEN = scope:actor + HOME_COURT = scope:recipient + } + } + } + + #Send notification to vassals + hidden_effect = { + scope:attacker_winner = { + if = { + limit = { + any_vassal = { + this != scope:defender_loser + } + } + every_vassal = { + limit = { this != scope:defender_loser } + send_interface_toast = { + type = msg_liege_war_ended_attacker_win + title = war_event.notification_liege_win.t + left_icon = scope:attacker_winner + right_icon = scope:defender_loser + custom_tooltip = war_event.1901 + } + } + } + } + scope:defender_loser = { + if = { + limit = { + any_vassal = { this != scope:attacker_winner } + } + every_vassal = { + limit = { + this != scope:attacker_winner + } + send_interface_toast = { + type = msg_liege_war_ended_attacker_win + title = war_event.notification_liege_loss.t + left_icon = scope:defender_loser + right_icon = scope:attacker_winner + custom_tooltip = war_event.1902 + } + } + } + } + } + + #Special bookmark event for Aella of Northumbria + bookmark_867_northmen_aellas_capture_war_imprisonment_effect = yes + + end_war = attacker + } + + on_decline = { + } + + ai_potential = { + is_at_war = yes + any_character_war = { + is_war_leader = root + OR = { + attacker_war_score >= 100 + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + root = { + has_perk = peacemaker_perk + } + primary_defender = { + is_ai = yes + } + } + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + has_perk = peacemaker_perk + } + } + } + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + primary_defender = { + is_ai = yes + } + } + #SENT A SCARY SEVERED HEAD AAAAHHH + AND = { + attacker_war_score >= 70 + primary_defender = { + is_ai = yes + save_temporary_scope_as = defender + } + root = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:defender + } + } + } + primary_defender = { + is_ai = yes + has_variable = conqueror + } + } + } + } + + ai_will_do = { + base = 0 + + modifier = { + scope:war = { + primary_attacker = scope:actor + OR = { + attacker_war_score >= 100 + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + root = { + has_perk = peacemaker_perk + } + primary_defender = { + is_ai = yes + } + } + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + has_perk = peacemaker_perk + } + } + } + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + primary_defender = { + is_ai = yes + } + } + #SENT A SCARY SEVERED HEAD AAAAHHH + AND = { + attacker_war_score >= 70 + primary_defender = { + is_ai = yes + save_temporary_scope_as = defender + } + root = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:defender + } + } + } + AND = { + NOR = { + using_cb = undirected_great_holy_war + using_cb = mongol_invasion_war + using_cb = mongol_realm_invasion_war + using_cb = mpo_gok_onslaught_cb + } + primary_defender = { + is_ai = yes + has_variable = conqueror + } + } + } + } + add = 100 + } + modifier = { + scope:war = { + primary_defender = scope:actor + attacker_war_score >= 100 + days_since_max_war_score >= 180 + } + add = 100 + } + } + + ai_accept = { + base = -99 + + compare_modifier = { + target = scope:war + value = attacker_war_score + desc = "WARSCORE_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_attacker = { + has_perk = peacemaker_perk + this != scope:recipient + } + } + + add = peacemaker_value + + desc = "PEACEMAKER_PERK_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_attacker = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + NOT = { this = scope:recipient } + } + } + + add = 10 + + desc = "NOMAD_LEGACY_PERK_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_defender = { + save_temporary_scope_as = defender + } + primary_attacker = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:defender + } + } + primary_defender = { + is_ai = yes + } + } + add = 30 + desc = "COWED_BY_SEVERED_HEAD_MODIFIER" + } + + # Hostages + modifier = { + exists = scope:secondary_actor + add = war_actor_hostage_value + desc = WAR_OVERVIEW_HOSTAGE_OFFER_VALUE + } + modifier = { + exists = scope:secondary_recipient + add = war_recipient_hostage_value + desc = WAR_OVERVIEW_HOSTAGE_DEMAND_VALUE + } + # The AI cannot accept the outcome, if they will lose all their land and you try to take a hostage from them + modifier = { + scope:war = { + OR = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + } + casus_belli = { + any_target_title = { + count >= 1 + add_to_temporary_list = target_titles + } + } + NOT = { + scope:recipient = { + any_held_title = { + tier = tier_county + NOT = { + any_this_title_or_de_jure_above = { is_in_list = target_titles } + } + } + } + } + } + add = -10000 + desc = WAR_OVERVIEW_HOSTAGE_DEMAND_BLOCKED + } + # This is a bit of a hidden modifier, only used to make sure we get the right icon when you force it through at 100 war score, and the opponent has more realm left + modifier = { + scope:war = { + attacker_war_score >= 100 + OR = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + } + casus_belli = { + any_target_title = { + count >= 1 + add_to_temporary_list = target_titles + } + } + scope:recipient = { + any_held_title = { + tier = tier_county + NOT = { + any_this_title_or_de_jure_above = { is_in_list = target_titles } + } + } + } + } + add = 1000 + desc = "WARSCORE_MODIFIER" + } + } + + auto_accept = { + trigger_if = { + limit = { + OR = { + scope:war = { + attacker_war_score >= 100 + } + AND = { + scope:recipient = { is_ai = yes } + primary_attacker = scope:recipient + } + scope:war.casus_belli = { # Conquerors know when to fold + primary_attacker = { + is_ai = yes + current_military_strength >= scope:recipient.fifty_percent_more_of_current_military_strength + } + primary_defender = { + is_ai = yes + has_variable = conqueror + this = scope:recipient + } + } + } + } + always = yes + } + trigger_else = { + always = no + } + # The auto accept kind of messes up the hostage interaction a bit, so we block the auto accept if they try to grab a hostage and all the opponent's land at the same time + scope:war = { + trigger_if = { + limit = { + OR = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + } + casus_belli = { + any_target_title = { + count >= 1 + add_to_temporary_list = target_titles + } + } + NOT = { + scope:recipient = { + any_held_title = { + tier = tier_county + NOT = { + any_this_title_or_de_jure_above = { is_in_list = target_titles } + } + } + } + } + } + always = no + } + } + } + + is_valid_showing_failures_only = { + scope:war = { + has_valid_casus_belli = yes + trigger_if = { # Cannot exchange hostages with soon to be landless + limit = { + OR = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + } + casus_belli = { + any_target_title = { + count >= 1 + add_to_temporary_list = target_titles + } + } + } + custom_tooltip = { + text = hostage_no_land_after_war_tt + scope:recipient = { + any_held_title = { + title_tier = county + NOT = { + any_this_title_or_de_jure_above = { is_in_list = target_titles } + } + } + } + } + } + } + } +} + +end_war_attacker_white_peace_interaction = { + + special_interaction = end_war_white_peace_interaction + hidden = yes + use_diplomatic_range = no + secondary_scopes_optional = yes + send_name = "WHITE_PEACE_INTERACTION" + + ai_targets = { + ai_recipients = primary_war_enemies + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + # Depending on who was the attacker, we need to send a different notification message to the recipient. + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:recipient = { + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + } + } + } + } + desc = end_war_attacker_white_peace_attacker_desc + } + desc = end_war_attacker_white_peace_defender_desc + } + } + + redirect = { + # secondary recipient is always set, so we need to clear it + # if can_send condition depends on the scope being empty + clear_saved_scope = secondary_recipient + } + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + can_be_picked = { + scope:war ?= { + custom_tooltip = { + text = hostage_exchange_invalid_for_crusade_tt + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + custom_tooltip = { + text = hostage_exchange_invalid_for_cb_tt + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + } + + on_accept = { + casus_belli = { + primary_attacker = { + save_scope_as = attacker_white_peace + } + primary_defender = { + save_scope_as = defender_white_peace + } + } + + if = { + limit = { + scope:war ?= { + using_cb = fp3_free_house_member_cb + } + } + } + else = { + release_prisoners_of_war_effect = yes + } + + # Hostages + # Save scopes for clarity + if = { + limit = { + scope:war ?= { + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + if = { + limit = { + exists = scope:secondary_actor + scope:recipient = { is_landed_or_landless_administrative = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_actor + WARDEN = scope:recipient + HOME_COURT = scope:actor + } + } + if = { + limit = { + exists = scope:secondary_recipient + scope:actor = { is_landed_or_landless_administrative = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_recipient + WARDEN = scope:actor + HOME_COURT = scope:recipient + } + } + } + + #Send notification to vassals + hidden_effect = { + scope:attacker_white_peace = { + if = { + limit = { + any_vassal = { this != scope:defender_white_peace } + } + every_vassal = { + limit = { + this != scope:defender_white_peace + } + send_interface_toast = { + type = msg_liege_war_ended_white_peace + title = WAR_RESULTS_WHITE_PEACE + left_icon = scope:attacker_white_peace + right_icon = scope:defender_white_peace + custom_tooltip = war_event.1903 + } + } + } + } + scope:defender_white_peace = { + if = { + limit = { + any_vassal = { this != scope:attacker_white_peace } + } + every_vassal = { + limit = { + this != scope:attacker_white_peace + } + send_interface_toast = { + type = msg_liege_war_ended_white_peace + title = WAR_RESULTS_WHITE_PEACE + left_icon = scope:defender_white_peace + right_icon = scope:attacker_white_peace + custom_tooltip = war_event.1904 + } + } + } + } + } + + end_war = white_peace + } + + on_decline = { + } + + ai_potential = { + any_character_war = { + count >= 1 + casus_belli = { + OR = { + primary_attacker = root + primary_defender = root + } + } + } + + trigger_if = { + limit = { + exists = scope:war + } + NOR = { # Don't send inane white peace offers to the player + scope:war = { + casus_belli = { + primary_defender = root + primary_attacker = { + is_ai = no + } + } + attacker_war_score >= 10 + } + scope:war = { + casus_belli = { + primary_attacker = root + primary_defender = { + is_ai = no + } + } + defender_war_score >= 70 + } + } + } + } + + ai_will_do = { + base = 0 + + # Attacker concerned about defending in other wars + modifier = { + scope:war.casus_belli = { + primary_attacker = root + } + scope:war = { + war_days >= 365 + attacker_war_score <= 0 + } + any_character_war = { + this != scope:war + casus_belli = { + primary_defender = root + } + } + add = { + value = 10 + if = { + limit = { + scope:war = { + attacker_war_score <= -50 + } + } + add = 40 + } + } + } + + # Attacker Greed + ai_value_modifier = { + ai_greed = { + if = { + limit = { + scope:war.casus_belli = { + primary_attacker = root + } + scope:war = { + war_days >= 365 + attacker_war_score <= 10 + } + ai_greed > -20 + } + value = -0.25 + } + } + ai_vengefulness = { + if = { + limit = { ai_vengefulness > 0 } + value = -1 + } + } + } + + # Defender prefers White Peace to loss + modifier = { + scope:war.casus_belli = { + primary_defender = root + } + scope:war = { + war_days >= 182 + defender_war_score <= 15 + } + add = { + value = 10 + if = { + limit = { + scope:war = { + defender_war_score <= -40 + } + } + add = 50 + } + } + } + + # Defenders want to end wars that's taking too long to win + modifier = { + scope:war.casus_belli = { + primary_defender = root + } + scope:war = { + war_days >= 365 + } + add = { + value = scope:war.war_days + divide = 30 + if = { + limit = { + scope:war = { + defender_war_score > 0 + } + } + subtract = scope:war.defender_war_score + } + if = { # If you're this close, perhaps it's worth waiting a few more months for ticking warscore? + limit = { + scope:war = { + defender_war_score >= 70 + } + } + subtract = scope:war.defender_war_score + } + min = 0 + } + } + + # I'm in debt, how about a white peace? Defender + modifier = { + scope:war = { + war_days >= 182 + } + scope:war.casus_belli = { + primary_defender = root + } + OR = { + debt_level >= 1 + treasury_debt_level >= 1 + } + + add = { + value = debt_level + multiply = 20 + + if = { + limit = { scope:war = { defender_war_score > 0 }} + subtract = scope:war.defender_war_score + } + if = { # Push through to the end, it's worth it at this point... + limit = { scope:war = { defender_war_score >= 80 }} + subtract = scope:war.defender_war_score + } + min = 0 + } + } + + + # I'm in debt, how about a white peace? Attacker + modifier = { + scope:war = { + war_days >= 182 + } + scope:war.casus_belli = { + primary_attacker = root + } + OR = { + debt_level >= 1 + treasury_debt_level >= 1 + } + + + add = { + value = debt_level + multiply = 20 + + if = { + limit = { scope:war = { attacker_war_score > 0 }} + subtract = scope:war.attacker_war_score + } + min = 0 + } + } + + # Do not attempt white peace vs. players if you're losing + modifier = { + OR = { + AND = { + scope:war.casus_belli = { + primary_attacker = root + primary_defender = { is_ai = no } + } + scope:war = { + defender_war_score >= 30 + } + } + AND = { + scope:war.casus_belli = { + primary_defender = root + primary_attacker = { is_ai = no } + } + scope:war = { + attacker_war_score >= 30 + } + } + } + factor = 0 + } + # Can end with hostages of equalish value + modifier = { + exists = scope:secondary_recipient + exists = scope:secondary_actor + scope:war = { + war_days >= 365 + NOR = { + defender_war_score >= 30 + attacker_war_score >= 30 + } + } + trigger_if = { + limit = { scope:war.primary_attacker = scope:actor } + interaction_relative_hostage_value > -10 + } + trigger_else = { interaction_relative_hostage_value > -20 } + add = { + value = 0 + if = { + limit = { interaction_relative_hostage_value < 0 } + add = { + value = interaction_relative_hostage_value + multiply = -1 + } + } + else = { add = interaction_relative_hostage_value } + if = { + limit = { scope:actor.ai_boldness < 0 } + add = { + value = scope:actor.ai_boldness + multiply = -0.25 + } + } + if = { + limit = { scope:actor.ai_honor < 0 } + add = { + value = scope:actor.ai_honor + multiply = 0.1 + } + } + else = { + add = { + value = scope:actor.ai_honor + multiply = 0.25 + } + } + if = { + limit = { scope:actor.ai_rationality < 0 } + add = { + value = scope:actor.ai_rationality + multiply = 0.1 + } + } + else = { + add = { + value = scope:actor.ai_rationality + multiply = 0.25 + } + } + if = { + limit = { scope:actor.ai_greed > 0 } + add = { + value = scope:actor.ai_greed + multiply = -0.1 + } + } + else = { + add = { + value = scope:actor.ai_greed + multiply = -0.25 + } + } + } + } + # Can end with hostage demand + modifier = { + exists = scope:secondary_recipient + NOT = { exists = scope:secondary_actor } + scope:war = { + war_days >= 365 + NOR = { + defender_war_score >= 30 + attacker_war_score >= 30 + } + } + add = { + value = 0 + add = { + value = interaction_recipient_hostage_value + multiply = 0.1 + } + if = { + limit = { scope:actor.ai_boldness < 0 } + add = { + value = scope:actor.ai_boldness + multiply = -0.25 + } + } + if = { + limit = { scope:actor.ai_honor < 0 } + add = { + value = scope:actor.ai_honor + multiply = -0.25 + } + } + else = { + add = { + value = scope:actor.ai_honor + multiply = 0.25 + } + } + if = { + limit = { scope:actor.ai_rationality < 0 } + add = { + value = scope:actor.ai_rationality + multiply = 0.25 + } + } + else = { + add = { + value = scope:actor.ai_rationality + multiply = 0.25 + } + } + if = { + limit = { scope:actor.ai_greed > 0 } + add = { + value = scope:actor.ai_greed + multiply = 0.25 + } + } + else = { + add = { + value = scope:actor.ai_greed + multiply = -0.1 + } + } + } + } + + # I don't have time for this, I need to conquer + modifier = { + scope:war.casus_belli = { + primary_defender = { + this = scope:actor + has_variable = conqueror + } + primary_attacker = { is_ai = yes } + } + + add = 100 + } + } + + ai_accept = { + base = -30 + compare_modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + } + } + target = scope:war + value = attacker_war_score + desc = "WARSCORE_MODIFIER" + } + compare_modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + } + } + target = scope:war + value = defender_war_score + desc = "WARSCORE_MODIFIER" + } + + # Length of War + compare_modifier = { + target = scope:war + trigger = { + scope:war = { + war_days >= 365 + } + } + value = { + value = war_days + divide = 91 # 40 in 10 years + } + desc = "WAR_LENGTH" + } + + # I'm in debt, how about a white peace? + modifier = { + scope:war = { + war_days >= 182 + } + scope:war.casus_belli = { + primary_defender = root + } + OR = { + debt_level >= 1 + treasury_debt_level >= 1 + } + + + add = { + value = debt_level + multiply = 20 + } + desc = COMPLETELY_BANKRUPT + } + + # Attacker concerned about other wars + modifier = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + } + scope:recipient = { + any_character_war = { + this != scope:war + primary_defender = scope:recipient + } + } + add = 10 + + desc = CONCERN_ABOUT_OTHER_WARS + } + + # Vengefulness + ai_value_modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + } + } + ai_vengefulness = { + if = { + limit = { + scope:war.casus_belli = { + primary_defender = scope:recipient + } + } + value = -0.25 + } + } + ai_greed = { + if = { + limit = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + } + } + value = -0.25 + } + } + ai_zeal = { + value = -0.2 + if = { + limit = { + faith = { + faith_hostility_level = { + target = scope:actor.faith + value = 2 + } + } + } + multiply = 2 + } + if = { + limit = { + faith = { + faith_hostility_level = { + target = scope:actor.faith + value = 3 + } + } + } + multiply = 3 + } + if = { + limit = { + OR = { + ai_zeal <= 0 + faith = { + faith_hostility_level = { + target = scope:actor.faith + value <= 0 + } + } + } + } + value = 0 + } + } + } + + # Peacemaker Perk + modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + primary_attacker = { has_perk = peacemaker_perk } + } + } + add = peacemaker_value + + desc = "PEACEMAKER_PERK_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + primary_defender = { has_perk = peacemaker_perk } + } + } + add = peacemaker_value + + desc = "PEACEMAKER_PERK_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + primary_attacker = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + add = 10 + + desc = "NOMAD_LEGACY_PERK_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + primary_defender = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + add = 10 + + desc = "NOMAD_LEGACY_PERK_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + primary_attacker = { + is_ai = yes + save_temporary_scope_as = attacker + } + primary_defender = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:attacker + } + } + } + } + add = 30 + + desc = "COWED_BY_SEVERED_HEAD_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + primary_defender = { + is_ai = yes + save_temporary_scope_as = defender + } + primary_attacker = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:defender + } + } + } + } + add = 30 + + desc = "COWED_BY_SEVERED_HEAD_MODIFIER" + } + + # Cultural Traditions + modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + primary_attacker = { culture = { has_cultural_parameter = facilitate_white_peace } } + } + } + add = 10 + + desc = "TRADITION_BONUS_WHITE_PEACE" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + primary_defender = { culture = { has_cultural_parameter = facilitate_white_peace } } + } + } + add = 10 + + desc = "TRADITION_BONUS_WHITE_PEACE" + } + + # Struggles + modifier = { + trigger = { + scope:actor = { + OR = { + any_character_struggle = { + involvement = involved + is_struggle_parameter_active_secondary_character_involvement_either_trigger = { + PARAMETER = white_peace_acceptance_between_involved_or_interloper_with_region_easier + CHAR = scope:recipient + } + } + any_character_struggle = { + involvement = interloper + is_struggle_parameter_active_secondary_character_involvement_either_trigger = { + PARAMETER = white_peace_acceptance_between_involved_or_interloper_with_region_easier + CHAR = scope:recipient + } + } + } + } + } + add = 10 + + desc = "STRUGGLE_INVOLVED_OR_INTERLOPER_PHASE_BONUS" + } + + # GoK war + modifier = { + desc = WAR_OVERVIEW_WHITE_PEACE_GOK + add = -70 + scope:war = { + using_cb = mpo_gok_onslaught_cb + primary_defender = scope:actor + } + } + # GoK war but have counties occupied + modifier = { + desc = WAR_OVERVIEW_WHITE_PEACE_GOK_OCCUPATION + add = { + value = 0 + scope:war.primary_defender = { + every_sub_realm_county = { + limit = { + county_controller = scope:war.primary_attacker + } + add = 2 + } + } + max = 200 + } + scope:war = { + using_cb = mpo_gok_onslaught_cb + attacker_war_score <= 25 + primary_defender = { + any_sub_realm_county = { + county_controller = scope:war.primary_attacker + } + } + primary_defender = scope:actor + } + } + + # Hostages + modifier = { + exists = scope:secondary_actor + add = { + value = war_actor_hostage_value + multiply = 0.5 + } + desc = WAR_OVERVIEW_WHITE_PEACE_HOSTAGE_OFFER_VALUE + } + modifier = { + exists = scope:secondary_recipient + add = { + value = war_recipient_hostage_value + multiply = 0.5 + } + desc = WAR_OVERVIEW_WHITE_PEACE_HOSTAGE_DEMAND_VALUE + } + } + + is_valid_showing_failures_only = { + exists = scope:war + scope:war = { + has_valid_casus_belli = yes + } + is_white_peace_possible = yes + } +} + +end_war_attacker_defeat_interaction = { + special_interaction = end_war_attacker_defeat_interaction + hidden = yes + use_diplomatic_range = no + secondary_scopes_optional = yes + + ai_targets = { + ai_recipients = primary_war_enemies + } + + ai_frequency_by_tier = { + barony = 0 + county = 1 + duchy = 1 + kingdom = 1 + empire = 1 + hegemony = 1 + } + + # Depending on who was the attacker, we need to send a different notification message to the recipient. + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:recipient = { + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + } + } + } + } + desc = end_war_attacker_defeat_attacker_desc + } + desc = end_war_attacker_defeat_defender_desc + } + } + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + can_be_picked = { + scope:war ?= { + custom_tooltip = { + text = hostage_exchange_invalid_for_crusade_tt + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + custom_tooltip = { + text = hostage_exchange_invalid_for_cb_tt + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + } + + redirect = { + # secondary recipient is always set, so we need to clear it + # if can_send condition depends on the scope being empty + clear_saved_scope = secondary_recipient + } + + on_accept = { + casus_belli = { + primary_attacker = { + save_scope_as = attacker_loser + } + primary_defender = { + save_scope_as = defender_winner + set_signature_weapon_effect = yes + } + } + + if = { + limit = { + scope:war ?= { + using_cb = fp3_free_house_member_cb + } + } + } + else = { + release_prisoners_of_war_effect = yes + } + + # Hostages + # Save scopes for clarity + if = { + limit = { + scope:war ?= { + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + if = { + limit = { + exists = scope:secondary_actor + scope:recipient = { is_landed = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_actor + WARDEN = scope:recipient + HOME_COURT = scope:actor + } + } + if = { + limit = { + exists = scope:secondary_recipient + scope:actor = { is_landed = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_recipient + WARDEN = scope:actor + HOME_COURT = scope:recipient + } + } + } + + #Send notification to vassals + hidden_effect = { + scope:attacker_loser = { + if = { + limit = { + any_vassal = { + this != scope:defender_winner + } + } + every_vassal = { + limit = { + this != scope:defender_winner + } + send_interface_toast = { + type = msg_liege_war_ended_defender_win + title = war_event.notification_liege_loss.t + left_icon = scope:attacker_loser + right_icon = scope:defender_winner + custom_tooltip = war_event.1905 + } + } + } + } + scope:defender_winner = { + if = { + limit = { + any_vassal = { this != scope:attacker_loser } + } + every_vassal = { + limit = { + this != scope:attacker_loser + } + send_interface_toast = { + type = msg_liege_war_ended_defender_win + title = war_event.notification_liege_win.t + left_icon = scope:defender_winner + right_icon = scope:attacker_loser + custom_tooltip = war_event.1906 + } + } + } + } + } + + end_war = defender + } + + on_decline = { + + } + + ai_potential = { + is_at_war = yes + any_character_war = { + is_war_leader = root + OR = { + defender_war_score >= 100 + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + root = { + has_perk = peacemaker_perk + } + primary_defender = { + is_ai = yes + } + } + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + has_perk = peacemaker_perk + } + } + } + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + primary_defender = { + is_ai = yes + } + } + AND = { + defender_war_score >= 70 + primary_attacker = { + is_ai = yes + save_temporary_scope_as = attacker + } + root = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:attacker + } + } + } + } + } + } + + ai_will_do = { + base = 0 + + modifier = { + scope:war = { + primary_defender = scope:actor + OR = { + defender_war_score >= 100 + AND = { + defender_war_score >= 90 + scope:actor = { + OR = { + has_perk = peacemaker_perk + culture = { + has_cultural_parameter = can_end_defensive_wars_earlier + } + } + } + primary_attacker = { + is_ai = yes + } + } + AND = { + defender_war_score >= 90 + scope:actor = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + primary_attacker = { + is_ai = yes + } + } + AND = { + defender_war_score >= 70 + primary_attacker = { + is_ai = yes + save_temporary_scope_as = attacker + } + root = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:attacker + } + } + } + } + } + add = 100 + } + modifier = { + scope:war = { + primary_attacker = scope:actor + defender_war_score >= 100 + days_since_max_war_score >= 180 + } + add = 100 + } + } + + ai_accept = { + base = -99 + + compare_modifier = { + target = scope:war + value = defender_war_score + desc = "WARSCORE_MODIFIER" + } + modifier = { + add = 1000 + scope:war.casus_belli = { + primary_defender = scope:recipient + } + desc = "WOULD_WIN_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_defender = { + has_perk = peacemaker_perk + this != scope:recipient + } + } + + add = peacemaker_value + + desc = "PEACEMAKER_PERK_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_defender = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + NOT = { this = scope:recipient } + } + } + + add = 10 + + desc = "NOMAD_LEGACY_PERK_MODIFIER" + } + + modifier = { + scope:war.casus_belli = { + primary_attacker = { + is_ai = yes + save_temporary_scope_as = attacker + } + primary_defender = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:attacker + } + } + } + add = 30 + desc = "COWED_BY_SEVERED_HEAD_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_defender = { + culture = { + has_cultural_parameter = can_end_defensive_wars_earlier + } + this != scope:recipient + } + } + + add = 10 + + desc = "TRADITION_BONUS_DEFENSIVE_WARS" + } + # Hostages + modifier = { + exists = scope:secondary_actor + add = war_actor_hostage_value + desc = WAR_OVERVIEW_HOSTAGE_OFFER_VALUE + } + modifier = { + exists = scope:secondary_recipient + add = war_recipient_hostage_value + desc = WAR_OVERVIEW_HOSTAGE_DEMAND_VALUE + } + } + + auto_accept = { + OR = { + scope:war = { + defender_war_score >= 100 + } + AND = { + scope:recipient = { is_ai = yes } + primary_defender = scope:recipient + } + } + } + + is_valid_showing_failures_only = { + scope:war = { + has_valid_casus_belli = yes + } + } +} + +view_war_interaction = { + category = interaction_category_diplomacy + common_interaction = yes + + special_interaction = offer_peace_interaction + interface = offer_peace + use_diplomatic_range = no + ignores_pending_interaction_block = yes + + is_shown = { + scope:actor = { + is_at_war_with = scope:recipient + NOT = { + any_character_war = { + is_war_leader = scope:actor + is_participant = scope:recipient + } + } + } + } + auto_accept = yes +} + +offer_peace_interaction = { + category = interaction_category_diplomacy + common_interaction = yes + icon = war_won_icon + + special_interaction = offer_peace_interaction + interface = offer_peace + use_diplomatic_range = no + + is_shown = { + scope:actor = { + is_at_war_with = scope:recipient + any_character_war = { + is_war_leader = scope:actor + is_participant = scope:recipient + } + } + } + auto_accept = yes +} diff --git a/common/character_interactions/03_fp2_interactions.txt b/common/character_interactions/03_fp2_interactions.txt index 625f5d38..e3fe3533 100644 --- a/common/character_interactions/03_fp2_interactions.txt +++ b/common/character_interactions/03_fp2_interactions.txt @@ -3189,7 +3189,7 @@ contract_assistance_interaction = { is_shown = { # Actor is Involved in Struggle scope:actor = { - NOT = { government_has_flag = government_is_herder } + NOT = { government_has_flag = government_is_true_herder } OR = { any_character_struggle = { involvement = involved diff --git a/common/character_interactions/05_bp2_interactions.txt b/common/character_interactions/05_bp2_interactions.txt new file mode 100644 index 00000000..0c0d81c3 --- /dev/null +++ b/common/character_interactions/05_bp2_interactions.txt @@ -0,0 +1,4998 @@ +#Interactions relating to hostages + +### Offer hostage - unilateral +# actor = offerer +# recipient = receiver +# secondary_actor = hostage +offer_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + interface_priority = 11 + ai_min_reply_days = 4 + ai_max_reply_days = 9 + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + desc = offer_hostage_interaction_desc + + prompt = OFFER_HOSTAGE_SELECT_HOSTAGE_TO_TRANSFER + + notification_text = OFFER_HOSTAGE_PROPOSAL + + cooldown_against_recipient = { years = 3 } + + is_shown = { + scope:recipient != scope:actor + # Cannot exchange hostages with a herder + # Only significant rulers use hostages + scope:recipient.highest_held_title_tier > tier_barony + # Laamps can't do anything with hostages but return/recall them. + scope:recipient = { + NOR = { + government_has_flag = government_is_landless_adventurer + government_has_flag = government_is_true_herder + } + } + #Inside a merit realm vassals won't offer hostages except to your top liege. + trigger_if = { + limit = { + scope:actor.top_liege = { government_has_flag = government_has_merit } + scope:actor.top_liege != scope:actor + scope:recipient != scope:actor.top_liege + } + NAND = { + scope:actor = { government_has_flag = government_has_merit } + scope:recipient = { government_has_flag = government_has_merit } + } + } + } + + is_valid_showing_failures_only = { + NOR = { + # Must be at peace + scope:recipient = { is_at_war_with = scope:actor } + # Allies don't need hostages + scope:recipient = { is_allied_to = scope:actor } + # Only family oriented governments use hostages + scope:actor = { + government_has_flag = government_is_theocracy + } + scope:recipient = { + government_has_flag = government_is_theocracy + } + # 1 hostage per home court + custom_tooltip = { + text = "already_has_your_hostage_tt" + scope:recipient = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + custom_description = { + text = hostage_already_travelling_tt + subject = scope:actor + object = scope:recipient + scope:actor = { + any_close_family_member = { + exists = var:hostage_travelling_to_warden + var:hostage_travelling_to_warden = scope:recipient + } + } + } + } + scope:actor = { + OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic + is_landless_ruler = no + is_landless_administrative = yes + } + } + scope:recipient = { + OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic + is_landless_ruler = no + is_landless_administrative = yes + } + } + # Stop AI spamming hostage offers + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + exists = scope:secondary_actor + } + NOT = { + scope:secondary_actor = { has_character_flag = ai_should_not_offer_hostage } + } + } + # Tooltip for players in case of no valid hostages to offer + trigger_else = { + scope:actor = { + custom_description = { + text = "basic_valid_hostage_to_offer" + object = scope:recipient + any_close_family_member = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + } + } + } + # Hostages still valid + trigger_if = { + limit = { + exists = scope:secondary_actor + exists = scope:actor + } + scope:secondary_actor = { + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + } + + can_be_picked = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + # Under offer + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { exists = var:hostage_travelling_to_warden } + } + } + + can_send = { + scope:actor = { # AI only offer to more powerful neighbors + trigger_if = { + limit = { is_ai = yes } + bp2_valid_to_offer_hostage_ai_trigger = yes + # AI should not offer close family of players without their consent + NOR = { + scope:secondary_actor = { + any_close_family_member = { + is_ai = no + OR = { + is_parent_of = scope:secondary_actor + is_grandparent_of = scope:secondary_actor + } + this != scope:actor + } + } + # A hostage died on their watch + var:hostage_died ?= scope:recipient + } + } + } + scope:recipient = { + trigger_if = { + limit = { is_ai = no } + NOT = { + scope:secondary_actor = { has_character_flag = ai_should_not_offer_hostage } + } + } + } + # Adult hostages must be loyal enough to go along with it + scope:secondary_actor = { + trigger_if = { + limit = { is_adult = yes } + OR = { + AND = { + custom_tooltip = { + text = hostage_opinion_too_low_tt + opinion = { + target = scope:actor + value >= -25 + } + } + NOT = { has_trait = disloyal } + } + has_trait = loyal + } + } + # Under offer + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + } + } + + cost = {} + + on_send = { + scope:secondary_actor = { + add_character_flag = { + flag = under_offer_as_hostage_flag + months = 1 + } + } + if = { + limit = { + scope:recipient = { is_ai = no } + } + hidden_effect = { + scope:secondary_actor = { + add_character_flag = { + flag = ai_should_not_offer_hostage + years = 3 + } + } + } + } + } + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = hostage_sender } + scope:secondary_actor = { save_scope_as = hostage } + scope:recipient = { save_scope_as = hostage_taker } + custom_description_no_bullet = { text = hostage_pacts_on_arrival_tt } + custom_description_no_bullet = { text = hostage_execution_warning_tt } + custom_description_no_bullet = { text = hostage_attack_warning_tt } + hostage_depart_effect = { + HOSTAGE = scope:hostage + WARDEN = scope:hostage_taker + HOME_COURT = scope:hostage_sender + } + scope:actor = { trigger_event = char_interaction.0330 } + # If we're of the same clan this interaction affects unity + if = { + limit = { + scope:actor = { government_has_flag = government_is_clan } + scope:actor.house = scope:recipient.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_hostage.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0300 + } + scope:secondary_actor = { remove_character_flag = under_offer_as_hostage_flag } + } + + auto_accept = { + trigger_if = { + limit = { + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + trigger_else = { always = no } + } + + can_be_blocked = { + custom_description = { #Hook from Recipient can counteract, but only if Actor is not forcing the action via Strong Hook. + text = "spending_hook" + subject = scope:recipient + object = scope:actor + scope:recipient = { has_hook = scope:actor } + NAND = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + on_blocked_effect = { + scope:recipient = { + remove_hook = { target = scope:actor } + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + # AI + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + ######### PERSONALITY + + bp2_hostage_offer_personality_modifier = yes + + ######### OPINION + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + + ######### RELATIONS + + bp2_hostage_relation_modifier = yes + + ######### DREAD + + bp2_hostage_dread_modifier = yes + + ######### HOSTAGE IMPORTANCE + + # Hostages + modifier = { + exists = scope:secondary_actor + add = interaction_actor_hostage_value + desc = HOSTAGE_VALUE_ACTOR_REASON + } + + ######### RELATIVE POWER + + bp2_hostage_tier_neighbor_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL DIFFERENCES + + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL TRADITIONS + + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + desc = HOSTAGE_EQUITABLE_TRADITION_REASON + } + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + desc = HOSTAGE_ESTEEMED_HOSPITALITY_TRADITION_REASON + } + modifier = { + scope:recipient = { + is_vassal_of = scope:actor + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_LOYAL_SUBJECTS_TRADITION_REASON + } + + ######### OTHER + + modifier = { # Already have a truce + scope:recipient ?= { has_truce = scope:actor } + desc = HOSTAGE_RECIPIENT_EXISTING_TRUCE_REASON + add = -20 + } + modifier = { # Already fighting a war + scope:recipient ?= { is_at_war = yes } + desc = HOSTAGE_AT_WAR_REASON + add = 15 + } + modifier = { # Already have their hostage + scope:actor = { + any_warden_hostage = { home_court ?= scope:recipient } + } + desc = HOSTAGE_ALREADY_DEMANDED_REASON + add = 50 + } + modifier = { + add = -50 + scope:actor = { has_character_modifier = attacked_warden } + desc = attacked_warden + } + modifier = { # Conqueror + scope:recipient ?= { + has_variable = conqueror + } + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + add = -1000 + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = vassals + max = 10 + } + + ai_targets = { + ai_recipients = liege + } + + ai_frequency_by_tier = { + barony = 0 + county = 120 + duchy = 120 + kingdom = 360 + empire = 0 + hegemony = 0 + } + + is_available = { + trigger_if = { + limit = { + is_ai = yes + } + NOT = { has_variable = conqueror } + } + NOT = { + government_has_flag = government_is_landless_adventurer + } + } + + ai_will_do = { + base = 0 + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:actor + opinion_target = scope:secondary_actor + multiplier = -0.1 + desc = AI_OPINION_REASON + } + bp2_hostage_tier_neighbor_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { # The AI will only use a Hook if they couldn't otherwise do this + scope:hook = yes + add = -1 + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:recipient = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Not neighboring + NOR = { + scope:recipient = { + character_is_land_realm_neighbor = scope:actor + top_liege = scope:actor.top_liege + } + } + add = -50 + } + modifier = { + scope:recipient = { has_character_flag = halved_hostage_prestige_income } + desc = HOSTAGE_RETAINED_ADULTHOOD_REASON + add = -25 + } + # Cultural traditions + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + } + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + } + modifier = { + scope:actor = { + is_vassal_of = scope:recipient + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_CULTURAL_TRADITION_REASON + } + } +} + +### Demand hostage - unilateral +# actor = receiver +# recipient = offerer +# secondary_recipient = hostage +demand_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + ai_min_reply_days = 4 + ai_max_reply_days = 9 + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + interface_priority = 13 + + desc = demand_hostage_interaction_desc + + prompt = DEMAND_HOSTAGE_SELECT_HOSTAGE_TO_OFFER + + notification_text = DEMAND_HOSTAGE_PROPOSAL + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + cooldown_against_recipient = { years = 3 } + + is_shown = { + # Cannot exchange hostages with self + scope:recipient != scope:actor + # Cannot exchange hostages with a herder + NOT = { scope:recipient = { government_has_flag = government_is_true_herder } } + # Only significant rulers use hostages + scope:actor.highest_held_title_tier > tier_barony + OR = { + scope:recipient.highest_held_title_tier > tier_barony + scope:recipient.liege ?= { + highest_held_title_tier > tier_barony + any_close_family_member = { + this = scope:recipient + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient.liege } + } + } + } + # Laamps can't do anything with hostages but return/recall them. + NOR = { + scope:actor = { government_has_flag = government_is_landless_adventurer } + scope:recipient = { government_has_flag = government_is_landless_adventurer } + } + #Inside a merit realm vassals won't demand hostages. + trigger_if = { + limit = { + scope:actor.top_liege = { government_has_flag = government_has_merit } + scope:actor.top_liege != scope:actor + } + NAND = { + scope:actor = { government_has_flag = government_has_merit } + scope:recipient = { government_has_flag = government_has_merit } + } + NOT = { scope:recipient = scope:actor.top_liege } + } + } + + redirect = { + if = { + limit = { + scope:recipient ?= { + is_playable_character = no + is_landless_ruler = no + } + } + scope:recipient ?= { save_scope_as = secondary_recipient } + scope:secondary_recipient.liege ?= { save_scope_as = recipient } + } + } + + is_valid_showing_failures_only = { + # Must be approachable + scope:recipient = { + NOT = { has_strong_hook = scope:actor } + } + scope:actor = { + OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic + is_landless_ruler = no + is_landless_administrative = yes + } + } + scope:recipient = { + OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic + is_landless_ruler = no + is_landless_administrative = yes + } + } + NOR = { + # Must be at peace + scope:recipient = { is_at_war_with = scope:actor } + # Allies don't need hostages + scope:recipient = { is_allied_to = scope:actor } + # Only family oriented governments use hostages + scope:actor = { + government_has_flag = government_is_theocracy + } + scope:recipient = { + government_has_flag = government_is_theocracy + } + # 1 hostage per court + custom_tooltip = { + text = "already_have_their_hostage_tt" + scope:actor = { + any_warden_hostage = { home_court ?= scope:recipient } + } + } + custom_description = { + text = "hostage_already_travelling_tt" + subject = scope:actor + object = scope:recipient + scope:actor = { + any_close_family_member = { + exists = var:hostage_travelling_to_warden + var:hostage_travelling_to_warden = scope:recipient + } + } + } + } + # Stop AI spamming hostage offers + trigger_if = { + limit = { + scope:recipient = { is_ai = yes } + exists = scope:secondary_recipient + } + NOT = { + scope:secondary_recipient = { has_character_flag = ai_should_not_demand_hostage } + } + } + # Tooltip for players in case of no valid hostages to demand + # Make sure this exactly matches "can_be_picked" section below + trigger_else = { + scope:recipient = { + custom_description = { + text = "basic_valid_hostage_to_demand" + subject = scope:actor + object = scope:recipient + any_close_family_member = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + } + } + } + # Hostages still valid + trigger_if = { + limit = { + exists = scope:secondary_recipient + exists = scope:recipient + } + scope:secondary_recipient = { + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + trigger_if = { # AI only demand from less powerful neighbors + limit = { is_ai = yes } + bp2_valid_to_demand_hostage_ai_trigger = yes + NOR = { + scope:secondary_recipient ?= { has_character_flag = ai_should_not_demand_hostage } + # AI should not demand close family of players without their consent + scope:secondary_recipient = { + any_close_family_member = { + is_ai = no + OR = { + is_parent_of = scope:secondary_recipient + is_grandparent_of = scope:secondary_recipient + } + this != scope:recipient + } + } + # A hostage died on their watch + var:hostage_died ?= scope:recipient + } + } + } + # Adult hostages must be loyal enough to go along with it + scope:secondary_recipient = { + trigger_if = { + limit = { is_adult = yes } + OR = { + AND = { + custom_tooltip = { + text = hostage_opinion_too_low_tt + opinion = { + target = scope:recipient + value >= -25 + } + NOT = { has_trait = disloyal } + } + } + has_trait = loyal + } + } + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + } + } + + can_be_picked = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { exists = var:hostage_travelling_to_warden } + } + } + + cost = {} + + on_send = { + scope:secondary_recipient = { + add_character_flag = { + flag = under_offer_as_hostage_flag + months = 1 + } + } + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + if = { + limit = { + scope:recipient = { is_ai = no } + } + scope:secondary_recipient = { + add_character_flag = { + flag = ai_should_not_demand_hostage + years = 3 + } + } + } + } + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = hostage_taker } + scope:recipient = { save_scope_as = hostage_sender } + scope:secondary_recipient = { save_scope_as = hostage } + custom_description_no_bullet = { text = hostage_pacts_on_arrival_tt } + custom_description_no_bullet = { text = hostage_execution_warning_tt } + custom_description_no_bullet = { text = hostage_attack_warning_tt } + hostage_depart_effect = { + HOSTAGE = scope:hostage + WARDEN = scope:hostage_taker + HOME_COURT = scope:hostage_sender + } + show_as_tooltip = { + if = { + limit = { + scope:recipient = { is_vassal_of = scope:actor } + } + scope:recipient = { + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = liege_demanded_hostage_opinion + target = scope:actor + } + } + } + scope:actor = { + # Tyranny for demanding from vassals + add_tyranny = minor_tyranny_gain + } + } + } + scope:actor = { trigger_event = char_interaction.0331 } + # If we're of the same clan this interaction affects unity + if = { + limit = { + scope:actor = { government_has_flag = government_is_clan } + scope:actor.house = scope:recipient.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_hostage.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + on_decline = { + show_as_tooltip = { + if = { # Effects for refusing demand from liege + limit = { + scope:recipient = { is_vassal_of = scope:actor } + } + scope:recipient = { + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = liege_demanded_hostage_opinion + target = scope:actor + } + } + } + scope:actor = { + # Tyranny for demanding from vassals + add_tyranny = minor_tyranny_gain + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = vassal_refused_hostage_demand_opinion + target = scope:recipient + } + } + } + } + } + scope:actor = { + trigger_event = char_interaction.0301 + } + scope:secondary_recipient = { remove_character_flag = under_offer_as_hostage_flag } + } + + auto_accept = { + trigger_if = { + limit = { + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + trigger_else = { always = no } + } + + can_be_blocked = { + custom_description = { #Hook from Recipient can counteract, but only if Actor is not forcing the action via Strong Hook. + text = "spending_hook" + subject = scope:recipient + object = scope:actor + scope:recipient = { has_hook = scope:actor } + NAND = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + on_blocked_effect = { + scope:recipient = { + remove_hook = { target = scope:actor } + } + } + + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + # AI + ai_accept = { + base = 0 + + ######### PERSONALITY + + bp2_hostage_demand_personality_modifier = yes + + ######### OPINION + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = -0.1 + desc = AI_OPINION_REASON + } + + ######### RELATIONS + + bp2_hostage_relation_modifier = yes + + ######### DREAD + + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + ######### HOSTAGE IMPORTANCE + + modifier = { + exists = scope:secondary_recipient + add = interaction_recipient_hostage_value + desc = HOSTAGE_VALUE_RECIPIENT_REASON + } + + ######### RELATIVE POWER + + bp2_hostage_tier_neighbor_modifier = { # Realm relative position + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { # Desire for land/war + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { + desc = HOSTAGE_IMMINENT_THREAT_REASON + scope:actor = { has_any_cb_on = scope:recipient } + scope:actor.current_strength_with_allies_fifty_percent_value > scope:recipient.current_strength_with_allies_value + add = 25 + } + + ######### CULTURAL DIFFERENCES + + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL TRADITIONS + + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + desc = HOSTAGE_EQUITABLE_TRADITION_REASON + } + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + desc = HOSTAGE_ESTEEMED_HOSPITALITY_TRADITION_REASON + } + modifier = { + scope:recipient = { + is_vassal_of = scope:actor + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_LOYAL_SUBJECTS_TRADITION_REASON + } + + ######### OTHER + + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Already have a truce + scope:actor ?= { has_truce = scope:recipient } + desc = HOSTAGE_ACTOR_EXISTING_TRUCE_REASON + add = -20 + } + modifier = { # Already fighting a war + scope:recipient ?= { is_at_war = yes } + desc = HOSTAGE_AT_WAR_REASON + add = 15 + } + modifier = { # Already have your hostage + scope:recipient = { + any_warden_hostage = { home_court ?= scope:actor } + } + desc = HOSTAGE_ALREADY_OFFERED_REASON + add = 50 + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:actor = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { + scope:hook = yes + add = 40 + desc = SCHEME_WEAK_HOOK_USED + } + modifier = { + scope:secondary_recipient ?= { is_adult = no } + scope:actor = { has_character_flag = halved_hostage_prestige_income } + desc = HOSTAGE_RETAINED_ADULTHOOD_REASON + add = -25 + } + modifier = { # Conqueror + scope:recipient ?= { + has_variable = conqueror + } + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + add = -1000 + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = vassals + max = 10 + } + + ai_targets = { + ai_recipients = liege + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + ai_potential = { + highest_held_title_tier >= tier_county + NOT = { has_variable = conqueror } + } + + ai_will_do = { + base = 0 + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + bp2_hostage_tier_neighbor_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { + add = -50 + scope:recipient = { has_character_modifier = attacked_warden } + desc = attacked_warden + } + modifier = { # The AI will only use a Hook if they couldn't otherwise do this + scope:hook = yes + add = -1 + } + modifier = { # Not neighboring + NOR = { + scope:recipient = { + character_is_land_realm_neighbor = scope:actor + top_liege = scope:actor.top_liege + } + } + add = -50 + } + # Cultural traditions + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + } + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + } + modifier = { + scope:actor = { + is_vassal_of = scope:recipient + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_CULTURAL_TRADITION_REASON + } + } +} + +### Exchange hostages - bilateral +# actor = receiver +# recipient = offerer +# secondary_actor = hostage +# secondary_recipient = hostage +exchange_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + ai_min_reply_days = 4 + ai_max_reply_days = 9 + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + interface_priority = 12 + + desc = exchange_hostage_interaction_desc + + prompt = EXCHANGE_HOSTAGE_SELECT_HOSTAGE_TO_OFFER + + notification_text = EXCHANGE_HOSTAGE_PROPOSAL + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + cost = {} + + cooldown_against_recipient = { years = 3 } + + is_shown = { + # Cannot exchange hostages with self + scope:recipient != scope:actor + # Cannot exchange hostages with a herder + NOT = { scope:recipient = { government_has_flag = government_is_true_herder } } + # Only significant rulers use hostages + scope:actor.highest_held_title_tier > tier_barony + OR = { + scope:recipient.highest_held_title_tier > tier_barony + scope:recipient.liege ?= { + highest_held_title_tier > tier_barony + any_close_family_member = { + this = scope:recipient + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient.liege } + } + } + } + # Laamps can't do anything with hostages but return/recall them. + NOR = { + scope:actor = { government_has_flag = government_is_landless_adventurer } + scope:recipient = { government_has_flag = government_is_landless_adventurer } + } + #Inside a merit realm vassals won't exchange hostages. + trigger_if = { + limit = { + scope:actor.top_liege = { government_has_flag = government_has_merit } + scope:actor.top_liege != scope:actor + } + NAND = { + scope:actor = { government_has_flag = government_has_merit } + scope:recipient = { government_has_flag = government_has_merit } + } + NOT = { scope:recipient = scope:actor.top_liege } + } + } + + redirect = { + if = { + limit = { + scope:recipient ?= { + is_playable_character = no + is_landless_ruler = no + } + } + scope:recipient ?= { save_scope_as = secondary_recipient } + scope:secondary_recipient.liege ?= { save_scope_as = recipient } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOR = { + # Must be at peace + is_at_war_with = scope:recipient + # Allies don't need hostages + is_allied_to = scope:recipient + # Only family oriented governments use hostages + government_has_flag = government_is_theocracy + scope:recipient = { + government_has_flag = government_is_theocracy + } + # 1 hostage per court + custom_tooltip = { + text = "already_has_your_hostage_tt" + scope:recipient = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + custom_tooltip = { + text = "already_have_their_hostage_tt" + any_warden_hostage = { home_court ?= scope:recipient } + } + custom_description = { + text = "hostage_already_travelling_tt" + subject = scope:recipient + object = scope:actor + any_close_family_member = { + exists = var:hostage_travelling_to_warden + var:hostage_travelling_to_warden = scope:recipient + } + } + custom_description = { + text = "hostage_already_travelling_tt" + subject = scope:actor + object = scope:recipient + scope:recipient = { + any_close_family_member = { + exists = var:hostage_travelling_to_warden + var:hostage_travelling_to_warden = scope:actor + } + } + } + } + OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic + is_landless_ruler = no + is_landless_administrative = yes + } + # Stop AI spamming hostage offers + trigger_if = { + limit = { + is_ai = yes + exists = scope:secondary_actor + } + NOT = { + scope:secondary_actor = { has_character_flag = ai_should_not_demand_hostage } + } + } + # Tooltip for players in case of no valid hostages to demand + # Make sure this exactly matches "can_be_picked" section below + trigger_else = { + scope:recipient = { + custom_description = { + text = "basic_valid_hostage_to_demand" + subject = scope:actor + object = scope:recipient + any_close_family_member = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + } + } + } + # Stop AI spamming hostage offers + trigger_if = { + limit = { + is_ai = yes + exists = scope:secondary_actor + } + NOT = { + scope:secondary_actor = { has_character_flag = ai_should_not_offer_hostage } + } + } + # Tooltip for players in case of no valid hostages to offer + trigger_else = { + custom_description = { + text = "basic_valid_hostage_to_offer" + object = scope:recipient + subject = scope:actor + any_close_family_member = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + } + } + } + scope:recipient = { + OR = { + is_landless_ruler = no + is_landless_administrative = yes + } + } + # Hostages still valid + trigger_if = { + limit = { + exists = scope:secondary_recipient + exists = scope:recipient + } + scope:secondary_recipient = { + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + } + trigger_if = { + limit = { + exists = scope:secondary_actor + exists = scope:actor + } + scope:secondary_actor = { + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + } + + on_send = { + scope:secondary_actor = { + add_character_flag = { + flag = under_offer_as_hostage_flag + months = 1 + } + } + scope:secondary_recipient = { + add_character_flag = { + flag = under_offer_as_hostage_flag + months = 1 + } + } + } + + can_send = { + scope:actor = { + trigger_if = { + limit = { is_ai = yes } + bp2_valid_to_exchange_hostage_ai_trigger = yes + # AI should not demand close family of players without their consent + NOR = { + scope:secondary_actor = { + any_close_family_member = { + is_ai = no + OR = { + is_parent_of = scope:secondary_actor + is_grandparent_of = scope:secondary_actor + } + this != scope:actor + } + } + scope:secondary_recipient = { + any_close_family_member = { + is_ai = no + OR = { + is_parent_of = scope:secondary_recipient + is_grandparent_of = scope:secondary_recipient + } + this != scope:recipient + } + } + # A hostage died on their watch + var:hostage_died ?= scope:recipient + } + } + } + scope:secondary_actor = { + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Adult hostages must be loyal enough to go along with it + trigger_if = { + limit = { is_adult = yes } + OR = { + AND = { + custom_tooltip = { + text = hostage_opinion_too_low_tt + opinion = { + target = scope:actor + value >= -25 + } + NOT = { has_trait = disloyal } + } + } + has_trait = loyal + } + } + } + scope:secondary_recipient = { + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Adult hostages must be loyal enough to go along with it + trigger_if = { + limit = { is_adult = yes } + OR = { + AND = { + custom_tooltip = { + text = hostage_opinion_too_low_tt + opinion = { + target = scope:recipient + value >= -25 + } + NOT = { has_trait = disloyal } + } + } + has_trait = loyal + } + } + } + } + + # whether a character can be picked for the interaction, interface only (e.g. picking the first character in the marriage interaction) + # in character scope, actor and recipient event targets can be used, but not the secondary characters (because none exist yet) + can_be_picked = { + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { exists = var:hostage_travelling_to_warden } + } + } + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = hostage_sender_1 } + scope:secondary_actor = { save_scope_as = hostage_1 } + scope:recipient = { save_scope_as = hostage_sender_2 } + scope:secondary_recipient = { save_scope_as = hostage_2 } + custom_description_no_bullet = { text = hostage_pacts_on_arrival_tt } + custom_description_no_bullet = { text = hostage_execution_warning_tt } + custom_description_no_bullet = { text = hostage_attack_warning_tt } + hostage_depart_effect = { + HOSTAGE = scope:hostage_1 + WARDEN = scope:hostage_sender_2 + HOME_COURT = scope:hostage_sender_1 + } + hostage_depart_effect = { + HOSTAGE = scope:hostage_2 + WARDEN = scope:hostage_sender_1 + HOME_COURT = scope:hostage_sender_2 + } + scope:actor = { trigger_event = char_interaction.0332 } + # If we're of the same clan this interaction affects unity + if = { + limit = { + scope:actor = { government_has_flag = government_is_clan } + scope:actor.house = scope:recipient.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_hostage.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + scope:actor.house = { + change_house_relation_effect = { + HOUSE = scope:recipient.house + VALUE = house_relation_improve_medium_value + REASON = hostage_exchange + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0311 + } + scope:secondary_actor = { remove_character_flag = under_offer_as_hostage_flag } + scope:secondary_recipient = { remove_character_flag = under_offer_as_hostage_flag } + } + + # AI + ai_accept = { + base = -25 + + ######## PERSONALITY + + bp2_hostage_exchange_personality_modifier = yes + + ######### OPINION + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = -0.1 + desc = AI_OPINION_REASON + } + + ######### RELATIONS + + bp2_hostage_relation_modifier = yes + + + ######### DREAD + + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + ######### HOSTAGE IMPORTANCE + + + modifier = { + exists = scope:secondary_actor + NOT = { exists = scope:secondary_recipient } + add = interaction_actor_hostage_value + desc = HOSTAGE_VALUE_ACTOR_REASON + } + modifier = { + NOT = { exists = scope:secondary_actor } + exists = scope:secondary_recipient + add = interaction_recipient_hostage_value # already negative + desc = HOSTAGE_VALUE_RECIPIENT_REASON + } + + ######### RELATIVE POWER + + bp2_hostage_tier_neighbor_modifier = { # Realm relative position + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { # Desire for land/war + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { + desc = HOSTAGE_IMMINENT_THREAT_REASON + scope:actor = { has_any_cb_on = scope:recipient } + scope:actor.current_strength_with_allies_fifty_percent_value > scope:recipient.current_strength_with_allies_value + add = 25 + } + + ######### CULTURAL DIFFERENCES + + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL TRADITIONS + + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + desc = HOSTAGE_EQUITABLE_TRADITION_REASON + } + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + desc = HOSTAGE_ESTEEMED_HOSPITALITY_TRADITION_REASON + } + modifier = { + scope:recipient = { + is_vassal_of = scope:actor + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_LOYAL_SUBJECTS_TRADITION_REASON + } + + ######### OTHER + + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Already have a truce + scope:actor ?= { has_truce = scope:recipient } + desc = HOSTAGE_ACTOR_EXISTING_TRUCE_REASON + add = -20 + } + modifier = { # Already fighting a war + scope:recipient ?= { is_at_war = yes } + desc = HOSTAGE_AT_WAR_REASON + add = 15 + } + modifier = { # Already have your hostage + scope:recipient = { + any_warden_hostage = { home_court ?= scope:actor } + } + desc = HOSTAGE_ALREADY_OFFERED_REASON + add = 50 + } + modifier = { + add = -50 + scope:actor = { has_character_modifier = attacked_warden } + desc = attacked_warden + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:actor = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { + scope:hook = yes + add = 40 + desc = SCHEME_WEAK_HOOK_USED + } + modifier = { + scope:secondary_recipient ?= { is_adult = no } + scope:actor = { has_character_flag = halved_hostage_prestige_income } + desc = HOSTAGE_RETAINED_ADULTHOOD_REASON + add = -25 + } + modifier = { # Conqueror + scope:recipient ?= { + has_variable = conqueror + } + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + add = -1000 + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = vassals + max = 10 + } + + ai_targets = { + ai_recipients = liege + } + + ai_target_quick_trigger = { + adult = yes + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 360 + kingdom = 120 + empire = 36 + hegemony = 36 + } + + ai_potential = { + is_adult = yes + highest_held_title_tier >= tier_county + NOT = { has_variable = conqueror } + } + + ai_will_do = { + base = 0 + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:actor + opinion_target = scope:secondary_actor + multiplier = -0.1 + desc = AI_OPINION_REASON + } + bp2_hostage_tier_neighbor_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { # The AI will only use a Hook if they couldn't otherwise do this + scope:hook = yes + add = -1 + } + modifier = { # Attacked a hostage's warden + add = -50 + scope:recipient = { has_character_modifier = attacked_warden } + desc = attacked_warden + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:recipient = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Not neighboring + NOR = { + scope:recipient = { + character_is_land_realm_neighbor = scope:actor + top_liege = scope:actor.top_liege + } + } + add = -50 + } + modifier = { + scope:recipient = { has_character_flag = halved_hostage_prestige_income } + desc = HOSTAGE_RETAINED_ADULTHOOD_REASON + add = -25 + } + # Cultural traditions + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + } + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + } + modifier = { + scope:actor = { + is_vassal_of = scope:recipient + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_CULTURAL_TRADITION_REASON + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no + greeting = positive +} + +### Return hostage - unilateral +# actor = warden +# recipient = home_court +# secondary_actor = hostage +return_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + + desc = return_hostage_interaction_desc + + populate_recipient_list = { + scope:actor = { + every_warden_hostage = { + limit = { home_court ?= scope:recipient } + add_to_list = characters + } + } + } + + cost = {} + + is_shown = { + # Cannot return hostages to self + scope:recipient != scope:actor + # Must have a hostage + OR = { + scope:actor = { + any_warden_hostage = { home_court ?= scope:recipient } + } + scope:recipient.warden ?= scope:actor + } + } + + redirect = { + if = { + limit = { + scope:recipient.warden ?= scope:actor + } + scope:recipient = { save_scope_as = secondary_recipient } + scope:recipient.home_court = { save_scope_as = recipient } + } + } + + is_valid_showing_failures_only = { + NOR = { + # Must be at peace + scope:recipient = { is_at_war_with = scope:actor } + # Only family oriented governments use hostages + scope:actor = { + OR = { + government_has_flag = government_is_theocracy + government_has_flag = government_is_landless_adventurer + } + } + scope:recipient = { + OR = { + government_has_flag = government_is_theocracy + government_has_flag = government_is_landless_adventurer + } + } + } + } + + # whether a character can be picked for the interaction, interface only (e.g. picking the first character in the marriage interaction) + # in character scope, actor and recipient event targets can be used, but not the secondary characters (because none exist yet) + can_be_picked = {} + + can_send = { + NOT = { + scope:actor = { is_at_war_with = scope:recipient } + } + } + + on_send = {} + + auto_accept = yes + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = warden } + scope:recipient = { save_scope_as = home_court } + scope:secondary_recipient = { save_scope_as = hostage } + # Send toast informing sender of acceptance + scope:home_court = { + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_good + title = return_hostage_interaction_notification + left_icon = scope:hostage + right_icon = scope:warden + show_as_tooltip = { + bp2_return_hostage_effect = { HOSTAGE = scope:hostage } + } + } + } + } + scope:warden = { + send_interface_toast = { + type = event_toast_effect_neutral + title = return_hostage_interaction_notification + left_icon = scope:hostage + right_icon = scope:home_court + show_as_tooltip = { + bp2_return_hostage_effect = { HOSTAGE = scope:hostage } + } + } + if = { + limit = { has_character_flag = flag_hostile_actions_disabled_delay } + remove_character_flag = flag_hostile_actions_disabled_delay + } + } + # Notify home court with letter event + scope:home_court = { + trigger_event = { id = char_interaction.0320 } + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = vassals + ai_recipients = liege + ai_recipients = family # Redirects + } + + ai_frequency_by_tier = { + barony = 0 + county = 60 + duchy = 36 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + ai_will_do = { + base = 0 + modifier = { + NOR = { + # Alliances + is_allied_to = scope:recipient + is_spouse_of = scope:recipient + # Protected by liege + AND = { + OR = { + top_liege != this + scope:recipient = { top_liege != this } + } + top_liege != scope:recipient.top_liege + } + # Adult hostage been here awhile and we are not in immiment danger + AND = { + any_warden_hostage = { + age >= 20 + hostage_duration = { years >= 5 } + } + NOT = { + scope:recipient = { + has_any_cb_on = scope:actor + scope:recipient.current_strength_with_allies_fifty_percent_value > scope:actor.current_strength_with_allies_value + } + } + } + } + factor = 0 + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + modifier = { + add = 25 + scope:actor = { + has_any_cb_on = scope:recipient + scope:actor.current_strength_with_allies_fifty_percent_value > scope:recipient.current_strength_with_allies_value + } + } + modifier = { + scope:recipient = { + OR = { + is_allied_to = scope:actor + is_spouse_of = scope:recipient + } + } + add = 50 + } + modifier = { + scope:recipient = { + has_any_cb_on = scope:actor + scope:recipient.current_strength_with_allies_fifty_percent_value > scope:actor.current_strength_with_allies_value + } + add = -50 + } + bp2_hostage_return_personality_modifier = { + WARDEN = scope:actor + HOME_COURT = scope:recipient + } + # Cultural traditions + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + } + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + } + modifier = { + scope:actor = { + is_vassal_of = scope:recipient + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_CULTURAL_TRADITION_REASON + } + #DO NOT SEND BACK FRANKOKRATIA CLAIMANT + modifier = { + scope:hostage ?= { + has_character_flag = byz_claimant_flag + } + exists = global_var:byz_claimant_champion + factor = 0 + } + } + + send_options_exclusive = no + + show_effects_in_notification = no + greeting = positive + + notification_text = { + } +} + +### Recall hostage - bilateral +# actor = home_court +# recipient = warden +# secondary_recipient = hostage +recall_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + + desc = recall_hostage_interaction_desc + + populate_recipient_list = { + scope:actor = { + every_home_court_hostage = { + limit = { warden ?= scope:recipient } + add_to_list = characters + } + } + } + + cost = {} + + is_shown = { + # AI don't use this interaction at all + scope:actor = { is_ai = no } + # Cannot recall hostages from self + scope:recipient != scope:actor + # Must have a hostage + OR = { + scope:actor = { + any_home_court_hostage = { warden ?= scope:recipient } + } + scope:recipient.home_court ?= scope:actor + } + } + + redirect = { + if = { + limit = { + scope:recipient.home_court ?= scope:actor + } + scope:recipient = { save_scope_as = secondary_recipient } + scope:recipient.warden = { save_scope_as = recipient } + } + } + + is_valid_showing_failures_only = { + NOR = { + # Must be at peace + scope:recipient = { is_at_war_with = scope:actor } + # Only family oriented governments use hostages + scope:actor = { government_has_flag = government_is_theocracy } + scope:recipient = { government_has_flag = government_is_theocracy } + } + } + + # whether a character can be picked for the interaction, interface only (e.g. picking the first character in the marriage interaction) + # in character scope, actor and recipient event targets can be used, but not the secondary characters (because none exist yet) + can_be_picked = {} + + can_send = { + NOT = { + scope:actor = { is_at_war_with = scope:recipient } + } + } + + on_send = {} + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = home_court } + scope:recipient = { save_scope_as = warden } + scope:secondary_recipient = { save_scope_as = hostage } + # Send toast informing sender of acceptance + scope:warden = { + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = recall_hostage_interaction_notification + left_icon = scope:hostage + right_icon = scope:home_court + show_as_tooltip = { + bp2_return_hostage_effect = { HOSTAGE = scope:hostage } + } + } + } + } + scope:home_court = { + send_interface_toast = { + type = event_toast_effect_good + title = recall_hostage_interaction_notification + left_icon = scope:hostage + right_icon = scope:warden + show_as_tooltip = { + bp2_return_hostage_effect = { HOSTAGE = scope:hostage } + } + } + if = { + limit = { has_character_flag = flag_hostile_actions_disabled_delay } + remove_character_flag = flag_hostile_actions_disabled_delay + } + } + # Notify home court with letter event + scope:home_court = { trigger_event = char_interaction.0340 } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0341 + } + } + + ai_accept = { + base = 0 + + ######### PERSONALITY + + bp2_hostage_return_personality_modifier = { + HOME_COURT = scope:actor + WARDEN = scope:recipient + } + + ######### OPINION + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = -0.1 + desc = AI_OPINION_REASON + } + + ######### RELATIONS + + bp2_hostage_relation_modifier = yes + + ######### DREAD + + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + ######### HOSTAGE IMPORTANCE + + modifier = { + exists = scope:secondary_recipient + add = interaction_recipient_hostage_value + desc = HOSTAGE_VALUE_RECIPIENT_REASON + } + + ######### HOSTAGE TIME + + modifier = { # Hostage is grown up + add = 25 + scope:secondary_recipient = { is_adult = yes } + desc = HOSTAGE_ADULT_REASON + } + modifier = { # Time as a hostage + add = -25 + scope:secondary_recipient = { + hostage_duration = { years < 1 } + } + desc = HOSTAGE_MINIMUM_STAY_REASON + } + modifier = { # Time as a hostage + add = { + value = 10 + scope:secondary_recipient = { + if = { + limit = { + hostage_duration = { years >= 3 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 4 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 5 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 6 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 7 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 8 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 9 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 10 } + } + add = 10 + } + } + } + scope:secondary_recipient = { + hostage_duration = { years >= 2 } + } + desc = HOSTAGE_DURATION_REASON + } + + ######### RELATIVE POWER + + bp2_hostage_recall_tier_neighbor_modifier = { # Realm relative position + RECALLER = scope:actor + WARDEN = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { # Desire for land/war + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_recall_vassals_lieges_modifier = { # Political situation + RECALLER = scope:actor + WARDEN = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:recipient + RECEIVER = scope:actor + } + modifier = { + desc = HOSTAGE_IMMINENT_THREAT_REASON + scope:actor = { has_any_cb_on = scope:recipient } + scope:actor.current_strength_with_allies_fifty_percent_value > scope:recipient.current_strength_with_allies_value + add = -25 + } + + ######### CULTURAL DIFFERENCES + + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL TRADITIONS + + modifier = { + scope:recipient = { + culture = { has_cultural_tradition = tradition_equitable } + NOT = { + any_home_court_hostage = { warden = scope:actor } + } + } + scope:secondary_recipient = { + hostage_duration = { years >= 2 } + } + add = 25 + desc = HOSTAGE_EQUITABLE_TRADITION_REASON + } + modifier = { + scope:recipient = { + culture = { has_cultural_tradition = tradition_esteemed_hospitality } + NOT = { + any_home_court_hostage = { warden = scope:actor } + } + } + scope:secondary_recipient = { + hostage_duration = { years >= 2 } + } + add = 25 + desc = HOSTAGE_ESTEEMED_HOSPITALITY_TRADITION_REASON + } + modifier = { + scope:recipient = { + is_vassal_of = scope:actor + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + scope:secondary_recipient = { + hostage_duration = { years >= 2 } + } + add = 25 + desc = HOSTAGE_LOYAL_SUBJECTS_TRADITION_REASON + } + + ######### OTHER + + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Already have a truce + scope:actor ?= { has_truce = scope:recipient } + desc = HOSTAGE_ACTOR_EXISTING_TRUCE_REASON + add = 20 + } + modifier = { # Already fighting a war + scope:recipient ?= { is_at_war = yes } + desc = HOSTAGE_AT_WAR_REASON + add = -25 + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:actor = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { + scope:hook = yes + add = 40 + desc = SCHEME_WEAK_HOOK_USED + } + modifier = { # Has my hostage + add = -50 + scope:recipient = { + any_home_court_hostage = { warden = scope:actor } + } + desc = HOSTAGE_HAS_MINE_REASON + } + #DO NOT SEND BACK FRANKOKRATIA CLAIMANT + modifier = { + desc = crusading_claim_cb_reason + scope:hostage = { + has_character_flag = byz_claimant_flag + } + exists = global_var:byz_claimant_champion + add = -5000 + } + } + + auto_accept = { + trigger_if = { + limit = { + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + trigger_else = { always = no } + } + + can_be_blocked = { + custom_description = { #Hook from Recipient can counteract, but only if Actor is not forcing the action via Strong Hook. + text = "spending_hook" + subject = scope:recipient + object = scope:actor + scope:recipient = { has_hook = scope:actor } + NAND = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + on_blocked_effect = { + scope:recipient = { + remove_hook = { target = scope:actor } + } + } + + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + show_effects_in_notification = yes + greeting = positive + + notification_text = RECALL_HOSTAGE_PROPOSAL +} + +### Trait interaction for guardians +# actor = guardian +# recipient = ward/hostage +# This has to be update every time a new trait is added to the game, otherwise you won't be able to pass it down +influence_child_personality_interaction = { + category = interaction_category_friendly + common_interaction = yes + interface_priority = 60 + icon = child + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + pre_answer_maybe_key = ANSWER_MIGHT_SUCCEED + pre_answer_no_key = ANSWER_CANT_SUCCEED + pre_answer_yes_key = ANSWER_WILL_SUCCEED + pre_answer_maybe_breakdown_key = ANSWER_SUM_CHANCE + + desc = influence_child_personality_interaction_desc + + is_shown = { #any ai ward/hostage + has_bp2_dlc_trigger = yes + scope:recipient = { + is_ai = yes + is_adult = no + OR = { + scope:actor = { has_relation_ward = scope:recipient } + is_hostage_of = scope:actor + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { #be old enough to talk and have some room for new personlaity traits + age >= 4 + custom_description = { + text = influence_child_personality_interaction_trait_limit + number_of_personality_traits < 4 + } + #checking all trait individually through the set scope in order to catch if all of your traits are either the same or opposite + custom_description = { + text = influence_child_personality_interaction_all_same_traits + switch = { + trigger = yes + scope:lustful = { + scope:recipient = { NOT = { has_trait = lustful } } + } + scope:chaste = { + scope:recipient = { NOT = { has_trait = chaste } } + } + scope:gluttonous = { + scope:recipient = { NOT = { has_trait = gluttonous } } + } + scope:temperate = { + scope:recipient = { NOT = { has_trait = temperate } } + } + scope:greedy = { + scope:recipient = { NOT = { has_trait = greedy } } + } + scope:generous = { + scope:recipient = { NOT = { has_trait = generous } } + } + scope:lazy = { + scope:recipient = { NOT = { has_trait = lazy } } + } + scope:diligent = { + scope:recipient = { NOT = { has_trait = diligent } } + } + scope:wrathful = { + scope:recipient = { NOT = { has_trait = wrathful } } + } + scope:calm = { + scope:recipient = { NOT = { has_trait = calm } } + } + scope:patient = { + scope:recipient = { NOT = { has_trait = patient } } + } + scope:impatient = { + scope:recipient = { NOT = { has_trait = impatient } } + } + scope:arrogant = { + scope:recipient = { NOT = { has_trait = arrogant } } + } + scope:humble = { + scope:recipient = { NOT = { has_trait = humble } } + } + scope:deceitful = { + scope:recipient = { NOT = { has_trait = deceitful } } + } + scope:honest = { + scope:recipient = { NOT = { has_trait = honest } } + } + scope:craven = { + scope:recipient = { NOT = { has_trait = craven } } + } + scope:brave = { + scope:recipient = { NOT = { has_trait = brave } } + } + scope:shy = { + scope:recipient = { NOT = { has_trait = shy } } + } + scope:gregarious = { + scope:recipient = { NOT = { has_trait = gregarious } } + } + scope:ambitious = { + scope:recipient = { NOT = { has_trait = ambitious } } + } + scope:content = { + scope:recipient = { NOT = { has_trait = content } } + } + scope:arbitrary = { + scope:recipient = { NOT = { has_trait = arbitrary } } + } + scope:just = { + scope:recipient = { NOT = { has_trait = just } } + } + scope:cynical = { + scope:recipient = { NOT = { has_trait = cynical } } + } + scope:zealous = { + scope:recipient = { NOT = { has_trait = zealous } } + } + scope:paranoid = { + scope:recipient = { NOT = { has_trait = paranoid } } + } + scope:trusting = { + scope:recipient = { NOT = { has_trait = trusting } } + } + scope:compassionate = { + scope:recipient = { NOT = { has_trait = compassionate } } + } + scope:callous = { + scope:recipient = { NOT = { has_trait = callous } } + } + scope:sadistic = { + scope:recipient = { NOT = { has_trait = sadistic } } + } + scope:stubborn = { + scope:recipient = { NOT = { has_trait = stubborn } } + } + scope:fickle = { + scope:recipient = { NOT = { has_trait = fickle } } + } + scope:eccentric = { + scope:recipient = { NOT = { has_trait = eccentric } } + } + scope:vengeful = { + scope:recipient = { NOT = { has_trait = vengeful } } + } + scope:forgiving = { + scope:recipient = { NOT = { has_trait = forgiving } } + } + } + } + } + scope:actor = { + is_adult = yes + number_of_personality_traits >= 1 #just in case you have to have at least some personality + } + } + + cooldown_against_recipient = { years = 3 } + + can_send = { + } + #each option is shown if the actor has the corresponding trait and valid if recipient don't have it yet or don't have an opposite trait + send_option = { + is_shown = { + scope:actor = { has_trait = lustful } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = lustful + trait:lustful = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + has_sexuality = none + has_sexuality = asexual + } + } + } + flag = lustful + localization = trait_lustful + } + send_option = { + is_shown = { + scope:actor = { has_trait = chaste } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = chaste + trait:chaste = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + has_sexuality = none + has_sexuality = asexual + } + } + } + flag = chaste + localization = trait_chaste + } + send_option = { + is_shown = { + scope:actor = { has_trait = gluttonous } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = gluttonous + trait:gluttonous = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = gluttonous + localization = trait_gluttonous + } + send_option = { + is_shown = { + scope:actor = { has_trait = temperate } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = temperate + trait:temperate = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = temperate + localization = trait_temperate + } + send_option = { + is_shown = { + scope:actor = { has_trait = greedy } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = greedy + trait:greedy = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = greedy + localization = trait_greedy + } + send_option = { + is_shown = { + scope:actor = { has_trait = generous } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = generous + trait:generous = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = generous + localization = trait_generous + } + send_option = { + is_shown = { + scope:actor = { has_trait = lazy } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = lazy + trait:lazy = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = lazy + localization = trait_lazy + } + send_option = { + is_shown = { + scope:actor = { has_trait = diligent } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = diligent + trait:diligent = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = diligent + localization = trait_diligent + } + send_option = { + is_shown = { + scope:actor = { has_trait = wrathful } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = wrathful + trait:wrathful = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = wrathful + localization = trait_wrathful + } + send_option = { + is_shown = { + scope:actor = { has_trait = calm } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = calm + trait:calm = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = calm + localization = trait_calm + } + send_option = { + is_shown = { + scope:actor = { has_trait = patient } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = patient + trait:patient = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = patient + localization = trait_patient + } + send_option = { + is_shown = { + scope:actor = { has_trait = impatient } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = impatient + trait:impatient = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = impatient + localization = trait_impatient + } + send_option = { + is_shown = { + scope:actor = { has_trait = arrogant } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = arrogant + trait:arrogant = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = arrogant + localization = trait_arrogant + } + send_option = { + is_shown = { + scope:actor = { has_trait = humble } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = humble + trait:humble = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = humble + localization = trait_humble + } + send_option = { + is_shown = { + scope:actor = { has_trait = deceitful } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = deceitful + trait:deceitful = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = deceitful + localization = trait_deceitful + } + send_option = { + is_shown = { + scope:actor = { has_trait = honest } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = honest + trait:honest = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = honest + localization = trait_honest + } + send_option = { + is_shown = { + scope:actor = { has_trait = craven } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = craven + trait:craven = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = craven + localization = trait_craven + } + send_option = { + is_shown = { + scope:actor = { has_trait = brave } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = brave + trait:brave = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = brave + localization = trait_brave + } + send_option = { + is_shown = { + scope:actor = { has_trait = shy } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = shy + trait:shy = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = shy + localization = trait_shy + } + send_option = { + is_shown = { + scope:actor = { has_trait = gregarious } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = gregarious + trait:gregarious = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = gregarious + localization = trait_gregarious + } + send_option = { + is_shown = { + scope:actor = { has_trait = ambitious } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = ambitious + trait:ambitious = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = ambitious + localization = trait_ambitious + } + send_option = { + is_shown = { + scope:actor = { has_trait = content } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = content + trait:content = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = content + localization = trait_content + } + send_option = { + is_shown = { + scope:actor = { has_trait = arbitrary } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = arbitrary + trait:arbitrary = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = arbitrary + localization = trait_arbitrary + } + send_option = { + is_shown = { + scope:actor = { has_trait = just } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = just + trait:just = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = just + localization = trait_just + } + send_option = { + is_shown = { + scope:actor = { has_trait = cynical } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = cynical + trait:cynical = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = cynical + localization = trait_cynical + } + send_option = { + is_shown = { + scope:actor = { has_trait = zealous } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = zealous + trait:zealous = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = zealous + localization = trait_zealous + } + send_option = { + is_shown = { + scope:actor = { has_trait = paranoid } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = paranoid + trait:paranoid = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = paranoid + localization = trait_paranoid + } + send_option = { + is_shown = { + scope:actor = { has_trait = trusting } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = trusting + trait:trusting = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = trusting + localization = trait_trusting + } + send_option = { + is_shown = { + scope:actor = { has_trait = compassionate } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = compassionate + trait:compassionate = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = compassionate + localization = trait_compassionate + } + send_option = { + is_shown = { + scope:actor = { has_trait = callous } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = callous + trait:callous = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = callous + localization = trait_callous + } + send_option = { + is_shown = { + scope:actor = { has_trait = sadistic } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = sadistic + trait:sadistic = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = sadistic + localization = trait_sadistic + } + send_option = { + is_shown = { + scope:actor = { has_trait = stubborn } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = stubborn + trait:stubborn = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = stubborn + localization = trait_stubborn + } + send_option = { + is_shown = { + scope:actor = { has_trait = fickle } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = fickle + trait:fickle = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = fickle + localization = trait_fickle + } + send_option = { + is_shown = { + scope:actor = { has_trait = eccentric } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = eccentric + trait:eccentric = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = eccentric + localization = trait_eccentric + } + send_option = { + is_shown = { + scope:actor = { has_trait = vengeful } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = vengeful + trait:vengeful = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = vengeful + localization = trait_vengeful + } + send_option = { + is_shown = { + scope:actor = { has_trait = forgiving } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = forgiving + trait:forgiving = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = forgiving + localization = trait_forgiving + } + + send_options_exclusive = yes + + on_send = { + switch = {#save which trait was chosen as scope:target_trait + trigger = yes + scope:lustful = { + trait:lustful = { save_scope_as = target_trait } + } + scope:chaste = { + trait:chaste = { save_scope_as = target_trait } + } + scope:gluttonous = { + trait:gluttonous = { save_scope_as = target_trait } + } + scope:temperate = { + trait:temperate = { save_scope_as = target_trait } + } + scope:greedy = { + trait:greedy = { save_scope_as = target_trait } + } + scope:generous = { + trait:generous = { save_scope_as = target_trait } + } + scope:lazy = { + trait:lazy = { save_scope_as = target_trait } + } + scope:diligent = { + trait:diligent = { save_scope_as = target_trait } + } + scope:wrathful = { + trait:wrathful = { save_scope_as = target_trait } + } + scope:calm = { + trait:calm = { save_scope_as = target_trait } + } + scope:patient = { + trait:patient = { save_scope_as = target_trait } + } + scope:impatient = { + trait:impatient = { save_scope_as = target_trait } + } + scope:arrogant = { + trait:arrogant = { save_scope_as = target_trait } + } + scope:humble = { + trait:humble = { save_scope_as = target_trait } + } + scope:deceitful = { + trait:deceitful = { save_scope_as = target_trait } + } + scope:honest = { + trait:honest = { save_scope_as = target_trait } + } + scope:craven = { + trait:craven = { save_scope_as = target_trait } + } + scope:brave = { + trait:brave = { save_scope_as = target_trait } + } + scope:shy = { + trait:shy = { save_scope_as = target_trait } + } + scope:gregarious = { + trait:gregarious = { save_scope_as = target_trait } + } + scope:ambitious = { + trait:ambitious = { save_scope_as = target_trait } + } + scope:content = { + trait:content = { save_scope_as = target_trait } + } + scope:arbitrary = { + trait:arbitrary = { save_scope_as = target_trait } + } + scope:just = { + trait:just = { save_scope_as = target_trait } + } + scope:cynical = { + trait:cynical = { save_scope_as = target_trait } + } + scope:zealous = { + trait:zealous = { save_scope_as = target_trait } + } + scope:paranoid = { + trait:paranoid = { save_scope_as = target_trait } + } + scope:trusting = { + trait:trusting = { save_scope_as = target_trait } + } + scope:compassionate = { + trait:compassionate = { save_scope_as = target_trait } + } + scope:callous = { + trait:callous = { save_scope_as = target_trait } + } + scope:sadistic = { + trait:sadistic = { save_scope_as = target_trait } + } + scope:stubborn = { + trait:stubborn = { save_scope_as = target_trait } + } + scope:fickle = { + trait:fickle = { save_scope_as = target_trait } + } + scope:eccentric = { + trait:eccentric = { save_scope_as = target_trait } + } + scope:vengeful = { + trait:vengeful = { save_scope_as = target_trait } + } + scope:forgiving = { + trait:forgiving = { save_scope_as = target_trait } + } + fallback = { + scope:actor = { + random_character_trait = { + limit = { has_trait_category = personality } + save_scope_as = target_trait + } + } + } + } + } + + on_accept = { + scope:actor = { + # Trait you're trying to make your ward gained is saved as scope:target_trait + trigger_event = bp2_character_interaction.1001 + show_as_tooltip = { + add_prestige = minor_prestige_loss + add_stress = minor_stress_gain + add_opinion = { + target = scope:recipient + modifier = pleased_opinion + opinion = 20 + } + } + } + scope:recipient = { + show_as_tooltip = { + switch = {#save which trait was chosen as scope:target_trait + trigger = yes + scope:lustful = { + trait:lustful = { save_scope_as = target_trait } + } + scope:chaste = { + trait:chaste = { save_scope_as = target_trait } + } + scope:gluttonous = { + trait:gluttonous = { save_scope_as = target_trait } + } + scope:temperate = { + trait:temperate = { save_scope_as = target_trait } + } + scope:greedy = { + trait:greedy = { save_scope_as = target_trait } + } + scope:generous = { + trait:generous = { save_scope_as = target_trait } + } + scope:lazy = { + trait:lazy = { save_scope_as = target_trait } + } + scope:diligent = { + trait:diligent = { save_scope_as = target_trait } + } + scope:wrathful = { + trait:wrathful = { save_scope_as = target_trait } + } + scope:calm = { + trait:calm = { save_scope_as = target_trait } + } + scope:patient = { + trait:patient = { save_scope_as = target_trait } + } + scope:impatient = { + trait:impatient = { save_scope_as = target_trait } + } + scope:arrogant = { + trait:arrogant = { save_scope_as = target_trait } + } + scope:humble = { + trait:humble = { save_scope_as = target_trait } + } + scope:deceitful = { + trait:deceitful = { save_scope_as = target_trait } + } + scope:honest = { + trait:honest = { save_scope_as = target_trait } + } + scope:craven = { + trait:craven = { save_scope_as = target_trait } + } + scope:brave = { + trait:brave = { save_scope_as = target_trait } + } + scope:shy = { + trait:shy = { save_scope_as = target_trait } + } + scope:gregarious = { + trait:gregarious = { save_scope_as = target_trait } + } + scope:ambitious = { + trait:ambitious = { save_scope_as = target_trait } + } + scope:content = { + trait:content = { save_scope_as = target_trait } + } + scope:arbitrary = { + trait:arbitrary = { save_scope_as = target_trait } + } + scope:just = { + trait:just = { save_scope_as = target_trait } + } + scope:cynical = { + trait:cynical = { save_scope_as = target_trait } + } + scope:zealous = { + trait:zealous = { save_scope_as = target_trait } + } + scope:paranoid = { + trait:paranoid = { save_scope_as = target_trait } + } + scope:trusting = { + trait:trusting = { save_scope_as = target_trait } + } + scope:compassionate = { + trait:compassionate = { save_scope_as = target_trait } + } + scope:callous = { + trait:callous = { save_scope_as = target_trait } + } + scope:sadistic = { + trait:sadistic = { save_scope_as = target_trait } + } + scope:stubborn = { + trait:stubborn = { save_scope_as = target_trait } + } + scope:fickle = { + trait:fickle = { save_scope_as = target_trait } + } + scope:eccentric = { + trait:eccentric = { save_scope_as = target_trait } + } + scope:vengeful = { + trait:vengeful = { save_scope_as = target_trait } + } + scope:forgiving = { + trait:forgiving = { save_scope_as = target_trait } + } + } + if = { + limit = { exists = scope:target_trait } + add_trait = scope:target_trait + } + add_opinion = { + target = scope:actor + modifier = admiration_opinion + opinion = 20 + } + } + } + } + + on_decline = { + scope:actor = { + # Trait you're trying to make your ward gained is saved as scope:target_trait + trigger_event = bp2_character_interaction.1002 + show_as_tooltip = { + add_prestige = minor_prestige_loss + add_stress = medium_stress_gain + add_opinion = { + target = scope:recipient + modifier = disappointed_opinion + opinion = -20 + } + } + } + scope:recipient = { + show_as_tooltip = { + add_opinion = { + target = scope:actor + modifier = confused_opinion + opinion = -20 + } + } + } + } + + auto_accept = no + + ai_accept = { + base = 0 # Try to make it 0 for most interactions + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + + modifier = { # Perk boost + desc = influence_children_groomed_to_rule_perk_tt + trigger = { + scope:actor = { has_perk = groomed_to_rule_perk } + } + add = groomed_to_rule_value + } + + modifier = { #more likely if you already have something in common + add = { + value = 5 + if = { + limit = { + number_of_personality_traits_in_common = { + target = scope:recipient + value = 2 + } + } + multiply = 2 + } + else_if = { + limit = { + number_of_personality_traits_in_common = { + target = scope:recipient + value = 3 + } + } + multiply = 3 + } + } + number_of_personality_traits_in_common = { + target = scope:recipient + value >= 1 + } + desc = we_are_alike_tt + } + + modifier = { #less likely if you already have opposite traits + add = { + value = -5 + if = { + limit = { + scope:recipient = { + number_of_opposing_personality_traits = { + target = scope:actor + value = 2 + } + } + } + multiply = 2 + } + else_if = { + limit = { + scope:recipient = { + number_of_opposing_personality_traits = { + target = scope:actor + value = 3 + } + } + } + multiply = 3 + } + } + scope:recipient = { + number_of_opposing_personality_traits = { + target = scope:actor + value >= 1 + } + } + desc = we_are_NOT_alike_tt + } + + modifier = { #adding your knowledge + add = { + value = scope:actor.learning + multiply = 0.5 + } + desc = HAS_LEARNING_SKILL_REASON + } + + modifier = { #adding your oratory skills + add = { + value = scope:actor.diplomacy + multiply = 0.5 + } + desc = HAS_DIPLOMACY_SKILL_REASON + } + + modifier = { #more likely with a Wet Nurse employed + exists = scope:actor.court_position:wet_nurse_court_position + add = 10 + desc = HAS_WET_NURSE_REASON + } + + modifier = { #more likely if chosen trait is a virtue in recipients faith + add = 10 + switch = { + trigger = yes + scope:sadistic = { + scope:recipient.faith = { + trait_is_virtue = trait:sadistic + } + } + scope:lustful = { + scope:recipient.faith = { + trait_is_virtue = trait:lustful + } + } + scope:chaste = { + scope:recipient.faith = { + trait_is_virtue = trait:chaste + } + } + scope:gluttonous = { + scope:recipient.faith = { + trait_is_virtue = trait:gluttonous + } + } + scope:temperate = { + scope:recipient.faith = { + trait_is_virtue = trait:temperate + } + } + scope:greedy = { + scope:recipient.faith = { + trait_is_virtue = trait:greedy + } + } + scope:generous = { + scope:recipient.faith = { + trait_is_virtue = trait:generous + } + } + scope:lazy = { + scope:recipient.faith = { + trait_is_virtue = trait:lazy + } + } + scope:diligent = { + scope:recipient.faith = { + trait_is_virtue = trait:diligent + } + } + scope:wrathful = { + scope:recipient.faith = { + trait_is_virtue = trait:wrathful + } + } + scope:calm = { + scope:recipient.faith = { + trait_is_virtue = trait:calm + } + } + scope:patient = { + scope:recipient.faith = { + trait_is_virtue = trait:patient + } + } + scope:impatient = { + scope:recipient.faith = { + trait_is_virtue = trait:impatient + } + } + scope:arrogant = { + scope:recipient.faith = { + trait_is_virtue = trait:arrogant + } + } + scope:humble = { + scope:recipient.faith = { + trait_is_virtue = trait:humble + } + } + scope:deceitful = { + scope:recipient.faith = { + trait_is_virtue = trait:deceitful + } + } + scope:honest = { + scope:recipient.faith = { + trait_is_virtue = trait:honest + } + } + scope:craven = { + scope:recipient.faith = { + trait_is_virtue = trait:craven + } + } + scope:brave = { + scope:recipient.faith = { + trait_is_virtue = trait:brave + } + } + scope:shy = { + scope:recipient.faith = { + trait_is_virtue = trait:shy + } + } + scope:gregarious = { + scope:recipient.faith = { + trait_is_virtue = trait:gregarious + } + } + scope:ambitious = { + scope:recipient.faith = { + trait_is_virtue = trait:ambitious + } + } + scope:content = { + scope:recipient.faith = { + trait_is_virtue = trait:content + } + } + scope:arbitrary = { + scope:recipient.faith = { + trait_is_virtue = trait:arbitrary + } + } + scope:just = { + scope:recipient.faith = { + trait_is_virtue = trait:just + } + } + scope:cynical = { + scope:recipient.faith = { + trait_is_virtue = trait:cynical + } + } + scope:zealous = { + scope:recipient.faith = { + trait_is_virtue = trait:zealous + } + } + scope:paranoid = { + scope:recipient.faith = { + trait_is_virtue = trait:paranoid + } + } + scope:trusting = { + scope:recipient.faith = { + trait_is_virtue = trait:trusting + } + } + scope:compassionate = { + scope:recipient.faith = { + trait_is_virtue = trait:compassionate + } + } + scope:callous = { + scope:recipient.faith = { + trait_is_virtue = trait:callous + } + } + scope:stubborn = { + scope:recipient.faith = { + trait_is_virtue = trait:stubborn + } + } + scope:fickle = { + scope:recipient.faith = { + trait_is_virtue = trait:fickle + } + } + scope:eccentric = { + scope:recipient.faith = { + trait_is_virtue = trait:eccentric + } + } + scope:vengeful = { + scope:recipient.faith = { + trait_is_virtue = trait:vengeful + } + } + scope:forgiving = { + scope:recipient.faith = { + trait_is_virtue = trait:forgiving + } + } + } + desc = selected_virtuous_trait_tt + } + + modifier = { #more likely if chosen trait is compatible with recipients childhood personality + add = 15 + switch = { + trigger = yes + scope:sadistic = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:lustful = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:chaste = { + scope:recipient = { + has_trait = pensive + } + } + scope:gluttonous = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:temperate = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:greedy = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:generous = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + scope:lazy = { + scope:recipient = { + has_trait = rowdy + } + } + scope:diligent = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = curious + } + } + } + scope:wrathful = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:calm = { + scope:recipient = { + has_trait = pensive + } + } + scope:patient = { + scope:recipient = { + has_trait = pensive + } + } + scope:impatient = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:arrogant = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:humble = { + scope:recipient = { + has_trait = pensive + } + } + scope:deceitful = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = charming + } + } + } + scope:honest = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = rowdy + } + } + } + scope:craven = { + scope:recipient = { + has_trait = pensive + } + } + scope:brave = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:shy = { + scope:recipient = { + has_trait = pensive + } + } + scope:gregarious = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + scope:ambitious = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = curious + } + } + } + scope:content = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:arbitrary = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:just = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:cynical = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = pensive + } + } + } + scope:zealous = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + scope:paranoid = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = rowdy + } + } + } + scope:trusting = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + scope:compassionate = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = pensive + } + } + } + scope:callous = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:stubborn = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = curious + } + } + } + scope:fickle = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:eccentric = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = charming + has_trait = curious + } + } + } + scope:vengeful = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:forgiving = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + } + desc = has_compatible_personality_tt + } + + modifier = { #less likely if chosen trait is incompatible with recipients childhood personality + add = -15 + switch = { + trigger = yes + scope:sadistic = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:lustful = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:chaste = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:gluttonous = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:temperate = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:greedy = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:generous = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + scope:lazy = { + scope:recipient = { + NOT = { has_trait = rowdy } + } + } + scope:diligent = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = curious + } + } + } + scope:wrathful = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:calm = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:patient = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:impatient = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:arrogant = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:humble = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:deceitful = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = charming + } + } + } + scope:honest = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = rowdy + } + } + } + scope:craven = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:brave = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:shy = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:gregarious = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + scope:ambitious = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = curious + } + } + } + scope:content = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:arbitrary = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:just = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:cynical = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = pensive + } + } + } + scope:zealous = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + scope:paranoid = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = rowdy + } + } + } + scope:trusting = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + scope:compassionate = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = pensive + } + } + } + scope:callous = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:stubborn = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = curious + } + } + } + scope:fickle = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:eccentric = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = charming + has_trait = curious + } + } + } + scope:vengeful = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:forgiving = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + } + desc = has_incompatible_personality_tt + } + + modifier = { #less likely if chosen trait is a sin in recipients faith + add = -10 + switch = { + trigger = yes + scope:sadistic = { + scope:recipient.faith = { + trait_is_sin = trait:sadistic + } + } + scope:lustful = { + scope:recipient.faith = { + trait_is_sin = trait:lustful + } + } + scope:chaste = { + scope:recipient.faith = { + trait_is_sin = trait:chaste + } + } + scope:gluttonous = { + scope:recipient.faith = { + trait_is_sin = trait:gluttonous + } + } + scope:temperate = { + scope:recipient.faith = { + trait_is_sin = trait:temperate + } + } + scope:greedy = { + scope:recipient.faith = { + trait_is_sin = trait:greedy + } + } + scope:generous = { + scope:recipient.faith = { + trait_is_sin = trait:generous + } + } + scope:lazy = { + scope:recipient.faith = { + trait_is_sin = trait:lazy + } + } + scope:diligent = { + scope:recipient.faith = { + trait_is_sin = trait:diligent + } + } + scope:wrathful = { + scope:recipient.faith = { + trait_is_sin = trait:wrathful + } + } + scope:calm = { + scope:recipient.faith = { + trait_is_sin = trait:calm + } + } + scope:patient = { + scope:recipient.faith = { + trait_is_sin = trait:patient + } + } + scope:impatient = { + scope:recipient.faith = { + trait_is_sin = trait:impatient + } + } + scope:arrogant = { + scope:recipient.faith = { + trait_is_sin = trait:arrogant + } + } + scope:humble = { + scope:recipient.faith = { + trait_is_sin = trait:humble + } + } + scope:deceitful = { + scope:recipient.faith = { + trait_is_sin = trait:deceitful + } + } + scope:honest = { + scope:recipient.faith = { + trait_is_sin = trait:honest + } + } + scope:craven = { + scope:recipient.faith = { + trait_is_sin = trait:craven + } + } + scope:brave = { + scope:recipient.faith = { + trait_is_sin = trait:brave + } + } + scope:shy = { + scope:recipient.faith = { + trait_is_sin = trait:shy + } + } + scope:gregarious = { + scope:recipient.faith = { + trait_is_sin = trait:gregarious + } + } + scope:ambitious = { + scope:recipient.faith = { + trait_is_sin = trait:ambitious + } + } + scope:content = { + scope:recipient.faith = { + trait_is_sin = trait:content + } + } + scope:arbitrary = { + scope:recipient.faith = { + trait_is_sin = trait:arbitrary + } + } + scope:just = { + scope:recipient.faith = { + trait_is_sin = trait:just + } + } + scope:cynical = { + scope:recipient.faith = { + trait_is_sin = trait:cynical + } + } + scope:zealous = { + scope:recipient.faith = { + trait_is_sin = trait:zealous + } + } + scope:paranoid = { + scope:recipient.faith = { + trait_is_sin = trait:paranoid + } + } + scope:trusting = { + scope:recipient.faith = { + trait_is_sin = trait:trusting + } + } + scope:compassionate = { + scope:recipient.faith = { + trait_is_sin = trait:compassionate + } + } + scope:callous = { + scope:recipient.faith = { + trait_is_sin = trait:callous + } + } + scope:stubborn = { + scope:recipient.faith = { + trait_is_sin = trait:stubborn + } + } + scope:fickle = { + scope:recipient.faith = { + trait_is_sin = trait:fickle + } + } + scope:eccentric = { + scope:recipient.faith = { + trait_is_sin = trait:eccentric + } + } + scope:vengeful = { + scope:recipient.faith = { + trait_is_sin = trait:vengeful + } + } + scope:forgiving = { + scope:recipient.faith = { + trait_is_sin = trait:forgiving + } + } + } + desc = selected_sinful_trait_tt + } + + modifier = { #more likely if actor is afraid of you + add = intimidated_halved_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { #more likely if actor is afraid of you + add = cowed_halved_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + modifier = { #less likely if actor already has 3 personality traits + add = -50 + scope:recipient = { + number_of_personality_traits = 3 + } + desc = has_three_traits_already + } + } + + # AI + ai_potential = { + any_relation = { type = ward } + } + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + ai_targets = { + ai_recipients = courtiers + } + ai_will_do = { + base = -100 + modifier = { # If the recipient is a player, do not bother sending + factor = 0 + scope:recipient = { + is_ai = no + } + } + modifier = { #we don't want characters running around with 4 traits + add = -100 + scope:recipient = { + number_of_personality_traits = 3 + } + } + modifier = { + add = 50 + ai_honor > 0 + } + modifier = { + add = 50 + ai_compassion > 0 + } + modifier = { + add = 50 + ai_sociability > 0 + } + modifier = { + add = 50 + ai_boldness > 0 + } + modifier = { + add = 50 + scope:paranoid = yes + } + } +} + diff --git a/common/character_interactions/09_mpo_interactions.txt b/common/character_interactions/09_mpo_interactions.txt index b47bf025..ae55136e 100644 --- a/common/character_interactions/09_mpo_interactions.txt +++ b/common/character_interactions/09_mpo_interactions.txt @@ -179,7 +179,7 @@ faith = scope:actor.faith faith = { has_doctrine = doctrine_pluralism_pluralistic } government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -218,7 +218,7 @@ faith = scope:actor.faith scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic } government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } faith = { has_doctrine = doctrine_pluralism_pluralistic } } @@ -257,7 +257,7 @@ NOR = { faith = scope:actor.faith government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic } faith = { has_doctrine = doctrine_pluralism_pluralistic } @@ -1199,7 +1199,7 @@ desc = CONFEDERATION_HERDER_REASON trigger = { scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -1778,7 +1778,7 @@ promote_divergent_or_hybrid_culture_interaction = { scope:recipient = { OR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -1886,7 +1886,7 @@ promote_divergent_or_hybrid_culture_interaction = { desc = CONFEDERATION_HERDER_REASON trigger = { scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -2161,7 +2161,7 @@ inspire_conversion_interaction = { scope:recipient = { OR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -2270,7 +2270,7 @@ inspire_conversion_interaction = { desc = CONFEDERATION_HERDER_REASON trigger = { scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -2828,7 +2828,7 @@ migration_interaction = { scope:recipient = { NOR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -2847,7 +2847,7 @@ migration_interaction = { } modifier = { # Herders move away immediately trigger = { - scope:recipient = { government_has_flag = government_is_herder } + scope:recipient = { government_has_flag = government_is_true_herder } } add = 150 desc = MIGRATION_INTERACTION_HERDER @@ -3109,7 +3109,7 @@ migration_interaction = { desc = JUST_SETTLED_REASON scope:recipient = { is_tributary = yes - NOT = { government_has_flag = government_is_herder } + NOT = { government_has_flag = government_is_true_herder } capital_county = { title_held_years < 3 } @@ -3214,7 +3214,7 @@ migration_interaction = { # The recipient is a Herder modifier = { - scope:recipient = { government_has_flag = government_is_herder } + scope:recipient = { government_has_flag = government_is_true_herder } add = 10 } @@ -4859,7 +4859,7 @@ mpo_ask_for_herd_interaction = { } scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -5033,7 +5033,7 @@ mpo_ask_for_herd_interaction = { if = { limit = { #herders cannot give you more herd scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } scope:actor = { @@ -7033,7 +7033,7 @@ feudalize_nomadic_holding_interaction = { this = scope:recipient NOR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -7289,7 +7289,7 @@ feudalize_herder_holding_interaction = { this = scope:recipient NOR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -7550,7 +7550,7 @@ mpo_retrieve_land_from_herder_interaction = { is_shown = { scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } @@ -8339,7 +8339,7 @@ mpo_offer_submission_or_ruin = { #HERDER modifier = { - scope:recipient = { government_has_flag = government_is_herder } + scope:recipient = { government_has_flag = government_is_true_herder } add = 10000 desc = HERDER_REASON } @@ -9261,7 +9261,7 @@ mpo_offer_submission_or_ruin = { add = -50 scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } scope:send_tribute = yes @@ -9497,7 +9497,7 @@ mpo_offer_submission_or_ruin = { is_shown = { scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -9511,7 +9511,7 @@ mpo_offer_submission_or_ruin = { scope:recipient = { OR = { highest_held_title_tier < tier_duchy - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -9524,7 +9524,7 @@ mpo_offer_submission_or_ruin = { is_shown = { scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } highest_held_title_tier >= tier_duchy } @@ -9543,7 +9543,7 @@ mpo_offer_submission_or_ruin = { is_shown = { scope:recipient = { NOR = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder government_has_flag = government_is_tribal government_has_flag = government_is_nomadic } @@ -9565,7 +9565,7 @@ mpo_offer_submission_or_ruin = { is_shown = { scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -10264,7 +10264,7 @@ join_confederation_interaction = { faith = scope:actor.faith faith = { has_doctrine = doctrine_pluralism_pluralistic } government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -10303,7 +10303,7 @@ join_confederation_interaction = { faith = scope:actor.faith scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic } government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } faith = { has_doctrine = doctrine_pluralism_pluralistic } } @@ -10342,7 +10342,7 @@ join_confederation_interaction = { NOR = { faith = scope:actor.faith government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic } faith = { has_doctrine = doctrine_pluralism_pluralistic } diff --git a/common/character_interactions/tgp_tribute_mission_interactions.txt b/common/character_interactions/tgp_tribute_mission_interactions.txt new file mode 100644 index 00000000..b41ebcd5 --- /dev/null +++ b/common/character_interactions/tgp_tribute_mission_interactions.txt @@ -0,0 +1,911 @@ + +#Tribute Missions - a set of hidden Character Interactions, triggered by the Pay Tribute decision - what do you send? + +tribute_mission_gold_interaction = { + hidden = yes + + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + #Small Tribute + send_option = { + flag = small_gold_tribute + is_valid = { + scope:actor = { + gold >= { + value = small_gold_tribute_value + if = { + limit = { has_variable = offered_gold_value } + add = var:offered_gold_value + } + } + } + } + } + #Adequate Tribute + send_option = { + flag = adequate_gold_tribute + is_valid = { + scope:actor = { + gold >= { + value = adequate_gold_tribute_value + if = { + limit = { has_variable = offered_gold_value } + add = var:offered_gold_value + } + } + } + } + } + #Excessive Tribute + send_option = { + flag = excessive_gold_tribute + is_valid = { + scope:actor = { + gold >= { + value = excessive_gold_tribute_value + if = { + limit = { has_variable = offered_gold_value } + add = var:offered_gold_value + } + } + } + } + } + + on_accept = { + scope:actor = { + #Gold + switch = { + trigger = yes + scope:small_gold_tribute ?= { + #Define how much gold it is + set_variable = { + name = tribute_mission_type + value = flag:small_gold_tribute + } + set_or_change_offered_tribute_value_effect = { + TYPE = gold + VALUE = small_gold_tribute_value + } + + custom_tooltip = tribute_mission_gold_interaction.small_reserved_gold + } + scope:adequate_gold_tribute ?= { + #Define how much gold it is + set_variable = { + name = tribute_mission_type + value = flag:adequate_gold_tribute + } + set_or_change_offered_tribute_value_effect = { + TYPE = gold + VALUE = adequate_gold_tribute_value + } + + custom_tooltip = tribute_mission_gold_interaction.adequate_reserved_gold + } + scope:excessive_gold_tribute ?= { + #Define how much gold it is + set_variable = { + name = tribute_mission_type + value = flag:excessive_gold_tribute + } + set_or_change_offered_tribute_value_effect = { + TYPE = gold + VALUE = excessive_gold_tribute_value + } + + custom_tooltip = tribute_mission_gold_interaction.excessive_reserved_gold + } + } + + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + auto_accept = yes + + ai_will_do = { + base = 50 + } +} + +tribute_mission_herd_interaction = { + hidden = yes + + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + #Small Tribute + send_option = { + flag = small_herd_tribute + + is_valid = { + scope:actor = { + domicile ?= { + herd >= { + value = { + add = small_herd_tribute_value + if = { + limit = { has_variable = offered_herd_value } + add = var:offered_herd_value + } + } + } + } + } + } + } + + #Adequate Tribute + send_option = { + flag = adequate_herd_tribute + + is_valid = { + scope:actor = { + domicile ?= { + herd >= { + value = { + add = adequate_herd_tribute_value + if = { + limit = { has_variable = offered_herd_value } + add = var:offered_herd_value + } + } + } + } + } + } + } + #Excessive Tribute + send_option = { + flag = excessive_herd_tribute + + is_valid = { + scope:actor = { + domicile ?= { + herd >= { + value = { + add = excessive_herd_tribute_value + if = { + limit = { has_variable = offered_herd_value } + add = var:offered_herd_value + } + } + } + } + } + } + } + + on_accept = { + scope:actor = { + #Herd + switch = { + trigger = yes + scope:small_herd_tribute ?= { + #Define how much herd it is + set_variable = { + name = tribute_mission_type + value = flag:small_herd_tribute + } + #set_or_change_offered_tribute_value_effect = { #Herd value scale by era shenanigans here + # TYPE = herd + # VALUE = small_herd_tribute_value + #} + set_variable = { + name = offered_herd_value + value = domicile.small_herd_tribute_value + } + + custom_tooltip = tribute_mission_herd_interaction.small_reserved_herd + } + scope:adequate_herd_tribute ?= { + #Define how much herd it is + set_variable = { + name = tribute_mission_type + value = flag:adequate_herd_tribute + } + #set_or_change_offered_tribute_value_effect = { + # TYPE = herd + # VALUE = adequate_herd_tribute_value + #} + set_variable = { + name = offered_herd_value + value = domicile.adequate_herd_tribute_value + } + + custom_tooltip = tribute_mission_herd_interaction.adequate_reserved_herd + } + scope:excessive_herd_tribute ?= { + #Define how much herd it is + set_variable = { + name = tribute_mission_type + value = flag:excessive_herd_tribute + } + #set_or_change_offered_tribute_value_effect = { + # TYPE = herd + # VALUE = excessive_herd_tribute_value + #} + set_variable = { + name = offered_herd_value + value = domicile.excessive_herd_tribute_value + } + + custom_tooltip = tribute_mission_herd_interaction.excessive_reserved_herd + } + } + + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + auto_accept = yes + + ai_will_do = { + base = 50 + } +} + +tribute_mission_artifact_interaction = { + hidden = yes + + target_type = artifact + target_filter = actor_artifacts + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + can_be_picked_artifact = { + scope:target = { + is_suitable_artifact_tribute_trigger = yes + } + } + + on_accept = { + scope:target = { + set_variable = is_tribute_mission_artifact + } + scope:actor = { + #Save the Artifact + set_variable = { + name = tribute_mission_type + value = flag:artifact_tribute + } + set_variable = { + name = offered_artifact + value = scope:target + } + custom_tooltip = tribute_mission_artifact_interaction.tooltip + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + auto_accept = { + OR = { + scope:actor = { subject_standing >= 0 } + scope:recipient = { is_ai = no } + } + } + + ai_accept = { + base = 0 + modifier = { + add = 100 + desc = ARTIFACT_REASON + } + modifier = { + add = -80 + NOT = { + can_equip_artifact = scope:target + } + desc = ARTIFACT_NOT_EQUIPPABLE_REASON + } + modifier = { + add = -40 + NOT = { + can_benefit_from_artifact = scope:target + } + desc = ARTIFACT_NOT_BENEFIT_REASON + } + modifier = { + add = -500 + scope:target = { + has_variable = unwanted_artifact + } + #No harm in reusing the wording + desc = ARTIFACT_CURSED_REASON + } + modifier = { + add = -1000 + scope:target = { + has_variable = cursed_artifact + } + desc = ARTIFACT_CURSED_REASON + } + modifier = { + add = 100 + exists = scope:target.var:banner_dynasty + exists = scope:recipient.dynasty + scope:recipient = scope:target.var:banner_dynasty.dynast + desc = ARTIFACT_DYNASTY_BANNER_REASON + } + modifier = { + add = -200 + OR = { + exists = scope:target.var:banner_dynasty + exists = scope:target.var:banner_house + } + exists = scope:recipient.house + trigger_if = { + limit = { exists = scope:target.var:banner_dynasty } + scope:target.var:banner_dynasty != scope:recipient.dynasty + } + trigger_else = { + scope:target.var:banner_house != scope:recipient.house + } + desc = ARTIFACT_USELESS_BANNER_REASON + } + } + + ai_will_do = { + base = 50 + } +} + +tribute_mission_concubine_interaction = { + hidden = yes + + populate_recipient_list = { + scope:actor = { + every_courtier_or_guest = { + limit = { + can_be_offered_as_concubine_to_character_trigger = { + GIVER = scope:actor + CHARACTER = scope:actor.overlord + } + has_any_disease_trigger = no + has_easily_mocked_physical_attribute_trigger = no + } + add_to_list = characters + } + } + } + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + can_be_picked = { + is_adult = yes + } + + auto_accept = { + OR = { + scope:actor = { subject_standing >= 0 } + scope:recipient = { is_ai = no } + } + } + + on_accept = { + scope:actor = { + #Save the concubine + set_variable = { + name = tribute_mission_type + value = flag:concubine_tribute + } + set_variable = { + name = offered_concubine + value = scope:secondary_recipient + } + scope:secondary_recipient = { + add_character_flag = { + flag = cannot_be_diarch # just enough to make sure they don't succeed to the diarchy while en route + years = 2 + } + } + custom_tooltip = tribute_mission_concubine_interaction.tooltip + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + ai_accept = { + base = 50 + + modifier = { + add = { + value = 50 + multiply = scope:secondary_recipient.num_of_good_genetic_traits + } + scope:secondary_recipient = { + num_of_good_genetic_traits > 0 + trigger_if = { + limit = { + is_female = yes + } + is_aging_character = no + } + } + desc = AI_POSITIVE_TRAIT_REASON + } + + modifier = { + add = { + value = 50 + } + scope:secondary_recipient = { + is_lowborn = no + trigger_if = { + limit = { + is_female = yes + } + is_aging_character = no + } + } + desc = AI_DYNASTY_PRESTIGE_REASON_NOBLE + } + + modifier = { + add = { + value = -50 + multiply = scope:secondary_recipient.num_of_bad_genetic_traits + } + scope:secondary_recipient = { + OR = { + num_of_bad_genetic_traits > 0 + } + trigger_if = { + limit = { + is_female = yes + } + is_aging_character = no + } + } + desc = AI_NEGATIVE_TRAIT_REASON + } + + modifier = { + add = { + value = -50 + } + scope:secondary_recipient = { + is_lowborn = yes + num_of_good_genetic_traits = 0 + trigger_if = { + limit = { + is_female = yes + } + is_aging_character = no + } + } + desc = AI_DYNASTY_PRESTIGE_REASON_LOWBORN_NO_POSITIVE_TRAIT + } + + opinion_modifier = { # Opinion of you + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + opinion_modifier = { # Opinion of concubine + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = 0.25 + desc = AI_OPINION_REASON + } + + compare_modifier = { # Recipient is reluctant to marry old women (procreation is a key factor) + trigger = { + scope:secondary_recipient = { + is_young_character = no + is_female = yes + } + } + target = scope:secondary_recipient + value = age + multiplier = -5.0 + step = 1 + offset = -29 + desc = MARRY_AGE + } + + modifier = { # A Recipient is unwilling to take a same-sex concubine if their faith doesn't support it + add = -1000 + + scope:recipient = { + allowed_to_marry_same_sex_trigger = no + sex_same_as = scope:secondary_recipient + } + desc = SAME_SEX_MARRIAGE_FAITH_REASON_RECIPIENT + } + + modifier = { # Unwilling if they don't have a batch of kids and opposite sex consorts to handle that situation + add = -200 + scope:recipient = { + allowed_to_marry_same_sex_trigger = yes + sex_same_as = scope:secondary_recipient + trigger_if = { + limit = { + NOT = { + any_consort = { + can_have_children_with = { CHARACTER = scope:recipient } + fertility > 0.1 + } + } + } + any_child = { is_player_heir_of = root } + } + trigger_else = { + always = no + } + } + desc = AI_NO_FERTILITY_REASON + } + + modifier = { + add = 50 + scope:recipient = { + is_attracted_to_gender_of = scope:secondary_recipient + } + desc = AI_ATTRACTION_REASON + } + + #More/Less likely based on difference in rank between actor and recipient + modifier = { + add = 20 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 1 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 30 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 2 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 40 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 3 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 50 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 4 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 60 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 5 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -20 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -1 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -30 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -2 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -40 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -3 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -50 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -4 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -60 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -5 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -250 + scope:secondary_recipient = { + has_std_trigger = yes + } + desc = AI_STD_REASON + } + modifier = { + add = -250 + scope:secondary_recipient = { + has_epidemic_disease_trigger = yes + } + desc = AI_CONTAGIOUS_REASON + } + modifier = { + add = -5000 + scope:secondary_recipient = { + fertility <= 0 + } + desc = AI_FERTILITY_REASON + } + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + } + + ai_will_do = { + base = 50 + } +} + +tribute_mission_eunuch_interaction = { + hidden = yes + + populate_recipient_list = { + scope:actor = { + every_courtier = { + limit = { + tribute_mission_is_available_eunuch_trigger = yes + NAND = { + faith = { has_doctrine = doctrine_theocracy_temporal } + this = scope:actor.cp:councillor_court_chaplain + } + } + add_to_list = characters + } + } + } + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + can_be_picked = { + has_any_disease_trigger = no + } + + auto_accept = { + OR = { + scope:actor = { subject_standing >= 0 } + scope:recipient = { is_ai = no } + } + } + + on_accept = { + scope:actor = { + #Save the eunuch + set_variable = { + name = tribute_mission_type + value = flag:eunuch_tribute + } + set_variable = { + name = offered_eunuch + value = scope:secondary_recipient + } + custom_tooltip = tribute_mission_eunuch_interaction.tooltip + stress_impact = { + compassionate = medium_stress_impact_gain + sadistic = minor_stress_impact_loss + } + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + scope:secondary_recipient = { + if = { + limit = { is_eunuch_trigger = no } + add_opinion = { + modifier = slated_for_castration_opinion + target = scope:actor + opinion = -50 + } + custom_tooltip = tribute_mission_eunuch_interaction.slated_for_castration + #Escape or no escape? + hidden_effect = { + random_list = { + 30 = { + modifier = { + has_trait = brave + add = 10 + } + modifier = { + has_trait = wrathful + add = 10 + } + modifier = { + add = prowess + } + #I'm outta here! + add_character_flag = tribute_mission_attempt_escape + scope:actor = { + trigger_event = { + id = tribute_mission.9760 + days = { 10 20 } + } + } + } + 70 = { + modifier = { + has_trait = craven + add = 10 + } + modifier = { + has_trait = lazy + add = 10 + } + #No escape + } + } + } + } + } + } + + ai_accept = { + base = -50 + ######### OPINION OF TRIBUTARY + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + ######### OPINION OF EUNUCH + opinion_modifier = { + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = 0.5 + desc = AI_OPINION_REASON + } + ######## EUNUCH AGE + modifier = { + add = { + value = 50 + subtract = scope:secondary_recipient.age + } + desc = AI_REASON_EUNUCH_AGE + } + ######## EUNUCH SKILLS + modifier = { + add = { + add = scope:secondary_recipient.diplomacy + add = scope:secondary_recipient.intrigue + add = scope:secondary_recipient.stewardship + add = scope:secondary_recipient.martial + add = scope:secondary_recipient.learning + } + desc = AI_REASON_EUNUCH_SKILLS + } + ######## EUNUCH SKILLS + modifier = { + scope:secondary_recipient = { + has_trait = beardless_eunuch + } + add = 25 + desc = AI_REASON_BEARDLESS_EUNUCH + } + } + + ai_will_do = { + base = 50 + } +} + +#Player only +tribute_mission_bunga_mas_interaction = { + hidden = yes + + target_type = artifact + target_filter = actor_artifacts + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + can_be_picked_artifact = { + scope:target = { var:bunga_mas_created_by ?= scope:actor } + } + + on_accept = { + scope:target = { + set_variable = is_tribute_mission_artifact + } + scope:actor = { + #Save the Artifact + set_variable = { + name = tribute_mission_type + value = flag:bunga_mas_tribute + } + set_variable = { + name = offered_bunga_mas + value = scope:target + } + custom_tooltip = tribute_mission_bunga_mas_interaction.tooltip + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + auto_accept = { + always = yes + } + + ai_accept = { + base = 100 + } + + ai_will_do = { + base = 50 + } +} diff --git a/common/coat_of_arms/coat_of_arms/01_landed_titles.txt b/common/coat_of_arms/coat_of_arms/01_landed_titles.txt index 73356d66..fd5d19a7 100644 --- a/common/coat_of_arms/coat_of_arms/01_landed_titles.txt +++ b/common/coat_of_arms/coat_of_arms/01_landed_titles.txt @@ -3669,25 +3669,7 @@ c_padova = { color1 = "white" color2 = "red" } -c_palermo = { - pattern = "pattern_vertical_split_01.dds" - color1 = "yellow" - color2 = "blue" - colored_emblem = { - texture = "ce_eagle.dds" - color1 = "black" - color2 = "red" - color3 = "white" - instance = { position = { 0.3 0.4 } scale = { 0.5 0.5 } } - } - colored_emblem = { - texture = "ce_lion_rampant_crown.dds" - color1 = "yellow" - color2 = "yellow" - color3 = "black" - instance = { position = { 0.7 0.4 } scale = { 0.55 0.55 } } - } -} + c_parma = { pattern = "pattern_cross_01.dds" color1 = "yellow" @@ -18237,18 +18219,6 @@ c_canavese = { } } -c_treviso = { - pattern = "pattern_solid.dds" - color1 = "black" - color2 = "white" - colored_emblem = { - texture = "ce_block_02.dds" - color1 = "white" - color2 = "white" - instance = { position = { 0.5 0.156 } scale = { 1.0 0.312 } } - } -} - c_friuli = { pattern = "pattern_barruly_08.dds" color1 = "green" @@ -18642,68 +18612,6 @@ c_tivoli = { } } -c_palermo = { - pattern = "pattern_solid.dds" - color1 = "red" - color2 = "yellow" - colored_emblem = { - texture = "ce_eagle.dds" - color1 = "yellow" - color2 = "yellow" - color3 = "black" - instance = { position = { 0.5 0.52 } scale = { 1.1 1.1 } } - } -} - -c_messina = { - pattern = "pattern_solid.dds" - color1 = "red" - color2 = "yellow" - colored_emblem = { - texture = "ce_ordinary_cross_5.dds" - color1 = "yellow" - color2 = "yellow" - instance = { position = { 0.5 0.5 } scale = { 1.0 1.0 } } - } -} - -c_siracusa = { - pattern = "pattern_solid.dds" - color1 = "green" - color2 = "yellow" - colored_emblem = { - texture = "ce_castle.dds" - color1 = "yellow" - color2 = "green" - instance = { position = { 0.5 0.45 } scale = { 0.9 0.9 } } - } -} - -c_agrigento = { - pattern = "pattern_solid.dds" - color1 = "white" - color2 = "blue" - colored_emblem = { - texture = "ce_block_02.dds" - color1 = "blue" - color2 = "blue" - instance = { position = { 0.5 0.156 } scale = { 1.0 0.312 } } - } -} - -c_malta = { - pattern = "pattern_solid.dds" - color1 = "blue" - color2 = "white" - colored_emblem = { - texture = "ce_eagle.dds" - color1 = "white" - color2 = "white" - color3 = "black" - instance = { position = { 0.5 0.52 } scale = { 1.1 1.1 } } - } -} - c_benevento = { pattern = "pattern_solid.dds" color1 = "red" diff --git a/common/coat_of_arms/coat_of_arms/NEOW_dynasties.txt b/common/coat_of_arms/coat_of_arms/NEOW_dynasties.txt index a05891d0..f3c5bee5 100644 --- a/common/coat_of_arms/coat_of_arms/NEOW_dynasties.txt +++ b/common/coat_of_arms/coat_of_arms/NEOW_dynasties.txt @@ -6443,7 +6443,7 @@ russo_dynasty={ } -cortes_dynasty={ +calderon_dynasty={ pattern="pattern_checkers_02.dds" color1=red color2=yellow_light diff --git a/common/coat_of_arms/coat_of_arms/italia.txt b/common/coat_of_arms/coat_of_arms/italia.txt index e485e3b7..84d761e8 100644 --- a/common/coat_of_arms/coat_of_arms/italia.txt +++ b/common/coat_of_arms/coat_of_arms/italia.txt @@ -1,11 +1,3 @@ -#k_sardinia = { -# pattern = "pattern_solid.dds" -# color1 = "red" -# color2 = "white" -# textured_emblem = { -# texture = "flag_sardinia.dds" -# } -#} k_sardinia_and_corsica={ pattern=pattern_solid.dds color1=white @@ -27,6 +19,290 @@ k_sardinia_and_corsica={ instance={position={0.5 0.5}scale={1 1}} } } +d_palermo={ + pattern="pattern_solid.dds" + color1=blue + color2=white + colored_emblem={ + color1=yellow + color2=yellow + texture="ce_lion_rampant.dds" + instance={position={0.7 0.7} scale={0.415 0.415} depth=2} + } + colored_emblem={ + color1=yellow + texture="ce_fish.dds" + instance={position={0.275 0.85} scale={0.23 0.23} depth=7 rotation=90} + instance={position={0.15 0.6} scale={-0.23 0.23} depth=8 rotation=45} + instance={position={0.4 0.6} scale={0.23 0.23} depth=9 rotation=315} + } + colored_emblem={ + color1=white + texture="ce_block_02.dds" + instance={position={0.764 0.105} scale={0.015 0.015} depth=12} + instance={position={0.785 0.19} scale={0.035 -0.085} depth=14} + instance={position={0.75 0.25} scale={0.5 0.5} depth=27} + } + colored_emblem={ + color1=rgb{215 167 136} + color2=rgb{217 169 138} + texture="ce_hand.dds" + instance={position={0.75 0.12} scale={-0.06 0.06} depth=15} + } + colored_emblem={ + color1=green_light + texture="ce_circle.dds" + instance={position={0.7 0.5} scale={0.5 0.4} depth=26} + } + colored_emblem={ + color1=black + texture="ce_block_05.dds" + instance={scale={0.25 1.0} depth=23 rotation=90} + instance={scale={1.0 0.25} depth=24} + } + colored_emblem={ + color1=blue + texture="ce_block_02.dds" + instance={position={0.75 0.75} scale={0.5 0.5} depth=25} + } + colored_emblem={ + color1=brown + texture="ce_block_04.dds" + instance={position={0.655 0.36} scale={0.08 0.08} depth=17 rotation=85} + instance={position={0.65 0.3} scale={0.08 0.08} depth=18 rotation=85} + instance={position={0.645 0.21} scale={0.08 0.08} depth=19 rotation=85} + instance={position={0.635 0.115} scale={0.08 0.08} depth=20 rotation=85} + } + colored_emblem={ + color1=yellow + color2=yellow + texture="ce_eagle_crown.dds" + instance={position={0.28 0.275} scale={0.5 0.5} depth=11} + } + colored_emblem={ + color1=blue + color2=white + texture="ce_waves_01.dds" + instance={position={0.25 0.75} scale={0.5 0.5} depth=29} + } + colored_emblem={ + color1=white + texture="ce_oak_leaf.dds" + instance={position={0.7 0.12} scale={0.075 0.075} depth=6} + } + colored_emblem={ + color1=white + texture="ce_circle_mask.dds" + instance={position={0.58 0.105} scale={0.15 0.095} depth=21} + } + colored_emblem={ + color1=rgb{215 167 136} + texture="NEOW_ce_acorn.dds" + instance={position={0.75 0.165} scale={0.04 0.065} depth=13} + } + colored_emblem={ + color1=red + texture="ce_block_02.dds" + instance={position={0.25 0.25} scale={0.5 0.5} depth=28} + } + colored_emblem={ + color1=black + color2=rgb{215 167 136} + color3=black + texture="NEOW_ce_saint_peter.dds" + instance={position={0.7 0.22} scale={0.43 0.43} depth=22} + } + colored_emblem={ + color1=white + texture="ce_eastern_clouds.dds" + instance={position={0.724 0.075} scale={0.025 -0.045} depth=3 rotation=90} + instance={position={0.675 0.075} scale={0.025 0.045} depth=4 rotation=90} + } + colored_emblem={ + color1=rgb{7 7 7} + texture="ce_circle.dds" + instance={position={0.7 0.19} scale={0.075 0.075} depth=16} + } + colored_emblem={ + color1=yellow + texture="ce_circle.dds" + instance={position={0.275 0.7} scale={0.11 0.11} depth=10} + } + colored_emblem={ + color1=white + texture="ce_crescent.dds" + instance={position={0.7 0.06} scale={0.065 -0.035} depth=5} + } + colored_emblem={ + color1=red + texture="ce_heart.dds" + instance={position={0.58 0.565} scale={0.085 0.085} rotation=25} + } + colored_emblem={ + color1=red + texture="ce_fire.dds" + instance={position={0.595 0.53} scale={0.05 0.05} depth=1 rotation=25} + } +} +c_palermo = { + pattern = "pattern_vertical_split_01.dds" + color1 = "yellow" + color2 = "blue" + colored_emblem = { + texture = "ce_eagle.dds" + color1 = "black" + color2 = "red" + color3 = "white" + instance = { position = { 0.3 0.4 } scale = { 0.5 0.5 } } + } + colored_emblem = { + texture = "ce_lion_rampant_crown.dds" + color1 = "yellow" + color2 = "yellow" + color3 = "black" + instance = { position = { 0.7 0.4 } scale = { 0.55 0.55 } } + } +} +c_agrigento = { + pattern = "pattern_solid.dds" + color1 = "white" + color2 = "blue" + colored_emblem = { + texture = "ce_block_02.dds" + color1 = "blue" + color2 = "blue" + instance = { position = { 0.5 0.156 } scale = { 1.0 0.312 } } + } +} +d_siracusa={ + pattern="pattern_solid.dds" + color1=green + color2=yellow + color3=black + colored_emblem={ + color1=black + texture="ce_polish_abdank.dds" + instance={position={0.5 0.82} scale={0.99 0.61} depth=10} + } + colored_emblem={ + color1=blue_light + texture="ce_polish_abdank.dds" + instance={position={0.5 0.83} scale={0.92 0.45} depth=9} + } + colored_emblem={ + color1=yellow + texture="ce_ragged_staff.dds" + instance={position={0.5 0.59} scale={0.69 0.25} depth=7 rotation=26} + instance={position={0.5 0.59} scale={0.62 0.37} depth=8 rotation=173} + } + colored_emblem={ + color1=yellow + color2=yellow_light + texture="ce_crown_random.dds" + instance={position={0.46 0.14} scale={0.26 0.26} depth=1} + } + colored_emblem={ + color1=yellow + color2=rgb {82 56 18} + texture="ce_castle.dds" + instance={position={0.49 0.43} scale={0.24 0.24}} + } + colored_emblem={ + color1=yellow + texture="ce_letter_q.dds" + instance={position={0.56 0.81} scale={0.14 0.14} depth=4} + } + colored_emblem={ + color1=orange + texture="ce_byzantine_eagle.dds" + instance={position={0.5 0.44} scale={0.65 0.64} depth=6} + } + colored_emblem={ + color1=yellow + texture="ce_letter_p.dds" + instance={position={0.45 0.82} scale={0.15 0.15} depth=3} + } + colored_emblem={ + color1=yellow + texture="ce_letter_s.dds" + instance={position={0.36 0.86} scale={0.17 0.17} depth=2} + instance={position={0.67 0.86} scale={0.16 0.16} depth=5} + } + colored_emblem={ + color1=yellow + color2=green_light + color3=red + texture="NEOW_ce_oak_branch.dds" + instance={position={0.34 0.76} scale={0.64 0.64} depth=11} + instance={position={0.66 0.77} scale={-0.57 0.57} depth=12} + } +} +c_siracusa = { + pattern = "pattern_solid.dds" + color1 = "green" + color2 = "yellow" + colored_emblem = { + texture = "ce_castle.dds" + color1 = "yellow" + color2 = "green" + instance = { position = { 0.5 0.45 } scale = { 0.9 0.9 } } + } +} +c_messina = { + pattern = "pattern_solid.dds" + color1 = "red" + color2 = "yellow" + colored_emblem = { + texture = "ce_ordinary_cross_5.dds" + color1 = "yellow" + color2 = "yellow" + instance = { position = { 0.5 0.5 } scale = { 1.0 1.0 } } + } +} +d_malta={ + pattern="pattern_vertical_split_01.dds" + color1=white + color2=rgb{156 14 33} + color3=black + colored_emblem={ + color1=rgb{156 14 33} + texture="ce_circle_mask.dds" + instance={scale={0.18 0.18} depth=2} + } + colored_emblem={ + color1=green + texture="ce_wreath_circle.dds" + instance={scale={0.86 0.86}} + } + colored_emblem={ + color1=white + texture="ce_cross_maltese.dds" + instance={scale={0.21 0.21} depth=1} + } + colored_emblem={ + color1=white + texture="ce_block_03.dds" + instance={scale={0.59 0.53} depth=3} + instance={scale={0.5 -0.59} depth=4 rotation=90} + } + colored_emblem={ + color1=grey + texture="ce_cross_large.dds" + instance={scale={0.61 0.62} depth=5} + } +} +c_malta = { + pattern = "pattern_solid.dds" + color1 = "blue" + color2 = "white" + colored_emblem = { + texture = "ce_eagle.dds" + color1 = "white" + color2 = "white" + color3 = "black" + instance = { position = { 0.5 0.52 } scale = { 1.1 1.1 } } + } +} d_sardinia={ pattern=pattern_solid.dds color1=white @@ -7198,3 +7474,205 @@ c_vercelli={ } } +c_treviso={ + custom=yes + pattern="pattern_vertical_split_01.dds" + color1=white + color2=rgb { 20 90 154 } + color3=red + colored_emblem={ + color1=green_light + color2=green + color3=yellow_light + texture="NEOW_ce_oak_branch.dds" + instance={ + position={ 0.650000 0.750000 } + scale={ -0.500000 0.500000 } + depth=2.010000 + } + + instance={ + position={ 0.350000 0.750000 } + scale={ 0.500000 0.500000 } + depth=3.010000 + } + + } + + colored_emblem={ + color1=white + texture="ce_kamon_triangle.dds" + instance={ + position={ 0.500000 0.740000 } + scale={ 0.160000 -0.070000 } + depth=5.010000 + } + + } + + colored_emblem={ + color1=rgb { 171 52 36 } + texture="ce_inescutcheon.dds" + instance={ + depth=7.010000 + } + + } + + colored_emblem={ + color1=yellow + color2=rgb { 37 143 241 } + texture="ce_crown_head.dds" + instance={ + position={ 0.500000 0.150000 } + scale={ 0.300000 0.300000 } + depth=4.010000 + } + + } + + colored_emblem={ + color1=white + texture="ce_cross_07.dds" + instance={ + position={ 0.500000 0.485000 } + scale={ 0.960000 0.780000 } + depth=6.010000 + } + + } + + colored_emblem={ + color1=white + texture="ce_star_07.dds" + instance={ + position={ 0.385000 0.310000 } + scale={ 0.100000 0.100000 } + } + + instance={ + position={ 0.625000 0.310000 } + scale={ 0.100000 0.100000 } + depth=1.010000 + } + + } + +} +b_ceneta={ + custom=yes + pattern="pattern_solid.dds" + color1=blue + color2=yellow + color3=green + colored_emblem={ + color1=brown + color2=green + color3=yellow_light + texture="NEOW_ce_oak_branch.dds" + instance={ + position={ 0.650000 0.700000 } + scale={ -0.500000 0.500000 } + } + + instance={ + position={ 0.350000 0.700000 } + scale={ 0.500000 0.500000 } + depth=1.010000 + } + + } + + colored_emblem={ + color1=blue + texture="ce_block_02.dds" + instance={ + scale={ 0.500000 0.500000 } + depth=5.010000 + } + + } + + colored_emblem={ + color1=yellow + texture="ce_border_shield.dds" + instance={ + scale={ 0.650000 0.650000 } + depth=3.010000 + } + + } + + colored_emblem={ + color1=yellow_light + texture="ce_cross_07.dds" + instance={ + depth=4.010000 + } + + } + + colored_emblem={ + color1=rgb { 131 73 22 } + color2=black + texture="ce_crown.dds" + instance={ + position={ 0.500000 0.140000 } + scale={ 0.300000 0.300000 } + depth=2.010000 + } + + } + + colored_emblem={ + color1=yellow + texture="ce_block_02.dds" + instance={ + depth=6.010000 + } + + } + +} +b_pieve={ # Belluno + custom=yes + pattern="pattern_solid.dds" + color1=blue + color2=white + color3=red + colored_emblem={ + color1=rgb { 145 24 8 } + color2=black + color3=white + texture="ce_dragon.dds" + instance={ + position={ 0.200000 0.180000 } + scale={ -0.400000 0.400000 } + } + + instance={ + position={ 0.800000 0.180000 } + scale={ 0.400000 0.400000 } + depth=1.010000 + } + + } + + colored_emblem={ + color1=yellow_light + texture="ce_mena_fess.dds" + instance={ + position={ 0.500000 0.400000 } + scale={ 1.000000 0.500000 } + depth=2.010000 + } + + instance={ + scale={ 0.500000 1.000000 } + depth=3.010000 + rotation=90 + } + + } + +} \ No newline at end of file diff --git a/common/coat_of_arms/dynamic_definitions/NEOW_carolingian_coa.txt b/common/coat_of_arms/dynamic_definitions/NEOW_carolingian_coa.txt deleted file mode 100644 index 32debd9a..00000000 --- a/common/coat_of_arms/dynamic_definitions/NEOW_carolingian_coa.txt +++ /dev/null @@ -1,55 +0,0 @@ - -e_europa = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = e_lotharingia - } -} - -e_france = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = e_west_francia - } -} - -e_germany = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = e_east_francia - } -} - -k_france = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = k_neustria - } -} - -k_belgium = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = k_austrasia - } -} \ No newline at end of file diff --git a/common/culture/cultures/00_israelite.txt b/common/culture/cultures/00_israelite.txt index a3f40488..57ce2558 100644 --- a/common/culture/cultures/00_israelite.txt +++ b/common/culture/cultures/00_israelite.txt @@ -1,38 +1,4 @@ -ashkenazi = { - color = ashkenazi - - ethos = ethos_communal - heritage = heritage_israelite - language = language_high_german - martial_custom = martial_custom_male_only - head_determination = head_determination_domain - traditions = { - tradition_diasporic - tradition_philosopher_culture - tradition_faith_bound - tradition_forbearing - tradition_mobile_guards - } - - name_list = name_list_ashkenazi - - coa_gfx = { israelite_group_coa_gfx } - building_gfx = { western_building_gfx } - clothing_gfx = { dde_hre_clothing_gfx western_clothing_gfx } - unit_gfx = { western_unit_gfx } - house_coa_frame = house_frame_23 - house_coa_mask_offset = { 0.0 0.03 } - house_coa_mask_scale = { 0.9 0.9 } - - ethnicities = { - 25 = caucasian_blond - 15 = caucasian_ginger - 35 = caucasian_brown_hair - 25 = caucasian_dark_hair - } -} - -bavlim = { +bavlim = { color = { 0.6 0.3 0.7 } ethos = ethos_communal diff --git a/common/culture/cultures/NEOW_albanian.txt b/common/culture/cultures/NEOW_albanian.txt index 9d44d939..7112cfb7 100644 --- a/common/culture/cultures/NEOW_albanian.txt +++ b/common/culture/cultures/NEOW_albanian.txt @@ -6,7 +6,7 @@ ethos = ethos_communal heritage = heritage_albanian - language = language_arbereshe + language = NEOW_language_arbereshe martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_02 @@ -37,7 +37,7 @@ NEOW_albanian = { #Still a WIP I assume ethos = ethos_communal heritage = heritage_albanian - language = language_south_slavic + language = NEOW_language_albanian martial_custom = martial_custom_equal head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_anglo_frisian.txt b/common/culture/cultures/NEOW_anglo_frisian.txt index 4af65f2b..48300ce9 100644 --- a/common/culture/cultures/NEOW_anglo_frisian.txt +++ b/common/culture/cultures/NEOW_anglo_frisian.txt @@ -8,7 +8,7 @@ ethos = ethos_communal heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_easlander martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -54,7 +54,7 @@ easlander = { ethos = ethos_communal heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_easlander martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -99,7 +99,7 @@ norflander = { ethos = ethos_stoic heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_norflander martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -136,7 +136,7 @@ norner = { ethos = ethos_stoic heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_norner martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -145,6 +145,7 @@ norner = { tradition_hard_working tradition_staunch_traditionalists tradition_stalwart_defenders + tradition_creaght } name_list = name_list_NEOW_english @@ -173,7 +174,7 @@ souflander = { ethos = ethos_bureaucratic heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_souflander martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -224,7 +225,7 @@ weslander = { ethos = ethos_communal heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_weslander martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -258,7 +259,7 @@ english = { #Used for parent cultures ethos = ethos_bureaucratic heritage = heritage_west_germanic - language = language_anglic + language = language_english martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_berber.txt b/common/culture/cultures/NEOW_berber.txt index 92ca4ac7..aef0ba21 100644 --- a/common/culture/cultures/NEOW_berber.txt +++ b/common/culture/cultures/NEOW_berber.txt @@ -3,7 +3,7 @@ ethos = ethos_communal heritage = heritage_berber - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_brazilian.txt b/common/culture/cultures/NEOW_brazilian.txt new file mode 100644 index 00000000..63da5dcc --- /dev/null +++ b/common/culture/cultures/NEOW_brazilian.txt @@ -0,0 +1,30 @@ +brazilian = { # Brasileiro - should be dead at gamestart + color = { 65 102 10 } + + ethos = ethos_spiritual + heritage = heritage_brazilian + language = language_lusophonic + martial_custom = martial_custom_male_only + head_determination = head_determination_domain + + traditions = { + tradition_fp2_ritualised_friendship + tradition_religious_patronage + tradition_seafaring + tradition_modest + tradition_poetry + } + + name_list = name_list_portuguese + house_coa_frame = house_frame_19 + house_coa_mask_offset = { 0.0 0.025 } + house_coa_mask_scale = { 0.95 0.95 } + coa_gfx = { iberian_group_coa_gfx western_coa_gfx } + building_gfx = { iberian_building_gfx } + clothing_gfx = { iberian_christian_clothing_gfx western_clothing_gfx } + unit_gfx = { iberian_christian_unit_gfx } + + ethnicities = { + 10 = mediterranean + } +} \ No newline at end of file diff --git a/common/culture/cultures/NEOW_brythonic.txt b/common/culture/cultures/NEOW_brythonic.txt index f585ebbb..77a98e83 100644 --- a/common/culture/cultures/NEOW_brythonic.txt +++ b/common/culture/cultures/NEOW_brythonic.txt @@ -3,7 +3,7 @@ ethos = ethos_communal heritage = heritage_brythonic - language = language_brythonic + language = NEOW_language_cornish martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -166,7 +166,7 @@ strafclideg = { ethos = ethos_bureaucratic heritage = heritage_brythonic - language = language_brittannic + language = NEOW_language_north_brittannic martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -195,12 +195,43 @@ strafclideg = { } } +pwnjaby = { #Pwnjaby - Sikh Punjabi minority in the UK, uses prytoneg - make new namelist later + color = { 122 15 67 } + + created = 2100.1.1 + parents = { neow_punjabi welsh } + + ethos = ethos_communal + heritage = heritage_indo_aryan + language = language_brittannic + martial_custom = martial_custom_male_only + head_determination = head_determination_domain + traditions = { + tradition_diasporic + tradition_warriors_by_merit + tradition_culinary_art + tradition_british_meritocracy + } + + name_list = name_list_prytoneg + + coa_gfx = { indo_aryan_group_coa_gfx } + building_gfx = { western_building_gfx } + clothing_gfx = { northern_clothing_gfx } + unit_gfx = { indian_unit_gfx } + house_coa_frame = house_frame_17 + + ethnicities = { + 100 = indian + } +} + welsh = { #Cymry color = { 94 34 114 } ethos = ethos_stoic heritage = heritage_brythonic - language = language_brythonic + language = NEOW_language_welsh martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { diff --git a/common/culture/cultures/NEOW_central_germanic.txt b/common/culture/cultures/NEOW_central_germanic.txt index 21ee7a5c..8bb720b6 100644 --- a/common/culture/cultures/NEOW_central_germanic.txt +++ b/common/culture/cultures/NEOW_central_germanic.txt @@ -3,7 +3,7 @@ ethos = ethos_spiritual heritage = heritage_central_germanic - language = language_high_german + language = NEOW_language_alpine_bavarian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -11,8 +11,8 @@ tradition_mountain_homes tradition_artisans tradition_storytellers - tradition_festivities tradition_staunch_traditionalists + tradition_farmer_republics } name_list = name_list_bavarian @@ -38,7 +38,7 @@ bavarian = { #Boarisch ethos = ethos_courtly heritage = heritage_central_germanic - language = language_high_german + language = NEOW_language_bavarian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -73,7 +73,7 @@ brandenburger = { #Brandenburgisch ethos = ethos_egalitarian heritage = heritage_central_germanic - language = language_saxon + language = NEOW_language_margravian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -108,7 +108,7 @@ franconian = { #Fränggisch ethos = ethos_communal heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_franconian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -143,7 +143,7 @@ hessian = { #Hessisch ethos = ethos_stoic heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_hessian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -187,7 +187,7 @@ kuhjung = { ethos = ethos_bellicose heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_ramsteiner martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -222,7 +222,7 @@ low_saxon = { #Platdüütsch ethos = ethos_stoic heritage = heritage_central_germanic - language = language_saxon + language = NEOW_language_westphalian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -257,7 +257,7 @@ NEOW_pomeranian = { #Pomeranian ethos = ethos_stoic heritage = heritage_central_germanic - language = language_saxon + language = NEOW_language_pomeranian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -292,7 +292,7 @@ palatine = { #Pälzisch ethos = ethos_courtly heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_palatine martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -304,7 +304,7 @@ palatine = { #Pälzisch tradition_forbearing } - name_list = name_list_franconian + name_list = name_list_palatine coa_gfx = { german_group_coa_gfx western_coa_gfx } building_gfx = { western_building_gfx } @@ -327,7 +327,7 @@ rhinelander = { #Rheinländer ethos = ethos_egalitarian heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_rhinelandic martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -365,12 +365,11 @@ rottisch = { ethos = ethos_stoic heritage = heritage_central_germanic - language = language_high_german + language = NEOW_language_rottish martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { - tradition_diasporic tradition_faith_bound tradition_highland_warriors tradition_hard_working @@ -400,7 +399,7 @@ saxon = { #Sächsisch ethos = ethos_bellicose heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_saxon martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -435,7 +434,7 @@ swabian = { ethos = ethos_communal heritage = heritage_central_germanic - language = language_high_german + language = NEOW_language_swabian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -476,7 +475,7 @@ turkisch = { ethos = ethos_courtly heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_german_turk martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -486,7 +485,7 @@ turkisch = { tradition_culture_blending } - name_list = name_list_franconian + name_list = name_list_NEOW_turkish coa_gfx = { german_group_coa_gfx western_coa_gfx } building_gfx = { western_building_gfx } @@ -497,10 +496,13 @@ turkisch = { house_coa_mask_scale = { 0.95 0.95 } ethnicities = { - 25 = caucasian_blond - 15 = caucasian_ginger - 35 = caucasian_brown_hair - 25 = caucasian_dark_hair + 5 = asian + 10 = slavic_blond + 10 = slavic_brown_hair + 10 = slavic_dark_hair + 15 = mediterranean_byzantine + 20 = arab + 30 = mediterranean } } diff --git a/common/culture/cultures/NEOW_french.txt b/common/culture/cultures/NEOW_french.txt index f9dc078d..1d7b54cb 100644 --- a/common/culture/cultures/NEOW_french.txt +++ b/common/culture/cultures/NEOW_french.txt @@ -6,7 +6,7 @@ ethos = ethos_courtly heritage = heritage_french - language = language_french + language = NEOW_language_south_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -48,7 +48,7 @@ bourguignon = { ethos = ethos_communal heritage = heritage_french - language = language_french + language = NEOW_language_east_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -91,7 +91,7 @@ breton = { #Brezhoneg ethos = ethos_spiritual heritage = heritage_french - language = language_brythonic + language = NEOW_language_breton martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -137,7 +137,7 @@ galo = { ethos = ethos_stoic heritage = heritage_french - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -180,7 +180,7 @@ gascon = { ethos = ethos_bellicose heritage = heritage_french - language = language_french + language = NEOW_language_south_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -222,7 +222,7 @@ metropolitain = { ethos = ethos_courtly heritage = heritage_french - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -269,7 +269,7 @@ normaund = { ethos = ethos_bellicose heritage = heritage_french - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -312,7 +312,7 @@ occitan = { ethos = ethos_communal heritage = heritage_french - language = language_occitano_romance + language = NEOW_language_occitan martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -346,7 +346,7 @@ patoues = { #Arpetan ethos = ethos_egalitarian heritage = heritage_french - language = language_french + language = NEOW_language_east_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -389,7 +389,7 @@ picard = { ethos = ethos_egalitarian heritage = heritage_french - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -432,7 +432,7 @@ poitevin = { ethos = ethos_spiritual heritage = heritage_french - language = language_french + language = NEOW_language_south_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -474,7 +474,7 @@ provencal = { ethos = ethos_spiritual heritage = heritage_french - language = language_french + language = NEOW_language_south_french martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_goidelic.txt b/common/culture/cultures/NEOW_goidelic.txt index ed748c76..67507a1f 100644 --- a/common/culture/cultures/NEOW_goidelic.txt +++ b/common/culture/cultures/NEOW_goidelic.txt @@ -3,13 +3,13 @@ ethos = ethos_egalitarian heritage = heritage_goidelic - language = language_anglo_irish + language = NEOW_language_irish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { tradition_seafaring - tradition_adaptive_skirmishing + tradition_farmer_republics tradition_festivities tradition_swords_for_hire tradition_diasporic @@ -36,7 +36,7 @@ high_irish = { #Éireannach Uasal ethos = ethos_spiritual heritage = heritage_goidelic - language = language_goidelic + language = NEOW_language_irish martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -45,9 +45,9 @@ high_irish = { #Éireannach Uasal traditions = { tradition_creaght tradition_poetry - tradition_festivities tradition_xenophilic tradition_defiant + tradition_farmer_republics } name_list = name_list_neow_goidelic @@ -81,10 +81,10 @@ irish = { #Éireannach Bhocht traditions = { tradition_creaght - tradition_adaptive_skirmishing tradition_festivities tradition_defiant tradition_xenophilic + tradition_farmer_republics } name_list = name_list_neow_goidelic @@ -101,13 +101,48 @@ irish = { #Éireannach Bhocht 30 = caucasian_dark_hair } } +traveller = { #travellers + color = { 58 151 95 } + + parents = { irish } + created = 1500.1.1 + house_coa_frame = house_frame_03 + house_coa_mask_offset = { 0.0 0.055 } + house_coa_mask_scale = { 0.9 0.9 } + ethos = ethos_communal + heritage = heritage_goidelic + language = language_anglo_irish + martial_custom = martial_custom_male_only + head_determination = head_determination_domain + + traditions = { + tradition_diasporic + tradition_adaptive_skirmishing + tradition_isolationist + tradition_defiant + tradition_pastoralists + } + + name_list = name_list_neow_goidelic + + coa_gfx = { irish_coa_gfx western_coa_gfx } + building_gfx = { western_building_gfx } + clothing_gfx = { northern_clothing_gfx } + unit_gfx = { western_unit_gfx } + + ethnicities = { + 35 = caucasian_ginger + 35 = caucasian_brown_hair + 30 = caucasian_dark_hair + } +} manx = { color = { 60 125 55 } ethos = ethos_stoic heritage = heritage_goidelic - language = language_goidelic + language = NEOW_language_manx martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 diff --git a/common/culture/cultures/NEOW_greek.txt b/common/culture/cultures/NEOW_greek.txt index 4bc0f1b9..f3bbea9a 100644 --- a/common/culture/cultures/NEOW_greek.txt +++ b/common/culture/cultures/NEOW_greek.txt @@ -6,12 +6,12 @@ ethos = ethos_bureaucratic heritage = heritage_greek - language = language_greek + language = NEOW_language_griko martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { - tradition_diasporic + tradition_culture_blending tradition_pastoralists tradition_castle_keepers tradition_hill_dwellers diff --git a/common/culture/cultures/NEOW_hispanic.txt b/common/culture/cultures/NEOW_hispanic.txt index 3a93559a..5be2858f 100644 --- a/common/culture/cultures/NEOW_hispanic.txt +++ b/common/culture/cultures/NEOW_hispanic.txt @@ -3,7 +3,7 @@ ethos = ethos_spiritual heritage = heritage_hispanic - language = language_occitano_romance + language = NEOW_language_catalan martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -36,7 +36,7 @@ aragonese = { #Aragonés ethos = ethos_stoic heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_aragonese martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -70,7 +70,7 @@ asturleonese = { #Asturlleonés house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_asturleonese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -99,7 +99,7 @@ balearic = { #Balear ethos = ethos_egalitarian heritage = heritage_hispanic - language = language_occitano_romance + language = NEOW_language_balearic martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -108,6 +108,7 @@ balearic = { #Balear tradition_forbearing tradition_city_keepers tradition_fishermen + tradition_republican_legacy } @@ -130,7 +131,7 @@ basque = { #Euskal ethos = ethos_stoic heritage = heritage_hispanic - language = language_basque + language = NEOW_language_basque martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -162,7 +163,7 @@ castilian = { #Castellano ethos = ethos_bellicose heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_castillian martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -197,7 +198,7 @@ catalan = { #Català ethos = ethos_bureaucratic heritage = heritage_hispanic - language = language_occitano_romance + language = NEOW_language_catalan martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -228,7 +229,7 @@ extremeno = { #Estremeñu ethos = ethos_stoic heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_extremeno martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -259,7 +260,7 @@ galician = { #Galego ethos = ethos_spiritual heritage = heritage_hispanic - language = language_lusophonic + language = NEOW_language_galician martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -293,7 +294,7 @@ llanito = { ethos = ethos_bellicose heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_llanito martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -326,7 +327,7 @@ NEOW_andalusian = { #Andalûh ethos = ethos_courtly heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_andalusian martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -351,12 +352,41 @@ NEOW_andalusian = { #Andalûh } } +canarian = { #Andalûh + color = { 221 239 89 } + + ethos = ethos_courtly + heritage = heritage_hispanic + language = NEOW_language_canarian + martial_custom = martial_custom_male_only + head_determination = head_determination_domain + traditions = { + tradition_swords_for_hire + tradition_seafaring + tradition_zealous_people + tradition_astute_diplomats + tradition_talent_acquisition + } + + name_list = name_list_castilian + house_coa_frame = house_frame_19 + house_coa_mask_offset = { 0.0 0.025 } + house_coa_mask_scale = { 0.95 0.95 } + coa_gfx = { castilian_coa_gfx iberian_group_coa_gfx western_coa_gfx } + building_gfx = { iberian_building_gfx } + clothing_gfx = { iberian_christian_clothing_gfx western_clothing_gfx } + unit_gfx = { iberian_christian_unit_gfx } + + ethnicities = { + 10 = mediterranean + } +} portuguese = { #Português color = { 65 102 10 } ethos = ethos_spiritual heritage = heritage_hispanic - language = language_lusophonic + language = NEOW_language_portuguese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -387,7 +417,7 @@ valencian = { #Valencià ethos = ethos_bureaucratic heritage = heritage_hispanic - language = language_occitano_romance + language = NEOW_language_valencian martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_indo_aryan.txt b/common/culture/cultures/NEOW_indo_aryan.txt new file mode 100644 index 00000000..db2b51ba --- /dev/null +++ b/common/culture/cultures/NEOW_indo_aryan.txt @@ -0,0 +1,27 @@ +neow_punjabi = { #WIP - dead for now + color = { 102 15 67 } + + ethos = ethos_communal + heritage = heritage_indo_aryan + language = language_punjabi + martial_custom = martial_custom_male_only + head_determination = head_determination_domain + traditions = { + tradition_diasporic + tradition_warriors_by_merit + tradition_culinary_art + tradition_british_meritocracy + } + + name_list = name_list_punjabi + + coa_gfx = { indo_aryan_group_coa_gfx } + building_gfx = { indian_building_gfx } + clothing_gfx = { indian_clothing_gfx } + unit_gfx = { indian_unit_gfx } + house_coa_frame = house_frame_17 + + ethnicities = { + 100 = indian + } +} \ No newline at end of file diff --git a/common/culture/cultures/NEOW_israelite.txt b/common/culture/cultures/NEOW_israelite.txt index 3767d29c..ead9cf54 100644 --- a/common/culture/cultures/NEOW_israelite.txt +++ b/common/culture/cultures/NEOW_israelite.txt @@ -3,7 +3,7 @@ ethos = ethos_communal heritage = heritage_israelite - language = language_sarphatique + language = NEOW_language_sarphatique martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -37,12 +37,46 @@ } } +ashkenazi = { + color = ashkenazi + + ethos = ethos_communal + heritage = heritage_israelite + language = NEOW_language_new_yiddish + martial_custom = martial_custom_male_only + head_determination = head_determination_domain + traditions = { + tradition_diasporic + tradition_philosopher_culture + tradition_faith_bound + tradition_forbearing + tradition_mobile_guards + } + + name_list = name_list_ashkenazi + + coa_gfx = { israelite_group_coa_gfx } + building_gfx = { western_building_gfx } + clothing_gfx = { dde_hre_clothing_gfx western_clothing_gfx } + unit_gfx = { western_unit_gfx } + house_coa_frame = house_frame_23 + house_coa_mask_offset = { 0.0 0.03 } + house_coa_mask_scale = { 0.9 0.9 } + + ethnicities = { + 25 = caucasian_blond + 15 = caucasian_ginger + 35 = caucasian_brown_hair + 25 = caucasian_dark_hair + } +} + sharoni = { color = { 0.4 0.4 0.75 } ethos = ethos_communal heritage = heritage_israelite - language = language_hebrew + language = NEOW_language_new_hebrew martial_custom = martial_custom_equal head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_italian.txt b/common/culture/cultures/NEOW_italian.txt index 971f55e9..757a023a 100644 --- a/common/culture/cultures/NEOW_italian.txt +++ b/common/culture/cultures/NEOW_italian.txt @@ -7,7 +7,7 @@ ethos = ethos_communal heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_ligurian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -16,6 +16,7 @@ tradition_culture_blending tradition_stalwart_defenders tradition_swords_for_hire + tradition_republican_legacy } name_list = name_list_gallo_italian @@ -39,7 +40,7 @@ corsican = { #Corsu ethos = ethos_communal heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_tusco_corsican martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -71,13 +72,13 @@ emilian = { #Emigliân ethos = ethos_communal heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_emilo_romagnol martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { tradition_city_keepers - tradition_republican_legacy + tradition_farmer_republics tradition_culinary_art tradition_agrarian tradition_brewery @@ -105,7 +106,7 @@ laziale = { ethos = ethos_bureaucratic heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_median martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -139,7 +140,7 @@ neapolitan = { #Napulitano ethos = ethos_bureaucratic heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_neapolitan martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -173,7 +174,7 @@ NEOW_lombard = { #Lumbard ethos = ethos_stoic heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_lombard_piedmontese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -206,7 +207,7 @@ piedmontese = { ethos = ethos_courtly heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_lombard_piedmontese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -240,7 +241,7 @@ pugliese = { ethos = ethos_spiritual heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_neapolitan martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -249,6 +250,7 @@ pugliese = { tradition_culture_blending tradition_agrarian tradition_castle_keepers + tradition_republican_legacy } name_list = name_list_italo_dalmatian @@ -273,7 +275,7 @@ romagnol = { #Rumagnòl ethos = ethos_spiritual heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_emilo_romagnol martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -305,7 +307,7 @@ sicilian = { #Sicilianu ethos = ethos_courtly heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_sicilian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -343,7 +345,7 @@ tuscan = { #Tuscano ethos = ethos_bureaucratic heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_tusco_corsican martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -377,7 +379,7 @@ venetian = { #Vèneto ethos = ethos_bureaucratic heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_venetian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -411,7 +413,7 @@ ligurian = { #Lìgure ethos = ethos_courtly heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_ligurian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -445,7 +447,7 @@ friulian = { #Furlan ethos = ethos_stoic heritage = heritage_italian - language = language_rhaetoromance + language = NEOW_language_friulian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -454,6 +456,7 @@ friulian = { #Furlan tradition_culture_blending tradition_forbearing tradition_hill_dwellers + tradition_farmer_republics } name_list = name_list_gallo_italian @@ -482,7 +485,7 @@ maltese = { #Maltin ethos = ethos_egalitarian heritage = heritage_italian - language = language_maltese + language = NEOW_language_maltese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -491,6 +494,7 @@ maltese = { #Maltin tradition_stalwart_defenders tradition_esteemed_hospitality tradition_xenophilic + tradition_farmer_republics } name_list = name_list_sicilian #PLACEHOLDER @@ -516,7 +520,7 @@ ladin = { ethos = ethos_communal heritage = heritage_italian - language = language_rhaetoromance + language = NEOW_language_ladin martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -525,6 +529,7 @@ ladin = { tradition_mountaineers tradition_esteemed_hospitality tradition_hard_working + tradition_farmer_republics } name_list = name_list_gallo_italian diff --git a/common/culture/cultures/NEOW_mosellic.txt b/common/culture/cultures/NEOW_mosellic.txt index 76d86279..b4e122b5 100644 --- a/common/culture/cultures/NEOW_mosellic.txt +++ b/common/culture/cultures/NEOW_mosellic.txt @@ -3,7 +3,7 @@ ethos = ethos_communal heritage = heritage_mosellic - language = language_mosellic + language = NEOW_language_north_mosellic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -40,12 +40,10 @@ elsasse = { color = { 204 168 61 } - parents = { swabian lorin } - created = 2300.1.1 ethos = ethos_stoic heritage = heritage_mosellic - language = language_high_german + language = NEOW_language_south_mosellic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -87,7 +85,7 @@ letzebuerge = { #Letzebüerge ethos = ethos_communal heritage = heritage_mosellic - language = language_mosellic + language = NEOW_language_north_mosellic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -126,7 +124,7 @@ lorin = { ethos = ethos_communal heritage = heritage_mosellic - language = language_mosellic + language = NEOW_language_south_mosellic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 diff --git a/common/culture/cultures/NEOW_north_germanic.txt b/common/culture/cultures/NEOW_north_germanic.txt index c6ce2ee7..ac6132e0 100644 --- a/common/culture/cultures/NEOW_north_germanic.txt +++ b/common/culture/cultures/NEOW_north_germanic.txt @@ -3,13 +3,14 @@ ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_east_danish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { tradition_eye_for_an_eye tradition_hereditary_hierarchy tradition_seafaring + tradition_republican_legacy } name_list = name_list_danish @@ -35,7 +36,7 @@ dansk = { ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_danish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -70,7 +71,7 @@ doggerlander = { ethos = ethos_bellicose heritage = heritage_north_germanic - language = language_english + language = NEOW_language_doggerlandish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -111,11 +112,12 @@ faerosk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_faroese martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { tradition_things + tradition_farmer_republics tradition_fishermen tradition_hereditary_hierarchy tradition_seafaring @@ -143,7 +145,7 @@ gotsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_communal heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -177,7 +179,7 @@ smalandsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_spiritual heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -210,13 +212,13 @@ gutnsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_bellicose heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_gutnish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { tradition_landstinget tradition_astute_diplomats - tradition_isolationist + tradition_republican_legacy tradition_practiced_pirates tradition_stalwart_defenders } @@ -244,12 +246,12 @@ icelander = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_icelandic martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { tradition_things - tradition_republican_legacy + tradition_farmer_republics tradition_seafaring tradition_fishermen } @@ -279,7 +281,7 @@ jaamtsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_jaamtlandic martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -316,7 +318,7 @@ ostsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_egalitarian heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_norweigian martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -349,7 +351,7 @@ trondheimer = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_bellicose heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_norweigian martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -384,7 +386,7 @@ skansk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_communal heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -424,7 +426,7 @@ slesvigsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_danish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -435,6 +437,7 @@ slesvigsk = { } name_list = name_list_danish + name_list = name_list_low_saxon coa_gfx = { danish_coa_gfx western_coa_gfx } building_gfx = { western_building_gfx } @@ -456,7 +459,7 @@ svealandsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_bureaucratic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -490,7 +493,7 @@ norrlandsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -523,7 +526,7 @@ vestsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_norweigian martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -557,7 +560,7 @@ danish = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_norse + language = NEOW_language_danish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -647,7 +650,7 @@ norwegian = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_norse + language = NEOW_language_norweigian martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -691,7 +694,7 @@ swedish = { #Used for cultural history purposes house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_bellicose heritage = heritage_north_germanic - language = language_norse + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { diff --git a/common/culture/cultures/NEOW_rhaeto_helvetic.txt b/common/culture/cultures/NEOW_rhaeto_helvetic.txt index 7ad060b9..d01a4ac3 100644 --- a/common/culture/cultures/NEOW_rhaeto_helvetic.txt +++ b/common/culture/cultures/NEOW_rhaeto_helvetic.txt @@ -6,7 +6,7 @@ ethos = ethos_stoic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_north_helvetic martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -43,7 +43,7 @@ pelonais = { ethos = ethos_bureaucratic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_south_helvetic martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -83,14 +83,14 @@ romansch = { ethos = ethos_stoic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_romansch martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_19 house_coa_mask_offset = { 0.0 0.025 } house_coa_mask_scale = { 0.95 0.95 } traditions = { - tradition_parochialism + tradition_farmer_republics tradition_hard_working tradition_castle_keepers tradition_mountain_homes @@ -120,7 +120,7 @@ sassun = { ethos = ethos_stoic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_north_helvetic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -156,7 +156,7 @@ swiss = { #Svizzer ethos = ethos_stoic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_south_helvetic martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -164,9 +164,8 @@ swiss = { #Svizzer tradition_staunch_traditionalists tradition_hard_working tradition_religious_patronage - tradition_fervent_temple_builders tradition_faith_bound - + tradition_farmer_republics } name_list = name_list_NEOW_swabian diff --git a/common/culture/cultures/NEOW_romani.txt b/common/culture/cultures/NEOW_romani.txt index 187bdef3..80a20c78 100644 --- a/common/culture/cultures/NEOW_romani.txt +++ b/common/culture/cultures/NEOW_romani.txt @@ -1,7 +1,7 @@ cale = { color = { 0.82 0.92 0.7 } - ethos = ethos_bellicose + ethos = ethos_communal heritage = heritage_romani language = language_calo martial_custom = martial_custom_male_only diff --git a/common/culture/cultures/NEOW_scottish.txt b/common/culture/cultures/NEOW_scottish.txt index 3844bf19..10b13ad8 100644 --- a/common/culture/cultures/NEOW_scottish.txt +++ b/common/culture/cultures/NEOW_scottish.txt @@ -3,7 +3,7 @@ ethos = ethos_bellicose heritage = heritage_scottish - language = language_goidelic + language = NEOW_language_scottish martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -12,7 +12,7 @@ traditions = { tradition_defiant tradition_hill_dwellers - tradition_highland_warriors + tradition_farmer_republics tradition_strong_kinship tradition_fp1_performative_honour } diff --git a/common/culture/cultures/NEOW_south_slavic.txt b/common/culture/cultures/NEOW_south_slavic.txt index 79ef1968..c05b47cd 100644 --- a/common/culture/cultures/NEOW_south_slavic.txt +++ b/common/culture/cultures/NEOW_south_slavic.txt @@ -6,7 +6,7 @@ ethos = ethos_communal heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_slovene #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -37,7 +37,7 @@ NEOW_serbian = { ethos = ethos_stoic heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -68,7 +68,7 @@ NEOW_bosnian = { ethos = ethos_communal heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -99,7 +99,7 @@ NEOW_slovene = { ethos = ethos_egalitarian heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_slovene #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -130,7 +130,7 @@ NEOW_croatian = { ethos = ethos_ceremonious heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -161,7 +161,7 @@ NEOW_montenegran = { ethos = ethos_communal heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -192,7 +192,7 @@ NEOW_bulgarian = { ethos = ethos_communal heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_east_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -223,7 +223,7 @@ moliski = { #Moliški ethos = ethos_spiritual heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_west_germanic.txt b/common/culture/cultures/NEOW_west_germanic.txt index cc64cc38..ffb04440 100644 --- a/common/culture/cultures/NEOW_west_germanic.txt +++ b/common/culture/cultures/NEOW_west_germanic.txt @@ -5,7 +5,7 @@ ethos = ethos_bureaucratic heritage = heritage_west_germanic - language = language_dutch + language = NEOW_language_dutch martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -39,7 +39,7 @@ frisian = { #Represented the "old frisians" in vanilla, actually playable here # ethos = ethos_stoic heritage = heritage_west_germanic - language = language_frisian + language = NEOW_language_frisian martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -48,8 +48,8 @@ frisian = { #Represented the "old frisians" in vanilla, actually playable here # traditions = { tradition_fishermen tradition_agrarian - tradition_pastoralists - tradition_forbearing + tradition_pastoralists + tradition_farmer_republics tradition_modest } @@ -73,7 +73,7 @@ kleverlandish = { ethos = ethos_bureaucratic heritage = heritage_west_germanic - language = language_dutch + language = NEOW_language_dutch martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -108,7 +108,7 @@ limburgisch = { ethos = ethos_bureaucratic heritage = heritage_west_germanic - language = language_dutch + language = NEOW_language_limburgish martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 diff --git a/common/culture/cultures/NEOW_west_slavic.txt b/common/culture/cultures/NEOW_west_slavic.txt index 1cf6b7b4..dcdf51c7 100644 --- a/common/culture/cultures/NEOW_west_slavic.txt +++ b/common/culture/cultures/NEOW_west_slavic.txt @@ -3,7 +3,7 @@ ethos = ethos_bureaucratic heritage = heritage_west_slavic - language = language_lechitic + language = NEOW_language_polish martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -33,7 +33,7 @@ NEOW_moravian = { ethos = ethos_bureaucratic heritage = heritage_west_slavic - language = language_czech_slovak + language = NEOW_language_czech martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -63,7 +63,7 @@ sorbian = { ethos = ethos_bureaucratic heritage = heritage_west_slavic - language = language_sorbian + language = NEOW_language_sorbian martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { diff --git a/common/culture/name_equivalency/00_NEOW_female_names.txt b/common/culture/name_equivalency/00_NEOW_female_names.txt index 61708490..de1df1e2 100644 --- a/common/culture/name_equivalency/00_NEOW_female_names.txt +++ b/common/culture/name_equivalency/00_NEOW_female_names.txt @@ -2,14 +2,15 @@ ada_female = { Ada Adda } adela_female = { Aaltje Ad_e_grv_le Ad_e_grv_lo Addyla Addylla Adela Adele Aiddelai } adelaide_female = { Ad_e_act_la_i_uml_de Adelaide Adelheid Addylayddy Addylaydy Addyllayddy Aida Aiddelaide Aleida Alida Alijda Alke Azala_i_uml_s Aziliz Azylis Elke Heide Heidi } -adriana_female = { Adriana Adriano } +adriana_female = { Adriana Adriano_female } agatha_female = { _A_rng_got Agate Agatha Agathe Agato Gadea } -agnes_female = { Agn_e_grv_s Agnes Agneta Agnys Anest In_e_grv_s Ines Nesta Nysta Oanell } +agnes_female = { Agn_e_grv_s Agnes Agneta Agnys Anest In_e_grv_s In_e_hat_s Ines Nesta Nysta Oanell } ainhoa_female = { Ainhoa Ainoa } +aisha_female = { Ay_s_ced_e } alba_female = { Alba } albana_female = { Aubano } alberta_female = { Alberdina Alberta Alberte Albertine Albertino_female } -alexandra_female = { Ailexsaindrai Alessandra Alessandrino_female Alessandro_female Alexandra Allyksanddra Alyksanddra Sandra Sandrine Sandrino_female Sandy } +alexandra_female = { Ailexsaindrai Alessandra Alessandrino_female Alessandro_female Alexandra Alexandrina Allyksanddra Alyksanddra Sandra Sandrine Sandrino_female Sandy } alexia_female = { Al_e_grv_xia Alessia Alessio_female Alexia Alexina } alfhild_female = { Vilde } alice_female = { Ailice Al_i_act_cia Alice Alicia Alis Alison Alix Alixe Alize Allycy Alycy Alysy } @@ -19,17 +20,17 @@ amaia_female = { Amaia Amaya } amanda_female = { Amanda Amandino Mandy } amata_female = { Aimado Aimee Amy Esm_e_act_e Esmee Maitane } amber_female = { Aimber Amber Ambyr } -amelia_female = { Am_e_act_lie Am_e_grv_li Amale Amalie Amelia Amelie } -amina_female = { Amina } +amelia_female = { Am_a_act_lia Am_e_act_lia Am_e_act_lie Am_e_grv_li Amale Amalie Amelia Amelie } +amina_female = { Amina Emine } amira_female = { Amira } anahid_female = { Anahyta } anastasia_female = { Anastasi_e_act_ Anastasia Anastasie Stacey } -andrea_female = { Andere Andr_e_act_e Andrea Andrine Andriveto } -angela_female = { _A_grv_ngela Aela Aelia Aelig Ang_e_grv_lo_female Angela Angelina Angelita Angyla Engelina Gotzone } +andrea_female = { Andere Andr_e_act_e Andrea Andreia Andrine Andriveto } +angela_female = { _A_grv_ngela _A_hat_ngela Aela Aelia Aelig Ang_e_grv_lo_female Angela Angelina Angelita Angyla Engelina Gotzone } angeles_female = { _A_grv_ngels } -angelica_female = { Angelica Angelico_female Angelika Angelique Lieke } +angelica_female = { Ang_e_act_lica Angelica Angelico_female Angelika Angelique Lieke } anna_female = { Aina Ainne Ana Ana_i_uml_s Anais Ane Aneto Anette Anita Anja Anke Ann Anna Annaig Anne Anneke Anneken Annette Anni Annica Annick Annicka Annie Annigje Annika Anniken Anny Ano Anouk Antje Hanka Hanna Hannah Hanne Naig } -annabella_female = { Annabel Annabell Annabella } +annabella_female = { Anabela Annabel Annabell Annabella } annacatherine_female = { Anna-Karin Annekatrin } annacharlotte_female = { Ann-Charlotte } annachristina_female = { Anna-Stina Ann-Christin Annki } @@ -46,26 +47,26 @@ annasophia_female = { Anne-Sophie Ano-Souf_i_grv_o } antonia_female = { Ant_o_grv_nia Antoinette Antonella Antonetta Antonia Antonieta Antonietta Antouneto Antoynytty T_o_grv_nio_female Teuntje Tounieto } anunciacion_female = { Anuntxi } aphrodite_female = { Affrhodyty } -apollonia_female = { Lone Poul_o_grv_nio } +apollonia_female = { Apol_o_act_nia Lone Poul_o_grv_nio } april_female = { Abri_e_act_u Abril Ebrel } aranzazu_female = { Arantxa Arantza Arantzazu Aranzazu } ariadne_female = { Ariadna Ariana Ariane } arlette_female = { Arleto } asa_female = { _A_rng_sa _A_rng_se } -asma_female = { Asma } +asma_female = { Asma Esma } astrid_female = { _A_grv_strid Asta Astri Astrid } -asuncion_female = { Assumpci_o_act_ Assunta Asun Axun Jasone } +asuncion_female = { Assumpci_o_act_ Assun_c_ced__a_tld_o Assunta Asun Axun Jasone } ascencion_female = { Igone } ashleigh_female = { Aishlei Ashleigh Ashley Ashlly Ashly } auda_female = { Aude } audrey_female = { Audr_e_act_ } augusta_female = { Augusta Auguste_female } augustina_female = { Agustino_female Augustina } -aurelia_female = { Aur_e_act_lie Aur_e_grv_lia Aurel_i_grv_o_female Aurelia } +aurelia_female = { Aur_e_act_lia Aur_e_act_lie Aur_e_grv_lia Aurel_i_grv_o_female Aurelia } aurora_female = { Aurora Aurore Auroro } aveline_female = { Awyllyny Awylyny } baptista_female = { Batistino } -barbara_female = { B_a_grv_rbara B_a_uml_rbel B_a_uml_rbl Barbara Barbo_female Barbro } +barbara_female = { B_a_act_rbara B_a_grv_rbara B_a_uml_rbel B_a_uml_rbl Barbara Barbo_female Barbro } beata_female = { Beata Beate } beatrice_female = { B_e_act_atrice Beaitrice Beatrice Beatris Beatriu Beatrix Beatriz Betrys Byatrhyks Byatrycy Byatrysy } belen_female = { Belen Betlem } @@ -76,21 +77,21 @@ bernarda_female = { Berendina Bernadeto Bernadette Bernardina Bernado } bertha_female = { Berta Bertha Berto_female } bertranda_female = { Bertrando } bethany_male = { Beaitani Byafany } -blanche_female = { Biainca Bianca Bianka Blanca Blanche Blanco_female Bllanchy Blanshy Byanca Zuri_n_tld_e } +blanche_female = { Biainca Bianca Bianka Blanca Blanche Blanco_female Bllanchy Blanshy Branca Byanca Zuri_n_tld_e } boudicca_female = { Boudyca } bridget_female = { Berit Birgit Birgitt Birgitta Birgitte Birte Birthe Brec_pst_hed Bregido Bridget Brigitte Brit Brita Britt Britta Bryddgyt Ffraid Gitta Gitte } brittany_female = { Britney } brunhilde_female = { Brunhilde } -bushra_female = { Bouchra } +bushra_female = { B_u_uml__s_ced_ra Bouchra } camilla_female = { Camiho Camilla Camille_female Kamilla } -candida_female = { C_a_grv_ndida } +candida_female = { C_a_grv_ndida C_a_hat_ndida } carla_female = { Carla Carleno_female Carly Carol Carola Carole Carolo_female Charl_e_grv_ne Charlene Charly Karla Karola } -carmen_female = { Carme Carmela Carmella Carmen Carmina Karmele } +carmen_female = { Carme Carmela Carmella Carmen Carmina Carmo Karmele } carolina_female = { Carolina Caroline Carolyn Caroulino Karolina Karoline } cassandra_female = { Cassandra Cassandro Kasyy } -catherine_female = { Cadi Cafyryny Caiterine Caitlin Carin Carina Catarino Caterina Catharina Catherine Cathy Cathyrhyny Cati Catrin Catyy Caytllyn K_a_uml_te K_a_uml_the Kafyryny Kaiterine Kaitrin Kajsa Karen Kari Karin Karina Karine Karyn Katalin Katarina Kate Katell Katharina Katharine Katherina Katherine Kathleen Kathrin Kathryn Kati Katia Katie Katixa Katja Katrin Katrina Katrine Kattalin Katy Kaytlyn Nienke Trijntje Trine } +catherine_female = { C_a_act_tia Cadi Cafyryny Caiterine Caitlin Carin Carina Catarina Catarino Caterina Catharina Catherine Cathy Cathyrhyny Cati Catrin Catyy Caytllyn K_a_uml_te K_a_uml_the Kafyryny Kaiterine Kaitrin Kajsa Karen Kari Karin Karina Karine Karyn Katalin Katarina Kate Katell Katharina Katharine Katherina Katherine Kathleen Kathrin Kathryn Kati Katia Katie Katixa Katja Katrin Katrina Katrine Kattalin Katy Kaytlyn Nienke Trijntje Trine } cecilia_female = { C_e_act_cile Cec_i_act_lia Cecilia Ceciliai Cecilie Cecilo Cicely Cilly Cycyllya Cycylya Sheila Sheyla Silje Silke Sille Sisse Sissel Sysylya Xixili } -celestina_female = { Celestino_female Celesto_female } +celestina_female = { Celeste Celestina Celestino_female Celesto_female } celia_female = { C_e_grv_lia Celi_a_grv_ Celia } celine_female = { C_e_act_line Celina Celino Selina Sylyna } chantal_female = { Chantal Chantelle Xantal } @@ -100,14 +101,14 @@ chloe_female = { Chlo_e_act_ Chlloy Chloe Chloy Clou_e_grv_ Kloy } christelle_female = { Christel Christelle Kristell } christina_female = { Carsta Chesten Chrissie Christa Christiane Christina Christine Crestino Cristina Cristyn Kersten_female Kerstin Kirsten Kirsti Kirstine Kirsty Kristen Kristin Kristina Kristine Kristy Stina Stine Tine } chun_female = { Chun Shun } -claire_female = { Argi_n_tld_e Clair Claire Clara Clare Clarha Clarisso Claro_female Kl_a_uml_rchen Klara Sklaerenn } -claudia_female = { Cl_a_grv_udia Claudette Claudia Claudine Gladys Glaudeto Glaudino Glaudo_female Gwladdys Gwladys Klaoda Klaodina Klaudia } +claire_female = { Argi_n_tld_e Clair Claire Clara Clare Clarha Clarisse Clarisso Claro_female Kl_a_uml_rchen Klara Sklaerenn } +claudia_female = { Cl_a_act_udia Cl_a_grv_udia Claudette Claudia Claudine Gladys Glaudeto Glaudino Glaudo_female Gwladdys Gwladys Klaoda Klaodina Klaudia } clementia_female = { Clem_e_grv_nci Clem_e_grv_ncia Clementia Clementina Clementino_female Clymyntyny } -cleopatra_female = { Cl_e_act_op_a_hat_tre } +cleopatra_female = { Cl_e_act_op_a_hat_tre Klyopatra Cllyopatra Clyopatrha Cleopaitrai } clorinda_female = { Clorinda Clorinde Clourindo } clotilda_female = { Clotilde Cloutido } colette_female = { Colette Coul_e_grv_to } -concepcion_female = { Concepci_o_act_ Concetta Conxita Sorkunde } +concepcion_female = { Concei_c_ced__a_tld_o Concepci_o_act_ Concetta Conxita Sorkunde } constance_female = { Constaince Constance Constancy Constanze Coustan_c_ced_o Konstanse } coralie_female = { Coral_i_act_ Coural_i_grv_o } cordelia_female = { Corhddylya } @@ -119,30 +120,32 @@ cynthia_female = { Cynfya Cynthia } dalia_female = { Ddahlya Ddalya } daniela_female = { Ddainni Dani_e_uml_lle Daniela Danielle Danielo_female Danique Ddainielle Ddanny Ddanylly Ddanyylly } daphne_female = { Daphne Daun_e_grv_ } -debora_female = { Debbie Debora Deborah Debra } +debora_female = { Debbie Debora Deborah Debra Devorah } delphine_female = { D_o_act_ufino Delfina Delphine } demetria_female = { Demi } denise_female = { Daniso Ddynysy Deneza Denise } desiree_female = { Desir_e_act_e } diana_female = { Ddyana Diane Diana Diano } +dietlinde_female = { Deolinda Dietlinde Theodelinde } dolores_female = { Dolors Loli Nekane } doris_female = { Doris Dorise } dominica_female = { Domenica Dominika Dominique_female Doumenico_female } dorothy_female = { D_o_uml_rte D_o_uml_rthe Ddorhofyy Ddorofy Dorothea Dorothy Dorthe Doryty Dourout_e_grv_io } edith_female = { _E_act_dith Eddit Eddyf Edyf Edith Editha Edito } edmunda_female = { Edmunda } -eleanor_female = { _E_act_l_e_act_onore A_e_act_nor Ali_e_act_nor Eleainor Eleanor Eleonor Eleonore Elinor Eliounor Ellinor Ellyanor Elyanor Elyanorh Leounoro Lore Lynorh } +eduarda_female = { Eduarda } +eleanor_female = { _E_act_l_e_act_onore A_e_act_nor Ali_e_act_nor Eleainor Eleanor Eleonor Eleonore Elinor Eliounor Ellinor Ellyanor Elyanor Elyanorh Leonor Leounoro Lore Lynorh } eliana_female = { _E_act_liane Eliano } elisa_female = { _E_act_lise Elisa Elise Eliso Eliza } -elizabeth_female = { _E_act_lisabeth Bab_e_grv_u_female Babette Bessie Bethan Bettina Betty Eisab_e_grv_u Elesbed Elisabet Elisabeth Elixabet Elixabete Elizabeth Elizaibet Ellyzabyf Elsbeth Elsebeth Elsie Elspet Elysabyf Elyzabyf Ilsabe Liesel Lill Lis Lisbeth Lisen Lisette Liz Lizzie Llyzzyy Lyzzyy } +elizabeth_female = { _E_act_lisabeth Bab_e_grv_u_female Babette Bessie Bethan Bettina Betty Eisab_e_grv_u Elesbed Elisabet Elisabete Elisabeth Elixabet Elixabete Elizabeth Elizaibet Ellyzabyf Elsbeth Elsebeth Elsie Elspet Elysabyf Elyzabyf Ilsabe Liesel Lill Lis Lisbeth Lisen Lisette Liz Lizzie Llyzzyy Lyzzyy } elizabethcharlotte_female = { Lieselott Liselotte } elodie_female = { _E_act_lodie Eloud_i_grv_o } -elsa_female = { Els_a_grv_ Elsa Else Ilse Telse } +elsa_female = { Els_a_grv_ Elsa Else Elza Ilse Telse } elvira_female = { Elvira Elwyrha } emeline_female = { Emblyn Emelino } emerald_female = { Emerald Esmeraudo } emily_female = { _E_act_milie Em_i_act_lia Emelie Emil_i_grv_o_female Emili_female Emilia Emiliano_female Emilie Emily Emmy Emylly Emyly Emylyy } -emma_female = { Em_a_grv_ Emma Emmai Imke } +emma_female = { Em_a_grv_ Ema Emma Emmai Imke } emmanuella_female = { Emanuela Emanuelo_female Emmanuelle Manuela Manuello } enid_female = { Enid Enydd } erika_female = { Erika } @@ -151,24 +154,25 @@ ernesta_female = { Erna Ernestino } esmeralda_female = { Esm_e_act_ralda Esmeralda Maragda } esther_female = { Esfyrh Est_e_grv_r Ester Esther } estibaliz_female = { Estibaliz Estitxu } -eugenia_female = { _E_act_ug_e_grv_nio Eug_e_act_nie Eug_e_grv_nia Eukene Owena } -eulalia_female = { _E_act_ul_a_grv_lio Eul_a_grv_lia Laia Olaia } +eugenia_female = { _E_act_ug_e_grv_nio Eug_e_act_nia Eug_e_act_nie Eug_e_grv_nia Eukene Owena } +eulalia_female = { _E_act_ul_a_grv_lio Eul_a_act_lia Eul_a_grv_lia Laia Olaia } euphemia_female = { Euphemia } +eurydice_female = { Eur_i_act_dice } eva_female = { _E_grv_ve _E_grv_vo Efa Eva Ewa Ewya } evamaria_female = { Eva_spc_Maria } evelyn_female = { _E_act_velyne Evaline Evelien Evelin Evelina Eveline Evelino Evelyn } fabiana_female = { Fabiano_female Fabienne } faith_female = { Fayf } farah_female = { Farah Ffarrah } -farida_female = { Farida } +farida_female = { Farida Feride } fatiha_female = { Fatiha } -fatima_female = { F_a_grv_tima Fatima Fatma Ffatymah } +fatima_female = { F_a_act_tima F_a_grv_tima Fadime Fatima Fatma Ffatymah } fatina_female = { Fatine } faustina_female = { Faustino_female } fawzia_female = { Fawzia } felicia_female = { Fel_i_act_cia Felicetta Felicia Feliciana Feliso_female Ffylyssa } felicity_female = { Felicita Felicity } -ferdinanda_female = { Fernando_female } +ferdinanda_female = { Fernanda Fernando_female } fiona_female = { Ffion Ffyon Fiona } flavia_female = { Fl_a_grv_vio_female Flavia } flora_female = { Fflur Fflyurh Fiorella Fleur Floor Flora Floro Flors Flour Flourino Lore } @@ -179,7 +183,7 @@ frances_female = { Chichoueso Ffrhancys_female Fra_n_tld_seza Fran_c_ced_oise Fr frederica_female = { Frederico_female Frederika Frederikke Fredrika Friederike Rikke } freya_female = { Freja } frida_female = { Frida Frieda } -gabriela_female = { Gabriele Gabriella Gabrielle Gabrielo_female Gaby } +gabriela_female = { Gabriela Gabriele Gabriella Gabrielle Gabrielo_female Gaby } gael_female = { Ga_e_grv_lo Ga_e_uml_lle } gemma_female = { Gema Gemma Gemmai Gymma Jemma } genevieve_female = { Genevi_e_grv_ve Genevivo Gineto } @@ -187,28 +191,30 @@ georgia_female = { Georgette Georgia Georgiana Georgina Gyorhgya Jordina Jourget geralda_female = { Geraldina Geraldine Geraldino_female Gyrhalddyny } gerarda_female = { Gerarda Gerdina Gerit_female Gerrit_female Gerritdina Gerritje } germana_female = { Germaine Germano_female } -gertrude_female = { Geertje Geertruida Gerd_female Gerda Gerdi Gertraud Gertraude Gertrud Gertruda Gertrude Gertrudo Gesche Gesine Truus } +gertrude_female = { Geertje Geertruida Gerd_female Gerda Gerdi Gertraud Gertraude Gertrud Gertruda Gertrude Gertrudes Gertrudo Gesche Gesine Truus } gesine_female = { S_u_uml_nje S_u_uml_nne } ghislaine_female = { Guisl_e_grv_no } gilberta_female = { Giliberto_female } gisela_female = { Giesela Gis_e_grv_le Gis_e_grv_lo Gisa Gisela } -gloria_female = { Aintzane Gl_o_grv_ria Glorhyana Gloria } -grace_female = { Garazi Grace Gracy Graxi Grazia } +gloria_female = { Aintzane Gl_o_act_ria Gl_o_grv_ria Glorhyana Gloria } +grace_female = { Garazi Gra_c_ced_a Grace Gracy Graxi Grazia } gudula_female = { Gudula } +gul_female = { G_u_uml_l } gunhild_female = { Gun Gunhild Gunild Gunilla Gunn Gunnel } gwen_female = { Gwen Gwenn } gwendolyn_female = { Gwendolen Gwendoline Gwynddolyn } hajar_female = { Hajer } halima_female = { Halima } hanan_female = { Hanane } +hatshepsut _female = { Hatshypswt Haitshepsut } hazel_female = { Hasyl Hazel } hayley_female = { Haiilei Hayley Hayllyy Haylyy } heather_female = { Heaiter Heather Hyafyr } hedwig_female = { Hedda Hedvig Hedwig } helen_female = { Eileen Elaine Elayny Elen Elena Elene Eleno Elin Elina Eline Ellayny Ellen H_e_act_l_e_grv_ne Hel_e_act_n Hel_e_act_ne Helen Helena Helene Hylyna Ilka Ilona Lena Nellie Nelly } -heloise_female = { H_e_act_lo_i_uml_se } +heloise_female = { H_e_act_lo_i_uml_se Helo_i_act_sa } henrietta_female = { Enrieto Enriqueta Harriet Harriette Hattie Heike Henderika Hendrica Hendrika Hendrikje Hendrina Henri_e_uml_tte Henrica Henrietta Henriette Hetty Jette } -hermine_female = { Hermina Hermine } +hermine_female = { Herm_i_act_nia Hermina Hermine } hermione_female = { Hermione Hyrhmyony } hilaria_female = { Hilary } hilda_female = { Hilda Hilde Hildur } @@ -230,25 +236,27 @@ ingrid_female = { _I_act_ngrid Inger Ingrid Ingrido } igraine_female = { Igraine Igrayny } irene_female = { Eirin Ioryny Iren Irene Ireno_female Irhyny Iria Irina } irma_female = { Irm_a_grv_ } -isabella_female = { Eisabello Iosabyll Iosabylla Iosabylly Isa_female Isabel Isabell Isabella Isabelle Isabyl Isabylla Isabylly Isaibel Isaibellai Isaibelle Izabel Ysbayl } -iseult_female = { Ioswlldy Is_e_grv_ut Isolde Iswlddy Isyult Yseult } +isabella_female = { Eisabello Iosabyll Iosabylla Iosabylly Isa_female Isabel Isabela Isabell Isabella Isabelle Isabyl Isabylla Isabylly Isaibel Isaibellai Isaibelle Izabel Ysbayl } +iseult_female = { Ioswlldy Is_e_grv_ut Isilda Isolde Iswlddy Isyult Yseult } isidora_female = { Isidra } jacqueline_female = { Jacoba Jacqueline Jakeza Jaquelino Jaqueto } jade_female = { Jade Jady Jaidde } jahan_female = { Jihane } +jamila_female = { Jamila } +jawhar_female = { Cevahir } jennifer_female = { Gueni_e_grv_vro Guynyvyry Guynywyrhy Gwenhwyfar Gwenifer Gwynhwyffar Jenifer Jenifry Jennie Jennifer Jenny Jennyfer } jessica_female = { Jessic_a_grv_ Jessica Jessicai Jessie Jessika Jyssyca Jyssyka Jyssyy } jesusa_female = { Iosune Josune } -joachima_female = { Joaquima } -joan_female = { Chanig Hanneke Ibane Ioana Ione Ivana Jaine Jane Janed Janedig Janet Janeto_female Janice Janina Janine Janna Janneke Jannetje Janni Jannicke Jannie Jannigje Janny Jano_female Jansje Jantina Jantje Jany Jayne Jean_female Jeanette Jeanne Jeannette Jeannick Jeannine Jenna Jenny Joain Joainnai Joan Joana Joane Joanna Joanne Joanny Johanna Johanne Johanny Jone Jonna Jowanet Jwan Jyan Shena Sian Si_o_hat_n_Jane Sioned Siwan Sywan Yanna Yoana } +joachima_female = { Joaquima Joaquina } +joan_female = { Chanig Hanneke Ibane Ioana Ione Ivana Jaine Jane Janed Janedig Janet Janeto_female Janice Janina Janine Janna Janneke Jannetje Janni Jannicke Jannie Jannigje Janny Jano_female Jansje Jantina Jantje Jany Jayne Jean_female Jeanette Jeanne Jeannette Jeannick Jeannine Jenna Jenny Joain Joainnai Joan Joana Joane Joanna Joanne Joanny Johanna Johanne Johanny Jone Jonna Jowanet Jwan Jyan Shena Sian Si_o_hat_n_Jane Sioned Siwan Sywan V_a_hat_nia Yanna Yoana } joanamaria_female = { Jano-Mar_i_grv_o Jone_spc_Miren } -jocelyn_female = { Joucelino_female } +jocelyn_female = { Joceline Jocelyne Joucelino_female } joelle_female = { Jo_e_uml_lle Jouelo_female } jordana_female = { Jordan_female } josepha_female = { Giuseppina J_o_act_usefino Jos_e_act_phine Josebe Josefa Josefin Josefina Josefine Josepa Josepha Josephina Josephine Josyffyny Pepita } josette_female = { Josette Jouseto_female } josiane_female = { Josiane Jousiano } -judith_female = { Juddit Judit Judith Judyf Jutta Jwdy Jytte } +judith_female = { Juddit Judit Judite Judith Judyf Jutta Jwdy Jytte } julia_female = { J_u_grv_li_female Julia Julie } juliana_female = { Gillian Gilly Giuliana Jill Julene Juliainai Juliane Juliano_female Julienne Jullyana Julyana Jwlyana Liane } juliet_female = { Juliet Julieta Julieto Juliette Jullyt Julyyt } @@ -256,30 +264,32 @@ justa_female = { Justa } justina_female = { Justine Justino_female } karima_female = { Karima } kelly_female = { Kelli Kelly Kylly } +khadija_female = { Hatice } khalida_female = { Halida } kimberley_female = { Kimberley Kimberli Kimberly Kymbyrly } kriemhild_female = { Krimhild } kulthum_female = { Kalthoum } laetitia_female = { L_ae_titia Laetitia Leticia Leticio Lyttycy } lamia_female = { Lamia Lamya } -latifa_female = { Latifa } -laura_female = { Laiurai Laura Laure Laureto Lauro_female Llaura Lowri } +latifa_female = { Latifa Latife } +laura_female = { Laiurai Laura Laure Laureto Laurinda Lauro_female Llaura Lowri } laurence_female = { Laur_e_grv_n_c_ced_o Laurence } layla_female = { La_i_uml_la Laila Leila Leyla } lea_female = { L_e_act_a Le_a_grv Lea Leah Lia Lyah } leonie_female = { Leonie Leoun_i_grv_o Leountino } leyre_female = { Leire Leyre } liliana_female = { Lilian_female Liliano Lillian } -lily_female = { Lilly Lily } +lily_female = { L_i_act_lia Lilly Lily } linda_female = { Linda Lindo_female Lynda } lindsay_female = { Lindsay Lindsey Lyndsey Lynsey } linnea_female = { Linn Linn_e_act_a Linnea } lisa_female = { Lisa Lise Liseto Liso_female Liza } lorraine_female = { Laiuren Lauren Laurhyn Lauryn Llauryn Lorena Lorhrhayny Lorraine Lourreno } -louise_female = { Aloisia Lizig Llu_i_uml_sa Lo_i_uml_za Loeiza Lois Lou_i_uml_so_female Lou_i_uml_sono Louisa Louise Lova Lovisa Lowysy Ludwiga Luigia Luisa Luise Lwuysy Zaig } -lourdes_female = { Lourdes Lurdes } +louise_female = { Aloisia Lizig Llu_i_uml_sa Lo_i_uml_za Loeiza Lois Lou_i_uml_so_female Lou_i_uml_sono Louisa Louise Lova Lovisa Lowysy Lu_i_act_sa Lu_i_act_za Ludwiga Luigia Luisa Luise Lwuysy Zaig } +lourdes_female = { Lourdes Lourdina Lurdes } lubna_female = { Lobna } -lucia_female = { L_u_grv_ci Llucia Llucy Luci Lucia Lucie Lucy Lucya Lusy Lusya Luzia } +lucia_female = { L_u_act_cia L_u_grv_ci Llucia Llucy Luci Lucia Lucie Lucy Lucya Lusy Lusya Luzia } +lucille_female = { Luc_i_act_lia } luciana_female = { Luciano_female Lucienne } lucrezia_female = { Lucr_e_grv__c_ced_o } ludivina_female = { Ludivino } @@ -287,20 +297,21 @@ lunete_female = { Eluned Llunyty Luned Lunyty } luz_female = { Llum } lydia_female = { L_i_act_dia Lid_i_grv_o Liddiai Lide Lidia Llyddya Lyddya Lydia Lydie } maela_female = { Ma_e_uml_lie Ma_e_uml_lig Maela Maelenn Maeli } -magdalena_female = { Madalen Madaleno Maddalen Maddalena Maddy Maddyllyny Maddylyyny Maddyy Madeleine Magali Magda Magdalena Maialen Maiddeleine Malen Malena Malene Malin Matxalen } +magdalena_female = { Madalen Madalena Madaleno Maddalen Maddalena Maddy Maddyllyny Maddylyyny Maddyy Madeleine Magali Magda Magdalena Maialen Maiddeleine Malen Malena Malene Malin Matxalen } maimuna_female = { Maimuna } -malika_female = { Malika Mallyca Malyka } +malika_female = { Malika Mallyca Malyka Melike } mar_female = { Mar } marcella_female = { Marcelino_female Marcelle Marcello_female } margaret_female = { Gaid Greta Grete Gretel Grethe Grietje Grit M_e_act_gane Mairgairet Mared Margaret Margareta Margarete Margaretha Margarethe Margarido Margarita Margaryt Margaux Marged Margery Margit Margitta Margot Margrete Margrethe Margrit Marguerite Marhgarhyt Marit Marjorie Marjour_i_grv_o Megain Megano Mererid Merete Merethe Mette Mygan Peggy Rita } -maria_female = { M_a_grv_riam M_i_act_riam Maaike Maddi Mair Mairi Maj Maja Majken Mali Manon Manoun Mar_i_grv_o_female Marhya Marhyy Mari Mari_e_uml_lle Maria Mariam Mariama Marie Mariechen Marieke Mariella Marije Marijke Marika Marion Mariona Marioun Mariska Mariso_female Marita Marja Mary Maureen May Maya Megan Meta Mia Mie Miren Mirene Miriam Mirian Mirjam Miryam Moirai Molli Mollie Molly My Myriam Polly Ria } +maria_female = { M_a_grv_riam M_i_act_riam Maaike Maddi Mair Mairi Maj Maja Majken Mali Manon Manoun Mar_i_grv_o_female Marhya Marhyy Mari Mari_e_uml_lle Maria Mariam Mariama Marie Mariechen Marieke Mariella Marije Marijke Marika Marion Mariona Marioun Mariska Mariso_female Marita Marja Mary Maureen May Maya Megan Meryem Meta Mia Mie Miren Mirene Miriam Mirian Mirjam Miryam Moirai Molli Mollie Molly My Myriam Polly Ria } mariaangel_female = { Mar_i_grv_o-Ange Mariangela } mariaangeles_female = { Maria_spc__A_grv_ngels } mariaanna_female = { Mar_i_grv_o-Ano Maria_spc_Anna Mariannick Marie-Annick Maryannick Rianne } mariaantonia_female = { Mar_i_grv_o-Antouneto Maria_spc_Antonieta Maria_spc_Antonietta Marie-Antoinette } mariaascension_female = { Miren_spc_Jasone } -mariaassumpcion_female = { Maria_spc_Assumpci_o_act_ Maria_spc_Assunta } +mariaassumpcion_female = { Maria_spc_Assumpci_o_act_ Maria_spc_Assunta Maria_spc_de_spc_Assun_c_ced__a_tld_o } mariabegonia_female = { Miren_spc_Bego_n_tld_a } +mariabelen_female = { Maria_spc_de_spc_Bel_e_act_m } mariablanca_female = { Maria_spc_Blanca } mariabrigitta_female = { Majbritt Maj-Britt } mariacarmen_female = { Maika Maria_spc_Carme Maria_spc_do_spc_Carmo Miren_spc_Karmele } @@ -310,22 +321,25 @@ mariachristina_female = { Mar_i_grv_o-Crestino Maria_spc_Cristina Maria_spc_Kris mariacinta_female = { Maria_spc_Cinta } mariaclara_female = { Mar_i_grv_o-Claro Marie-Claire } mariaclaudia_female = { Mar_i_grv_o-Glaudo } -mariaconcepcion_female = { Miren_spc_Sorkunde } +mariaconcepcion_female = { Maria_spc_da_spc_Concei_c_ced__a_tld_o Miren_spc_Sorkunde } mariadolores_female = { Maria_spc_Dolors Miren_spc_Nekane } mariadominica_female = { Mar_i_grv_o-Doumenico } mariaelizabeth_female = { Maria_spc_Elisabet Marlies Marlis Miren_spc_Elixabete } mariaeugenia_female = { Maria_spc_Eug_e_grv_nia Miren_spc_Eukene } +mariafatima_female = { Maria_spc_de_spc_F_a_act_tima } mariafrance_female = { Mar_i_grv_o-Fran_c_ced_o Marie-France } mariafrancesca_female = { Mar_i_grv_o-Franceso } -mariagrace_female = { Maria_spc_Grazia } +mariagrace_female = { Maria_spc_da_spc_Gra_c_ced_a Maria_spc_Grazia } mariagwen_female = { Ma_i_uml_wenn Maewenn Maiwen Maiwenn Mari-Gwenn } mariahelena_female = { Mar_i_grv_o-Eleno Marilena May-Helen Miren_spc_Elene } mariajesus_female = { Maria_spc_Jes_u_act_s Miren_spc_Josune } mariajoanna_female = { Mar_i_grv_o-Jano } -mariajoseph_female = { Mar_i_grv_o-J_o_act_us_e_grv_ Maria_spc_Josep Mari-Jozeb } +mariajoseph_female = { Mar_i_grv_o-J_o_act_us_e_grv_ Maria_spc_Jos_e_act_ Maria_spc_Josep Mari-Jozeb } mariajosepha_female = { Maria_spc_Josefa Maria_spc_Josepa } marialaura_female = { Mar_i_grv_o-Lauro } marialouisa_female = { Malou Mar_i_grv_o-Louiso Maria_spc_Llu_i_uml_sa Maria_spc_Luigia Maria_spc_Luisa Marie-Louise Marie-Luise Mari-Loeiza Marloes Milou Miren_spc_Koldobike } +marialourdes_female = { Maria_spc_de_spc_Lourdes Maria_spc_de_spc_Lurdes } +marialuz_female = { Maria_spc_da_spc_Luz } mariamagdalena_female = { Mar_i_grv_o-Madaleno Maria_spc_Magdalena } mariamar_female = { Maria_spc_Mar Miren_spc_Itxaso } mariamercedes_female = { Maria_spc_Merc_e_grv_ } @@ -335,7 +349,8 @@ marianoela_female = { Mar_i_grv_o-Nouelo } mariaodila_female = { Mar_i_grv_o-Oudilo } mariapaula_female = { Mar_i_grv_o-Paulo Maria_spc_Pau } mariapeter_female = { Mar_i_grv_o-P_e_grv_ire } -mariapilar_female = { Maria_spc_Pilar Miren_spc_Pilare } +mariapilar_female = { Maria_spc_do_spc_Pilar Maria_spc_Pilar Miren_spc_Pilare } +mariapurification_female = { Maria_spc_da_spc_Purifica_c_ced__a_tld_o } mariarosa_female = { Mar_i_grv_o-Roso Maria_spc_Rosa } mariasoledad_female = { Marisol Miren_spc_Bakarne } mariatheresa_female = { Maite Mar_i_grv_o-Ter_e_grv_so Maria_spc_Teresa Maria_spc_Theresia Maria-Tereza Marie-Th_e_act_r_e_grv_se Miren_spc_Teresa } @@ -346,33 +361,34 @@ marina_female = { Itsasne Itxasne Maren Mari_n_tld_e Marina Marine Marino_female marlene_female = { Marl_e_grv_no Marleen Marlene } martha_female = { Marta Marte Martha Marthe Marto_female } martina_female = { Maartje Martina Martine Martino_female } -mathilda_female = { Mahaut Maitildai Maiudd Mallt Mathilda Mathilde Matilda Matyldda Matylldda Maud Maudd Mauddy Mechthild Tilda Tilde Tilly } +mathilda_female = { Mafalda Mahaut Maitildai Maiudd Mallt Mathilda Mathilde Matilda Matyldda Matylldda Maud Maudd Mauddy Mechthild Tilda Tilde Tilly } mauricia_female = { Mauriceto_female } maximiliana_female = { Massimiliano Maximiliane } melania_female = { M_e_act_lanie Melan_i_grv_o Melani Melanie } melinda_female = { M_e_act_linda } -melissa_female = { Melissai Melisso Myllyssa Mylyssa } -mercedes_female = { Eskarne Merc_e_act_d_e_grv_s Merc_e_grv_ Mertxe Tregereth } -michelle_female = { Mich_e_grv_le Michaela Michaele Michela Michele_female Micheleto_female Michelle Michello_female Mikaela Mikele } +melissa_female = { Melisa Melissai Melisso Myllyssa Mylyssa } +mercedes_female = { Eskarne Merc_e_act_d_e_grv_s Merc_e_grv_ Merc_e_hat_s Mercedes Mertxe Tregereth } +michelle_female = { Mich_e_grv_le Michaela Michaele Michela Michele_female Micheleto_female Michelle Michello_female Mikaela Mikele Miquelina } milagros_female = { Alazne Miracle Mirari } milana_female = { Milanka } mildred_female = { Mylddrhydd } miranda_female = { Myrandda Myrhandda } mireille_female = { Mir_e_grv_io Mireia Mireille Mirell Mireya } -monica_female = { M_o_grv_nica Mona Monica Monika Monique Mounico_female } +monica_female = { M_o_act_nica M_o_grv_nica Mona Monica Monika Monique Mounico_female } montserrat_female = { Montse Montserrat } morgana_female = { Morgana Morganna Morgen Morhgana Mourgano Mwrgyn } muriel_female = { Murielo } -nadezhda_female = { Nad_e_grv_jo Nadia Nadine } +nadezhda_female = { N_a_act_dia Nad_e_grv_jo Nadia Nadine } nahia_female = { Nahia Nahikari } naima_female = { Naima } najat_female = { Najat } naomi_female = { Naiomi Naomi Naomy Noemi Nouen_i_grv_o } -nasrin_female = { Nesrine } -nathalie_female = { Nadalo Naitailie Nat_a_grv_lia Natach_a_grv_ Natal_i_grv_o Natale Natalia Natalie Natascha Natascia Natasha Natasja Nathalie } +nasrin_female = { Nesrin Nesrine } +nathalie_female = { Nadalo Naitailie Nat_a_act_lia Nat_a_grv_lia Natach_a_grv_ Natal_i_grv_o Natale Natalia Natalie Natalina Natascha Natascia Natasha Natasja Nathalie } nawwal_female = { Nawel } nazanin_female = { Nazanyn } nazareth_female = { Natzaret } +nefertiti_female = { Nefertiti Nyffyrtyty Nyffyrhtyty } nicole_female = { Clasina Klazina Nichola Nicleto Nicola Nicole Nicoline Nicolo_female Niek Nikki Nycoly } nieves_female = { Edurne Neus } nimue_female = { Nimue Nymuy } @@ -381,12 +397,12 @@ nolwenn_female = { Newlyn Noalig Nolwen Nolwenn } nuria_female = { N_u_act_ria Nuria } oceana_female = { Itsaso Itxaso Ouceano } octavia_female = { _O_act_ut_a_grv_vio } -odette_female = { Oudeto } -odile_female = { Odile Odilia Oudilo } +odette_female = { Odete Oudeto } +odile_female = { Odile Odilia Ot_i_act_lia Oudilo } olga_female = { Hege Helga Olg_a_grv_ Olga } olivia_female = { Olive Olivia Wllywyya Wlywyy } -olympia_female = { Oulimpo_female } -ophelia_female = { Of_e_grv_lia Ouf_e_act_l_i_grv_o } +olympia_female = { Ol_i_act_mpia Oulimpo_female } +ophelia_female = { Of_e_act_lia Of_e_grv_lia Oph_e_act_lie Ouf_e_act_l_i_grv_o } palmyra_female = { Palmira } pamela_female = { Pamela } pascala_female = { Pascale Pascaleto Pascalo_female } @@ -395,19 +411,20 @@ paula_female = { Paiulai Paola Paula Paule Pauleto_female Paulette Paulina Pauli paz_female = { Gentzane } penelope_female = { Penelope } petra_female = { Peireto Peirounello Peirouno Pernilla Pernille Petra Petrai Petronella Piera Pieternella Pytra Pytrha } -philippa_female = { Felipino Ffylyppa Filippa Fyllypa Philippa Philippai } +philippa_female = { Felipino Ffylyppa Filipa Filippa Fyllypa Philippa Philippai } philomena_female = { Ffylomyna Filomena Filoumeno } phoebe_female = { Ffoyby Phoebe } phyllis_female = { Ffyllys } pia_female = { Pia } pilar_female = { Pilar } prudence_female = { Prhuddyncy } -purification_female = { Garbi Purificaci_o_act_ } +purification_female = { Garbi Purifica_c_ced__a_tld_o Purificaci_o_act_ } quitteria_female = { Quit_e_grv_ri } rachel_female = { Rach_e_grv_l Rachael Rachel Rachyll Raichel Rakel Raquel Rashyl Rhachyl } ragnhild_female = { Ragnhild Reinhilde } +rahima_female = { Rahime } ramona_female = { Raimunda Ramona Ramoundo_female Raymonde } -raphaela_female = { Raffaella } +raphaela_female = { Rafaela Raffaella } rashida_female = { Rachida } rayhan_female = { Rayhana } rebecca_female = { Beeke Beke Rebeca Rebecca Rebeccai Rebecka Rebeka Rebekah Rebekka Rybycca Rybykka } @@ -417,13 +434,13 @@ renata_female = { Ren_e_act_e Renate Renato_female } rhiannon_female = { Rhiannon Rhyannon } rocio_female = { Ihintza Roc_i_act_o } rolanda_female = { Roulando_female } -romana_female = { Roumano_female } +romana_female = { Romana Roumano_female } rosa_female = { Rhosyn Rosa Rose Rosie Rosina Rosita Roso_female Rosy Rousado Rousino Rozenn } rosaanna_female = { Rosanna } rosalia_female = { Rosalia Rosalie Rosely Rousal_i_grv_o } -rosalyn_female = { Rosalind Roselyne Rousselino } +rosalyn_female = { Rosalina Rosalind Roselyne Rousselino } rosamaria_female = { Romy Rosa_spc_Maria Rosamaria Rosemarie Rose-Marie Rosemary Roso-Mar_i_grv_o } -rosario_female = { Agurne Agurtzane Rosaria Roser } +rosario_female = { Agurne Agurtzane Ros_a_act_rio Rosaria Roser } roxana_female = { Rossana Roxanne } ruth_female = { Rut Ruth } sabina_female = { Sabina Sabine Sabino_female Savina } @@ -431,12 +448,12 @@ sabrina_female = { Sabrina Sabrino_female } safia_female = { Safia Saphia } samantha_female = { Saimaintai Samanfa Samanta Samantha Samanto } samia_female = { Samia } -sarah_female = { Sairai Sairaih Sally Sara Sarah Sarai Saray Sarha Saro_female } +sarah_female = { Sairai Sairaih Sally Sara Sarah Sarai Saray Sarha Saro_female Sera } segolene_female = { Sigouleno } serafina_female = { Fina } serena_female = { Serenai Syryna } severina_female = { Severino_female } -sharifa_female = { Ch_e_act_rifa } +sharifa_female = { _S_ced_erife Ch_e_act_rifa } shaykha_female = { Cheikha } shirin_female = { Shirine Shyryyn } sibylla_female = { Sibillai Sibilo_female Sybil Sybille Sybyl Sybylla } @@ -447,12 +464,13 @@ simona_female = { Simona Simone Simouno_female } solange_female = { Solen Solenn Soulanjo } soledad_female = { Bakarne Xole } solene_female = { Soul_e_grv_no } -sophia_female = { S_o_grv_nia Soffy Sofie Sofia Sonia Sonja Sophia Sophiai Sophie Souf_i_grv_o } +sophia_female = { S_o_act_nia S_o_grv_nia Soffy Sofie Sofia Sonia Sonja Sophia Sophiai Sophie Souf_i_grv_o } sophronia_female = { Soffrhonya Soffronya } -soraya_female = { Soraya } +soraya_female = { Soraia Soraya } stella_female = { Estel Estela Estelle Estello Izar Izarne Seren Stella Steren Sterenn Sterre } stephanie_female = { Estefania Esteveneto Fan_i_grv_ St_e_act_phanie Stefania Stefanie Steffi Stephainie Stephanie Styffanyy } suad_female = { Souad } +sultana_female = { Sultan } summer_female = { Haf Summyr } sunniva_female = { Sunniva Syn_o_stk_ve Synn_o_stk_ve } susan_female = { Sanna Sanne Susan Susana Susann Susanna Susanne Susanny Susano_female Susoun Suzana Suzanne } @@ -469,10 +487,12 @@ theresa_female = { Ter_e_grv_so Tere Teresa Terese Tess Tessa Th_e_act_r_e_grv_s thomasina_female = { Tamzin } thora_female = { Tone Tonje Tora Torny } thorfrid_female = { Tove Turid Tuva } +titania_female = { Tytanya Titainiai } trinity_female = { Irune Trinitat } ulrika_female = { Ulrika Ulrike } -ursula_female = { Oursulo Ursel Ursula Yrsa } +ursula_female = { _U_act_rsula Oursulo Ursel Ursula Yrsa } ute_female = { Oda Uta Ute } +uthman_female = { Osman } valentina_female = { Valentina Valentino_female } valeria_female = { Val_e_act_rie Valeria Valerie Valiero_female } vanessa_female = { Nessa Vanesa Vanessa Vanesso_female } @@ -492,11 +512,11 @@ wiebke_female = { Vibeke } wilhelmina_female = { Hilma Mimmi Minna Minnie Vilma Wilhelmina Wilhelmine Willemina Willy_female Wilma } winifred_female = { Freda Gwenfrewi Winifred Wynnyffrhydd Wynnyffrydd Wynnyfryd } xenia_female = { X_e_grv_nia } -yasmin_female = { Iasmino Ioasmyn Jaismin Jasmijn Jasmin Jasmina Jasmine Jasmyn Jasmyny Yasmin Yasmina Yasmyn Yassmina } -yolanda_female = { Iolanda Jolanda Vi_o_act_ulando Yolanda } -yvette_female = { Ivet Ivetig Iveto_female Ivette Youna Yuna Yvette } -yvonne_female = { Ibone Ivona Ivono_female Yvonne } +yasmin_female = { Iasmino Ioasmyn Jaismin Jasmijn Jasmin Jasmina Jasmine Jasmyn Jasmyny Yasemin Yasmin Yasmina Yasmyn Yassmina } +yolanda_female = { Iolanda Jolanda Vi_o_act_ulando Violante Yolanda } +yvette_female = { Ivet Ivete Ivetig Iveto_female Ivette Youna Yuna Yvette } +yvonne_female = { Ibone Ivona Ivone Ivono_female Yvonne } zahra_female = { Zahra Zohra } -zaynab_female = { Zineb } +zaynab_female = { Zeynep Zineb } zenayda_female = { Sinaida } zoe_female = { Zo_e_uml_ Zoe Zoila Zou_e_grv_ } \ No newline at end of file diff --git a/common/culture/name_equivalency/00_NEOW_male_names.txt b/common/culture/name_equivalency/00_NEOW_male_names.txt index 3f8e1544..99f2702f 100644 --- a/common/culture/name_equivalency/00_NEOW_male_names.txt +++ b/common/culture/name_equivalency/00_NEOW_male_names.txt @@ -1,41 +1,47 @@ aarav_male = { Aarav Aarhav } -aaron_male = { Aarhon Aaron Airron Harouna } +aaron_male = { Aarhon Aaron Airron Harouna Harun } abdulaziz_male = { Abdelaziz } abdulghaffur_male = { Abdelghafour } abdulhafiz_male = { Abdelhafid } abdulhakim_male = { Abdelhakim } abdulkarim_male = { Abdelkarim Abdelkrim } +abdullah_male = { Abdullah } abdullatif_male = { Abdellatif } abdulmunim_male = { Abdelmona_i_uml_m } abdulnasir_male = { Abdul-Nasir } -abdulqadir_male = { Abdelkader } -abdulrahman_male = { Abderrahman Abderrahmane } +abdulqadir_male = { Abd_u_uml_lkadir Abdelkader } +abdulrahman_male = { Abderrahman Abderrahmane Abdurrahman } abdulwahhab_male = { Abdelwahab } abel_male = { Ab_e_grv_l Abel } abner_male = { Abnyr } -abraham_male = { Abraham Brahim Bram Ibr_e_act_hima Ibrahim Ibrahima Ibrahym } +abraham_male = { _I_dot_brahim Abraham Brahim Bram Ibr_e_act_hima Ibrahim Ibrahima Ibrahym } abubakr_male = { Aboubakeur Abubakar Boubaker } abulqasim_male = { Belkacem } +acacius_male = { Ac_a_act_cio } achilles_male = { Achile Achille } -adam_male = { Adam Addam Aiddam } +adam_male = { Ad_a_tld_o Adam Addam Aiddam } +adham_male = { Ethem } adil_male = { Adel } adrian_male = { Addryan Adrhyan Adri_a_grv_ Adriaan Adrian Adriano Adrianus Adrien } agapetus_male = { Agapit } -ahmad_male = { Ahmad Ahmadd Ahmed Amadou } +ahmad_male = { Ahmad Ahmadd Ahmed Ahmet Amadou } aidan_male = { Aeddan } ajax_male = { Ajaks } +akhenaten _male = { Achynatyn Aikenhaiten Akhynatyn } aki_male = { _A_rng_ke Aage } alan_male = { Ailain Alain Alan Allan Allen Alun } -albanus_male = { Alb_a_grv_ Alban Auban } +albanus_male = { Alb_a_grv_ Alban Albano Auban } alberic_male = { Aubrey Aubrhyy } -albert_male = { Adalbert Ailbert Albert Alberto Albertus Alberzh Albrecht Albyrht Albyrt Allbyrt Aubert } +albert_male = { Adalbert Adalberto Ailbert Albert Alberto Albertus Alberzh Albrecht Albyrht Albyrt Allbyrt Aubert } albinus_male = { Albin Albino Aubin } +alcide_male = { Alcides } alex_male = { _A_grv_lex Alec Alex Alick Alyks } -alexander_male = { Ailaistair Alastair Alastayrh Aleissandre Aleksander Aleksandr Alessandro Alexander Alexandre Alistair Allyksanddyr Allyystyr Alyksanddyr Alyksandyrh Sacha Sander Sandrino } +alexander_male = { _I_dot_skender Ailaistair Alastair Alastayrh Aleissandre Aleksander Aleksandr Alessandro Alexander Alexandre Alistair Allyksanddyr Allyystyr Alyksanddyr Alyksandyrh Sacha Sander Sandrino Sandro } alexis_male = { Al_e_grv_ssi Aleix Ales Alexis } -alfonso_male = { Alfons Alfonso Alphonse Anfous } +alfonso_male = { Afonso Alfons Alfonso Alphonse Anfous } alfred_male = { Ailfredd Alffrydd Alfie Alfred Alfredo Alfret Alfrhyd Allfrydd } ali_male = { Ali Aly } +alparslan_male = { Alparslan Alpaslan } alvar_male = { _A_act_lvaro _A_grv_lvar Alvaro } alwin_male = { Alvin Alwin Alwyn } amabilus_male = { Amable } @@ -43,23 +49,27 @@ amadeus_male = { Am_e_act_d_e_act_e Amadeo Amadeu Amadi_e_act_u Amedeo Gottlieb amalric_male = { Amaudri Amaury } amatus_male = { Amado Amat Amato } ambrosius_male = { Ambr_o_grv_si Ambrogio Ambrose Ambrosio Ambrosyws Emrhys Emrys } +amenhotep_male = { Aimenhotep Amynhotyp } amin_male = { Amine Elamine } -amir_male = { Amir } -anastasius_male = { Anastasio Tasio } -anatolius_male = { Anat_o_grv_li Anatol } +amir_male = { Amir Emir } +amirkhan_male = { Emirhan } +anacletus_male = { Anacleto } +enes_male = { enes } +anastasius_male = { Anast_a_act_cio Anastasio Tasio } +anatolius_male = { Anat_o_act_lio Anat_o_grv_li Anatol } andrew_male = { Ainddrew Anddryw Ander Anders Andr_e_act_ Andre Andrea_male Andreas Andreu Andrew Andrhyw Andri_e_act_u Andries Andy } -angel_male = { _A_grv_ngel Ael Aingeru Ange Angelo Anjel Gotzon } +angel_male = { _A_grv_ngel _A_hat_ngelo Ael Aingeru Ange Angelo Anjel Gotzon } angus_male = { Angus } -anselm_male = { Ans_e_grv_ume Ansylm } +anselm_male = { Ans_e_grv_ume Anselmo Ansylm } anthony_male = { Aintoni Andoni Anfony Anfwny Ant_o_act_nio Ant_o_grv_ni Anthonie Anthonius Anthony Antoine Anton Antoni Antonie Antonio Antonius Antony Antoon Antton Antxon T_o_grv_ni Teun Teunis Toni Tony } antoninus_male = { Antonin Antonino Antounin } anwar_male = { Anouar } arcadius_male = { Arcadi } -archangel_male = { Arcangelo } +archangel_male = { Arcangelo Arcanjo } archibald_male = { Airchibaildd Archibald Archyballdd Arkyballdd } -aristides_male = { Aristido } +aristides_male = { Aristides Aristido } arne_male = { Anjes Anne_male Are Arne } -arnold_male = { Aart Airnoldd Arend Arhnoldd Arnald Arnau Arnaud Arnaut Arndt Arno Arnold Arnoldus Arnolldd Arnoud E_n_tld_aut } +arnold_male = { Aart Airnoldd Arend Arhnoldd Arnald Arnaldo Arnau Arnaud Arnaut Arndt Arno Arnold Arnoldus Arnolldd Arnoud E_n_tld_aut } arnulf_male = { Arnulf } arsenius_male = { Arsena Arsenio } arthur_male = { _A_grv_rtus Airtur Arfur Arhfurh Arthur Artur Arturo } @@ -67,32 +77,40 @@ arvid_male = { Arved Arvid } arian_male = { Ari_a_grv_ Arjan } armel_male = { Armel Arthfael } aryeh_male = { Arie } +asad_male = { Esat } asbjorn_male = { Asbj_o_stk_rn Ebbe Espen } asgeir_male = { Eske } +ashraf_male = { E_s_ced_ref } asier_male = { Asier Axier } -augustine_male = { Agostino Agust_i_act_ Agustin Augustinus Awstin } +attila_male = { Atilla } +attilius_male = { At_i_act_lio Attilio } +augustine_male = { Agostinho Agostino Agust_i_act_ Agustin Augustinus Awstin } augustus_male = { Aguste August Augusto Augustus Awgust Awgustws } -aurelius_male = { Aureli Aurelio } +aurelius_male = { Aur_e_act_lio Aureli Aurelio } aurelian_male = { Aurelian } axel_male = { Aksel Assel Axel } ayman_male = { Aymen } aziz_male = { Anziz Aziz } badruddin_male = { Badroudine } +bahadur_male = { Bahad_i_dot_r } +bahauddin_male = { Bahattin } baldwin_male = { Balddwyn Baldwin Balldduyn Baudouin } balthazar_male = { Baldassarre Balthasar } baptist_male = { Batisto Battista } barnaby_male = { Barhnabas Barnab_e_grv_u Barnaby } barry_male = { Barrie Barry } -bartholomew_male = { Bart Barth_e_act_l_e_act_my Bartholom_a_uml_us Bartolomeo Bartomeu Bartoumi_e_act_u Mees } +bartholomew_male = { B_a_act_rtolo Bart Barth_e_act_l_e_act_my Bartholom_a_uml_us Bartolomeo Bartomeu Bartoumi_e_act_u Mees } +bashar_male = { Ba_s_ced_ar } bashir_male = { B_e_act_chir } -basil_male = { Basil Basile Basilio } +basil_male = { Bas_i_act_lio Basil Basile Basilio } bassam_male = { Bassem } -bedivere_male = { Bedivere Bedwyr Byddyvyry Byddywyyry Bydyvyrhy } -benedict_male = { Bendiks Bendt Benead Benedetto Benedict Benedikt Benet Benezet Bengt Benito Benny Beno_i_hat_t Bent } -benjamin_male = { Ben Beniamino Benjaimin Benjamin Bynjamyn } +bedivere_male = { Bedivere Bedwyr Byddyfyry Byddywyyry Bydywyrhy } +benedict_male = { Bendiks Bendt Benead Benedetto Benedict Benedikt Benet Benezet Bengt Benito Benny Beno_i_hat_t Bent Bento } +benjamin_male = { Ben Beniamino Benjaimin Benjamim Benjamin Bynjamyn } benvenuto_male = { Benvingut } berengar_male = { B_e_act_renger Berengui_e_act_ } bernard_male = { Be_n_tld_at Benno Berend Berent Bernard Bernardo Bernardus Bernat Bernd Berndt Bernhard Bernhardt Bernez Bernt Bernward } +bernardinus_male = { Bernardino } bert_male = { Bert Bertus } berthold_male = { T_o_uml_lke } bertrand_male = { Beltram Bertram Bertrand } @@ -114,33 +132,35 @@ burhan_male = { Borhene } burkhard_male = { Burkhard } cadwaladr_male = { Caddwaladrh Cadwaladr } caesar_male = { C_e_act_sar C_e_grv_sar Cesar Cesare Kesar } -caetano_male = { Gaet_a_grv_ Gaiet_a_grv_ Gaietan } +caetano_male = { Caetano Gaet_a_grv_ Gaiet_a_grv_ Gaietan } caleb_male = { Caleb Kaileb } calixtus_male = { Calist Kallist } calvin_male = { Callwyn } cameron_male = { Kaimeron Kamyron } -camillus_male = { Camihe Camil Camill Camille Camillo } -candidus_male = { Kandido } +camillus_male = { Camihe Camil Camill Camille Camillo Camilo } +candidus_male = { C_a_hat_ndido Kandido } canute_male = { Knud Knut } caradog_male = { Caradog Carhaddog } carloman_male = { Carhloman } carmel_male = { Carmelo Carmine Karmelo } -casimir_male = { Casim_e_grv_r Casimir } +casimir_male = { Casim_e_grv_r Casimir Casimiro } caspar_male = { Casper Gaspar Gaspard Gaspare Jasper Jesper Kaspar Kasper } cassian_male = { Cassi_a_grv_ Cassian } cecil_male = { Cecil } cedric_male = { C_e_act_dric Cedric Cydrhyc } celestine_male = { Celestin Celestino } -celso_male = { Cels } +celso_male = { Cels Celso } chakrabarti_male = { Chacrabarty Shakrabarty } charles_male = { Carl Carle Carles Carlo Carlos Chairles Charhlys Charle Charles Charlez Charlie Charllys Karel Karl Karlos Sharlys } charlesedward_male = { Carl-Edvard } charlesfrederick_male = { Carlfriedrich Karl-Friedrich } charleshenry_male = { Carle-Enri Karlheinz Karl-Heinz } charlesjohn_male = { Karl-Johan } -christian_male = { Carsten Christer Christiaan Christian Christianus Crestian Cristian Karsten Kersten Kresten Kristen_male Krister Kristian } -christopher_male = { Chrhystoffyrh Christoff Christoffer Christoph Christophe Christopher Chrystoffyr Crist_o_grv_fol Crist_o_grv_u Cristoforo Kit Kristof Kristofer Kristoffer Shrystoffyr } -claudius_male = { Claude_male Claudi Claudio Claudius Gl_a_grv_udi Glaoda Glywys Klaod Klaudio } +cheops_male = { Cheops Chyops Shyops } +christian_male = { Carsten Christer Christiaan Christian Christianus Crestian Cristian Cristiano Karsten Kersten Kresten Kristen_male Krister Kristian } +christopher_male = { Chrhystoffyrh Christoff Christoffer Christoph Christophe Christopher Chrystoffyr Crist_o_act_v_a_tld_o Crist_o_grv_fol Crist_o_grv_u Cristoforo Kit Kristof Kristofer Kristoffer Shrystoffyr } +chrysostomus_male = { Cris_o_act_stomo } +claudius_male = { Cl_a_act_udio Claude_male Claudi Claudio Claudius Gl_a_grv_udi Glaoda Glywys Klaod Klaudio } clement_male = { Cl_e_act_ment Clem_e_grv_nt Clemens Clement Clemente Climent Cllymynt Klement Klymynt } clovis_male = { Clouvis Clovis } colombanus_male = { Caillum Callum Kallwm } @@ -155,23 +175,23 @@ corentin_male = { Corentin Courentin } cornelius_male = { Cornelis Cornelius Cornyllyus Kornelis Niels_Cornelius } craig_male = { Craig Crayg } cyngar_male = { Cyngar Cyngarh } -cyprian_male = { Cebri_a_grv_ Ciprian } +cyprian_male = { Cebri_a_grv_ Ciprian Cipriano } cyriacus_male = { Ciriaco } -cyril_male = { Cerile Cyril Cyrille Cyryll } +cyril_male = { Cerile Cirilo Cyril Cyrille Cyryll } cyrus_male = { Ciro Cyrus } damas_male = { Damas } damian_male = { Dami_a_grv_ Damian Damien } -daniel_male = { Daan Dan Danel Dani_e_grv_ Dani_e_uml_l Daniel Daniele Danilo Danny Ddainiel Ddanyyl Ddanyyll Deiniol } +daniel_male = { Daan Dan Danel Dani_e_grv_ Dani_e_uml_l Daniel Daniele Danilo Danny Danyal Ddainiel Ddanyyl Ddanyyll Deiniol } darius_male = { Dario Darius Ddairius Ddarhyus Ddaryus } david_male = { D_a_grv_vi Dafydd Daveth David Davide Davy Ddaivid Ddavydd Ddawyd Ddawyydd Dewi Divi } -delphinus_male = { Delf_i_act_ } -denis_male = { Danis Ddennis Ddynnys Denez Denis Dennis Denys Dion_i_act_s Dionisio Dionys } +delphinus_male = { Delf_i_act_ Delfim } +denis_male = { D_e_act_nis Danis Ddennis Ddynnys Denez Denis Dennis Denys Dinis Dion_i_act_s Dion_i_act_sio Dionisio Dionys } dermot_male = { Dermod } desiderius_male = { Deidi_e_act_ Didier } detlev_male = { Delf Detlef Detleff Detlev Ditlev } dietmar_male = { Detmar Dietmar } dimitri_male = { Dem_e_grv_tri Demetri Demetrio Dimitri } -dominic_male = { Ddominic Ddomynyc Ddwmynyk Dom_e_grv_nec Dominic Dominik Dominique_male Doumenge Txomin } +dominic_male = { Ddominic Ddomynyc Ddwmynyk Dom_e_grv_nec Domingos Dominic Dominik Dominique_male Doumenge Txomin } donald_male = { Ddonaild Ddonaldd Ddumnagual Donald Donny Dumnagual } donatus_male = { Donat Donato } douglas_male = { Ddouglas Ddouglais Ddougllas Douglas } @@ -180,57 +200,62 @@ duncan_male = { Dduncain Duncan } dylan_male = { Ddylan Dylan } eberhard_male = { Eberhard Eberhardt Evert } edgar_male = { Eddgair Eddgar Edgar } -edmund_male = { Eddmund Eddmundd Edmond Edmondo Edmound Edmund } +edmund_male = { Eddmund Eddmundd Edmond Edmondo Edmound Edmund Edmundo } edward_male = { _E_act_douard Audouard Duarte Eaddwarhd Eddwaird Eddwardd Edorta Edouard Eduard Eduardo Edvard Edward Iorwerth Nyddardd } edwin_male = { Eddwyn Edvin Edwin Edwyn } egbert_male = { Egbert } ekkehard_male = { Eckehard Eckhard Eckart Eicke Eike Ekkehard Eyke } -eligius_male = { Aloi Eloi } -elijah_male = { El_i_grv_o Elies Elia Elias Eliaz Elio Ilyes Lyes } -eliseus_male = { Eliseo } +eleutherius_male = { Eleut_e_act_rio } +eligius_male = { Aloi El_o_act_i Eloi } +elijah_male = { El_i_grv_o Elies Elia Elias Eliaz Ilyes Lyes } +elio_male = { _E_act_lio Elio } +eliseus_male = { El_i_act_sio Eliseo } elliot_male = { Elliot Elliott Ellyot Elywt } elros_male = { Elrhos Elros } elouan_male = { Elouan Elouann } -emeric_male = { Aimery Eimeri Emich } -emil_male = { _E_act_mile Emil Emile Emili Emilio Milio } +emeric_male = { Aimery Am_e_act_rico Eimeri Emich } +emil_male = { _E_act_mile Em_i_act_lio Emil Emile Emili Emilio Milio } emilian_male = { Emilian } -emmanuel_male = { Emanuel Emanuele Emmanuel Emmanuele Enmanu_e_grv_l Imanol Manel Manu Manu_e_grv_ Manuel } +emmanuel_male = { Emanuel Emanuele Emmanuel Emmanuele Enmanu_e_grv_l Imanol Manel Manoel Manu Manu_e_grv_ Manuel } engelbert_male = { Engelbert Ingebrigt } erasmus_male = { Asmus Erasmus Rasmus } -eric_male = { _E_act_ric _E_grv_ric Eirik Erhyc Eri Eric Erich Erik Errico Eryc Eryk } +eric_male = { _E_act_ric _E_grv_ric Eirik Erhyc Eri Eric Erich Erik Errico Eryc Eryk Eurico } erlend_male = { Erland Erlend } ernest_male = { Ernest Ernesto Ernst Ernyst } +ertughrul_male = { Ertu_g_brv_rul } erwin_male = { Erwein Erwin } ethan_male = { Ethan } -eugene_male = { _E_act_ug_e_grv_ni Eugen Eugene Eugeni Eugenio Eujen Euken Ewgyny } -eusebius_male = { Eusebi } +eugene_male = { _E_act_ug_e_grv_ni Eug_e_act_nio Eugen Eugene Eugeni Eugenio Eujen Euken Ewgyny } +eusebius_male = { Eus_e_act_bio Eusebi } eustace_male = { Eustace Eustache } -evaristus_male = { Evarist } +evaristus_male = { Evarist Evaristo } ewald_male = { Evald Ewald } eystein_male = { _O_stk_ystein } eyvind_male = { _O_stk_yvind Even Eyvind } ezra_male = { Ezra } fabian_male = { Fabi_a_grv_ Fabian Fabiano Fabien Ffabyan } -fabius_male = { Fabio } +fabius_male = { F_a_act_bio Fabio } fabrice_male = { Fabrice Fabrizio } -fadil_male = { Ffaddyl } +fadil_male = { Faz_i_dot_l Ffaddyl } falk_male = { Falk Falko } -farid_male = { Farid Ferrid } +farid_male = { Farid Ferit Ferrid } faris_male = { Far_e_grv_s } +faruk_male = { Faruk } fathi_male = { Fethi } +fatih_male = { Fatih } faustinus_male = { Faustin Faustino } fawzi_male = { Faouzi } -felician_male = { Felician } +felician_male = { Felician Feliciano } felix_male = { F_e_act_lix F_e_grv_lis F_e_grv_lix Felix } -ferdinand_male = { Ferdinand Fernand Fernando Ferran } +ferdinand_male = { Ferdinand Ferdinando Fernand Fernando Ferran } fergus_male = { Fergus Ffyrhgus } -fidel_male = { Fedele Fidel Fidelis } +fidel_male = { Fedele Fidel Fidelino Fidelis } finlay_male = { Ffynnlay } finn_male = { Gwyn } -firmin_male = { Ferm_i_act_ Fermin Ffyrhmyn } +firmin_male = { Ferm_i_act_ Fermin Ffyrhmyn Firmino } flavian_male = { Flavian } flavius_male = { Flavio } -florent_male = { Florenci Florencio Floris Flour_e_grv_ns } +florent_male = { Flor_e_hat_ncio Florenci Florencio Floris Flour_e_grv_ns } florentinus_male = { Florentino } florian_male = { Florian Flourian } fortunatus_male = { Fortunato } @@ -242,33 +267,38 @@ francismichael_male = { Frank-Michael Franz_spc_Michael } francisofassisi_male = { Francesc_spc_d_pst_Ass_i_act_s } francispaula_male = { Francesc_spc_de_spc_Paula } francisxavier_male = { Franc_e_act_s-Savi_e_act_ Francesc_spc_Xavier Francesco_spc_Saverio Frantzisko_spc_Xabier Patxi_spc_Xabier } -frederick_male = { Federico Ffrhydyrhyc Ffryddyryc Ffryddyryk Fiete Fietje Fr_e_act_d_e_act_ric Fred Fredderick Freddie Freddy Frederi Frederic Frederick Frederig Frederik Fredrik Frerich Frieder Friedrich Frits Fritz } +frederick_male = { Federico Ffrhydyrhyc Ffryddyryc Ffryddyryk Fiete Fietje Fr_e_act_d_e_act_ric Fred Fredderick Freddie Freddy Frederi Frederic Frederick Frederico Frederig Frederik Fredrik Frerich Frieder Friedrich Frits Fritz } frederickhenry_male = { Fritz-Heiner } fuad_male = { Foued Fu_pst_ad } fulk_male = { Ffulk } -gabriel_male = { Biel Gabri_e_act_u Gabriel Gabriele_male Gabryyll } +gabriel_male = { Biel Djibril Gabri_e_act_u Gabriel Gabriele_male Gabryyll } gael_male = { Ga_e_grv_l Ga_e_uml_l Gael } gaetan_male = { Gaetano Gaiet_a_grv_ Gaietan } -galahad_male = { Galaad Galahad Galahadd Gallahadd } +galahad_male = { Gailaihaidd Galaad Galahad Galahadd Gallahadd } gareth_male = { Gareth Garhyf Garyf } gary_male = { Garry Gary } gaston_male = { Gaston } gawayn_male = { Gaivin Gavin Gawayn Gawyyn } +genghis_male = { Cengiz } geoffrey_male = { Gaufre Geoffrei Geoffrey Geoffroy Godefroy Godffrhyy Godfrey Goffredo Gottfried Gyoffrhyy Gyoffryy Jaufret Jeff Jeffrey Sieffre } -george_male = { _O_uml_rjan G_o_uml_ran G_o_uml_rgen Georg George Georges Giorgio Gorch Gorka Gyorgy Gyorhgy J_o_grv_rgi J_o_stk_rgen J_o_stk_rn J_o_uml_ran J_o_uml_rg J_o_uml_rn J_u_uml_rgen Jord Jordi Jordy Joris Jorj Jorres Jory Jurgi Schorsch Si_o_hat_r Siorus Youri } +george_male = { _O_uml_rjan G_o_uml_ran G_o_uml_rgen Georg George Georges Giorgio Gorch Gorka Gyorgy Gyorhgy J_o_grv_rgi J_o_stk_rgen J_o_stk_rn J_o_uml_ran J_o_uml_rg J_o_uml_rn J_u_uml_rgen Jord Jordi Jordy Jorge Joris Jorj Jorres Jory Jurgi Schorsch Si_o_hat_r Siorus Youri } georgejames_male = { Jordi_spc_Jaume } georgejoseph_male = { Jordi_spc_Josep } gerald_male = { G_e_act_rald Geraildd Gerald Gerallt Gerold Giraud Guerau Gyraldd Gyralldd Gyrhaldd } gerard_male = { Geert Gerard Gerardo Gerardus Gerd Gerhard Gerhardus Gerhart Gerit Gerrit Gert Girard } -german_male = { Garmon Germ_a_grv_ German Kerman } +german_male = { Garmon Germ_a_grv_ German Germano Kerman } gerontius_male = { Geraint Gerens Gerontius Gyraynt Gyrhaynt } -gilbert_male = { Gibert Gilbert Gylberht Gylbyrt Jilberzh } +gervasius_male = { Gerv_a_act_sio Gervasi } +ghaffar_male = { Gaffar } +ghazi_male = { Gazi } +ghiyasuddin_male = { K_i_dot_yasettin } +gilbert_male = { Gibert Gilbert Gilberto Gylberht Gylbyrt Jilberzh } gildas_male = { Gildas Gweltaz Gylddas } -giles_male = { Egidio Gile Giles Gilles Gylys Jil Jili } +giles_male = { Egidio Gil Gile Giles Gilles Gylys Jil Jili } gisbert_male = { Gijsbert Gijsbertus } glenn_male = { Glen Glenn } godwin_male = { Godwyn } -gonzalo_male = { Gon_c_ced_al Gontzal } +gonzalo_male = { Gon_c_ced_al Gon_c_ced_alo Gontzal } gordon_male = { Gorddon Gorhddon } goronwy_male = { Goronwy Gronw } graham_male = { Graeme Graham } @@ -276,15 +306,18 @@ gregory_male = { Greg_o_grv_ri Gregg Gregor Gregori Gregory Grhygorhy Grygor Gry griffith_male = { Grhyffyf Gruffudd Gryffyf } gunther_male = { G_u_uml_nter G_u_uml_nther Gunar Gunde Gunnar Gunter Gunther } guntram_male = { Guntram } -gustav_male = { G_o_uml_sta Gust_a_grv_vi Gustaf Gustav } +gustav_male = { G_o_uml_sta Gust_a_grv_vi Gustaf Gustav Gustavo } guy_male = { Gui Guido Guy } gwenael_male = { Gu_e_act_na_e_uml_l Gwena_e_uml_l Gwenn-A_e_uml_l } gwenole_male = { Gu_e_act_nol_e_act_ Gw_e_act_nol_e_act_ Gwennole } haakon_male = { H_a_rng_kan H_a_rng_kon Haagen Haakon } +habib_male = { Habib } hadi_male = { H_e_act_di } hamed_male = { Hamed } +hamlet_male = { Haimlet Hamllyt Hamlyt } hamza_male = { Hamza Hamzah } -hannibal_male = { Annibale } +hanafi_male = { Hanifi } +hannibal_male = { An_i_act_bal Annibale } harith_male = { Haryf } haritz_male = { Aritz Haritz } harold_male = { Hairoldd Harald Harholdd Harold Haroldd Harolldd } @@ -292,56 +325,69 @@ harper_male = { Harhpyrh } harvey_male = { Erv_e_act_ Harvey Herv_e_act_ Herve } hashim_male = { Hachim } hassan_male = { Hasan Hassan Hassen } -hector_male = { Ectorh Eitor Ettore H_e_grv_ctor Hector Hektor Hyctor Hyctorh Hyktor } +haydar_male = { Haydar } +hector_male = { Ectorh Eitor Ettore H_e_grv_ctor Hector Heitor Hektor Hyctor Hyctorh Hyktor } helgi_male = { Helge } helmut_male = { Hellmuth Helmut Helmuth } -henry_male = { Endika Enri Enric Enrico Enrike Enzo Harhrhy Harri Harry Heico Heiko Heiner Heinrich Heinz Henddri Hendricus Hendrik Hendrikus Henner Henri Henric Henricus Henrik Henry Henryk Herri Heyo Hinderk Hinnerk Hinrich Hynry Rico } +henry_male = { Endika Enri Enric Enrico Enrike Enzo Harhrhy Harri Harry Heico Heiko Heiner Heinrich Heinz Henddri Hendricus Hendrik Hendrikus Henner Henri Henric Henricus Henrik Henrique Henry Henryk Herri Heyo Hinderk Hinnerk Hinrich Hynry Rico } henrywilliam_male = { Heinz-Wilhelm } -herbert_male = { Herbert Heribert Hyrbyrt } +herbert_male = { Herbert Herberto Heribert Hyrbyrt } hercules_male = { Ercwlff Hercules } -hermann_male = { Armand Armin Ermanno Harm Herman Hermann Hermanus } -hieronymus_male = { Geronimo Girolamo J_e_act_r_o_hat_me Jeroen Jirome Yerom } -hilarius_male = { Hilario Il_a_grv_ri Ilar Ilario } +hermann_male = { Armand Armando Armin Ermanno Harm Herman Hermann Hermanus } +hermenegildo_male = { Hermenegildo } +hieronymus_male = { Geronimo Girolamo J_e_act_r_o_hat_me Jer_o_act_nimo Jeroen Jirome Yerom } +hikmat_male = { Hikmet } +hilarius_male = { Hil_a_act_rio Hilario Il_a_grv_ri Ilar Ilario } hilmi_male = { Helmi } -hippolyte_male = { Hippolyt Ipoulite } +hippolyte_male = { Hip_o_act_lito Hippolyt Ipoulite } hisham_male = { Hicham Hichem } hodei_male = { Hodei Odei } -honorius_male = { Aneurin Onorato Ynyr } -horace_male = { Orazio Horace Horacio Horatio Horhatyo } +honorius_male = { Aneurin Hon_o_act_rio Onorato Ynyr } +horace_male = { Hor_a_act_cio Horace Horacio Horaito Horatio Horatyo Horhatyo Orazio } hubert_male = { Hubert Hubertus Huberzh Ubert } hugh_male = { Hug Hugh Hugo Huw Hwgh Ugue } -humbert_male = { Umbert Umberto } +humbert_male = { Humberto Umbert Umberto } humphrey_male = { Humfrhyy Humffryy Humphrei Humphrey Hwmffryy } husni_male = { Housni } hussam_male = { Houssam } -hussein_male = { Hocine Houssen } +hussein_male = { H_u_dot_seyin Hocine Houssen } hyacinth_male = { Giacinto Jacint Jacinto } hyginus_male = { Higini Igino } hywel_male = { Hoel Howel Howell Hywel } idris_male = { Driss Iddrys Idriss } idwal_male = { Iddwal Iddwall } -ignatius_male = { I_n_tld_aki Ignasi Ignaz Ignazio Natxo } +ignatius_male = { I_n_tld_aki Ignasi Ignaz Ignazio In_a_act_cio Natxo } ignatiusmaria_male = { I_n_tld_aki_spc_Mirena } ingmar_male = { Ingemar } ingvar_male = { Igor Ingvar Ingwer } inigo_male = { Eneko I_n_tld_igo } -innocent_male = { Innocenzo } +innocent_male = { Innocenzo Inoc_e_hat_ncio } irenaeus_male = { Erino Ireneo Ireni_e_act_u } +irfan_male = { _I_dot_rfan } isaac_male = { Isaac Isaak Isaiaic Isak } +isaiah_male = { Isa_i_act_as } isidore_male = { Isidor Isidoro Isidre Isidro } ismail_male = { Isfael Ishmaiel Ishmayl Isma_e_uml_l Isma_i_uml_l Ismael } +ismat_male = { _I_dot_smet } israel_male = { Israel } +ivanhoe_male = { Ifanhoy Ivainhoe } ivar_male = { Ifor Ivar Ivor } +izzat_male = { _I_dot_zzet } izzuddin_male = { Azzedine } jabir_male = { Jabyr } +jahan_male = { Cihan } +jahangir_male = { Cihangir } +jahid_male = { Cahit } +jalal_male = { Celal } jalil_male = { Jalyl } -jamal_male = { Djamel Jamel } +jamal_male = { Cemal Djamel Jamel } jamaluddin_male = { Jamel_spc_Eddine } -james_male = { Diego Giacomo Iago Jacob Jacobus Jacques Jago Jagoba Jaicob Jaime Jaimes Jakes Jakez Jakob Jaky James Jamie Jamys Jamyy Jaque Jaume Jeppe Jim Jimmy Santi Santiago Xanti } +james_male = { Diego Diogo Giacomo Iago Jacob Jacobus Jacques Jago Jagoba Jaicob Jaime Jaimes Jakes Jakez Jakob Jaky James Jamie Jamys Jamyy Jaque Jaume Jeppe Jim Jimmy Santi Santiago Tiago Xanti Yakup } jamesgeorge_male = { Jacob-G_o_uml_ran } jamesjoseph_male = { Jaume_spc_Josep } jamesyves_male = { Jacques-Yves Jaque-Ives } -januarius_male = { Gener Gennaro Gianuario } +jamil_male = { Cemil } +januarius_male = { Gener Gennaro Gianuario Janu_a_act_rio } jared_male = { Jarydd } jasmin_male = { Gelsomino } jason_male = { Jason Jasoun } @@ -350,10 +396,11 @@ jekyll_male = { Jycyll Jykyll } jeremy_male = { Geremia Jarno J_e_act_r_e_act_my Jerem_i_grv_a Jeremy Jyrymyah } jesse_male = { Jesse } jesus_male = { Iosu Issa Jes_u_act_s Josu Yosu } +jihad_male = { Cihat } joachim_male = { Achim Gioacchino Iokin Joachim Joakim Joakin Joaquim Jochen Jokin Jouachin Quim } -job_male = { Job } +job_male = { Ey_u_uml_p Eyy_u_uml_p Job } joel_male = { Jo_e_uml_l Joel Jou_e_grv_l } -john_male = { Efan Evan Giovanni Hampus Hanjo Hannes Hanns Hans Hasse Iain Ian Iban Ieuan Ifan Ioan Ion Ivan Iwan J_o_uml_ns Jac Jack Jak Jake Jaky Jan Janick Jann Jannick Jaouen Jean Jens Jo_a_tld_o Joan_male Joanes Joannes Johan Johann Johannes John Johnny Jon Jonny Jowan Manex Sean Shane Shaun Si_o_hat_n Yan Yann Yannick Yannig Yoan Yoann Yohan Yohann Yon } +john_male = { Efan Evan Giovanni Hampus Hanjo Hannes Hanns Hans Hasse Iain Ian Iban Ieuan Ifan Ioan Ion Ivan Iwan J_o_uml_ns Jac Jack Jak Jake Jaky Jan Janick Jann Jannick Jaouen Jean Jens Jo_a_tld_o Joan_male Joanes Joannes Johan Johann Johannes John Johnny Jon Jonny Jowan Manex Sean Shane Shaun Si_o_hat_n Yahya Yan Yann Yannick Yannig Yoan Yoann Yohan Yohann Yon } johnandrew_male = { Ion_spc_Ander Joan_spc_Andreu Jon_spc_Ander } johnanthony_male = { Giovannantonio Joan_spc_Antoni Jon_spc_Andoni } johnbaptist_male = { Gianbattista Giovanni_spc_Battista Jan-Batisto Jean-Baptiste Joan_spc_Baptista Johann_spc_Baptist Jon_spc_Ugutz Yann-Vadezour } @@ -387,10 +434,10 @@ johnraymond_male = { Joan_spc_Ramon Jon_spc_Erramun } johnstephen_male = { Jan-Steve } johnthierry_male = { Hans-Dieter } johnyves_male = { Jan-Ives Jean-Yvon Yann-Erwan } -jonah_male = { Jona_Jonah Jonah Jonas Youn_e_grv_s Yunis } +jonah_male = { Jona_Jonah Jonah Jonas Youn_e_grv_s Yunis Yunus } jonathan_male = { Johnafan Jonafan Jonaitain Jonatan Jonathan Jounatan } jordan_male = { Jord_a_grv_ Jordan Jorddain Jorddan Jorhddan Jourdan } -joseph_male = { Ioseba J_o_act_us_e_grv_ Job_Joseph Joe Joep Joey Jos Jos_e_act_ Jose Joseba Josef Josep Joseph Josephus Josyff Joxe Jozeb Jozef Pino Youssef } +joseph_male = { Ioseba J_o_act_us_e_grv_ Job_Joseph Joe Joep Joey Jos Jos_e_act_ Jose Joseba Josef Josep Joseph Josephus Josyff Joxe Jozeb Jozef Pino Youssef Yusuf } josephangel_male = { Joseba_spc_Gotzon Josep_spc__A_grv_ngel } josephanthony_male = { Giuseppantonio Joseba_spc_Andoni Josep_spc_Antoni } josephemmanuel_male = { Joseba_spc_Imanol Josep_spc_Manel } @@ -401,34 +448,39 @@ josephmary_male = { Jose_spc_Mari Joseba_spc_Mirena Josep_spc_Maria Joxe_spc_Mar josephmichael_male = { Joseba_spc_Mikel Josep_spc_Miquel } josephraymond_male = { Joseba_spc_Erramun Josep_spc_Ramon } josephxavier_male = { Joseba_spc_Xabier } -joshua_male = { Joschua Josh Joshua Joshuai Josu_e_grv_ } +joshua_male = { Joschua Josh Joshua Joshuai Josu_e_act_ Josu_e_grv_ } jost_male = { Jobst Joost Jost } judicael_male = { Ithel Judica_e_uml_l Judikael } -jules_male = { Giulio J_u_grv_li Jules Juli Julio Julius Jullys Julys } -julian_male = { Giuliano Julen Juli_a_grv__name Juliain Julian Julien Juluan Julyan } -justin_male = { Giustino Iestyn Justin Justyn } +jules_male = { Giulio J_u_act_lio J_u_grv_li Jules Juli Julio Julius Jullys Julys } +julian_male = { Giuliano Julen Juli_a_grv__name Juli_a_tld_o Juliain Julian Julien Juluan Julyan } +justin_male = { Giustino Iestyn Justin Justino Justyn } justinian_male = { Iwstinian } justus_male = { Justus } kai_male = { Cai Cay Kai Kaj Kay } +kemal_male = { Kemal } kamil_male = { Camel Kamel } -karim_male = { Karim } +kamran_male = { K_a_hat_muran } +karim_male = { Karim Kerem Kerim } keith_male = { Cyyf Keit } kenneth_male = { Kennet Kenneth Kent } kentigern_male = { Cyndeyrn } ketil_male = { Keld Kjell } kevin_male = { Cefin Cywyn K_e_act_vin Kevin Kywyyn Quevin } -khalid_male = { Khaled Khalid } +khalid_male = { Halit Khaled Khalid } khalifa_male = { Halifa } -khalil_male = { Khalil } +khalil_male = { Halil Khalil } +khayruddin_male = { Hayrettin } +khosrow_male = { H_u_uml_srev } +khurshid_male = { Hur_s_ced_it } kieran_male = { Kieran Peran_Kieran Perran Piran } kosmas_male = { Cosimo Cosme Kosme } kylian_male = { Kilian Kilyan Kylian Kyliann Kyllian } lambert_male = { Lambert Lamberto Lambertus Lamprecht } -lancelot_male = { Lancelot Lancylot Lansylot } +lancelot_male = { Laincelot Lancelot Lancylot Lansylot Llancyllot } latif_male = { Latuf } lauge_male = { Lage Lauge } -lawrence_male = { Laiwrence Laora_n_tld_s Lars Lasse Laur_e_grv_ns Laurence_male Laurens Laurent Laurentius Laurhyncy Laurie Lawrence Lawrynsy Llauryncy Lloren_c_ced_ Lorenz Lorenzo Lourens Renzo } -leander_male = { Lander Leandre } +lawrence_male = { Laiwrence Laora_n_tld_s Lars Lasse Laur_e_grv_ns Laurence_male Laurens Laurent Laurentius Laurhyncy Laurie Lawrence Lawrynsy Llauryncy Lloren_c_ced_ Lorenz Lorenzo Louren_c_ced_o Lourens Renzo } +leander_male = { Lander Leandre Leandro } leif_male = { Leif } lenaig_male = { L_e_act_na_i_uml_c Lenaig } leo_male = { L_e_act_o L_e_act_on Leo Leon Leoun Llyon } @@ -437,70 +489,77 @@ leopold_male = { Leopold Leopoldo Leoupold Luitpold } levi_male = { Levi } liborius_male = { B_o_uml_rries Liborius } linus_male = { Linus } -lionel_male = { Lionel Liounel Llyonyll Lyonyl } +lionel_male = { Leonel Lionel Liounel Llyonyll Lyonyl } lloyd_male = { Lloydd Loydd } lothar_male = { Clotaire Lothar } -louis_male = { Alois Aloys Aloysius Koldo Lew Lewis Llu_i_act_s Llywys Lo_i_uml_c Lo_i_uml_g Lo_i_uml_s Lodewijk Loeiz Lou_i_uml_s Louis Love Lovis Lu_i_act_s Ludovic Ludvig Ludwig Luigi Luis Lutz Lwddowyyc Lywys } +louis_male = { Alo_i_act_sio Alois Aloys Aloysius Koldo Lew Lewis Llu_i_act_s Llywys Lo_i_uml_c Lo_i_uml_g Lo_i_uml_s Lodewijk Loeiz Lou_i_uml_s Louis Love Lovis Lu_i_act_s Ludovic Ludvig Ludwig Luigi Luis Luiz Lutz Lwddowyyc Lywys } louismaria_male = { Koldo_spc_Mirena Llu_i_act_s_spc_Maria } louismichael_male = { Llu_i_act_s_spc_Miquel } lucian_male = { Lluci_a_grv_ Lucian Luciano Lucien Luken Lukian } -lucius_male = { Llwcyus Lucio Lwcyus Lwsyus } +lucius_male = { L_u_act_cio Llwcyus Lucio Lwcyus Lwsyus } +ludger_male = { Ludger Ludgero } luke_male = { Lluc Llwky Lu Luc Luca Lucas Luka Lukas Luke Luky Luuk } lutfi_male = { Lotfi } luther_male = { L_u_uml_der } +macbeth_male = { Macbef Macbeth Maicbet Makbef } mael_male = { Ma_e_uml_l Ma_e_uml_lan Mael } magnus_male = { M_a_rng_ns Magne Magnus Mogens } mahdi_male = { Medhi Mehdi } +mahmud_male = { Mahmud Mahmut } majid_male = { Madjid } malachi_male = { Malachi } malcolm_male = { Maelcwn Mailcolm Malcolm } malik_male = { Malek Mallyc Malyc Malyk } malthe_male = { Malte Malthe } manfred_male = { Manfred Manfrid } -marcel_male = { Marc_e_grv_u Marcel Marcello Markel Marsel Marsell Martxel Martxelo } -marcelinus_male = { Marcel_mdn_l_i_act_ Marcellinus Martzelino } +marcel_male = { Marc_e_grv_u Marcel Marcello Marcelo Markel Marsel Marsell Martxel Martxelo } +marcelinus_male = { Marcel_mdn_l_i_act_ Marcelino Marcellinus Martzelino } marianus_male = { Mari_a_grv_ Marian_male Mariano Meirion } marinus_male = { Marino Marinus } marius_male = { M_a_act_rio M_a_grv_ri_male M_a_grv_rius Marhyus Mario Marius } -mark_male = { Mairk Marc Marco Marcus Margh Marhc Mark Marko Markos Markus } +mark_male = { Mairk Marc Marco Marcos Marcus Margh Marhc Mark Marko Markos Markus } markanthony_male = { Marc_spc_Antoni } martial_male = { Mar_c_ced_al Marciau } -martin_male = { Maarten Mairtin Marhtyn Mart_i_act_ Marten Martin Martinus Martijn Martyn Mattin Morten } +martin_male = { Maarten Mairtin Marhtyn Mart_i_act_ Marten Martim Martin Martinus Martijn Martyn Mattin Morten } marwan_male = { Marouane Marwan } +masud_male = { Mesut } mathurin_male = { Mathurin Matilin } -matthew_male = { Mads Mah_e_act_ Maho Maittew Mat_i_act_s Mateu Matfyu Matfyw Mathew Mathias Mathieu Mathis Mati_e_act_u Matias Mats Matteo Matth_a_uml_us Matthew Matthias Matthijs Mattia Mattias Mazhev Thees Theis Thies Thijs } -maurice_male = { Maoris Maurhycy Maurice Maurici Mauricio Maurise Mauritz Maurizio Maurycy Maurysy Meurig Moritz Morris } +matthew_male = { Mads Mah_e_act_ Maho Maittew Mat_i_act_s Mateu Mateus Matfyu Matfyw Mathew Mathias Mathieu Mathis Mati_e_act_u Matias Mats Matteo Matth_a_uml_us Matthew Matthias Matthijs Mattia Mattias Mazhev Thees Theis Thies Thijs } +maurice_male = { Maoris Maur_i_act_cio Maurhycy Maurice Maurici Mauricio Maurise Mauritz Maurizio Maurycy Maurysy Meurig Moritz Morris } maurus_male = { Mauro } -mawlud_male = { Miloud Mouloud } +mawlud_male = { Mevl_u_uml_t Miloud Mouloud } maxentius_male = { Meiss_e_grv_ns } max_male = { Mas Max } -maximian_male = { Massimiano } +maximian_male = { Massimiano Maximiano } maximilian_male = { Maximilian } maximus_male = { Macsen Maime Massen Massimo Maxime } meinhard_male = { Meinert Meinhard } melchior_male = { Melchior Melker } mercury_male = { Myrhcurhy } -merlin_male = { Merlijn Merlin Myrddin Myrlyn } -michael_male = { Chiel Maic Maik Maikel Meical Meik Mich_e_grv_u Michael Michaiel Michel Michele Michiel Mick Micka_e_uml_l Mihangel Mikael Mike Mikel Mikkel Mikko Miqu_e_grv_u Miquel Misha_e_uml_l Mitchell Mitxel Mixel Mychayl Mychayll Myghal Myshayl Mytchyll } +merlin_male = { Merlijn Merlin Myrddin Myrhlyn Myrlyn } +michael_male = { Chiel Maic Maik Maikel Meical Meik Mich_e_grv_u Michael Michaiel Michel Michele Michiel Mick Micka_e_uml_l Miguel Mihangel Mikael Mike Mikel Mikkel Mikko Miqu_e_grv_u Miquel Misha_e_uml_l Mitchell Mitxel Mixel Mychayl Mychayll Myghal Myshayl Mytchyll } michaelangel_male = { Michelangelo Mikel_spc_Anjel Mikel_spc_Gotzon Miquel_spc__A_grv_ngel } michaelanthony_male = { Michelantonio } modest_male = { Modest Modesto } morgan_male = { Morgan Morgann Morhgan } -moses_male = { Mois_e_grv_s Moises Mos_e_grv_ Moussa } -muhammad_male = { Mamadou Mohamad Mohamed Mohammad Mohammed Mohammydd Muhammad Muhamydd } -muhammadali_male = { Mohamed_spc_Ali } +moses_male = { Mois_e_act_s Mois_e_grv_s Moises Mos_e_grv_ Moussa Musa } +muhammad_male = { Mamadou Mehmet Mohamad Mohamed Mohammad Mohammed Mohammydd Muhammad Muhammed Muhammet Muhamydd } +muhammadali_male = { Mehmet_spc_Ali Mohamed_spc_Ali } +muharram_male = { Muharrem } +mukhtar_male = { Muhtar } mungo_male = { Mwyn } munsif_male = { Moncef } -murad_male = { Mwradd } +murad_male = { Murat Mwradd } mustafa_male = { Mustafa Mustapha } nabil_male = { Nabil } nadir_male = { Nadir } naim_male = { Na_i_uml_m } -najib_male = { N_e_act_jib } +najib_male = { N_e_act_jib Necip } napoleon_male = { Napol_e_act_on Napoleone } nasir_male = { Nasser Nassur Nasyr Nasyrh } nathan_male = { Nafan Natan Nathan } nathaniel_male = { Nafanayl Nafanayll Nafanyyl Naitainiel Natanael Nathaniel } +nazim_male = { Naz_i_dot_m } neil_male = { Neil Nigel Nygyll Nyll } nepomuceno_male = { Nepomuc_e_grv_ Nepomuk } nestor_male = { N_e_grv_stor Nestor } @@ -509,29 +568,32 @@ nicholas_male = { Claas Claes Claus Colin Collyn Colyn Klaas Klas Klaus Nicholai nicholaspeter_male = { Claas-Peter Klaus-Peter } noah_male = { Noah Nou_e_grv_ } noel_male = { Calendau Noel } -norbert_male = { Norbert Nourbert } +norbert_male = { Norbert Norberto Nourbert } norman_male = { Norhman Norman Normyn Nwrman } -nuruddin_male = { Nordine Noureddine } -oberon_male = { Wbyrhon Wbyron } -octavian_male = { Oktavyan Ottaviano } -octavius_male = { _O_act_ut_a_grv_vi Octavio Wctawyyus Wktawyyus } -odysseus_male = { Ulisse } -olaf_male = { Ola Olaf Olav Ole Olle Olof Olov Oluf } -oliver_male = { _O_act_ulivi_e_act_ Olier Oliver Wllywyyr Wlywyyr Wlywyyrh } +nuri_male = { Nuri } +nuruddin_male = { Nordine Noureddine Nureddin Nurettin } +oberon_male = { Oberon Wbyrhon Wbyron } +octavian_male = { Octaviano Oktavyan Ottaviano } +octavius_male = { _O_act_ut_a_grv_vi Oct_a_act_vio Octavio Wctawyyus Wktawyyus } +odysseus_male = { Ulisse Ulisses Ulysse } +olaf_male = { Ola Olaf Olav Olavo Ole Olle Olof Olov Oluf } +oliver_male = { _O_act_ulivi_e_act_ Ol_i_act_vio Olier Oliver Wllywyyr Wlywyyr Wlywyyrh } onophrius_male = { Onofrio } -oscar_male = { _O_grv_scar Oscair Oscar Oskar Ouscar } +oscar_male = { _O_act_scar _O_grv_scar Oscair Oscar Oskar Ouscar } oswald_male = { Osvaldo Oswald Oswallt } +ottmar_male = { Ademar Otmar Ottmar } otto_male = { Eudes Eudo Ot Otto Udo } -ovidius_male = { Ofydd Ovidio } +ovidius_male = { Ofydd Ov_i_act_dio Ovidio } owen_male = { Owain Owen Owenn } +ozymandias_male = { Ozimaiddiais Wzymanddyas } pascal_male = { Pascal Pascau Pasco Pascual Paskal Pasqual Pasquale } patel_male = { Patyl Patyll } patrick_male = { Padrhyg Padrig Paitrick Patrice Patrici Patrick Patrig Patrik Patryc Patryk } paul_male = { P_a_rng_l Paiul Palle Paol Paolo Pau Paul Paull Paulo Paulus Pawl Pawly Pol Poul } paulinus_male = { Paolino Paul_i_act_ Paulino } pauljohn_male = { Paul_spc_Johannes } -pelagius_male = { Pelagius } -percival_male = { Percival Percy Pyrcywyall Pyrhcywyal Pyrsyval } +pelagius_male = { Pel_a_act_gio Pelagius } +percival_male = { Percivail Percival Percy Pyrcywyall Pyrhcywyal Pyrsyval } peter_male = { Kepa P_a_uml_r P_e_grv_ire P_e_hat_r Peder Pedr Pedro Peer Pehr Peio Pelle Pello Per Peran Pere Periko Peru Peter Petrok Petrus Petter Piero Pierre Piers Pierrick Piet Pieter Pietro Pyrh Pyt Pytyr Pytyrh Pyyrs } peteranthony_male = { P_e_grv_ire-Ant_o_grv_ni } petergeorge_male = { Per-G_o_uml_ran } @@ -545,85 +607,106 @@ peteryves_male = { P_e_grv_ire-Ives P_e_hat_r-Erwan } philip_male = { Felip Felipe Ffylyp Filip Filipe Filippo Fillip Fulup Fyllyp Phil Philip Philipp Philippe Phillip } pippin_male = { Pepijn Pypyn } pius_male = { Pi Pio Pius } +palamedes_male = { Pailaimeddes Palamedes Palamyddys Pallamyddys } pompey_male = { Pompeo Pompeu } +porphirius_male = { Porf_i_act_rio } prosper_male = { Prospero Prousp_e_grv_r } prudentius_male = { Pruden } +qadir_male = { Kadir } qasim_male = { Kaisim Kassim } quentin_male = { Quentin Quinten } quirinus_male = { Krijn Quirino } -rafiq_male = { Rafik } +rafiq_male = { Rafik Refik } ragnar_male = { Ragnar Rainer Raniero Reiner } rahim_male = { Rahyym } +rajab_male = { Recep } +ramadan_male = { Ramazan } +ramesses_male = { Raimesses Ramyssys Rhamyssys } +ramiro_male = { Ramiro } ramsay_male = { Raimsai Ramsay } +ramzi_male = { Remzi } randolph_male = { Randdollff Randolph Rhanddolff } raphael_male = { Raf_e_grv_u Rafael Rafel Raffaele Raffaello Rapha_e_uml_l Raphael } -rashid_male = { Rachid } -raoul_male = { Ra_u_uml_l Railph Ralf Ralff Rallff Ralph Raoul Raul Ravous Rhalff } +rashid_male = { Rachid Re_s_ced_it } +raoul_male = { Ra_u_act_l Ra_u_uml_l Railph Ralf Ralff Rallff Ralph Raoul Raul Ravous Rhalff } rauf_male = { Raouf } rayan_male = { Rayan Rayanne } -raymond_male = { Erramun Raimon Raimondo Raimund Ramon Ramoun Raymond Raymwndd Reemt Remond Remont } -reginald_male = { Reginaildd Reinalt Reinaud Reinhold Renaud Rheinallt Rhonaldd Rhygynaldd Ron Ronald Ronaldus Ronny Rygynaldd Rygynalldd } +raymond_male = { Erramun Raimon Raimondo Raimund Raimundo Ramon Ramoun Raymond Raymwndd Reemt Remond Remont } +reginald_male = { Reginaildd Reinaldo Reinalt Reinaud Reinhold Renaud Rheinallt Rhonaldd Rhygynaldd Ron Ronald Ronaldo Ronaldus Ronny Rygynaldd Rygynalldd } regis_male = { R_e_grv_gis Ryks } reinhard_male = { Reinhard } remigius_male = { Remi Remigio Roumi_e_act_ } renatus_male = { Reini_e_act_ Ren_e_act_ Renato } -reza_male = { Reda } -reuben_male = { Reuben Rub_e_grv_n Ruben } +reza_male = { R_i_dot_za Reda } +reuben_male = { R_u_act_ben Reuben Rub_e_grv_n Ruben } rhys_male = { Reece Rhys } riad_male = { Riad Riadh } richard_male = { Rhisiart Rhycharhdd Ricard Ricardo Riccardo Richairdd Richard Richardt Richarzh Rick Rickard Ricky Rik Rikard Rikardo Rychardd Rykardd } ridwan_male = { Redouane } robert_male = { Bob Bobby Rhobert Rhobyn Rhobyrht Rob Robert Roberto Robertus Robin Robyrt Roparzh Roubert Rupert Rupprecht } roch_male = { Roc Rocco Rochus Rocky } -roderick_male = { Rhodri Rhydderch Rodderick Roderic Roderick Roudrigo Rui } -roger_male = { R_o_uml_tger R_u_uml_diger Rhogyrh Rogel_mdn_li Roger Rogier Rogyr Roje Rougi_e_act_ Rutger } -roland_male = { Rholandd Roland Rouland Wrlanddo } +roderick_male = { Rhodri Rhydderch Rodderick Roderic Roderick Rodrigo Roudrigo Rui Ruy } +roger_male = { R_o_uml_tger R_u_uml_diger Rhogyrh Rog_e_act_rio Rogel_mdn_li Roger Rogier Rogyr Roje Rougi_e_act_ Rutger } +roland_male = { Orlando Rholandd Roland Rolando Rollandd Rouland Wrlanddo } roman_male = { Rhoman Rhufon Rom_a_grv_ Romain Roman Romano Rouman } -romeo_male = { Romeo } +romeo_male = { Romeo Romeu } romuald_male = { Romualdo Roumiaud } romulus_male = { R_o_grv_mul } ronan_male = { Renan Ronan Ruan } roy_male = { Roy } rudolf_male = { Rodolfo Roelof Rolf Roud_o_grv_u Rudi Rudolf Ruud } +rustam_male = { R_u_uml_stem } ryan_male = { Ryan } +sabahuddin_male = { Sabahattin } sabinus_male = { Sabino } -said_male = { Sa_i_uml_d } -salahuddin_male = { Saladin } +sadi_male = { Sadi } +safar_male = { Sefer } +said_male = { Sa_i_uml_d Sait } +sajid_male = { Sacit } +salahuddin_male = { Sailaiddin Saladdyn Saladin Salladdyn } salim_male = { Salim Selim Slim } salvador_male = { Gaizka Salvador Salvator Salvatore Sauvaire Xabat } samir_male = { Samir Samyr } samuel_male = { Saimuel Sam Samu_e_grv_l Samuel Samuyl Samuyll Sawyl } sancho_male = { San_c_ced_ } saturninus_male = { Saturnino } -saul_male = { Sa_u_uml_l } -sebastian_male = { Bas Bastiaan Bastian S_e_act_bastien Sebasti_a_grv_ Sebastiaan Sebastian Sebastiano } +saul_male = { Sa_u_act_l Sa_u_uml_l } +sebastian_male = { Bas Bastiaan Bastian S_e_act_bastien Sebasti_a_grv_ Sebasti_a_tld_o Sebastiaan Sebastian Sebastiano } secundus_male = { Secondo Segundo } -seraphin_male = { Serafino } +seraphin_male = { Serafim Serafino } sergius_male = { S_e_grv_rgi Serge Sergi Sergio Serigi Serj } -severinus_male = { S_o_uml_nke S_o_stk_ren S_o_uml_ren Severin Severino } +severinus_male = { S_o_uml_nke S_o_stk_ren S_o_uml_ren Severiano Severin Severino } severus_male = { Seferus Sywyrhus } +shahab_male = { _S_ced_ahap } +shahabuddin_male = { _S_ced_ahabettin } +shahin_male = { _S_ced_ahin } shamsuddin_male = { Chems-Eddine } +sharaf_male = { _S_ced_eref } +shawkat_male = { _S_ced_evket } shaykh_male = { Cheikh } -sherlock_male = { Shyrlok } +sherlock_male = { Shyrhloc Shyrlloc Shyrlok } sidney_male = { Sidney Sydney } +sidonius_male = { Sid_o_act_nio } siegfried_male = { Siegfried Sigfred Sigfrid } siegmar_male = { Siemer Sigmar } siegmund_male = { Segimon Siegmund Sigismund Sigmund } sigurd_male = { Sievert Sigurd Sjoerd } -simon_male = { Simen Simeon Simon Simone_male Simoun Symon } -solomon_male = { Salomon Seleven Selyf Slimane Souleymane } +silverius_male = { Silv_e_act_rio } +simon_male = { Sim_a_tld_o Simen Simeon Simon Simone_male Simoun Symon } +solomon_male = { S_u_act_leyman Salomon Seleven Selyf Slimane Souleymane } spencer_male = { Spynsyr } stanislaus_male = { Estanislau Stanislaw } stanley_male = { Stainlei Stanlyy } stein_male = { Steen Sten } -stephen_male = { _E_act_tienne Est_e_grv_ve Estebe Estefan Esteve St_e_act_phane Staffan Steeven Stef Stefan Stefano Steffan Steffen Stephan Stephen Steve Steven Styffyn } +stephen_male = { _E_act_tienne Est_e_grv_ve Est_e_hat_v_a_tld_o Estebe Estefan Esteve St_e_act_phane Staffan Steeven Stef Stefan Stefano Steffan Steffen Stephan Stephen Steve Steven Styffyn } stuart_male = { Stewairt Stewart Stuart } +suad_male = { Suat } sufyan_male = { Seufyann Sofian Sofiane Soufian } sven_male = { Svein Sven Svend Swen } sviatopolk_male = { Svante } -sylvain_male = { S_e_act_uvan Silvanus Sylvain } +sylvain_male = { S_e_act_uvan Silvanus Silvino Sylvain } sylvester_male = { Silbestre Silvestro Sylwystyrh } -sylvius_male = { Silvio Silvius Sylvio } +sylvius_male = { S_i_act_lvio Silvio Silvius Sylvio } talal_male = { Talal } talib_male = { Talyb } taliesin_male = { Taliesin Talyysyn } @@ -633,11 +716,11 @@ terrence_male = { Terence Terry } thaddaeus_male = { Thad_a_uml_us Thadd_a_uml_us Thaddyus } theo_male = { Teo Th_e_act_o Theo } theobald_male = { Tepot Theobald Thibault Thyobaldd Tibaud } -theodore_male = { Teodor Teodoro Teoudor Theodor Theodore Theodorus Tudor } +theodore_male = { Fyoddorhy Fyoddory Teodor Teodoro Teoudor Theodor Theodore Theodorus Tudor } theodoric_male = { Ddyryk Derek Derk Derrick Diedrich Dierk Dieter Dietrich Dirk Terris Tewdrig Thierry Till Tyll Tyrry } theodosius_male = { Tewdos } -theophilus_male = { Teoufile Theophil Thyoffylus } -thomas_male = { Thomas Tom Tomais Tomas Tomaz Tommy Tomos Toumas } +theophilus_male = { Te_o_act_filo Teoufile Theophil Thyoffylus } +thomas_male = { Thomas Tom Tom_a_act_s Tom_e_act_ Tomais Tomas Tomaz Tommy Tomos Toumas } thor_male = { Thor Tor } thorbjorn_male = { Thorben Thorbj_o_stk_rn Thorbj_o_uml_rn Torben Torbj_o_stk_rn Torbj_o_uml_rn } thorgeir_male = { Terje Torgeir Torgjer Toke } @@ -647,49 +730,58 @@ thorleif_male = { Tollef } thorir_male = { Thore Tore Ture } thorstein_male = { Thorsten Torstein Torsten } thorvald_male = { Torvald } +thutmose_male = { Fwtmosy Tutmose } tiberius_male = { Tiberius Tybyrhyus } timothy_male = { Tim Timoth_e_act_e Timothy Tymofy Timouti_e_act_u Timoti } +timur_male = { Demir Timur } tobias_male = { Tobias Toby } toussaint_male = { Deunoro } -tristan_male = { Drystan Trhystan Tristain Tristan Trystan } +tristan_male = { Drystan Trhystan Trist_a_tld_o Tristain Tristan Trystan } tryggve_male = { Tryggve Trygve } tugdual_male = { Tudal Tugdual } +tutankhamun_male = { Tutainkhaimun Twtanchamun Twtankhamun } ulrich_male = { Uli Ulrich Ulrik } -umar_male = { Omar Oumar Umar } -urban_male = { Urban } +umar_male = { _O_uml_mer Omar Oumar Umar } +urban_male = { Urban Urbano } urien_male = { Urien Uryn Uryyn } uther_male = { Ufrh Ufyr Uther Uthyr } uwe_male = { Ove Owe Uwe } uways_male = { Uways } -valdemar_male = { Valdemar Waldemar } -valentin_male = { Balendin Folant Valent_i_act_ Valentin Valentine Valentino } +valdemar_male = { Valdemar Valdemiro Waldemar } +valentin_male = { Balendin Folant Valent_i_act_ Valentim Valentin Valentine Valentino } valerian_male = { Wyalyrhyan Wyalyryan } valerius_male = { Val_e_grv_ri Valeri Valerio } +vasco_male = { Vasco } vaughan_male = { Fychan Vaughan } venantius_male = { Benantzio } -victor_male = { Biktor Bittor V_i_act_ctor Victor Viktor Vitour Vittorio Wyyctorh } +victor_male = { Biktor Bittor V_i_act_ctor V_i_act_tor Victor Viktor Vitour Vittorio Wyyctorh } victoremmanuel_male = { V_i_act_ctor_spc_Manuel } -victorianus_male = { Biktoriano } -vincent_male = { Bingen Vicen_c_ced_ Vinc_e_grv_ns Vincent Visant Wincent Wyyncynt } -virgil_male = { Virgilio } +victorianus_male = { Biktoriano Vitorino } +vincent_male = { Bingen Vicen_c_ced_ Vicente Vinc_e_grv_ns Vincent Visant Wincent Wyyncynt } +virgil_male = { Verg_i_act_lio Virg_i_act_lio Virgilio } viriathus_male = { Gwriad } -vitalius_male = { Gwydol Vidal Viddal } +vitalius_male = { Gwydol Vidal Viddal Vital } vitus_male = { Vito } vladislaus_male = { Ladislau } walid_male = { Walid } -walter_male = { Gauchi_e_act_ Gauthier Gwallter Valter Wailter Walltyr Walter Walther Waltyr Waltyrh Wouter } +walter_male = { Gauchi_e_act_ Gauthier Gualter Gwallter Valter Wailter Walltyr Walter Walther Waltyr Waltyrh Wouter } wenceslaus_male = { Wenzel } werner_male = { Werner Wessel } wilfried_male = { Wilfred Wilfrid Wilfried } -william_male = { Bill Billy Gilen Guillaume Guillem Gwilym Liam Llyam Lomig Lyam Guih_e_grv_n Guih_e_grv_ume Gwilherm Gwillam Pim Vilhelm Villy Wilhelm Wilhelmus Wilken Will Willem Willi Williaim William Willm Wilm Willy Wyllyam } +william_male = { Bill Billy Gilen Guilherme Guillaume Guillem Gwilym Liam Llyam Lomig Lyam Guih_e_grv_n Guih_e_grv_ume Gwilherm Gwillam Pim Vilhelm Villy Wilhelm Wilhelmus Wilken Will Willem Willi Williaim William Willm Wilm Willy Wyllyam } wissam_male = { Wissam Wissem } wolf_male = { Ulf Wolf Wulf } xavier_male = { Savi_e_act_ Saverio Txaber Xabier Xaver Xavier Zavier } +yashar_male = { Ya_s_ced_ar } +yasser_male = { Yasir } yassin_male = { Yacine Yassin Yassine } yves_male = { Eozen Erwan Erwann Ives Ivo Youen Youenn Youn Yves Yvon Yvonig Yvonnick } zachary_male = { Sachary Sashary Zacar_i_grv_o Zach Zachary Zaichairi Zakari } +zafar_male = { Zafer } zahid_male = { Sahyd } +zaki_male = { Zeki } zayn_male = { Sayn Zain } zaynuddin_male = { Zin_e_act_dine } zeno_male = { Zeno } -zephyrinus_male = { Cefer_i_act_ } \ No newline at end of file +zephyrinus_male = { Cefer_i_act_ } +ziya_male = { Ziya } \ No newline at end of file diff --git a/common/culture/name_lists/00_baltic.txt b/common/culture/name_lists/00_baltic.txt new file mode 100644 index 00000000..9758fd1c --- /dev/null +++ b/common/culture/name_lists/00_baltic.txt @@ -0,0 +1,194 @@ +name_list_latgalian = { + + cadet_dynasty_names = { + { "dynnp_gada" "dynn_Selija" } + { "dynnp_gada" "dynn_Varviai" } + "dynn_Seli" + { "dynnp_gada" "dynn_Zagare" } + { "dynnp_gada" "dynn_Vanema" } + { "dynnp_gada" "dynn_Ventava" } + { "dynnp_gada" "dynn_Bandava" } + { "dynnp_gada" "dynn_Piemare" } + { "dynnp_gada" "dynn_Keklys" } + { "dynnp_gada" "dynn_Meguva" } + { "dynnp_gada" "dynn_Duvzare" } + { "dynnp_gada" "dynn_Tervete" } + { "dynnp_gada" "dynn_Silene" } + { "dynnp_gada" "dynn_Duobele" } + { "dynnp_gada" "dynn_Zagare" } + { "dynnp_gada" "dynn_Sela" } + { "dynnp_gada" "dynn_Ventas" } + { "dynnp_gada" "dynn_Juras" } + { "dynnp_gada" "dynn_Musas" } + { "dynnp_gada" "dynn_Gaujas" } + { "dynnp_gada" "dynn_Aiviekstas" } + { "dynnp_gada" "dynn_Dzelves" } + { "dynnp_gada" "dynn_Krona" } + { "dynnp_gada" "dynn_Adazi" } + } + + dynasty_names = { + { "dynnp_gada" "dynn_Selija" } + { "dynnp_gada" "dynn_Varviai" } + "dynn_Seli" + { "dynnp_gada" "dynn_Zagare" } + { "dynnp_gada" "dynn_Vanema" } + { "dynnp_gada" "dynn_Ventava" } + { "dynnp_gada" "dynn_Bandava" } + { "dynnp_gada" "dynn_Piemare" } + { "dynnp_gada" "dynn_Keklys" } + { "dynnp_gada" "dynn_Meguva" } + { "dynnp_gada" "dynn_Duvzare" } + { "dynnp_gada" "dynn_Tervete" } + { "dynnp_gada" "dynn_Silene" } + { "dynnp_gada" "dynn_Duobele" } + { "dynnp_gada" "dynn_Zagare" } + { "dynnp_gada" "dynn_Sela" } + { "dynnp_gada" "dynn_Ventas" } + { "dynnp_gada" "dynn_Juras" } + { "dynnp_gada" "dynn_Musas" } + { "dynnp_gada" "dynn_Gaujas" } + { "dynnp_gada" "dynn_Aiviekstas" } + { "dynnp_gada" "dynn_Dzelves" } + { "dynnp_gada" "dynn_Krona" } + { "dynnp_gada" "dynn_Adazi" } + } + + male_names = { + Aishno Ako Ankad Baise Balodis Bikshe Borut Bulei Butovit Cirulis Dangeruthe Darbeslave Dausprungas Davins Demas Dobre Dovyat Dzintis + Elmede Erasts Erdzivil Galeine Gastile Gedere Gerden Gibedats Giemund Golovke Gotene Gunvald Imanta Janis Jaunule Jedetus Juvage Kage + Kaire Karijotas Karnak Kaupo Kerstigens Kiten Klavess Kodere Kuliens Kurlemuse Lammekinus Likiik Litto Lonkogveni Manvydas Meinekinus + Mendune Nameisis Narvait Pliksov Pukiik Pukuveras Ringaudas Rushky Rusins Sabe Sargun Scurdo Shutr Shvarnas Skornand Sprudeik Stegut + Steikint Sviendorog Talivaldis Tautvila Traidenis Treniota Vaishvilkas Valikaila Vetseke Viesturs Visheiv Vishikut Vishly Vykantas Yudki + } + female_names = { + Agita Ausala Balba Bitens Brita Daira Darate Dardedze Dose Dzeguze Galene Greze Gunda Gundega Ieva Imela Kordula Liga Maija Marite Naula + Rasa Ruta Savna Viba Zigne + } + dynasty_of_location_prefix = "dynnp_gada" + + +} +name_list_lithuanian = { + + cadet_dynasty_names = { + "dynn_Jogailaitis" + "dynn_Gediminaitis" + "dynn_Astikaitis" + "dynn_AlS_eniS_kis" + "dynn_Cartoriskis" + "dynn_Giedraitis" + "dynn_Alelkaitis" + "dynn_Sviriskis" + "dynn_Valmantaitis" + "dynn_Kesgailos" + "dynn_Mangirdaitis" + "dynn_Hlebowicius" + "dynn_Schalauosunus" + "dynn_Ragai" + "dynn_Ismemel" + "dynn_Isskalvia" + "dynn_Lamati" + } + + dynasty_names = { + "dynn_Jogailaitis" + "dynn_Gediminaitis" + "dynn_Astikaitis" + "dynn_AlS_eniS_kis" + "dynn_Cartoriskis" + "dynn_Giedraitis" + "dynn_Alelkaitis" + "dynn_Sviriskis" + "dynn_Valmantaitis" + "dynn_Kesgailos" + "dynn_Mangirdaitis" + "dynn_Hlebowicius" + "dynn_Schalauosunus" + "dynn_Ragai" + "dynn_Ismemel" + "dynn_Isskalvia" + "dynn_Lamati" + } + + male_names = { + Algirdas Antanas Antavas Aras Arunas Azuolas Budrys Bukantas Butavas Butigeidis Butvydas Daugvilas Daumantas Dausprungas Dravenis Erdenis Erdvilas Gedigaudas + Gediminas Gedivilas Gintaras Gintautas Girdenis Irmantas Jaunutis Jogaila Jovirdas Kantibutas Karijotas Kesgaila Kestutis Korigaila Korybutas + Lasukas Lingvenis Liudas Lubartas Lutuveras Merkelis Mindaugas Minigaila Mantvydas Movkoldas Narimantas Povilas Pukuveras Rimantas + Rimgaila Rimvydas Ringaudas Sarunas Skirgaila Songaila Svarnas Svitrigaila Tarvydas Tovtivilas Traidenis Treniotas Vainius Vaisvilkas Valimantas + Vidmantas Vingoldas Virmantas Visvaldis Vizgirdas Vykintas Vytautas Vytenis Zivinbudas Zygimantas + } + female_names = { + Aldona Anele Audra Ausra Birute Dannila Danute Evalda Gaudimante Giedre Gintare Jevna Kenna Laima Mikova Roze Saule Svajone Vida + } + + dynasty_of_location_prefix = "dynnp_is" + + +} +name_list_prussian = { + + cadet_dynasty_names = { + "dynn_Kuilis" + "dynn_Kalabijjan" + "dynn_Jankowskie" + { "dynnp_is" "dynn_Barta" } + { "dynnp_is" "dynn_Galinda" } + { "dynnp_is" "dynn_Sasna" } + { "dynnp_is" "dynn_Kulmas" } + { "dynnp_is" "dynn_Pamede" } + { "dynnp_is" "dynn_Pagude" } + { "dynnp_is" "dynn_Varme" } + { "dynnp_is" "dynn_Notanga" } + { "dynnp_is" "dynn_Semba" } + { "dynnp_is" "dynn_Skalva" } + { "dynnp_is" "dynn_Nadruva" } + { "dynnp_is" "dynn_Truso" } + { "dynn_Pregolyas" } + { "dynn_Nemanas" } + { "dynn_Priegliusas" } + { "dynn_Alnas" } + { "dynn_Dravantas" } + { "dynn_Spirdin" } + { "dynn_Peckollas" } + { "dynn_Rickias" } + } + + dynasty_names = { + "dynn_Kuilis" + "dynn_Kalabijjan" + "dynn_Jankowskie" + { "dynnp_is" "dynn_Barta" } + { "dynnp_is" "dynn_Galinda" } + { "dynnp_is" "dynn_Sasna" } + { "dynnp_is" "dynn_Kulmas" } + { "dynnp_is" "dynn_Pamede" } + { "dynnp_is" "dynn_Pagude" } + { "dynnp_is" "dynn_Varme" } + { "dynnp_is" "dynn_Notanga" } + { "dynnp_is" "dynn_Semba" } + { "dynnp_is" "dynn_Skalva" } + { "dynnp_is" "dynn_Nadruva" } + { "dynnp_is" "dynn_Truso" } + { "dynn_Pregolyas" } + { "dynn_Nemanas" } + { "dynn_Priegliusas" } + { "dynn_Alnas" } + { "dynn_Dravantas" } + { "dynn_Spirdin" } + { "dynn_Peckollas" } + { "dynn_Rickias" } + } + + male_names = { + Alvydas Arelis Auctune Bajoras Beidras Budo Dagonis Ekkelis Galindas Gauronas Gerdautas Glande Golding Jauguttis Karatas Klukis Kugis + Milzas Nomedas Prusas Sergonis Ulinniks Ulitis + } + female_names = { + Betten Dagas Gelennis Gerkus Grasus Gulbis Mila Milyuns Weslikan Ziedas + } + + dynasty_of_location_prefix = "dynnp_is" + + +} diff --git a/common/culture/name_lists/00_balto_finnic.txt b/common/culture/name_lists/00_balto_finnic.txt new file mode 100644 index 00000000..6ba55bdb --- /dev/null +++ b/common/culture/name_lists/00_balto_finnic.txt @@ -0,0 +1,393 @@ +name_list_finnish = { + + cadet_dynasty_names = { + "dynn_Rova" + "dynn_Suensaari" + "dynn_Tammpere" + "dynn_Nieminen" + "dynn_Lalli" + "dynn_Hannus" + "dynn_Jaakkola" + "dynn_Ilkka" + "dynn_Isotalo" + "dynn_Lauri" + "dynn_Tuure" + "dynn_Maunu" + "dynn_Akseli" + "dynn_Lahtinen" + "dynn_Sepp" + "dynn_Laine" + "dynn_JA_rvinen" + "dynn_Anttonen" + "dynn_Karpela" + "dynn_SA_rkilahti" + "dynn_Tavast" + "dynn_Karp" + "dynn_Kangas" + "dynn_Kurki" + "dynn_Lepo" + "dynn_Harviala" + "dynn_SydA_nmaa" + "dynn_MA_kelA_" + "dynn_Koskinen" + "dynn_Sarvilahti" + "dynn_Lankinen" + "dynn_Bottii" + "dynn_Lonooen" + "dynn_Markonen" + } + + dynasty_names = { + "dynn_Rova" + "dynn_Suensaari" + "dynn_Tammpere" + "dynn_Nieminen" + "dynn_Lalli" + "dynn_Hannus" + "dynn_Jaakkola" + "dynn_Ilkka" + "dynn_Isotalo" + "dynn_Lauri" + "dynn_Tuure" + "dynn_Maunu" + "dynn_Akseli" + "dynn_Lahtinen" + "dynn_Sepp" + "dynn_Laine" + "dynn_JA_rvinen" + "dynn_Anttonen" + "dynn_Karpela" + "dynn_SA_rkilahti" + "dynn_Tavast" + "dynn_Karp" + "dynn_Kangas" + "dynn_Kurki" + "dynn_Lepo" + "dynn_Harviala" + "dynn_SydA_nmaa" + "dynn_MA_kelA_" + "dynn_Koskinen" + "dynn_Sarvilahti" + "dynn_Lankinen" + "dynn_Bottii" + "dynn_Lonooen" + "dynn_Markonen" + } + + male_names = { + Aatos Ahma Aimo Armas Arvo Asikko Ensio Haapa Hannu Havu Hintsa Ihanti Into Jalo Jurva Kaleva Kalevi Kettu Kolli Lalli Lauri Lemetti + Mielitty Miemo Mikko Oiva Onni Otso Pyry PA_iviO_ Pentti Reko Sampo Satajalka Satatieto Seppo Susi Tapani Terho Toivo Ukko Uoti Urho VA_inO_ + Valta Valto Veli Vesa Voitto Erkki Kaarle Johannes Risto Olavi Petri Henri YrjO_ + Valteri Riku Matti Jaakoppi Taisto Paavo Aatso Ahvo Aarto Asko Tuokko Rieti + Kauro Kuuti Pekko Soini Tuure Turo Tommo Tohmas + } + female_names = { + Aamu Aino HellA_ Helmi Ilta Kaarina KA_py Kielo Kukka Lauha Lempi Mahla Maija Marja Mesi Metta PA_ivA_ PA_ivi Pihla Pilvi Rauha Sisko Suoma + Taimi Terhi Titti Tuija Tuovi Tuuli Tuulikki Tyyne Tyyni Vanamo Venla Mielikki Hertta Loviisa Inkeri Ilmatar Irene Ilona Kristiina + Elisabet Sohvi Auni Liekko Kivutar Lemmikki Lyylikki Salme Talvikki Tuulitar + } + dynasty_of_location_prefix = "dynnp_of" + + +} +name_list_sami = { + + cadet_dynasty_names = { + "dynn_Ahkebeaivi" + "dynn_Ahkemiella" + "dynn_GA_ivvaS_" + "dynn_Varakid" + "dynn_Sarakid" + "dynn_Hasabid" + "dynn_Tatvid" + "dynn_Yurakid" + "dynn_Jio" + "dynn_Simo" + "dynn_Kuni" + "dynn_Rahna" + "dynn_Sochioch" + "dynn_Jochmoch" + "dynn_Avioware" + "dynn_Enare" + "dynn_Enaraby" + "dynn_Kimi" + "dynn_Suenekelle" + "dynn_Warager" + "dynn_Teno" + "dynn_Maggeroe" + "dynn_Kittilaby" + "dynn_Sambeaoby" + "dynn_Pajersvi" + "dynn_Kielit" + "dynn_Kemeloe" + } + + dynasty_names = { + "dynn_Ahkebeaivi" + "dynn_Ahkemiella" + "dynn_GA_ivvaS_" + "dynn_Varakid" + "dynn_Sarakid" + "dynn_Hasabid" + "dynn_Tatvid" + "dynn_Yurakid" + "dynn_Jio" + "dynn_Simo" + "dynn_Kuni" + "dynn_Rahna" + "dynn_Sochioch" + "dynn_Jochmoch" + "dynn_Avioware" + "dynn_Enare" + "dynn_Enaraby" + "dynn_Kimi" + "dynn_Suenekelle" + "dynn_Warager" + "dynn_Teno" + "dynn_Maggeroe" + "dynn_Kittilaby" + "dynn_Sambeaoby" + "dynn_Pajersvi" + "dynn_Kielit" + "dynn_Kemeloe" + } + + male_names = { + A_ggi A_igesA_rri A_ilu A_mmot A_ra A_rrajuoksa A_sllat E_oavvA_ Ahkemiella Algebaeivi Baeivi Baeivvet Biejan BijA_s Bilzi DA_vgon DuttA_ GA_ivvas + GA_ktu Henes JA_rre Jeansa Juvven LA_gon LA_vrrohas LeammA_ Mellet Mihka Mohkku Mokci NA_hkol NA_innas Njulgu OavA_n Orddot RA_stos Riibma Ruigi + SA_rra Speaidna Viggu + } + female_names = { + A_idnA_ A_lgen A_llet E_uvje BiellA_ BiergA_ BuohttA_ DuojA_ GealA_ GierA_ Giste JuoksA_hkkA_ Leandu MA_idna NA_sti NanA_ NjA_ves OajA_ SA_rA_hkkA_ SealggA_ + SearA_ SoabA_ SojA_ SuoinnA_ Suonjar UksA_hkkA_ + } + dynasty_of_location_prefix = "dynnp_of" + + +} +name_list_estonian = { + + cadet_dynasty_names = { + "dynn_Karasi" + "dynn_Livo" + "dynn_Turaida" + "dynn_Lembi" + { "dynnp_kohta" "dynn_Sakala" } + { "dynnp_kohta" "dynn_JA_rva" } + "dynn_Saaremaai" + "dynn_Hiiumaai" + "dynn_Kuressaaru" + { "dynnp_kohta" "dynn_Muhu" } + { "dynnp_kohta" "dynn_Laanemaa" } + { "dynnp_kohta" "dynn_Ridala" } + { "dynnp_kohta" "dynn_Soontagana" } + { "dynnp_kohta" "dynn_Revala" } + { "dynnp_kohta" "dynn_Harju" } + { "dynnp_kohta" "dynn_Alempois" } + { "dynnp_kohta" "dynn_Virumaa" } + { "dynnp_kohta" "dynn_Pudiviru" } + { "dynnp_kohta" "dynn_Vaiga" } + { "dynnp_kohta" "dynn_Mohu" } + { "dynnp_kohta" "dynn_Nurmekund" } + { "dynnp_kohta" "dynn_Jogentagana" } + { "dynnp_kohta" "dynn_Ugandi" } + { "dynnp_kohta" "dynn_Leole" } + { "dynnp_kohta" "dynn_Alistegunde" } + } + + dynasty_names = { + "dynn_Karasi" + "dynn_Livo" + "dynn_Turaida" + "dynn_Lembi" + { "dynnp_kohta" "dynn_Sakala" } + { "dynnp_kohta" "dynn_JA_rva" } + "dynn_Saaremaai" + "dynn_Hiiumaai" + "dynn_Kuressaaru" + { "dynnp_kohta" "dynn_Muhu" } + { "dynnp_kohta" "dynn_Laanemaa" } + { "dynnp_kohta" "dynn_Ridala" } + { "dynnp_kohta" "dynn_Soontagana" } + { "dynnp_kohta" "dynn_Revala" } + { "dynnp_kohta" "dynn_Harju" } + { "dynnp_kohta" "dynn_Alempois" } + { "dynnp_kohta" "dynn_Virumaa" } + { "dynnp_kohta" "dynn_Pudiviru" } + { "dynnp_kohta" "dynn_Vaiga" } + { "dynnp_kohta" "dynn_Mohu" } + { "dynnp_kohta" "dynn_Nurmekund" } + { "dynnp_kohta" "dynn_Jogentagana" } + { "dynnp_kohta" "dynn_Ugandi" } + { "dynnp_kohta" "dynn_Leole" } + { "dynnp_kohta" "dynn_Alistegunde" } + } + + male_names = { + Aare Agul Ahas Aho Ahti Ahvo Alar Alo Alur Aopelg AotO_iv Arp Arvet Arvo Atko Aul Aulemb Eeri Elmar Hain Haljas + Heameel HeatO_iv HoovatO_iv Hurmas HurmetO_iv HO_imulemb HU_valemb HU_vameel HU_vatO_iv Igalemb IgapA_iv Ihalemb + Ihameel Ihar IhatO_iv Ihavald Illimar Ilmalemb Ilmar Ilvelemb Jaolemb Kaalep Kaarel Kaaren Kahar Kahru Kahrulemb + Kahus Kaido Kalev Kalju Kaljuvald Kalle Kaomeel Karuvald Kaugemeel Kaupo Kaur Kiur Kiurupelg Koit Kosk Kudres + KU_llelemb LeetO_iv Lembit LeppetO_iv Lible LA_ttelemb Manivald Mart Maru Mati Mats Meelis Mehis Meigo Neeme Niglas + OhetO_iv Ohevald Olev Onni Otelemb Ott Pihl Piho Pikne PA_evalemb PA_rt Raak Raho Rahuleid Sulev Susi Sutemeel + Sutepelg Tambet Tarva Tarvet Tasulemb Toivo Toom Tunne Tutkas Tuul TO_eleid TO_iv TO_ivulemb TO_ll TO_nn Uku + Urmas Uru Valdur Vambola Vandemeel Varjelemb Veli Vello Venno Vesse Vihavald Vililemb Vilimeel VilitO_iv Vilivald + Vootele VA_ino VA_rvo O_igemeel U_lo + } + female_names = { + Aasa Ahma Aime Aimo Aita Aldi Ann Anni Annika Are Auli Aune Eha Elo Ere Helbe Hele Helgi Heli Helina Helmi Helve + Hiie HA_marik HU_U_p Ida Ilme Ilmi Ilo Kai Kaili Kaja Kalli Kare Kati Kiir Kiire Killu KA_bi Lagle Laine Lee Leek Leelo Leili + Lemme Liis Lill Linda Luule Maija Mari Marja Meeli Niine Ninni Oie Pilve PA_ivi PO_im Salme Sirje SA_de Taimi Talvi Tiiu + Tuuli Urve Viire Vilja Virge Virve VA_rvu O_ie O_nne U_lane U_lle + } + + dynasty_of_location_prefix = "dynnp_kohta" + + +} +name_list_karelian = { + + cadet_dynasty_names = { + "dynn_Kirjala" + "dynn_Lagoda" + "dynn_Vuoksi" + "dynn_Kemeloe" + "dynn_Kovoda" + "dynn_Soute" + "dynn_Maselke" + "dynn_Salotisa" + "dynn_Kielit" + "dynn_Solosti" + "dynn_Anser" + "dynn_Vingeli" + "dynn_Engo" + "dynn_Vango" + "dynn_Kumo" + "dynn_Kuyto" + } + + dynasty_names = { + "dynn_Kirjala" + "dynn_Lagoda" + "dynn_Vuoksi" + "dynn_Kemeloe" + "dynn_Kovoda" + "dynn_Soute" + "dynn_Maselke" + "dynn_Salotisa" + "dynn_Kielit" + "dynn_Solosti" + "dynn_Anser" + "dynn_Vingeli" + "dynn_Engo" + "dynn_Vango" + "dynn_Kumo" + "dynn_Kuyto" + } + + male_names = { + Agafana Akkila Aleksanteri Alestari Antippa Arhippa Arssi Arttju Borissa Buklei Djemi Domentei Dorofei + Everkki Fadei Fedotta Fedula Feudora Filatkie Grigo Harle Hermo Heroi Hilippa Hilppa Homa Hotti Huohvana + Ignoi Ipatti Iroda Jehki Jelisei Jemi Jermei Jormoi Jestoi Jeuloi Jeygi Jeyssi Johora Jyrki Karppa + Kassu Kibroi KirilA_ Kondro Konoi Kormi Kostja Kuisma KyyrO_ Lari Lauri Lemetti Levoi Luka + Makko Maksima Manu Markki Martiska Miina Miitrei MikittA_ Miikkula Mirona Mitfora Mokki Moissi + Naasarei Nikolai Niikko Ofonja Oleksandra Oleksi Omeli Omelja Ondrei Onu Onni Ontto Oudokka + Pamfila Pankko Pankraatei Pantelei Parmoi Pauli Pedri PiminA_ Pirdoi Porfi Potoi Potto Prokka Prokki Puahko Poavila Puavila PA_ntti + Rodi Romana Savina Savastei Savasti Siila SiitA_ri Sisoi Sohro Sosoi Suava Stjoppi + Tarassi Teppana Tero Tiihpo Tiita Timoi Toro Triihvo Ulaska Ulljoi Usti Vakko Valassi Vaslei Veledi Vihtora Vuavila Zakki + } + female_names = { + Ahri Akilina Aleksandra Alla Anna Anni Anastasia Antonia Barbara Daria Darja Domna Eeva Ester Eudokia Faina Helena Hilaria Houri + Irene Irinja Iro Jeli Jeygi Johanna Jougi Julia Juliana Kapitolina Katja Katri Klaudia Kristina Ksenia + Larissa Lea Ludmila Lyydia Malanja Marfa Maria Marppa Mateli Matjoi Matrona Maura Mirjam Muarie Nasti Nastoi Natalia Niina + Ofimja Ogoi Okahvie Oksenja Okuli Olga Olena Opri Oppo Outi Palaga Paraskeva Paroi Paula Pelagia Raakel Raisa Rebekka Ruuth + Saara Serafima Sinaida Soloi Sofja Sofia Taisa Toarie Tshikki Valentina Valeria Varvoi Vassa Veera Zoja + } + dynasty_of_location_prefix = "dynnp_of" + + +} +name_list_vepsian = { + + cadet_dynasty_names = { + "dynn_Sheksna" + "dynn_Suda" + "dynn_Syas" + "dynn_Vasin" + "dynn_Onega" + "dynn_Vaga" + "dynn_Kodmin" + "dynn_Yaga" + "dynn_Kurees" + "dynn_Nikissima" + "dynn_Pudoa" + "dynn_Ziranni" + "dynn_Pesoesna" + "dynn_Veislena" + "dynn_Yisogda" + "dynn_Pitsa" + "dynn_Usga" + "dynn_Chasim" + "dynn_Peelsina" + "dynn_Kneesma" + "dynn_Kadomo" + "dynn_Poosa" + "dynn_Neem" + "dynn_Yensu" + "dynn_Ulsui" + "dynn_Ussa" + "dynn_Velva" + } + + dynasty_names = { + "dynn_Sheksna" + "dynn_Suda" + "dynn_Syas" + "dynn_Vasin" + "dynn_Onega" + "dynn_Vaga" + "dynn_Kodmin" + "dynn_Yaga" + "dynn_Kurees" + "dynn_Nikissima" + "dynn_Pudoa" + "dynn_Ziranni" + "dynn_Pesoesna" + "dynn_Veislena" + "dynn_Yisogda" + "dynn_Pitsa" + "dynn_Usga" + "dynn_Chasim" + "dynn_Peelsina" + "dynn_Kneesma" + "dynn_Kadomo" + "dynn_Poosa" + "dynn_Neem" + "dynn_Yensu" + "dynn_Ulsui" + "dynn_Ussa" + "dynn_Velva" + } + + male_names = { + Agafana Akkila Aleksanteri Alestari Antippa Arhippa Arssi Arttju Borissa Buklei Djemi Domentei Dorofei + Everkki Fadei Fedotta Fedula Feudora Filatkie Grigo Harle Hermo Heroi Hilippa Hilppa Homa Hotti Huohvana + Ignoi Ipatti Iroda Jehki Jelisei Jemi Jermei Jormoi Jestoi Jeuloi Jeygi Jeyssi Johora Jyrki Karppa + Kassu Kibroi KirilA_ Kondro Konoi Kormi Kostja Kuisma KyyrO_ Lari Lauri Lemetti Levoi Luka + Makko Maksima Manu Markki Martiska Miina Miitrei MikittA_ Miikkula Mirona Mitfora Mokki Moissi + Naasarei Nikolai Niikko Ofonja Oleksandra Oleksi Omeli Omelja Ondrei Onu Onni Ontto Oudokka + Pamfila Pankko Pankraatei Pantelei Parmoi Pauli Pedri PiminA_ Pirdoi Porfi Potoi Potto Prokka Prokki Puahko Poavila Puavila PA_ntti + Rodi Romana Savina Savastei Savasti Siila SiitA_ri Sisoi Sohro Sosoi Suava Stjoppi + Tarassi Teppana Tero Tiihpo Tiita Timoi Toro Triihvo Ulaska Ulljoi Usti Vakko Valassi Vaslei Veledi Vihtora Vuavila Zakki + } + female_names = { + Ahri Akilina Aleksandra Alla Anna Anni Anastasia Antonia Barbara Daria Darja Domna Eeva Ester Eudokia Faina Helena Hilaria Houri + Irene Irinja Iro Jeli Jeygi Johanna Jougi Julia Juliana Kapitolina Katja Katri Klaudia Kristina Ksenia + Larissa Lea Ludmila Lyydia Malanja Marfa Maria Marppa Mateli Matjoi Matrona Maura Mirjam Muarie Nasti Nastoi Natalia Niina + Ofimja Ogoi Okahvie Oksenja Okuli Olga Olena Opri Oppo Outi Palaga Paraskeva Paroi Paula Pelagia Raakel Raisa Rebekka Ruuth + Saara Serafima Sinaida Soloi Sofja Sofia Taisa Toarie Tshikki Valentina Valeria Varvoi Vassa Veera Zoja + } + dynasty_of_location_prefix = "dynnp_of" + + +} diff --git a/common/culture/name_lists/00_berber.txt b/common/culture/name_lists/00_berber.txt new file mode 100644 index 00000000..6798af50 --- /dev/null +++ b/common/culture/name_lists/00_berber.txt @@ -0,0 +1,561 @@ +name_list_butr = { + + cadet_dynasty_names = { + # Currently shared with Maghreb Arabic + "dynn_Hammadid" + "dynn_Taishufin" + "dynn_Hafsid" + "dynn_Zayanid" + "dynn_Aznagid" + "dynn_Wanurid" + "dynn_Alivid" + "dynn_Madinid" + "dynn_Muttawakilid" + "dynn_Mansurid" + "dynn_Yazid" + "dynn_Tremecen" + "dynn_Ishaqid" + "dynn_Yahyavid" + "dynn_Bilalid" + "dynn_Utmanid" + "dynn_Tittawin" + "dynn_Sebtaid" + "dynn_Tariqid" + "dynn_Muhajir" + "dynn_Ladenid" + "dynn_Hannachid" + "dynn_Sabrid" + "dynn_Safavid" + "dynn_Sajjadid" + "dynn_Saidid" + "dynn_Sedkid" + "dynn_Shakeelid" + "dynn_Sharifid" + "dynn_Shehzadid" + "dynn_Sidqid" + "dynn_Tahirid" + "dynn_Talalid" + "dynn_Medjerdid" + "dynn_Tasneemid" + "dynn_Tayebid" + "dynn_Umarid" + "dynn_Waheedid" + "dynn_Wahidid" + "dynn_Waleedid" + "dynn_Wazirid" + "dynn_Younisid" + "dynn_Zafarid" + "dynn_Zahirid" + "dynn_Zakariyid" + "dynn_Zakidid" + "dynn_Zaydid" + "dynn_Abdoid" + "dynn_Abidin" + "dynn_Adilid" + "dynn_Balochid" + "dynn_Bakkalid" + "dynn_Mahmoudid" + "dynn_Nadeerid" + "dynn_Nadvid" + "dynn_Najidid" + "dynn_Naqvid" + "dynn_Namjoid" + "dynn_Anwarid" + "dynn_Fawzid" + "dynn_Nawfalid" + "dynn_Abbasid" + "dynn_Bari" + "dynn_Isavid" + "dynn_Fatamid" + "dynn_Ayyubid" + "dynn_Khazrunid" + "dynn_Marinid" + "dynn_Almohad" + "dynn_Ghaniya" + "dynn_Jalayar" + "dynn_Tudjinid" + "dynn_Seddoukid" + "dynn_Raghraghwid" + "dynn_Temimid" + "dynn_Azfavid" + "dynn_Hamdanid" + "dynn_Thabitid" + { "dynnp_al-" "dynn_Idrisi" } + "dynn_Khaldun" + "dynn_Battuta" + "dynn_Kamalid" + } + + dynasty_names = { + # Currently shared with Maghreb Arabic + "dynn_Hammadid" + "dynn_Taishufin" + "dynn_Hafsid" + "dynn_Zayanid" + "dynn_Aznagid" + "dynn_Wanurid" + "dynn_Alivid" + "dynn_Madinid" + "dynn_Muttawakilid" + "dynn_Mansurid" + "dynn_Yazid" + "dynn_Tremecen" + "dynn_Ishaqid" + "dynn_Yahyavid" + "dynn_Bilalid" + "dynn_Utmanid" + "dynn_Tittawin" + "dynn_Sebtaid" + "dynn_Tariqid" + "dynn_Muhajir" + "dynn_Ladenid" + "dynn_Hannachid" + "dynn_Sabrid" + "dynn_Safavid" + "dynn_Sajjadid" + "dynn_Saidid" + "dynn_Sedkid" + "dynn_Shakeelid" + "dynn_Sharifid" + "dynn_Shehzadid" + "dynn_Sidqid" + "dynn_Tahirid" + "dynn_Talalid" + "dynn_Medjerdid" + "dynn_Tasneemid" + "dynn_Tayebid" + "dynn_Umarid" + "dynn_Waheedid" + "dynn_Wahidid" + "dynn_Waleedid" + "dynn_Wazirid" + "dynn_Younisid" + "dynn_Zafarid" + "dynn_Zahirid" + "dynn_Zakariyid" + "dynn_Zakidid" + "dynn_Zaydid" + "dynn_Abdoid" + "dynn_Abidin" + "dynn_Adilid" + "dynn_Balochid" + "dynn_Bakkalid" + "dynn_Mahmoudid" + "dynn_Nadeerid" + "dynn_Nadvid" + "dynn_Najidid" + "dynn_Naqvid" + "dynn_Namjoid" + "dynn_Anwarid" + "dynn_Fawzid" + "dynn_Nawfalid" + "dynn_Abbasid" + "dynn_Bari" + "dynn_Isavid" + "dynn_Fatamid" + "dynn_Ayyubid" + "dynn_Khazrunid" + "dynn_Marinid" + "dynn_Almohad" + "dynn_Ghaniya" + "dynn_Jalayar" + "dynn_Tudjinid" + "dynn_Seddoukid" + "dynn_Raghraghwid" + "dynn_Temimid" + "dynn_Azfavid" + "dynn_Hamdanid" + "dynn_Thabitid" + { "dynnp_al-" "dynn_Idrisi" } + "dynn_Khaldun" + "dynn_Battuta" + "dynn_Kamalid" + } + + male_names = { + Abakada Abazza Abbas Abdul-Azeem Abdul-Haleem Abdul-Kareem Abdul-Rahman Abdullah Abidin Abu_Bakr Adal Adam Aderbal Adergazuz + Adherbal Admer Adrir Adum Afaghis Afalawas Afalku Afer Afulay Agafay Agama Agdada Agdun Agellid Aggur Aghali Aghecher Aghilas Agwillul + Ahamatu Aheyyad Ahmad Ajdir Ajeddig Akaday Akateiaji Akli Akorakor Aksel Aksil Akutla Akzer Al_a_addin al-Athir Ali Alyamas Amawal + Amayas Amaz_uz_ Ambay Amdegh Amellal Amennay Ameska Amessan Amin Amma Ammuc Amray Amri Amud Anaba Annaber Antalas Anwa Aras + Asad Asaru Asirem Aszellay Atissi Awdia Awgustin Awinagh Awlagh Awzal Aylal Ayt_ere Az_ar Az_regh Azenkwed Azim Azrur Badda Badis + Bagay Barakat Batin Beddis Berkan Bezz_i Br_ir_uc Bukkus Buwayh Buxtuc Capussa Cucung Dali Fahd Fath Fella Firhun Firmus Frawsen Gaia Galussa Gauda + Gaya Ghani Ghanim Ghaysan Ghumer Gildun Gulusa H_emmu Haidar Hamad Hashim Hiba Hiempsal Himmi Hotha Hussamaddin Ibiza Ibrahim Iccaam + Ifni Ifser Ighlaf Igider Igmi Iher Iken Ilyas Immeghar Immel Irgen Is_mail Isalcas Ishaq Isli Issam It_ij Itber Itri Ixfensen Ixzi Izri Jaffar Jamal Jibril Kadidu + Kamal Karidenna Kawsen Kenan Keraja Khalid Khanchla Khenchela Khidr Kussil Lacumaces Laweye Lewnis Luki Madidu Magsen Mahtar Malik + Marwan Masgaba Masgava Masinissa Masmud Masnsen Massinissa Massiva Massnsen Mastan Mastanabal Matiya Maysar Maziba Mazigh + Medjan Mellal Mennad Menzu Meq_wran Mez_yan Mezwar Micipsa Misagenes Misibsen Mu_izz Muh_end Muhammad Mukhtar Mula Murad Musa Mustafa + Muzaffaraddin N_Guna Nasr Nazar Nizar Niptasan Nizamaddin Ptolemee Qutaiba Rashid Sa_id Salah Salla Salomon Sammer + Sayyid Seghada Sekla Shamsaddin Sifaks Sifal Sinbad Sisso Stembanos Suggut Sultan T_ar_iq Tabat Tacfin Taffounnout Tahir Takfarinas Talakakin Tanan Tariq + Tegama Thabitah Thakiya Tifan Tifawt Tiljad Ugdada Ugwistan Umar Uqess_un Uregh Urtilian Urz_ig Uzmir Uzza Wahab Watt_as Wattas Xamida Yabdas Yaghmurasen + Yahya Yattuy Yeften Yeh_lem Yiliyen Yuba Yugerten Yugurthen Youkhanna Yunes Yusuf Yuva Z_effun Zafir Zalelsan Zayar Zer_wal Zigza Ziri Zubeyr + } + female_names = { + Aaliyah Aamina Aamira Aaqila Aarifa Aazzi Adelah Adiba Adilah Adilia Adiva Adjan Aeesha Aesha Aisha Amira Badeea Badia Badra Bahac + Bahiyya Bajila Bakka Baraah Barakah Baria Bashira Basilie Basima Basimah Bghnat Bibya Bilqis Cala Canh_a Cantara D_r_ifa Daisha Dalal Dasin + Dema Dimah Dinara Dua Durra Durriyya Edza Eleonorka Faghissa Fahriya Fariza Fedada Fer_r_udja Gedduda Ghida Ghnima Guraya Gwejda H_edda + Hadiya Hawwa Hemu Herru Iija Iiju IttU_ Izza Jaida Jdira Jeddjiga Kahina Kamila Kanimana Kella Kenwa Kisa Kulla Kwella Lalla Laysa Lem_an Lemta + Lumsi Lunja Lwiza Lyaqut Mamma Massa Meghighda Melek Menna Menza Mernissa Monica Myassa Najiba R_uza Ra_isa Rahima Randja Rula Sadiqa + Salaama Sekkura Siddiqa Silya Siman T_awes T_item Tadefi Tadla Tadmut Tafrara Tafsut Tagwillult Taheyyatt Takama Taklit Talalit Taljat Tament + Tamimunt Tamrust Tanaszart Tanebdatt Tanefzawit Tanest Taninna Tarifa Tariwelt Tasa Tasa_fut Taszellayt Tatbirt Tati Taweckint Tawenza Tawnat + Tawzalt Tayri Tayyurt Tazdayt Tazenkwedt Tazirit Tazrurt Tella Temzi Tfit Tigmi Tikinas Tilelli Timmi Tinhinan Tintadefi Tintifawin Tinzert Tisent + Tislit Titbirt Titrit Tizemt Tiziri Triya Tudert Tuh_r_ict Tureght Ultafa Wenza Wnissa Wrina Z_diant Z_ergha Zaghwa Zahida Zamba Zibba Zilgum Zubayda + Zunagha Zwina Zwira + } + + dynasty_of_location_prefix = "dynnp_mn" + + patronym_prefix_male = "dynnpat_pre_ibn" + patronym_prefix_female = "dynnpat_pre_bint" + + founder_named_dynasties = yes + house_based_map_names = yes + + pat_grf_name_chance = 60 + mat_grf_name_chance = 20 + father_name_chance = 10 + + pat_grm_name_chance = 40 + mat_grm_name_chance = 20 + mother_name_chance = 30 + + + + mercenary_names = { + { name = "mercenary_company_army_of_the_crossing" } + { name = "mercenary_company_butr_place_band" } + { name = "mercenary_company_riders_of_the_mountains" } + } +} + +name_list_baranis = { + + cadet_dynasty_names = { + # Currently shared with Maghrebi Arabic + "dynn_Hammadid" + "dynn_Taishufin" + "dynn_Hafsid" + "dynn_Zayanid" + "dynn_Aznagid" + "dynn_Wanurid" + "dynn_Alivid" + "dynn_Madinid" + "dynn_Muttawakilid" + "dynn_Mansurid" + "dynn_Yazid" + "dynn_Tremecen" + "dynn_Ishaqid" + "dynn_Yahyavid" + "dynn_Bilalid" + "dynn_Utmanid" + "dynn_Tittawin" + "dynn_Sebtaid" + "dynn_Tariqid" + "dynn_Muhajir" + "dynn_Ladenid" + "dynn_Hannachid" + "dynn_Sabrid" + "dynn_Safavid" + "dynn_Sajjadid" + "dynn_Saidid" + "dynn_Sedkid" + "dynn_Shakeelid" + "dynn_Sharifid" + "dynn_Shehzadid" + "dynn_Sidqid" + "dynn_Tahirid" + "dynn_Talalid" + "dynn_Medjerdid" + "dynn_Tasneemid" + "dynn_Tayebid" + "dynn_Umarid" + "dynn_Waheedid" + "dynn_Wahidid" + "dynn_Waleedid" + "dynn_Wazirid" + "dynn_Younisid" + "dynn_Zafarid" + "dynn_Zahirid" + "dynn_Zakariyid" + "dynn_Zakidid" + "dynn_Zaydid" + "dynn_Abdoid" + "dynn_Abidin" + "dynn_Adilid" + "dynn_Balochid" + "dynn_Bakkalid" + "dynn_Mahmoudid" + "dynn_Nadeerid" + "dynn_Nadvid" + "dynn_Najidid" + "dynn_Naqvid" + "dynn_Namjoid" + "dynn_Anwarid" + "dynn_Fawzid" + "dynn_Nawfalid" + "dynn_Abbasid" + "dynn_Bari" + "dynn_Isavid" + "dynn_Fatamid" + "dynn_Ayyubid" + "dynn_Khazrunid" + "dynn_Marinid" + "dynn_Almohad" + "dynn_Ghaniya" + "dynn_Jalayar" + "dynn_Tudjinid" + "dynn_Seddoukid" + "dynn_Raghraghwid" + "dynn_Temimid" + "dynn_Azfavid" + "dynn_Hamdanid" + "dynn_Thabitid" + { "dynnp_al-" "dynn_Idrisi" } + "dynn_Khaldun" + "dynn_Battuta" + "dynn_Kamalid" + } + + dynasty_names = { + # Currently shared with Maghrebi Arabic + "dynn_Hammadid" + "dynn_Taishufin" + "dynn_Hafsid" + "dynn_Zayanid" + "dynn_Aznagid" + "dynn_Wanurid" + "dynn_Alivid" + "dynn_Madinid" + "dynn_Muttawakilid" + "dynn_Mansurid" + "dynn_Yazid" + "dynn_Tremecen" + "dynn_Ishaqid" + "dynn_Yahyavid" + "dynn_Bilalid" + "dynn_Utmanid" + "dynn_Tittawin" + "dynn_Sebtaid" + "dynn_Tariqid" + "dynn_Muhajir" + "dynn_Ladenid" + "dynn_Hannachid" + "dynn_Sabrid" + "dynn_Safavid" + "dynn_Sajjadid" + "dynn_Saidid" + "dynn_Sedkid" + "dynn_Shakeelid" + "dynn_Sharifid" + "dynn_Shehzadid" + "dynn_Sidqid" + "dynn_Tahirid" + "dynn_Talalid" + "dynn_Medjerdid" + "dynn_Tasneemid" + "dynn_Tayebid" + "dynn_Umarid" + "dynn_Waheedid" + "dynn_Wahidid" + "dynn_Waleedid" + "dynn_Wazirid" + "dynn_Younisid" + "dynn_Zafarid" + "dynn_Zahirid" + "dynn_Zakariyid" + "dynn_Zakidid" + "dynn_Zaydid" + "dynn_Abdoid" + "dynn_Abidin" + "dynn_Adilid" + "dynn_Balochid" + "dynn_Bakkalid" + "dynn_Mahmoudid" + "dynn_Nadeerid" + "dynn_Nadvid" + "dynn_Najidid" + "dynn_Naqvid" + "dynn_Namjoid" + "dynn_Anwarid" + "dynn_Fawzid" + "dynn_Nawfalid" + "dynn_Abbasid" + "dynn_Bari" + "dynn_Isavid" + "dynn_Fatamid" + "dynn_Ayyubid" + "dynn_Khazrunid" + "dynn_Marinid" + "dynn_Almohad" + "dynn_Ghaniya" + "dynn_Jalayar" + "dynn_Tudjinid" + "dynn_Seddoukid" + "dynn_Raghraghwid" + "dynn_Temimid" + "dynn_Azfavid" + "dynn_Hamdanid" + "dynn_Thabitid" + { "dynnp_al-" "dynn_Idrisi" } + "dynn_Khaldun" + "dynn_Battuta" + "dynn_Kamalid" + } + + male_names = { + Abakada Abazza Abbas Abdul-Azeem Abdul-Haleem Abdul-Kareem Abdul-Rahman Abdullah Abidin Adal Adam Aderbal Adergazuz + Adherbal Admer Adrir Adum Afaghis Afalawas Afalku Afer Afulay Agafay Agama Agdada Agdun Agellid Aggur Aghali Aghecher Aghilas Agwillul + Ahamatu Aheyyad Ahmad Ajdir Ajeddig Akaday Akateiaji Akli Akorakor Aksel Aksil Akutla Akzer Al_a_addin Ali Alyamas Amawal + Amayas Amaz_uz_ Ambay Amdegh Amellal Amennay Ameska Amessan Amin Amma Ammuc Amray Amri Amud Anaba Annaber Antalas Anwa Aras + Asad Asaru Asirem Aszellay Atissi Awdia Awgustin Awinagh Awlagh Awzal Aylal Ayt_ere Az_ar Az_regh Azenkwed Azim Azrur Badda Badis + Bagay Barakat Beddis Berkan Bezz_i Br_ir_uc Bukkus Buwayh Buxtuc Capussa Cucung Dali Fahd Fath Fella Firhun Firmus Frawsen Gaia Galussa Gauda + Gaya Ghani Ghanim Ghaysan Ghumer Gildun Gulusa H_emmu Haidar Hamad Hashim Hiba Hiempsal Himmi Hotha Hussamaddin Ibiza Ibrahim Iccaam + Ifni Ifser Ighlaf Igider Igmi Iher Iken Ilyas Immeghar Immel Irgen Is_mail Isalcas Ishaq Isli Issam It_ij Itber Itri Ixfensen Ixzi Izri Jaffar Jamal Kadidu + Kamal Karidenna Kawsen Kenan Keraja Khalid Khanchla Khenchela Khidr Kussil Lacumaces Laweye Lewnis Luki Madidu Magsen Mahtar Malik + Marwan Masgaba Masgava Masinissa Masmud Masnsen Massinissa Massiva Massnsen Mastan Mastanabal Matiya Maysar Maziba Mazigh + Medjan Mellal Mennad Menzu Meq_wran Mez_yan Mezwar Micipsa Misagenes Misibsen Mu_izz Muh_end Muhammad Mukhtar Mula Murad Musa Mustafa + Muzaffaraddin N_Guna Nasr Nazar Niptasan Nizamaddin Ptolemee Qutaiba Rashid Sa_id Salah Salla Salomon Sammer + Sayyid Seghada Sekla Shamsaddin Sifaks Sifal Sinbad Sisso Stembanos Suggut Sultan T_ar_iq Tabat Tacfin Taffounnout Tahir Takfarinas Tanan Tariq + Tegama Thabitah Tifan Tiljad Ugdada Ugwistan Umar Uqess_un Uregh Urtilian Urz_ig Uzmir Uzza Wahab Watt_as Xamida Yabdas Yaghmurasen + Yahya Yattuy Yeften Yeh_lem Yiliyen Yuba Yugerten Yugurthen Youkhanna Yunes Yusuf Yuva Z_effun Zafir Zalelsan Zayar Zer_wal Zigza Ziri Zubeyr + } + female_names = { + Aaliyah Aamina Aamira Aaqila Aarifa Aazzi Adelah Adiba Adilah Adilia Adiva Adjan Aeesha Aesha Aisha Amira Badeea Badia Badra Bahac + Bahiyya Bajila Bakka Baraah Barakah Baria Bashira Basilie Basima Basimah Bghnat Bibya Bilqis Cala Canh_a Cantara D_r_ifa Daisha Dalal Dasin + Dema Dimah Dinara Dua Durra Durriyya Edza Eleonorka Faghissa Fahriya Fariza Fedada Fer_r_udja Gedduda Ghida Ghnima Guraya Gwejda H_edda + Hadiya Hawwa Hemu Herru Iija Iiju IttU_ Izza Jaida Jdira Jeddjiga Kahina Kamila Kanimana Kella Kenwa Kisa Kulla Kwella Lalla Laysa Lem_an Lemta + Lumsi Lunja Lwiza Lyaqut Mamma Massa Meghighda Melek Menna Menza Mernissa Monica Myassa Najiba R_uza Ra_isa Rahima Randja Rula Sadiqa + Salaama Sekkura Siddiqa Silya Siman T_awes T_item Tadefi Tadla Tadmut Tafrara Tafsut Tagwillult Taheyyatt Takama Taklit Talalit Taljat Tament + Tamimunt Tamrust Tanaszart Tanebdatt Tanefzawit Tanest Taninna Tarifa Tariwelt Tasa Tasa_fut Taszellayt Tatbirt Tati Taweckint Tawenza Tawnat + Tawzalt Tayri Tayyurt Tazdayt Tazenkwedt Tazirit Tazrurt Tella Temzi Tfit Tigmi Tikinas Tilelli Timmi Tinhinan Tintadefi Tintifawin Tinzert Tisent + Tislit Titbirt Titrit Tizemt Tiziri Triya Tudert Tuh_r_ict Tureght Ultafa Wenza Wnissa Wrina Z_diant Z_ergha Zaghwa Zahida Zamba Zibba Zilgum Zubayda + Zunagha Zwina Zwira + } + + dynasty_of_location_prefix = "dynnp_mn" + + patronym_prefix_male = "dynnpat_pre_ibn" + patronym_prefix_female = "dynnpat_pre_bint" + + founder_named_dynasties = yes + house_based_map_names = yes + + pat_grf_name_chance = 60 + mat_grf_name_chance = 20 + father_name_chance = 10 + + pat_grm_name_chance = 40 + mat_grm_name_chance = 20 + mother_name_chance = 30 + + + + mercenary_names = { + { name = "mercenary_company_the_followers_from_place" } + { name = "mercenary_company_baranis_company_of_place" } + } +} + +name_list_zaghawa = { + + cadet_dynasty_names = { + "dynn_Zakhawa" + "dynn_Tomaghra" + "dynn_Tubu" + "dynn_Beri" + "dynn_Kegi" + "dynn_Bideyat" + "dynn_Toubou" + } + + dynasty_names = { + "dynn_Zakhawa" + "dynn_Tomaghra" + "dynn_Tubu" + "dynn_Beri" + "dynn_Kegi" + "dynn_Bideyat" + "dynn_Toubou" + } + + male_names = { + Abakar Abba Abbas Abdulraham Adam Ahmed Ali At-Tayeb + Brahim Daoud Deli Dolo Gilding Goukouni + Hishi Ibrahim Idris Ingir Issa Kasu Kosu Ku Kuti + Mahmoud Minni Mohammed Musa Oki Okiramaj Omer Osman + Shartay Siddick Sora Suleyman Tijani Timan Toholjo Tor Torfu Tugule + Udure Yahya Yaqub Yusuf + } + female_names = { + Aisha Aliyah Bado Bakhita Bi Eya Fatima Gir Hadurah Halima Hinda + Ija Kadiga Khalila Layla Makka Malika Mariam Mounah Ning Ogai + Rashida Shadia Shakira Sumah Sumiah Tele Ter Wahida Yasmin + } + + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_guanches = { + + cadet_dynasty_names = { + "dynn_Bentinerfe" + "dynn_Botsonuhya" + "dynn_Imobach" + "dynn_Benytomo" + "dynn_Tinguaro" + "dynn_Himenchia" + "dynn_Ventor" + "dynn_Acaimo" + "dynn_Anaterve" + "dynn_Dadamo" + "dynn_Aguassona" + "dynn_Pelinor" + "dynn_Rumen" + "dynn_Benecaro" + "dynn_Serdeto" + "dynn_Caconaimo" + "dynn_Teguesta" + "dynn_Guahuco" + "dynn_Zebensui" + } + + dynasty_names = { + "dynn_Bentinerfe" + "dynn_Botsonuhya" + "dynn_Imobach" + "dynn_Benytomo" + "dynn_Tinguaro" + "dynn_Himenchia" + "dynn_Ventor" + "dynn_Acaimo" + "dynn_Anaterve" + "dynn_Dadamo" + "dynn_Aguassona" + "dynn_Pelinor" + "dynn_Rumen" + "dynn_Benecaro" + "dynn_Serdeto" + "dynn_Caconaimo" + "dynn_Teguesta" + "dynn_Guahuco" + "dynn_Zebensui" + } + + male_names = { + Abentahar Adiam Alcoidar Acosayda Achurteyga Adeun Aja Algzcin Ancor Atubkewn Atacaicate + Bentagai Bentago Bentahor Bentejui Caitafa Doramas Egenenaca Egonaiga Gaifa Gamonales Ganana Gararasa + Gitama Gomidafe Guanarteme Hama Heupelio Himar Isaco Malagua Naira Nauzet Orchena Rinima Sambor Semidan + Soront Tagooreate Tagotin Tajaste Tamadaba Tanfia Tara Tazarte Tiferan + Tijandarte Acaymo Acerina Adargoma Afche Afur Agoney Airam Alguim Anaterve Augeron Ayoze + Belicar Belmaco Bencomo Beneharo Bentagay Bentor Chavender Chimboyo Chincanayro + Echedey Egonayga Eiunche Gaumet Geronte Guanareme Guayasen + + } + female_names = { + Absnchara Aquejata Arimgua Arminda Andamana Aremoga Amoca Dara Faya Guayarmina Masaquera Meteimba Nascique + Tazirga Tonaguana Tenesoya Vidina Mifaya Tibiabin Tamonante Iballa Hama Heupelio Himar Orchena Rinima Sambor Semidan + Soront Tagooreate Tagotin Tajaste Tamadaba Tara Atidamana Cathaysa Dacil Fayna Gara Guacimara Guajara + Naira Idaira Haridian Yurena Adassa Atteneri Nisa Isora Ithaisa Attenya Arai Chaxiraxi Moneiba Sibisse Gazmira Aniagua Tahona Cainana + Grimanesa Delioma Famara Guayafanta Aregoma Acerina Arecida Abenaura Teguise Iriome Daida Ramagua Xerach Ico + } +} diff --git a/common/culture/name_lists/00_brythonic.txt b/common/culture/name_lists/00_brythonic.txt new file mode 100644 index 00000000..b0ec43fa --- /dev/null +++ b/common/culture/name_lists/00_brythonic.txt @@ -0,0 +1,692 @@ +name_list_pictish = { + + cadet_dynasty_names = { + "dynn_Todd" + "dynn_Mac_Uerb" + "dynn_Hen" + "dynn_Bili" + "dynn_Circinn" + "dynn_Ce" + "dynn_Fotla" + "dynn_Fib" + "dynn_Fidach" + "dynn_Miathi" + "dynn_Des" + "dynn_Fergusa" + "dynn_Dun_Nechtain" + "dynn_Mac_Beli" + "dynn_Mac_Boanta" + "dynn_Mac_Oengusa" + "dynn_Cait" + "dynn_Fortriu" + } + + dynasty_names = { + "dynn_Todd" + "dynn_Mac_Uerb" + "dynn_Hen" + "dynn_Bili" + "dynn_Circinn" + "dynn_Ce" + "dynn_Fotla" + "dynn_Fib" + "dynn_Fidach" + "dynn_Miathi" + "dynn_Des" + "dynn_Fergusa" + "dynn_Dun_Nechtain" + "dynn_Mac_Beli" + "dynn_Mac_Boanta" + "dynn_Mac_Oengusa" + "dynn_Cait" + "dynn_Fortriu" + } + + male_names = { + Achiuir Aethon Aenbecan Allan Allcallorred Allisander Aniel Ardle Auust Bili Bran Breth Bridei Briog Broichan + Brude Caltram Canu Canuall Canan Caradaig Caruorst Castant Castantin Ciniod Crup Dabuut Deocillimon Deoord + Domelch Drest Drosten Eddarrnonn Elpin Enuidaig Erpin Galam Ganant Garalt Gede Gest Gigurum Girom Idual + Iduallon Iestan Iuan Irb Lutrin Mael Maelchon Manath Mordeleg Morleo Murtolic Naiton Ninian Pedric Pedur + Paul Pidarnoin Ru Ruatirch Rubert Rudri Telurg Telurgan Taran Tarla Uipoig Uist Uuochu + Uoret Unen Unuist Urguist Usuullt Uthoil Uudrost Uuen Uuid Uuirp Uuredach Uuroid + } + female_names = { + Addiena Abrella Allust Arnemetia Brethoc Bride Bronuen Caitrion Cristin Durilia Elaine + Elen Eua Madru Maelmurie Mairi Margrud Maud Mor Morag Morien Muriel Neulina Sara + Siunod Uen Uluen Uuena Uunis Uusbail + } + + patronym_prefix_male = "dynnpat_pre_uab" + patronym_prefix_female = "dynnpat_pre_ach" + always_use_patronym = yes + + pat_grf_name_chance = 30 + mat_grf_name_chance = 15 + father_name_chance = 5 + + pat_grm_name_chance = 30 + mat_grm_name_chance = 15 + mother_name_chance = 10 + + + + mercenary_names = { + { name = "mercenary_company_woad_raiders" coat_of_arms = "mc_woad_raiders" } + } +} + +name_list_welsh = { + + cadet_dynasty_names = { + "dynn_Cynfyn" + "dynn_Caereinion" + "dynn_Glastenning" + "dynn_Lleyn" + "dynn_Mostyn" + "dynn_Rhufoniog" + "dynn_Maelor" + "dynn_Penllyn" + "dynn_Tewdwr" + "dynn_Meilyr" + "dynn_Mochnant" + "dynn_Buellt" + "dynn_Llewellyn" + "dynn_Mechain" + "dynn_Cedewain" + "dynn_Penweddig" + "dynn_IA_l" + "dynn_Amwythig" + "dynn_Caerloyw" + "dynn_Emlyn" + "dynn_Ystrad_Tywi" + "dynn_Rhuddlan" + "dynn_Llwydiarth" + "dynn_Aberavon" + "dynn_Dunoding" + "dynn_Pebidiog" + "dynn_Deugleddyf" + "dynn_Deheuwynt" + "dynn_Eginog" + "dynn_Gorfynydd" + "dynn_Gwyr" + "dynn_Senghenydd" + "dynn_Crwthor" + "dynn_Arfon" + "dynn_Gwynn" + "dynn_Cadfeal" + "dynn_Cannevet" + "dynn_Llyn" + "dynn_Gwarthaf" + "dynn_Aeron" + "dynn_Emlyn" + "dynn_Cedweli" + "dynn_Gwrinydd" + "dynn_Talgarth" + "dynn_Pengwern" + "dynn_Penrhys" + "dynn_Lloyd" + "dynn_Llifon" + "dynn_Abermenai" + "dynn_Penfro" + "dynn_Gilmyn" + "dynn_Conwy" + "dynn_Clwyd" + "dynn_Tal-y-bont" + "dynn_Isaled" + "dynn_Talhaiarn" + "dynn_Brynffenigl" + "dynn_Llechwedd" + "dynn_Cefeliog" + "dynn_Carmarthen" + "dynn_Caenogion" + "dynn_Maelienydd" + "dynn_Elfael" + "dynn_Mynydd" + "dynn_Bangor" + "dynn_Mynyw" + "dynn_Llandaff" + "dynn_Arllechwedd" + "dynn_Tegaingl" + "dynn_Anwyl" + "dynn_Cyfeiliog" + "dynn_Fane" + { "dynnp_of" "dynn_Bristol" } + "dynn_Ynys_Cybi" + "dynn_Gruffydd" + "dynn_Tegaingl" + "dynn_Coel" + "dynn_Glywysing" + "dynn_Llywelin" + "dynn_Cynllibiwg" + "dynn_Evans" + "dynn_Maelienydd" + { "dynnp_de" "dynn_la_Pole" } + "dynn_Rhosyr" + "dynn_Cemais" + "dynn_Meirionydd" + "dynn_Ynys_Enlli" + "dynn_Aberdaron" + "dynn_PenmO_n" + "dynn_Ystrad_Clud" + "dynn_Buellt" + "dynn_Llwydiarth" + "dynn_Caerloyw" + "dynn_Brogyntyn" + } + + dynasty_names = { + "dynn_Cynfyn" + "dynn_Caereinion" + "dynn_Glastenning" + "dynn_Lleyn" + "dynn_Mostyn" + "dynn_Rhufoniog" + "dynn_Maelor" + "dynn_Penllyn" + "dynn_Tewdwr" + "dynn_Meilyr" + "dynn_Mochnant" + "dynn_Buellt" + "dynn_Llewellyn" + "dynn_Mechain" + "dynn_Cedewain" + "dynn_Penweddig" + "dynn_IA_l" + "dynn_Amwythig" + "dynn_Caerloyw" + "dynn_Emlyn" + "dynn_Ystrad_Tywi" + "dynn_Rhuddlan" + "dynn_Llwydiarth" + "dynn_Aberavon" + "dynn_Dunoding" + "dynn_Pebidiog" + "dynn_Deugleddyf" + "dynn_Deheuwynt" + "dynn_Eginog" + "dynn_Gorfynydd" + "dynn_Gwyr" + "dynn_Senghenydd" + "dynn_Crwthor" + "dynn_Arfon" + "dynn_Gwynn" + "dynn_Cadfeal" + "dynn_Cannevet" + "dynn_Llyn" + "dynn_Gwarthaf" + "dynn_Aeron" + "dynn_Emlyn" + "dynn_Cedweli" + "dynn_Gwrinydd" + "dynn_Talgarth" + "dynn_Pengwern" + "dynn_Penrhys" + "dynn_Lloyd" + "dynn_Llifon" + "dynn_Abermenai" + "dynn_Penfro" + "dynn_Gilmyn" + "dynn_Conwy" + "dynn_Clwyd" + "dynn_Tal-y-bont" + "dynn_Isaled" + "dynn_Talhaiarn" + "dynn_Brynffenigl" + "dynn_Llechwedd" + "dynn_Cefeliog" + "dynn_Carmarthen" + "dynn_Caenogion" + "dynn_Maelienydd" + "dynn_Elfael" + "dynn_Mynydd" + "dynn_Bangor" + "dynn_Mynyw" + "dynn_Llandaff" + "dynn_Arllechwedd" + "dynn_Tegaingl" + "dynn_Anwyl" + "dynn_Cyfeiliog" + "dynn_Fane" + { "dynnp_of" "dynn_Bristol" } + "dynn_Ynys_Cybi" + "dynn_Gruffydd" + "dynn_Tegaingl" + "dynn_Coel" + "dynn_Glywysing" + "dynn_Llywelin" + "dynn_Cynllibiwg" + "dynn_Evans" + "dynn_Maelienydd" + { "dynnp_de" "dynn_la_Pole" } + "dynn_Rhosyr" + "dynn_Cemais" + "dynn_Meirionydd" + "dynn_Ynys_Enlli" + "dynn_Aberdaron" + "dynn_PenmO_n" + "dynn_Ystrad_Clud" + "dynn_Buellt" + "dynn_Llwydiarth" + "dynn_Caerloyw" + "dynn_Brogyntyn" + } + + male_names = { + Adda Adgar Adran Aeddan Alan Aldwr Algwyn Alisander Alured Alwyn Anarawd + Andreas Aneurin Anlaff Anllech Annwn Argad Arod Arthen Arthfael Arthfoddw Arthwr + Arthws Arthwys Asa Asaph Awst Bangar Bedwyr Beli Berthgwyn Berthwallt Bleddyn Bledrig + Bleiddud Branwaladr Bride Briog Brochfael Brwt Brwyn Brychan BrA_n Cadell Cadeyrn + Cadfael Cadfan Cadog Cadw Cadwal Cadwaladr Cadwallon Cadwared Cadwgan Cadwr Cai Caid Cain + Caradog Casnar Caswallon Cawdaf Cedig Cedwyn Ceneu Ceredig Clydog Coel Corentin Cuhelyn + Custennin Cwlfyn Cwrig Cydifor Cydrych Cynan Cynddelw Cyndyddan Cynddylan Cyndeyrn + Cynfael Cynfarch Cynfawr Cynfeddw Cynfelyn Cynfran Cynfyn Cyngar Cyngen Cynwallon Cynwared + Cynwrig Cynwyd Cynyr Cysteint Dafydd Deheuwant Deiniol Dewi Dogfael Drystan Dumnagual Dwyfan + Dyfnarth Dyfnwal Dyfnwallon Dynod Dywel Edern Ednyfed Ednywain Edryd Edwyn + Edylfred Einion Elfin Elidyr Elis Elisedd Elud Elystan Emrys Enfidaig Erb Erclwf + Eudaf Ewyas Ffernfael Ffilip Ffriog Ffwdwr Fragan Ffransis Fychan Fyrsil Gamon Garmon + Geraint Gerallt Glwyddien Glywys Godwyn Goronwy Gronw Gruffydd Grygor Guret Gwalchmai + Gwen Gwenwynwyn Gwerstan Gwerthefyr Gwerthern Gwydol Gwydolin Gwyn Gwidyr Gwilym + Gwrfawr Gwrfoddw Gwrgant Gwrgeneu Gwrgi Gwriad Harri Herewallt Huw Hywel + Iago Ivor Idnerth Idwal Idwallon Iestyn Ieuan Ifor Io Ioan Iolo Iorwerth Ithel + Lles Llew Llyr Llywarch Llywelyn Macsen Madog Mael Maelcwn Maelgwn Maenyrch March + Maredudd Math Mawgan Meilyr Meirchion Meiriadog Meirion Merfyn Meurig + Mihangel Morfarch Morgan Morien Morydd Mwyn Myrddin Naufedd Neithon Nowy Nynniaw Oswallt + Owain Oucydd Padern Padrig Pandoff Pasgen Padarn Pawl Pedr Peredyr Publig Pyr + Rheinallt Rhicert Rhigeneu Rhirid Rhiwal Rhiwallon Rhobert Rhodri Rhufon + Rhun Rhydderch Rhydog Rhys Riaged Richwin Sandde Sawyl Seferus Seisyll Selyf + Senyllt Serigi Sieffre Sion Sior Siwauna Steffen Stinian Sulien Taliesin Tegonwy + Tegwyd Teilo Teithfalch Teudebur Tewdos Tewdrig Tewdwr Tomos Trahaearn Tudur Tudwal + Tudwallon Tydy Tyfoedd Tysilio Urien Uthyr Ynyr Ysfael + } + female_names = { + Addiena Aelwyd Aeronwen Aeronwy Afrella Alys Angharad Annes Annest Annwyl Anowed Arddyn Arianrhod + Blodwen Bronwen Catrin Ceindrych Ceridwen Cerie Cerys Cicely Clarisant Creirwy Cristin Danhadlwen + Delyth Denis Dwynwen Dwywai Dyddgu Efa Effros Efrddyl Efyrddyl Eiliwedd Elaine Elen Eleri + Elinion Elinor Ellyn Enid Essyllt Euronwy Ffelis Ffion Fflur Ffraid Glynys Gwen Gwenasedd Gwenfrewi Gwenhwyfach + Gwenhwyfar Gwenllian Gwenwyn Gwerfyl Gwladys Haer Hawys Heledd Hellawes Heulwen Hunydd Hywela Ilud Isabel + Llear Llecci Lleigy Lleuca Lowry Mabyn Maches Madrun Maelrys Mair Mali Mallt Marared Marchell Margred + Marwenna Mawd Melisant Morganna Morien Myfanwy Nest Nesta Newlyna Non + Olwen Onbrawst Owena Prawst Ragnell Rhiaindrech Rhiainfelt Rhiannon Rhonwen Sannant Sara + Senena Sibyl Sioned Siwan SiA_n Susanna Tangwystl Tegla Ysbail Ystradwel + } + + dynasty_of_location_prefix = "" + + + patronym_prefix_male = "dynnpat_pre_ap" + patronym_prefix_male_vowel = "dynnpat_pre_vow_ab" + patronym_prefix_female = "dynnpat_pre_ferch" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 80 + mat_grf_name_chance = 0 + father_name_chance = 0 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 0 + + + + mercenary_names = { + { name = "mercenary_company_lawgochs_followers" } + { name = "mercenary_company_band_of_horned_welshmen" } + } +} + +name_list_breton = { + + cadet_dynasty_names = { + { "dynnp_de" "dynn_Dinan" } + { "dynnp_de" "dynn_VitrE_" } + { "dynnp_de" "dynn_Cornouaille" } + { "dynnp_de" "dynn_Rohan" } + { "dynnp_de" "dynn_PorhoE_t" } + { "dynnp_of" "dynn_Brittany" } + "dynn_Tranvouez" + { "dynnp_de" "dynn_ChA_teaubriant" } + { "dynnp_de" "dynn_Nantes" } + "dynn_Leon" + "dynn_Guennec" + "dynn_Pensec" + "dynn_Scoarnec" + "dynn_Riowall" + { "dynnp_de" "dynn_Vannes" } + { "dynnp_de" "dynn_Bretagne" } + "dynn_Kerouac" + "dynn_Paignon" + "dynn_Sant_Nazar" + "dynn_Tanguy" + "dynn_Parisy" + "dynn_Henbont" + { "dynnp_de" "dynn_Herve" } + "dynn_Sant_Brieuc" + "dynn_Sant_Mikael" + "dynn_Leon" + { "dynnp_de" "dynn_Leon" } + "dynn_Gwened" + { "dynnp_de" "dynn_Rennes" } + "dynn_Leon" + } + + dynasty_names = { + { "dynnp_de" "dynn_Dinan" } + { "dynnp_de" "dynn_VitrE_" } + { "dynnp_de" "dynn_Cornouaille" } + { "dynnp_de" "dynn_Rohan" } + { "dynnp_de" "dynn_PorhoE_t" } + { "dynnp_of" "dynn_Brittany" } + "dynn_Tranvouez" + { "dynnp_de" "dynn_ChA_teaubriant" } + { "dynnp_de" "dynn_Nantes" } + "dynn_Leon" + "dynn_Guennec" + "dynn_Pensec" + "dynn_Scoarnec" + "dynn_Riowall" + { "dynnp_de" "dynn_Vannes" } + { "dynnp_de" "dynn_Bretagne" } + "dynn_Kerouac" + "dynn_Paignon" + "dynn_Sant_Nazar" + "dynn_Tanguy" + "dynn_Parisy" + "dynn_Henbont" + { "dynnp_de" "dynn_Herve" } + "dynn_Sant_Brieuc" + "dynn_Sant_Mikael" + "dynn_Leon" + { "dynnp_de" "dynn_Leon" } + "dynn_Gwened" + { "dynnp_de" "dynn_Rennes" } + "dynn_Leon" + } + + male_names = { + Adoyre Adrien Aedan Agustin Alan Alar Aldrien Alfrond Alor Alured Alwen Anaoc + Anaubritou Anaugen Anauguethen Anauguoret Anauhocar Andreas Aniud Anton Argantbri Argantmoet Arnalt Arthel + Arthguiu Arthmael Arthueu Arthuiu Arthur Austol Baldoen Bastian Beli Beltram + Benabic Berenger Bernead Berthgualt Bledric Bledros Bleidcum Bletcu Blethin Blethiut + Bodan Bran Brangualart Branhucar Branoc Brenci Brendan Breselconan Breselcoucant Breselgar Breseloc Breselueu Brethoc + Brient Brigualt Brioc Brithael Brochuael Bronmael Budguoret Budhoiarn Budic Budoc Buhedoc Butgual Cadan + Cadaouen Cadarvan Cadiou Cadoc Cador Cadou Cantgueithen Caradec Caradoc Carantoc Catgualart + Catuallon Catguethen Catguoret Catgutic Cathno Catnimed Catuod Caurantin Ceneu Cenguethen Cenmarhoc Cenmin + Cenmonoc Cingur Cinhoedl Clemen Clodouan ClotwoI_on Comoere Conan Concen Condeleu Condidan Congar + Conmael Conmonoc Conogan Conredeu Conuallon Conmarch Convelin ConwoI_on Corguethen Courantgern Courantmonoc + Culmin Custent Custentin Dauid Deniel Denis Deroch Derrien Deui Deurhoiarn Domnoret Domuel + Donual Donuallon Drogon Duenerth Dumnarth Edern Edouart Eguen Eon ErispoE_ Erouan + Estienne Etgual Eudon Euhocar Euhoiarn Eusebi Even Evrard Farinmael Ferant Fracan + Framual Fransaz Frioc Garmon Geofroi Geralt Gereint Gestin Gilbert Godefroi + Goennoc Gouesnon Goulwen Gouremor Gourmaelon Gralon Gratcant Gregor Grifiud Guallon Gualter Gudual Guecon Guenerdon + Guenhael Guentanet Guentiern Gui Guiharan Guihomarch Guihomart Guilherm Guincalon Guincum Guinhael Guinhoiarn Guinoc Guinol + Guithrit Guitol Guobrian Guocon Guoedanau Guoedatoe Guoednou Guoethoiarn Guoletec Guorbili Guordotal Guoretan Guorethoiarn Guorhoiarn + Gurbodu Gurcant Gurcencor Gurceneu Gurci Gurcon Gurdilic Gurgen Gurguaret Gurguist Gurguistl Gurheter + Guriant Gurlouen Gurmael Gurmaeloc Gurmhaelon Gurthcid Gurthiern Guruant Guerech Gueroc Guethenan Guethencar Guethencor + GuethenwoI_on Guethenhoiarn Guethenoc Haelcomarch Haelguethen Haelguoret Haelhoiarn Haeloc Haeloubri Haermael Hammelin + Hamon Harscoit Hedyn Heranal Herri Hesdren Hincomhal Hinguethen Hocar Hoconan Honfroi HoE_l Huiarnal Huiarnbili + Huiarnviu Hunfroi Iacob Iarcun Iarnbud Iarncant Iarncar Iarndetguid Iarnegon Iarnuallon Iarnuocon Iarnhitin + Iedechael Iehan Ilcarthon Ildut Iliud Inisian Iocilin Iodoc Ionas Iosep Iudcum Iuduallon Iudhael + Iudicael Iudnerth Iudnimet Iustoc Iudoc Iudual Iumael Iunceneu Iunuocon Iunmonoc Jord Leucum Loi + Lorens Louenan Loumarch LouI_s Maelcon MaeldoI_ Maelhuedoc Maeloc Maelscoet Maelscuet Maenceneu Maenci + March Marthin MatheudoI_ Mathias Matoc Matuid Maugan Mauric Medrod Meldroc Meriadoc + Mermin Meugan Meven Michel Morcant Morcondeleu Morgen Morguethen Morhaetho Mormarch Morvan + Mortiern Neven Nicolas Nodethael Nodhoiarn NominoE_ Nougui Oliuer Oswallt Padric Paol Pascueten + Patern Petroc Phelippe Piran Prigent Primael Primarhoc Putrael PE_r Ralf Raoul Renan Resmen Riacet + Ribald Ricart Riceneu Richwin Ridoredh Riualtr Rihouen Rinduran Rioc Riol Riwal Riuallon Rodric + Roenualloc Roenuallon Roenuolou Roenhoiarn Rolland Ronan Roparth Roucen Rumon Ryd Salenn Salomon Samson + Samuel Stefen Sulgen Sulhoiarn Sulmonoc Sultiern Talan Talhoiarn Tanci Tanet Tanhoiarn Telent Terithien Tethion Teudric + Teudur Tibault Tiernan Tiernmael Tiernoc Tiernualloc Tiernuallon Treveur Tristan Tuduallon Tudur Tugdual + Ungust Urbcen Urbien Urblon Urvod Uther Vincenne + } + female_names = { + Aanor Abrelda Adela AdelaI_da Adelindis Adeltrudis Aedoc Aeluit Agnes Alana Alis Anaguistl Anaudat Anaudrec + Anauhouguel Anauprost Andrea Anna Aourcen Aouregan Aourell Aouren Argantan Argantdrec Arganteila Arganteilin Argantguistl Arganthael Argantlon + Argantmoet Artaca Avandrec Avenie Beladora Berchet Berengaria Bernegarda Berta Berthildis Bertissa Bleutuen Brendana + Bronuen Buriana Canna Cateline Catguistl Cecilia Ceindrec Ceinguled Cleirui Condeleu Constansa + Cristen Dengel Deniela Denise Diuset Dreanau Drebiu Dreguoreth Drelouguen Drichglur Drilego Duihon Elara Eleanor Eleina + Elena Elesbed Elisaued Elwen Emma Endellion Ennoguent Enoguen Enora Eonnecte Erouana Ewsannec Fuandrec Gaela + Geberga Glades Gloiucen Gloiumed Guelet Guenbrith Guencen Guencenedl Guencor Guenguerthlon Guenguistl Guenguiu Guenmon Guenna Guenneret + Guennguar Gueruel GuigoE_don Guillemecte Gwenn Halbiu Hawis Herannuen Hodierne Igerna Ignoguen Ilcum Ildegarda + Iofa Iouenna Isabelle Iseult Iudhent Iudlouguen Iudprost Janed Judhael Languoret Leonore Leueer Leuhemel + Leuoc Louhelic Luncen Maben Magdalene Marguarite Mari Medguistl Meduil Melita Meonre Milian Mona Morganne + Morguetel Moruen Moruith Morvana Neulenna Nodguoret Nodiunet Nolwenne Nonne Oncenedl Oncum Onguen Ordguydel Ourcen Ourdilic Perenn + Proscen Prosguetel Prostlon Rannoeu Riguistl Rimoet Rioanon Rioanon Rioantcen Rioantdrec Rioantel Rioantguellt Roenhael Roinoc + Ronana Rozenn Rum Rumun Seva Stefania Steren Sulcar Sulcen Sulgubri Sulgwen Sulleisoc Sulmed Susanne Tandrec Tanetbiu Tanetlowen + Tanguistl Tedvil Tephaine Thomine Tibourge Trifine Tristana Uriell + } + + dynasty_of_location_prefix = "dynnp_de" + + patronym_prefix_male = "dynnpat_pre_mab" + patronym_prefix_female = "dynnpat_pre_verch" + always_use_patronym = yes + + + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 80 + mat_grf_name_chance = 0 + father_name_chance = 0 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 0 + + + + mercenary_names = { + { name = mercenary_company_company_of_bretons} + } +} + +name_list_cornish = { + + cadet_dynasty_names = { + "dynn_Arundell" + "dynn_Killigrew" + "dynn_Boscawen" + "dynn_Rashleigh" + "dynn_Vyvyan" + "dynn_Trelawne" + "dynn_Cadell" + "dynn_Dinefwr" + "dynn_Rhodri" + "dynn_Llywarch" + "dynn_Tewdwr" + "dynn_Gruffydd" + "dynn_Pebidiog" + "dynn_Cemaes" + "dynn_Emlyn" + "dynn_Is_Aeron" + "dynn_Uwch_Aeron" + "dynn_Penweddig" + "dynn_Mawr" + "dynn_Dychan" + "dynn_Cydweli" + "dynn_Gwyr" + "dynn_Gwyn" + "dynn_Bre" + "dynn_Pren" + "dynn_Avon" + "dynn_Den_Bal" + "dynn_Descajor" + } + + dynasty_names = { + "dynn_Arundell" + "dynn_Killigrew" + "dynn_Boscawen" + "dynn_Rashleigh" + "dynn_Vyvyan" + "dynn_Trelawne" + "dynn_Cadell" + "dynn_Dinefwr" + "dynn_Rhodri" + "dynn_Llywarch" + "dynn_Tewdwr" + "dynn_Gruffydd" + "dynn_Pebidiog" + "dynn_Cemaes" + "dynn_Emlyn" + "dynn_Is_Aeron" + "dynn_Uwch_Aeron" + "dynn_Penweddig" + "dynn_Mawr" + "dynn_Dychan" + "dynn_Cydweli" + "dynn_Gwyr" + "dynn_Gwyn" + "dynn_Bre" + "dynn_Pren" + "dynn_Avon" + "dynn_Den_Bal" + "dynn_Descajor" + } + + male_names = { + Adoyre Aedan Alanorus Alef Alured Anaoc Aniud Argantbri Argantmoet Austol Arthur Adwen Canuac Cynog Cleder Clether Dilic Illick + Endelient Beli Bledros Bleidcum Bleidiud Brenci Breoc Brethoc Brithael Budic Budoc Budog Cado Cadoc Cadog Cador Cadwy Cantgueithen + Carantoc Catgutic Cawrdolli Cenmin Cingur Cinhoedl Comoere Conan Condor Conmonoc Conomor Conredeu Corwn Cuby Culmin Cybi Deroch Dofagan Donault + Doniert Donyarth Dungarth Dyfnwal Elid Elidius Eluid Enoder Erbin Erc Erth Euny Felec Fferferdyn + Fracan Fragan Frioc Geraint Gest Gradlon Gratcant Grifiud Gudwal Guentanet Guentigirn Guincum Guithrit Gurbodu Gurcant Gurcencor Gurci Gurcon Gurdilic + Gurguaret Gurguistl Gurheter Guriant Gurlouen Gurthcid Gwinear Gwreans Gorlois Haeloc Hedyn Hernam Herygh Hincomhal Hopkin Huwal Iarnguallon Ilcarthon Iliud + Inisian Iona Ithel Iudicael Iudnerth Jacut Judicael Judoc Judwal Ke Kea Kenan Kenstec Kybi Leucum Lide Loi Louenan Loumarch Lud Maban Madron + Madrun Madryn Mancus March Marchell Margh Mawgan Meigant Materiana Matuid Medrod Meglar Melor + Menefreda Merryn Maruan Meriadoc Meriasek Mermin Mevor Milcenoc Minefrida Minver Modron Mor Morcant Mordaf + Modred Morhaetho Mybbard Mylor Mynfreda Nectan Neot Ossne Oswallt Peran Petroc Piran Putrael Pyran Resmen Ricatus + Rinduran Riol Riotham Riwal Rolope Ronan Ruman Ryd Salenn Salomon Salwys Samsun Selevan Silin Sulian Sulien Tamalanc Talan + Tegwin Telent Terithien Tethion Teudar Teudaric Tewdwr Tomas Thetgo Tudec Tudi Tudinus Tudy Tysilio Ungust + Uny Uther Veffyne Vortegyn Wenheden Wensent Winnoc Wyllow Ynyr + } + female_names = { + + Aedoc Anaguistl Anaudat Anauprost Arganteilin Artaca Breaca Breage Brevita Bryvyth Budoc Catguistl Ceingar Ceinguled Ceinwen Cenedion Cyfyw Dengel + Diuset Duihon Endelient Endellienta Endellion Enodoch Esyllt Etha Ewsannec Fuandrec Gloiucen Gloiumed Guelet Guenbrith Guencen + Guencenedl Guencor Guenguerthlon Guenguiu Guenmon Guenneret Halbiu Ia Ilcum Iofa Iseo Iseult Isode Isolde Isotta Isoude Itha + Iudhent Iudprost Izolda Keyne Louhelic Luncen Mabyn Maches Medguistl Meduil Meonre Milian Moruith Oncenedl Oncum Onguen Ordguydel Ourcen Ourdilic Perem Proscen + Prosguetel Rannoeu Rum Rumun Senara Sidwell Sulcen Sulleisoc Sulmed Tanguistl Tecla Tetha Veep Vepa Wenedoc Wenn Wenna + Yseult Zennor + } + + patronym_prefix_male = "dynnpat_pre_ab" + patronym_prefix_female = "dynnpat_pre_merch" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 80 + mat_grf_name_chance = 0 + father_name_chance = 0 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 0 + + + + mercenary_names = { + { name = mercenary_company_bodyguards_of_gwendolen } + } +} + +name_list_cumbrian = { + + cadet_dynasty_names = { + "dynn_Wledig" + { "dynnp_ap" "dynn_Edern" } + { "dynnp_ap" "dynn_Llaennog" } + { "dynnp_ap" "dynn_Gwallog" } + "dynn_Ogledd" + "dynn_Rhegen" + { "dynnp_ap" "dynn_Mallerslange" } + { "dynnp_ap" "dynn_Winander" } + { "dynnp_ap" "dynn_Ulles" } + { "dynnp_ap" "dynn_Wingfield" } + { "dynnp_ap" "dynn_Gillsland" } + "dynn_Guletic" + "dynn_Prydain" + "dynn_Bwr" + "dynn_Penuchel" + { "dynnp_ap" "dynn_Rheged" } + { "dynnp_ap" "dynn_Eden" } + } + + dynasty_names = { + "dynn_Wledig" + { "dynnp_ap" "dynn_Edern" } + { "dynnp_ap" "dynn_Llaennog" } + { "dynnp_ap" "dynn_Gwallog" } + "dynn_Ogledd" + "dynn_Rhegen" + { "dynnp_ap" "dynn_Mallerslange" } + { "dynnp_ap" "dynn_Winander" } + { "dynnp_ap" "dynn_Ulles" } + { "dynnp_ap" "dynn_Wingfield" } + { "dynnp_ap" "dynn_Gillsland" } + "dynn_Guletic" + "dynn_Prydain" + "dynn_Bwr" + "dynn_Penuchel" + { "dynnp_ap" "dynn_Rheged" } + { "dynnp_ap" "dynn_Eden" } + } + + male_names = { + Adda Adgar Adran Aeddan Alan Aldwr Algwyn Alisander Alured Alwyn Anarawd + Andreas Aneurin Anlaff Anllech Annwn Argad Arod Arthen Arthfael Arthfoddw Arthwr + Arthws Arthwys Asa Asaph Awst Bangar Bedwyr Beli Berthgwyn Berthwallt Bleddyn Bledrig + Bleiddud Branwaladr Bride Briog Brochfael Brwt Brwyn Brychan BrA_n Cadell Cadeyrn + Cadfael Cadfan Cadog Cadw Cadwal Cadwaladr Cadwallon Cadwared Cadwgan Cadwr Cai Caid Cain + Caradog Casnar Caswallon Cawdaf Cedig Cedwyn Ceneu Ceredig Clydog Coel Corentin Cuhelyn + Custennin Cwlfyn Cwrig Cydifor Cydrych Cynan Cynddelw Cyndyddan Cynddylan Cyndeyrn + Cynfael Cynfarch Cynfawr Cynfeddw Cynfelyn Cynfran Cynfyn Cyngar Cyngen Cynwallon Cynwared + Cynwrig Cynwyd Cynyr Cysteint Dafydd Deheuwant Deiniol Dewi Dogfael Drystan Dumnagual Dwyfan + Dyfnarth Dyfnwal Dyfnwallon Dynod Dywel Edern Ednyfed Ednywain Edryd Edwyn + Edylfred Einion Elfin Elidyr Elis Elisedd Elud Elystan Emrys Enfidaig Erb Erclwf + Eudaf Ewyas Ffernfael Ffilip Ffriog Ffwdwr Fragan Ffransis Fychan Fyrsil Gamon Garmon + Geraint Gerallt Glwyddien Glywys Godwyn Goronwy Gronw Gruffydd Grygor Guret Gwalchmai + Gwen Gwenwynwyn Gwerstan Gwerthefyr Gwerthern Gwydol Gwydolin Gwyn Gwidyr Gwilym + Gwrfawr Gwrfoddw Gwrgant Gwrgeneu Gwrgi Gwriad Harri Herewallt Huw Hywel + Iago Ivor Idnerth Idwal Idwallon Iestyn Ieuan Ifor Io Ioan Iolo Iorwerth Ithel + Lles Llew Llyr Llywarch Llywelyn Macsen Madog Mael Maelcwn Maelgwn Maenyrch March + Maredudd Math Mawgan Meilyr Meirchion Meiriadog Meirion Merfyn Meurig + Mihangel Morfarch Morgan Morien Morydd Mwyn Myrddin Neithon Nowy Nynniaw Oswallt + Owain Oucydd Padern Padrig Pandoff Pasgen Padarn Pawl Pedr Peredyr Publig Pyr + Rheinallt Rhicert Rhigeneu Rhirid Rhiwal Rhiwallon Rhobert Rhodri Rhufon + Rhun Rhydderch Rhydog Rhys Riaged Richwin Sandde Sawyl Seferus Seisyll Selyf + Senyllt Serigi Sieffre Sion Sior Siwauna Steffen Stinian Sulien Taliesin Tegonwy + Tegwyd Teilo Teithfalch Teudebur Tewdos Tewdrig Tewdwr Tomos Trahaearn Tudur Tudwal + Tudwallon Tydy Tyfoedd Tysilio Urien Uthyr Ynyr Ysfael + } + female_names = { + Addiena Aelwyd Aeronwen Aeronwy Afrella Alys Angharad Annes Annest Annwyl Anowed Arddyn Arianrhod + Blodwen Bronwen Catrin Ceindrych Ceridwen Cerie Cerys Cicely Clarisant Creirwy Cristin Danhadlwen + Delyth Denis Dwynwen Dwywai Dyddgu Efa Effros Efrddyl Efyrddyl Eiliwedd Elaine Elen Eleri + Elinion Elinor Ellyn Enid Essyllt Euronwy Ffelis Ffion Fflur Ffraid Glynys Gwen Gwenasedd Gwenfrewi Gwenhwyfach + Gwenhwyfar Gwenllian Gwenwyn Gwerfyl Gwladys Haer Hawys Heledd Hellawes Heulwen Hunydd Hywela Ilud Isabel + Llear Llecci Lleigy Lleuca Lowry Mabyn Maches Madrun Maelrys Mair Mali Mallt Marared Marchell Margred + Marwenna Mawd Melisant Morganna Morien Myfanwy Nest Nesta Newlyna Non + Olwen Onbrawst Owena Prawst Ragnell Rhiaindrech Rhiainfelt Rhiannon Rhonwen Sannant Sara + Senena Sibyl Sioned Siwan SiA_n Susanna Tangwystl Tegla Ysbail Ystradwel + } + + patronym_prefix_male = "dynnpat_pre_map" + patronym_prefix_male_vowel = "dynnpat_pre_vow_mab" + patronym_prefix_female = "dynnpat_pre_vch" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 80 + mat_grf_name_chance = 0 + father_name_chance = 0 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 0 + + +} diff --git a/common/culture/name_lists/00_byzantine.txt b/common/culture/name_lists/00_byzantine.txt new file mode 100644 index 00000000..54f26ccc --- /dev/null +++ b/common/culture/name_lists/00_byzantine.txt @@ -0,0 +1,1455 @@ +name_list_armenian = { + + cadet_dynasty_names = { + "dynn_Bagratuni" + "dynn_Kuchka" + "dynn_Beskond" + "dynn_Mangaphas" + "dynn_Arzrouni" + "dynn_Hetoumi" + "dynn_Makisdros" + "dynn_Pakradouni" + "dynn_Sarkis" + "dynn_Shnorhali" + "dynn_Vanantezi" + "dynn_Bakunc" + "dynn_Arakelian" + "dynn_Baboian" + "dynn_Bagdazarian" + "dynn_Barsamian" + "dynn_Haladjian" + "dynn_Kaprielian" + "dynn_Kezerian" + "dynn_Aharonian" + "dynn_Sahakyan" + "dynn_Keshishian" + "dynn_Baljian" + "dynn_Petrosian" + "dynn_Ghougasian" + "dynn_Mickaelian" + "dynn_Maoukian" + "dynn_Zohrabian" + "dynn_Altoonian" + "dynn_Gardman-Aghbania" + "dynn_Andzewatsi" + "dynn_Hasan-Jalalyan" + "dynn_Melik-Avanyan" + "dynn_Mush" + } + + dynasty_names = { + "dynn_Bagratuni" + "dynn_Kuchka" + "dynn_Beskond" + "dynn_Mangaphas" + "dynn_Arzrouni" + "dynn_Hetoumi" + "dynn_Makisdros" + "dynn_Pakradouni" + "dynn_Sarkis" + "dynn_Shnorhali" + "dynn_Vanantezi" + "dynn_Bakunc" + "dynn_Arakelian" + "dynn_Baboian" + "dynn_Bagdazarian" + "dynn_Barsamian" + "dynn_Haladjian" + "dynn_Kaprielian" + "dynn_Kezerian" + "dynn_Aharonian" + "dynn_Sahakyan" + "dynn_Keshishian" + "dynn_Baljian" + "dynn_Petrosian" + "dynn_Ghougasian" + "dynn_Mickaelian" + "dynn_Maoukian" + "dynn_Zohrabian" + "dynn_Altoonian" + "dynn_Gardman-Aghbania" + "dynn_Andzewatsi" + "dynn_Hasan-Jalalyan" + "dynn_Melik-Avanyan" + "dynn_Mush" + } + + male_names = { + Abas Abirad Aboughamr Aboulgharib Aleksandr Artashes Artashir Artavazd Arsen Arshak Ashot Athom Atrnerseh Avag Avedis Bagour Bagrat Bedros Boghos Davit Eshkhan Gagik Gevorg + Gosdantin Grigor Gurgen Hagop Hamazasp Hethum Hovhannes Hovsep Ishkhan Ivane Kapriel Khachik Khosrov Levon Malkhas Mamigon Manuel Margos Melek Mihrdat Mikayel Mleh Mushegh Mushel Mzhezh + Nerseh Oshin Roupen Sahag Sarkis Sevag Shahanshah Smbat Stepanos Tachat Taniel Tatoul Tigran Tornik Tovmas Thoros Trdat Vache Vachagan Vagharshak Vahag Vahan Vahram Vakhtank Varazdat Vartan Vassak Vesd Vrtanes Zakare Zarmihr + #Later Catholicoi names: + Aristaces Aristakes Husik Pharen Zaven Aspuraces Brkisho Melitus Kyud Babken Ghevond Dertad Joab Mashdotz Yeghishe Yeghise Ananias Khachig + } + + female_names = { + Aghavni Alitz Almasd Anahid Anna Anoush Arda Arevig Arin Baydzar Berjanoush Berjouhi Datevig Dalita Eliz Gadar Gorandoukht Hasmig Houri Hranoush Katranide + Hripsimeh Keghanoush Keran Khorishah Kohar Latavri Leyli Lousin Mara Margarid Maria Mariyam Meghranoush Nane Nazani Ovsanna Pounig Razmouhi Rita Satenik Seta Siran Sirvart + Srpouhi Shoushanig Takouhi Tamar Vartanoush Vartouhi Vosgi Yeva Zabel Zmroukhd + } + + dynasty_of_location_prefix = "dynnp_ve" + + +} + +name_list_greek = { + + cadet_dynasty_names = { + "dynn_Kantakouzenos" + "dynn_Palaiologos" + "dynn_Komnenos" + "dynn_Macrodoukas" + "dynn_Aineidas" + "dynn_Kantakouzenos" + "dynn_Kastriotis" + "dynn_Doukas_Kamateros" + "dynn_Skleros" + "dynn_Palaiologos" + "dynn_Makrembolites" + "dynn_Botaneiates" + "dynn_Diogenes" + "dynn_Komnenos" + "dynn_Monomachos" + "dynn_Argyros" + "dynn_Kourkouas" + "dynn_Phokas" + "dynn_Stryphnos" + "dynn_Gabras" + "dynn_Aaron" + "dynn_Grammatikos" + "dynn_Zeno" + "dynn_Bua_Spatas" + "dynn_Gavalas" + "dynn_Axuchos" + "dynn_Kamonas" + "dynn_Asidenos" + "dynn_Komnenos_Doukas" + "dynn_Karatzas" + "dynn_Amiroutzes" + "dynn_Bessarion" + "dynn_Callistus" + "dynn_Chalkokondyles" + "dynn_Gazis" + "dynn_Kourtesios" + "dynn_Kallistos" + "dynn_Kladas" + { "dynnp_de" "dynn_Patras" } + "dynn_Gemistus" + "dynn_Allatios" + "dynn_Chalcocondyles" + "dynn_Korniaktos" + "dynn_Damaskenos" + "dynn_Eparchos" + "dynn_Flanginis" + "dynn_FokA_s" + "dynn_Heraclides" + "dynn_Kallokratos" + "dynn_Kottounios" + "dynn_Leontaritis" + "dynn_Loukanis" + "dynn_Margunios" + "dynn_Musurus" + "dynn_Nafpliotis" + "dynn_HatzidA_kis" + "dynn_Aprenos" + "dynn_Chortatzis" + "dynn_Gabrielopoulos" + "dynn_Gounaropoulos" + "dynn_Belissariotis" + "dynn_Konstantopoulos" + "dynn_Kavallarios" + "dynn_Maniakis" + "dynn_Notaras" + "dynn_Sgouromallis" + "dynn_Epiphanis" + "dynn_Logaras" + "dynn_Eudaimon" + "dynn_Sakellarios" + "dynn_Maurozoumis" + "dynn_Stylaios" + "dynn_Basilakios" + "dynn_Mamonas" + "dynn_Kekaumenos" + "dynn_Metaxas" + "dynn_Kanavos" + "dynn_Koukouzelis" + "dynn_Koresis" + "dynn_Makrinos" + "dynn_Lambardas" + "dynn_Adrianos" + "dynn_Agallon" + "dynn_Akropolites" + "dynn_Aoinos" + "dynn_Apokaukos" + "dynn_Aprenos" + "dynn_Arbantenos" + "dynn_Argyros" + "dynn_Arianites" + "dynn_Atrapes" + "dynn_Balsamon" + "dynn_Botaneiates" + "dynn_Boumbalis" + "dynn_Bourtzes" + "dynn_Chandrenos" + "dynn_Choniates" + "dynn_Choumnos" + "dynn_Chrysoloras" + "dynn_Exazenos" + "dynn_Glabas" + "dynn_Kabasilas" + "dynn_Kalamanos" + "dynn_Kaloethes" + "dynn_Kalothetos" + "dynn_Kantakouzenos" + "dynn_Katrares" + "dynn_Koresses" + "dynn_Kourkouas" + "dynn_Kourtikes" + "dynn_Laskaris" + "dynn_Limpidares" + "dynn_Machoneos" + "dynn_Makrembolites" + "dynn_Malakes" + "dynn_Maliasenos" + "dynn_Mamalis" + "dynn_Mandromenos" + "dynn_Manouelites" + "dynn_Melachroinos" + "dynn_Mourtzouphlos" + "dynn_Mouzakios" + "dynn_Mouzalon" + "dynn_Neokaisareites" + "dynn_Nestongos" + "dynn_Pantechnes" + "dynn_Paraspondylos" + "dynn_Petraliphas" + "dynn_Petzikopoulos" + "dynn_Philanthropenos" + "dynn_Phokas" + "dynn_Prasomales" + "dynn_Prinkips" + "dynn_Rossatas" + "dynn_Sebastopoulos" + "dynn_Segouropoulos" + "dynn_Sgouros" + "dynn_Sphrantzes" + "dynn_Strabomytes" + "dynn_Syraneres" + "dynn_Syropoulos" + "dynn_Tagares" + "dynn_Trichas" + "dynn_Tsaphas" + "dynn_Tzykandeles" + "dynn_Zaridas" + "dynn_Akunin" + "dynn_Abalantes" + "dynn_Aboudimos" + "dynn_Adralestos" + "dynn_Agallianos" + "dynn_Akapnes" + "dynn_Alopos" + "dynn_Alousianos" + "dynn_Amiropoulos" + "dynn_Anatolikos" + "dynn_Andreiomenos" + "dynn_Androsalites" + "dynn_Angoures" + "dynn_Antiochites" + "dynn_Antiochos" + "dynn_Antipapas" + "dynn_Arbintenos" + "dynn_Areobindenos" + "dynn_Areobindos" + "dynn_Argyropoulos" + "dynn_Aristenos" + "dynn_Artoukomites" + "dynn_Arvantenos" + "dynn_Aulenos" + "dynn_Aulepates" + "dynn_Axinites" + "dynn_Axiomatikos" + "dynn_Balantes" + "dynn_Barbaros" + "dynn_Bardales" + "dynn_Barenos" + "dynn_Barys" + "dynn_Belissariotes" + "dynn_Bempetziotes" + "dynn_Beriboes" + "dynn_Beriotes" + "dynn_Blachernites" + "dynn_Blangas" + "dynn_BoI_las" + "dynn_Bouches" + "dynn_Boutzares" + "dynn_Bouzenos" + "dynn_Brachamios" + "dynn_Chaldos" + "dynn_Chalkites" + "dynn_Chalkoutzes" + "dynn_Chamaretos" + "dynn_Charsianites" + "dynn_Chasanes" + "dynn_Chazanes" + "dynn_Choinides" + "dynn_Chomatenos" + "dynn_Chordolibas" + "dynn_Choriates" + "dynn_Chrouselios" + "dynn_Chrousos" + "dynn_Chrysanthos" + "dynn_Chryselios" + "dynn_Chrysobalantites" + "dynn_Chytes" + "dynn_Daimones" + "dynn_Dalessenos" + "dynn_Dalassenos_Doukas" + "dynn_Dekanos" + "dynn_Diabatenos" + "dynn_Dikaios" + "dynn_Diogenes" + "dynn_Domestikopouolos" + "dynn_Doukas_Laskaris" + "dynn_Doukas_Palaiologos" + "dynn_Doxapatres" + "dynn_Drakontopoulos" + "dynn_Drosinos" + "dynn_Drosos" + "dynn_Droulenos" + "dynn_Elegmites" + "dynn_Enochos" + "dynn_Epanokomites" + "dynn_Ergodotes" + "dynn_Erotikos" + "dynn_Eugenianos" + "dynn_Eugenios" + "dynn_Eulogios" + "dynn_Exotrochos" + "dynn_Gabalas" + "dynn_Galaton" + "dynn_Gelotes" + "dynn_Gidos" + "dynn_Glykys" + "dynn_Goudeles" + "dynn_Gourzoubathenos" + "dynn_Granatos" + "dynn_Gribas" + "dynn_Grispos" + "dynn_Gymnos" + "dynn_Hagiochrisophorites" + "dynn_Hagioprokopites" + "dynn_Hagiotheodorites" + "dynn_Hagiozacharites" + "dynn_Hamartolos" + "dynn_Haplorabdes" + "dynn_Haploucheir" + "dynn_Hexakionites" + "dynn_Hexaklinites" + "dynn_Hexamilites" + "dynn_Hierakes" + "dynn_Hikanatos" + "dynn_Iasites" + "dynn_Iberopoulos" + "dynn_Isakiotes" + "dynn_Italikos" + "dynn_Kaballarios" + "dynn_Kabasilas" + "dynn_Kaisar" + "dynn_Kalameteros" + "dynn_Kalamaras" + "dynn_Kalampakes" + "dynn_Kalognomos" + "dynn_Kamytzes_Komnenodoukas" + "dynn_Kappadox_Kalampakes" + "dynn_Karabitenos" + "dynn_Karabitziotes" + "dynn_KaraI_onatan" + "dynn_Karamallos" + "dynn_Karantes" + "dynn_Kardamopoulos" + "dynn_Karenos" + "dynn_Karianites" + "dynn_Karkaronymos" + "dynn_Karmalikes" + "dynn_Karouzeiates" + "dynn_Kaspax" + "dynn_Kastamonites" + "dynn_Katakalon" + "dynn_Katakalos" + "dynn_Kataphloros" + "dynn_Katas" + "dynn_Katharos" + "dynn_Katotikos" + "dynn_Katzamoundes" + "dynn_Kegenes" + "dynn_Kekaleimenos" + "dynn_Keklymmenos" + "dynn_Kemineianos" + "dynn_Kenchres" + "dynn_Kentenares" + "dynn_Kephalas" + "dynn_Kibyrraiotes" + "dynn_Kinnamos" + "dynn_Kokkinos" + "dynn_Komnenodoukas" + "dynn_Konops" + "dynn_Kontostephanos_Komnenos" + "dynn_Kopsenos" + "dynn_Kostomyres" + "dynn_Kotertzes" + "dynn_Kouloukes" + "dynn_Kouneres" + "dynn_Kritharas" + "dynn_Kritopolos" + "dynn_Kyminianos" + "dynn_Kynochorites" + "dynn_Kyriotes" + "dynn_Kyritzes" + "dynn_Labouzenos" + "dynn_Laktentitzes" + "dynn_Lalakon" + "dynn_Lampsiotes" + "dynn_Lapardas" + "dynn_Lependrenos" + "dynn_Leukedonites" + "dynn_Libadares" + "dynn_Libadas" + "dynn_Libellisios" + "dynn_Limas" + "dynn_Liparites" + "dynn_Lithokastrites" + "dynn_Logariastes" + "dynn_Loules" + "dynn_Louloukes" + "dynn_Lykaon" + "dynn_Machetarios" + "dynn_Madrites" + "dynn_Madytenos" + "dynn_Makropoderes" + "dynn_MaleI_nos" + "dynn_Maleses" + "dynn_Mamalos" + "dynn_Manganes" + "dynn_Marachas" + "dynn_Marapas" + "dynn_Marchapsabos" + "dynn_Marianites" + "dynn_Marzapoulos" + "dynn_Matzaris" + "dynn_Matzas" + "dynn_Matzoukes" + "dynn_Maurex" + "dynn_Maurokatakalos" + "dynn_Mauros" + "dynn_Maurozomes" + "dynn_Mechos" + "dynn_Megalommates" + "dynn_Megenos" + "dynn_Meginos" + "dynn_Mermentoulos" + "dynn_Mesarites" + "dynn_Meschos" + "dynn_Mesopotamites" + "dynn_Metochites" + "dynn_Metropoulos" + "dynn_Mitylenaios" + "dynn_Monachites" + "dynn_Monokarites" + "dynn_Moroiannes" + "dynn_Mosaraph" + "dynn_Moschos" + "dynn_Mosele" + "dynn_Moungos" + "dynn_Mourmoures" + "dynn_Moustakes" + "dynn_Mozaes" + "dynn_Myralides" + "dynn_MyredeI_tes" + "dynn_Myrelaetes" + "dynn_Myron" + "dynn_Nabatenos" + "dynn_Narbiotes" + "dynn_Narsites" + "dynn_Neophytos" + "dynn_Neustongios" + "dynn_Nikerites" + "dynn_Nikoulitzes" + "dynn_Noe" + "dynn_Oinaiotes" + "dynn_Olyntenos" + "dynn_Opos" + "dynn_Pagomenos" + "dynn_Paktiares" + "dynn_Palaiologos_Komnenos" + "dynn_Doukas_Mourtzouphlos" + "dynn_Palaiotes" + "dynn_Palatinos" + "dynn_Pamphilos" + "dynn_Panaretos" + "dynn_Pankalos" + "dynn_Panokomites" + "dynn_Parsakoutenos" + "dynn_Parthenios" + "dynn_Paxenos" + "dynn_Pediasimos" + "dynn_Peganites" + "dynn_Pekoules" + "dynn_Pelamedes" + "dynn_Pentarkles" + "dynn_Pepagomenos" + "dynn_Pepanos" + "dynn_Perenos" + "dynn_Peribleptenos" + "dynn_Phalkon" + "dynn_Phialites" + "dynn_Philaretos" + "dynn_Philinos" + "dynn_Phrangopolos" + "dynn_Pistophilos" + "dynn_Pleures" + "dynn_Politopolos" + "dynn_Pothos" + "dynn_Probatas" + "dynn_Promountenos" + "dynn_Proteuon" + "dynn_Ptochos" + "dynn_Rentakenos" + "dynn_Rizenos" + "dynn_Rodios" + "dynn_Rogerios" + "dynn_Romaios" + "dynn_Rousopoulos" + "dynn_Sagopoulos" + "dynn_Sarakenopoulos" + "dynn_Saronites" + "dynn_Sauloioannes" + "dynn_Semnos" + "dynn_Serblias" + "dynn_Sikoundenos" + "dynn_Sinopites" + "dynn_Skandales" + "dynn_Skanranos" + "dynn_Skeblenos" + "dynn_Skleropoulos" + "dynn_Skoutariotes" + "dynn_Skribas" + "dynn_Smyrnaios" + "dynn_Solomon" + "dynn_Sortes" + "dynn_Soumenos" + "dynn_Spanogregores" + "dynn_Spanopoulos" + "dynn_Spondyles" + "dynn_Stachytzes" + "dynn_Stemnitziotes" + "dynn_Strategopoulos" + "dynn_Strephnes" + "dynn_Stypeiotes" + "dynn_Styppes" + "dynn_Synacheris" + "dynn_Syros" + "dynn_Tatikes" + "dynn_Tetragonites" + "dynn_Theodorokanos" + "dynn_Theodosiopolites" + "dynn_Thylakas" + "dynn_Tilapos" + "dynn_Timonites" + "dynn_Tourmarchopoulos" + "dynn_Traphines" + "dynn_Trellos" + "dynn_Triakontaphyllos" + "dynn_Triblattites" + "dynn_Trichinopodes" + "dynn_Triphyllios" + "dynn_Tzanzes" + "dynn_Tzefres" + "dynn_Tzetas" + "dynn_Tzipoureles" + "dynn_Tzirithon" + "dynn_Tzoulas" + "dynn_Tzoumenes" + "dynn_Tzouroulles" + "dynn_Tzympenos" + "dynn_Vatatzes" + "dynn_Xenos" + "dynn_Xeros" + "dynn_Xiphias" + "dynn_Zabareiotes" + "dynn_Zagarommates" + "dynn_Zerbos" + "dynn_Zomes" + "dynn_Zonaras" + "dynn_Kalomalas" + "dynn_Kaloudes" + "dynn_Kamateros_Kantakouzenos" + "dynn_Kampanarios" + "dynn_Kallierges" + "dynn_Loukites" + "dynn_Kometopoulos" + "dynn_Pateranos" + "dynn_Paleologo" + "dynn_Gregoras" + "dynn_Sanudo" + "dynn_Komytzes" + "dynn_Lascaris" + "dynn_Attikos" + "dynn_Anastasiotis" + "dynn_Evergetidiotis" + "dynn_Chliarinos" + "dynn_Chysovergis" + "dynn_Eugeniotis" + "dynn_Vorradiotis" + "dynn_Mountanis" + "dynn_Theotokitis" + "dynn_Viticlenou" + "dynn_Autoreianos" + "dynn_Akoimitos" + "dynn_Charitopoulos" + "dynn_Panemorphiotis" + "dynn_Hyakinthiotis" + "dynn_Galesiotis" + "dynn_Bekkos" + "dynn_Kyprios" + "dynn_Gonitis" + "dynn_Pammakaristiotis" + "dynn_Perivleptiotis" + "dynn_Manganiotis" + "dynn_Kalekas" + "dynn_Xylaloes" + "dynn_Syrikos" + "dynn_Tatikios" + "dynn_Aspietes" + "dynn_Leon" + "dynn_Phokas" + "dynn_Leon" + "dynn_Matteski" + { "dynnp_al-" "dynn_Muzaffar" } + "dynn_Kastriotis" + "dynn_Kourkoas" + "dynn_Euferbenos" + } + + dynasty_names = { + "dynn_Kantakouzenos" + "dynn_Palaiologos" + "dynn_Komnenos" + "dynn_Macrodoukas" + "dynn_Aineidas" + "dynn_Kantakouzenos" + "dynn_Kastriotis" + "dynn_Doukas_Kamateros" + "dynn_Skleros" + "dynn_Palaiologos" + "dynn_Makrembolites" + "dynn_Botaneiates" + "dynn_Diogenes" + "dynn_Komnenos" + "dynn_Monomachos" + "dynn_Argyros" + "dynn_Kourkouas" + "dynn_Phokas" + "dynn_Stryphnos" + "dynn_Gabras" + "dynn_Aaron" + "dynn_Grammatikos" + "dynn_Zeno" + "dynn_Bua_Spatas" + "dynn_Gavalas" + "dynn_Axuchos" + "dynn_Kamonas" + "dynn_Asidenos" + "dynn_Komnenos_Doukas" + "dynn_Karatzas" + "dynn_Amiroutzes" + "dynn_Bessarion" + "dynn_Callistus" + "dynn_Chalkokondyles" + "dynn_Gazis" + "dynn_Kourtesios" + "dynn_Kallistos" + "dynn_Kladas" + { "dynnp_de" "dynn_Patras" } + "dynn_Gemistus" + "dynn_Allatios" + "dynn_Chalcocondyles" + "dynn_Korniaktos" + "dynn_Damaskenos" + "dynn_Eparchos" + "dynn_Flanginis" + "dynn_FokA_s" + "dynn_Heraclides" + "dynn_Kallokratos" + "dynn_Kottounios" + "dynn_Leontaritis" + "dynn_Loukanis" + "dynn_Margunios" + "dynn_Musurus" + "dynn_Nafpliotis" + "dynn_HatzidA_kis" + "dynn_Aprenos" + "dynn_Chortatzis" + "dynn_Gabrielopoulos" + "dynn_Gounaropoulos" + "dynn_Belissariotis" + "dynn_Konstantopoulos" + "dynn_Kavallarios" + "dynn_Maniakis" + "dynn_Notaras" + "dynn_Sgouromallis" + "dynn_Epiphanis" + "dynn_Logaras" + "dynn_Eudaimon" + "dynn_Sakellarios" + "dynn_Maurozoumis" + "dynn_Stylaios" + "dynn_Basilakios" + "dynn_Mamonas" + "dynn_Kekaumenos" + "dynn_Metaxas" + "dynn_Kanavos" + "dynn_Koukouzelis" + "dynn_Koresis" + "dynn_Makrinos" + "dynn_Lambardas" + "dynn_Adrianos" + "dynn_Agallon" + "dynn_Akropolites" + "dynn_Aoinos" + "dynn_Apokaukos" + "dynn_Aprenos" + "dynn_Arbantenos" + "dynn_Argyros" + "dynn_Arianites" + "dynn_Atrapes" + "dynn_Balsamon" + "dynn_Botaneiates" + "dynn_Boumbalis" + "dynn_Bourtzes" + "dynn_Chandrenos" + "dynn_Choniates" + "dynn_Choumnos" + "dynn_Chrysoloras" + "dynn_Exazenos" + "dynn_Glabas" + "dynn_Kabasilas" + "dynn_Kalamanos" + "dynn_Kaloethes" + "dynn_Kalothetos" + "dynn_Kantakouzenos" + "dynn_Katrares" + "dynn_Koresses" + "dynn_Kourkouas" + "dynn_Kourtikes" + "dynn_Laskaris" + "dynn_Limpidares" + "dynn_Machoneos" + "dynn_Makrembolites" + "dynn_Malakes" + "dynn_Maliasenos" + "dynn_Mamalis" + "dynn_Mandromenos" + "dynn_Manouelites" + "dynn_Melachroinos" + "dynn_Mourtzouphlos" + "dynn_Mouzakios" + "dynn_Mouzalon" + "dynn_Neokaisareites" + "dynn_Nestongos" + "dynn_Pantechnes" + "dynn_Paraspondylos" + "dynn_Petraliphas" + "dynn_Petzikopoulos" + "dynn_Philanthropenos" + "dynn_Phokas" + "dynn_Prasomales" + "dynn_Prinkips" + "dynn_Rossatas" + "dynn_Sebastopoulos" + "dynn_Segouropoulos" + "dynn_Sgouros" + "dynn_Sphrantzes" + "dynn_Strabomytes" + "dynn_Syraneres" + "dynn_Syropoulos" + "dynn_Tagares" + "dynn_Trichas" + "dynn_Tsaphas" + "dynn_Tzykandeles" + "dynn_Zaridas" + "dynn_Akunin" + "dynn_Abalantes" + "dynn_Aboudimos" + "dynn_Adralestos" + "dynn_Agallianos" + "dynn_Akapnes" + "dynn_Alopos" + "dynn_Alousianos" + "dynn_Amiropoulos" + "dynn_Anatolikos" + "dynn_Andreiomenos" + "dynn_Androsalites" + "dynn_Angoures" + "dynn_Antiochites" + "dynn_Antiochos" + "dynn_Antipapas" + "dynn_Arbintenos" + "dynn_Areobindenos" + "dynn_Areobindos" + "dynn_Argyropoulos" + "dynn_Aristenos" + "dynn_Artoukomites" + "dynn_Arvantenos" + "dynn_Aulenos" + "dynn_Aulepates" + "dynn_Axinites" + "dynn_Axiomatikos" + "dynn_Balantes" + "dynn_Barbaros" + "dynn_Bardales" + "dynn_Barenos" + "dynn_Barys" + "dynn_Belissariotes" + "dynn_Bempetziotes" + "dynn_Beriboes" + "dynn_Beriotes" + "dynn_Blachernites" + "dynn_Blangas" + "dynn_BoI_las" + "dynn_Bouches" + "dynn_Boutzares" + "dynn_Bouzenos" + "dynn_Brachamios" + "dynn_Chaldos" + "dynn_Chalkites" + "dynn_Chalkoutzes" + "dynn_Chamaretos" + "dynn_Charsianites" + "dynn_Chasanes" + "dynn_Chazanes" + "dynn_Choinides" + "dynn_Chomatenos" + "dynn_Chordolibas" + "dynn_Choriates" + "dynn_Chrouselios" + "dynn_Chrousos" + "dynn_Chrysanthos" + "dynn_Chryselios" + "dynn_Chrysobalantites" + "dynn_Chytes" + "dynn_Daimones" + "dynn_Dalessenos" + "dynn_Dalassenos_Doukas" + "dynn_Dekanos" + "dynn_Diabatenos" + "dynn_Dikaios" + "dynn_Diogenes" + "dynn_Domestikopouolos" + "dynn_Doukas_Laskaris" + "dynn_Doukas_Palaiologos" + "dynn_Doxapatres" + "dynn_Drakontopoulos" + "dynn_Drosinos" + "dynn_Drosos" + "dynn_Droulenos" + "dynn_Elegmites" + "dynn_Enochos" + "dynn_Epanokomites" + "dynn_Ergodotes" + "dynn_Erotikos" + "dynn_Eugenianos" + "dynn_Eugenios" + "dynn_Eulogios" + "dynn_Exotrochos" + "dynn_Gabalas" + "dynn_Galaton" + "dynn_Gelotes" + "dynn_Gidos" + "dynn_Glykys" + "dynn_Goudeles" + "dynn_Gourzoubathenos" + "dynn_Granatos" + "dynn_Gribas" + "dynn_Grispos" + "dynn_Gymnos" + "dynn_Hagiochrisophorites" + "dynn_Hagioprokopites" + "dynn_Hagiotheodorites" + "dynn_Hagiozacharites" + "dynn_Hamartolos" + "dynn_Haplorabdes" + "dynn_Haploucheir" + "dynn_Hexakionites" + "dynn_Hexaklinites" + "dynn_Hexamilites" + "dynn_Hierakes" + "dynn_Hikanatos" + "dynn_Iasites" + "dynn_Iberopoulos" + "dynn_Isakiotes" + "dynn_Italikos" + "dynn_Kaballarios" + "dynn_Kabasilas" + "dynn_Kaisar" + "dynn_Kalameteros" + "dynn_Kalamaras" + "dynn_Kalampakes" + "dynn_Kalognomos" + "dynn_Kamytzes_Komnenodoukas" + "dynn_Kappadox_Kalampakes" + "dynn_Karabitenos" + "dynn_Karabitziotes" + "dynn_KaraI_onatan" + "dynn_Karamallos" + "dynn_Karantes" + "dynn_Kardamopoulos" + "dynn_Karenos" + "dynn_Karianites" + "dynn_Karkaronymos" + "dynn_Karmalikes" + "dynn_Karouzeiates" + "dynn_Kaspax" + "dynn_Kastamonites" + "dynn_Katakalon" + "dynn_Katakalos" + "dynn_Kataphloros" + "dynn_Katas" + "dynn_Katharos" + "dynn_Katotikos" + "dynn_Katzamoundes" + "dynn_Kegenes" + "dynn_Kekaleimenos" + "dynn_Keklymmenos" + "dynn_Kemineianos" + "dynn_Kenchres" + "dynn_Kentenares" + "dynn_Kephalas" + "dynn_Kibyrraiotes" + "dynn_Kinnamos" + "dynn_Kokkinos" + "dynn_Komnenodoukas" + "dynn_Konops" + "dynn_Kontostephanos_Komnenos" + "dynn_Kopsenos" + "dynn_Kostomyres" + "dynn_Kotertzes" + "dynn_Kouloukes" + "dynn_Kouneres" + "dynn_Kritharas" + "dynn_Kritopolos" + "dynn_Kyminianos" + "dynn_Kynochorites" + "dynn_Kyriotes" + "dynn_Kyritzes" + "dynn_Labouzenos" + "dynn_Laktentitzes" + "dynn_Lalakon" + "dynn_Lampsiotes" + "dynn_Lapardas" + "dynn_Lependrenos" + "dynn_Leukedonites" + "dynn_Libadares" + "dynn_Libadas" + "dynn_Libellisios" + "dynn_Limas" + "dynn_Liparites" + "dynn_Lithokastrites" + "dynn_Logariastes" + "dynn_Loules" + "dynn_Louloukes" + "dynn_Lykaon" + "dynn_Machetarios" + "dynn_Madrites" + "dynn_Madytenos" + "dynn_Makropoderes" + "dynn_MaleI_nos" + "dynn_Maleses" + "dynn_Mamalos" + "dynn_Manganes" + "dynn_Marachas" + "dynn_Marapas" + "dynn_Marchapsabos" + "dynn_Marianites" + "dynn_Marzapoulos" + "dynn_Matzaris" + "dynn_Matzas" + "dynn_Matzoukes" + "dynn_Maurex" + "dynn_Maurokatakalos" + "dynn_Mauros" + "dynn_Maurozomes" + "dynn_Mechos" + "dynn_Megalommates" + "dynn_Megenos" + "dynn_Meginos" + "dynn_Mermentoulos" + "dynn_Mesarites" + "dynn_Meschos" + "dynn_Mesopotamites" + "dynn_Metochites" + "dynn_Metropoulos" + "dynn_Mitylenaios" + "dynn_Monachites" + "dynn_Monokarites" + "dynn_Moroiannes" + "dynn_Mosaraph" + "dynn_Moschos" + "dynn_Mosele" + "dynn_Moungos" + "dynn_Mourmoures" + "dynn_Moustakes" + "dynn_Mozaes" + "dynn_Myralides" + "dynn_MyredeI_tes" + "dynn_Myrelaetes" + "dynn_Myron" + "dynn_Nabatenos" + "dynn_Narbiotes" + "dynn_Narsites" + "dynn_Neophytos" + "dynn_Neustongios" + "dynn_Nikerites" + "dynn_Nikoulitzes" + "dynn_Noe" + "dynn_Oinaiotes" + "dynn_Olyntenos" + "dynn_Opos" + "dynn_Pagomenos" + "dynn_Paktiares" + "dynn_Palaiologos_Komnenos" + "dynn_Doukas_Mourtzouphlos" + "dynn_Palaiotes" + "dynn_Palatinos" + "dynn_Pamphilos" + "dynn_Panaretos" + "dynn_Pankalos" + "dynn_Panokomites" + "dynn_Parsakoutenos" + "dynn_Parthenios" + "dynn_Paxenos" + "dynn_Pediasimos" + "dynn_Peganites" + "dynn_Pekoules" + "dynn_Pelamedes" + "dynn_Pentarkles" + "dynn_Pepagomenos" + "dynn_Pepanos" + "dynn_Perenos" + "dynn_Peribleptenos" + "dynn_Phalkon" + "dynn_Phialites" + "dynn_Philaretos" + "dynn_Philinos" + "dynn_Phrangopolos" + "dynn_Pistophilos" + "dynn_Pleures" + "dynn_Politopolos" + "dynn_Pothos" + "dynn_Probatas" + "dynn_Promountenos" + "dynn_Proteuon" + "dynn_Ptochos" + "dynn_Rentakenos" + "dynn_Rizenos" + "dynn_Rodios" + "dynn_Rogerios" + "dynn_Romaios" + "dynn_Rousopoulos" + "dynn_Sagopoulos" + "dynn_Sarakenopoulos" + "dynn_Saronites" + "dynn_Sauloioannes" + "dynn_Semnos" + "dynn_Serblias" + "dynn_Sikoundenos" + "dynn_Sinopites" + "dynn_Skandales" + "dynn_Skanranos" + "dynn_Skeblenos" + "dynn_Skleropoulos" + "dynn_Skoutariotes" + "dynn_Skribas" + "dynn_Smyrnaios" + "dynn_Solomon" + "dynn_Sortes" + "dynn_Soumenos" + "dynn_Spanogregores" + "dynn_Spanopoulos" + "dynn_Spondyles" + "dynn_Stachytzes" + "dynn_Stemnitziotes" + "dynn_Strategopoulos" + "dynn_Strephnes" + "dynn_Stypeiotes" + "dynn_Styppes" + "dynn_Synacheris" + "dynn_Syros" + "dynn_Tatikes" + "dynn_Tetragonites" + "dynn_Theodorokanos" + "dynn_Theodosiopolites" + "dynn_Thylakas" + "dynn_Tilapos" + "dynn_Timonites" + "dynn_Tourmarchopoulos" + "dynn_Traphines" + "dynn_Trellos" + "dynn_Triakontaphyllos" + "dynn_Triblattites" + "dynn_Trichinopodes" + "dynn_Triphyllios" + "dynn_Tzanzes" + "dynn_Tzefres" + "dynn_Tzetas" + "dynn_Tzipoureles" + "dynn_Tzirithon" + "dynn_Tzoulas" + "dynn_Tzoumenes" + "dynn_Tzouroulles" + "dynn_Tzympenos" + "dynn_Vatatzes" + "dynn_Xenos" + "dynn_Xeros" + "dynn_Xiphias" + "dynn_Zabareiotes" + "dynn_Zagarommates" + "dynn_Zerbos" + "dynn_Zomes" + "dynn_Zonaras" + "dynn_Kalomalas" + "dynn_Kaloudes" + "dynn_Kamateros_Kantakouzenos" + "dynn_Kampanarios" + "dynn_Kallierges" + "dynn_Loukites" + "dynn_Kometopoulos" + "dynn_Pateranos" + "dynn_Paleologo" + "dynn_Gregoras" + "dynn_Sanudo" + "dynn_Komytzes" + "dynn_Lascaris" + "dynn_Attikos" + "dynn_Anastasiotis" + "dynn_Evergetidiotis" + "dynn_Chliarinos" + "dynn_Chysovergis" + "dynn_Eugeniotis" + "dynn_Vorradiotis" + "dynn_Mountanis" + "dynn_Theotokitis" + "dynn_Viticlenou" + "dynn_Autoreianos" + "dynn_Akoimitos" + "dynn_Charitopoulos" + "dynn_Panemorphiotis" + "dynn_Hyakinthiotis" + "dynn_Galesiotis" + "dynn_Bekkos" + "dynn_Kyprios" + "dynn_Gonitis" + "dynn_Pammakaristiotis" + "dynn_Perivleptiotis" + "dynn_Manganiotis" + "dynn_Kalekas" + "dynn_Xylaloes" + "dynn_Syrikos" + "dynn_Tatikios" + "dynn_Aspietes" + "dynn_Leon" + "dynn_Phokas" + "dynn_Leon" + "dynn_Matteski" + { "dynnp_al-" "dynn_Muzaffar" } + "dynn_Kastriotis" + "dynn_Kourkoas" + "dynn_Euferbenos" + } + + male_names = { + Adrianos Akakios Alexandros Alexios Anastasios Anatolios Andreas Andronikos Anthemios Anthimos Antiochos Antonios Apollonios Arsenios Artemios Athanasios Bardas + Bartholomaios Basileios Belisarios Boethios Bosporios Christophoros Chrysanthos Chrysogonos Damianos Daniel David Demetrios Diogenes Dionysios Dorotheos Eirenaios Eudoxios Eustratios + Eugenios Euphemios Eusebios Eustathios Evangelos Gabriel Gennadios Georgios Gerasimos Germanos Gregoras Gregorios Hektorios Helias Herakleios Hierotheos Himerios + Hippolytos Hypatios Iakobos Ignatios Innokentios Ioannes Ioannikios Iordanes Ioseph Isaakios Isaias Isidoros Ioulianos Ioustinianos Ioustinos Kaisarios + Kallinikos Kallistos Komitas Konstantinos Konstantios Konstas Kosmas Kyriakos Kyrillos Kyros Laurentios Lazaros Leon Leontios Loukas Makarios Manuel Markos + Matthaios Maurikios Maximos Megistos Meletios Methodios Michael Narses Neophytos Nikephoros Niketas Nikodemos Nikolaos Niphon Orestes Pamphilios Pankratios Pantoleon Paschalis + Pavlos Pelagios Petros Philaretos Philippos Philotheos Phokas Photios Polykarpos Porphyrios Prokopios Pyrros Raphail Romanos Sabas Samuel Serapion Sebastianos Sergios Stephanos + Staurakios Symeon Symmachos Theocharistos Theodoros Theodosios Theodotos Theodoulos Theoktistos Theophanes Theophilos Theophylaktos Thomas Tiberios Traianos + Timotheos Tryphon Valerios Zacharias Zenobios Zenon + Aristarchus Aristarchos + } + + female_names = { + Adriane Agathe Agne Aikaterine Alexandra Alexeia Anastasia Anna Anthe Anthousa Antipatra Antonia Apollonia Athanasia Barbara Basillike + Chrysogone Damiane Demetra Dionysia Dorothea Aigidia Eirene Elaiodora Epiphania Eudokia Eudoxia Eugenia Eulalia Eunike Euphemia Euphrasia Euphrosyne + Eupraxia Eusebia Eustathia Evanthia Gabrielia Garyphallia Georgia Gregoria Helene Hypatia Ioanna Ioulia Iouliana Ioustina Kale Konstantia Konstantine Kyra Kyriake + Leontia Margarita Maria Markia Martha Melissa Nikarete Nikoletta Nonna Parthena Pavlina Pelagia Petronia Philippa Philomena Phyllis Pulcheria Rhodanthe Romane Romylia Sergia Sibylla + Simonis Sophia Stephania Thekla Theochariste Theodora Theodosia Theognosia Theoktiste Theophano Thomais Valeria Viviana Xene Zenobia Zoe + } + + dynasty_of_location_prefix = "dynnp_of" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 50 + father_name_chance = 0 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 50 + mat_grm_name_chance = 50 + mother_name_chance = 0 + + + + mercenary_names = { + { name = "mercenary_company_cretans" } + { name = "mercenary_company_heruli" } + { name = "mercenary_company_hoplites_of_place" } + } +} + +name_list_alan = { + + cadet_dynasty_names = { + "dynn_ArdasentA_" + "dynn_GA_bA_ratA_" + "dynn_DzA_rA_hohtA_" + "dynn_DzebysatA_" + "dynn_DjerdjitA_" + "dynn_GuyrdzybetA_" + "dynn_ZA_ndjiatA_" + "dynn_KA_rkuystA_" + "dynn_DjykkajtA_" + "dynn_GodjysatA_" + "dynn_PA_rrA_statA_" + "dynn_HetA_gkatA_" + "dynn_HA_darcatA_" + "dynn_TuallA_gtA_" + "dynn_FA_rniatA_" + "dynn_Ephraimid" + "dynn_TandelatA_" + "dynn_TsA_ykostA_" + "dynn_SozanatA_" + "dynn_MA_rzojtA_" + "dynn_Ovsia" + } + + dynasty_names = { + "dynn_ArdasentA_" + "dynn_GA_bA_ratA_" + "dynn_DzA_rA_hohtA_" + "dynn_DzebysatA_" + "dynn_DjerdjitA_" + "dynn_GuyrdzybetA_" + "dynn_ZA_ndjiatA_" + "dynn_KA_rkuystA_" + "dynn_DjykkajtA_" + "dynn_GodjysatA_" + "dynn_PA_rrA_statA_" + "dynn_HetA_gkatA_" + "dynn_HA_darcatA_" + "dynn_TuallA_gtA_" + "dynn_FA_rniatA_" + "dynn_Ephraimid" + "dynn_TandelatA_" + "dynn_TsA_ykostA_" + "dynn_SozanatA_" + "dynn_MA_rzojtA_" + "dynn_Ovsia" + } + + male_names = { + E_lbeg E_mbalan Aghsartan Alatey Akhsar Anbal Anbazuk Aravat Arsen Askhkadar Ashot Aslan Aspar Athom Balambar Balsag Barlah BE_qE_tar Basil Bazuk Beler Ber BirE_g Boz-Uruz BuU_rgur Buriberdi + Burikhan Candak Chelakhsartag Davit Djadaron Durgulel DzE_rE_s GE_tE_g Georgy Girgon Gokhar Gubaz Guram Hasqar Huddan Istor Itaz Iveri Kandak Kandz Kavtia Kaur + Khankhusy KhE_tag Konstantin Kubal Kuddana Kul Kuluk Lak Levan Pulad Respendial Rosmag Safrak Sakhir Sangipan Saros Sathis Savkudz Soslan Suarn Syrdon Taymuraz Taus Totraz Urdure Uruzma Uturku Yasynya Zaur + } + + female_names = { + Adadza Alda Altun Ana Atsyrukhs Baia Bedisa Borena Btsenon Burudukan Duda Elene Eliso Gergana Gulchara Guranduht Kera Keratsa Ketevan Koser + Lamara Lashin Lela Mariami Natia Nino Rusudan Sanatha Satinik Shatana Shorena Shukhia Tamari Tinatini Tsiala Vardo Vedokha Yeran + } + + dynasty_of_location_prefix = "dynnp_ve" + + patronym_suffix_male = "dynnpat_suf_y_fyrt" + patronym_suffix_female = "dynnpat_suf_y_chyzg" + + +} + +name_list_georgian = { + + cadet_dynasty_names = { + "dynn_Jaqeli" + "dynn_Sologashvili" + "dynn_Tavdgiridze" + "dynn_Vakhvakhishvili" + "dynn_Baghvashi" + "dynn_Apokapes" + "dynn_Andronikashvili" + "dynn_Gurieli" + "dynn_Abuserisdze" + "dynn_Surameli" + "dynn_Zevdginidze" + "dynn_Amirejibi" + "dynn_Abazasdze" + "dynn_Abuladze" + "dynn_Chkhetidze" + "dynn_Gelovani" + "dynn_Panaskerteli" + "dynn_Agiashvili" + "dynn_Kachibadze" + "dynn_Chavchavadze" + "dynn_Cholokashvili" + "dynn_Diasamidze" + "dynn_Khursidze" + "dynn_Shildisani" + "dynn_Shavliani" + "dynn_Donauri" + "dynn_Orbeliani" + "dynn_Japaridze" + "dynn_Javakhishvili" + "dynn_Jorjadze" + "dynn_Mkhargrdzeli" + "dynn_Kakhaberisdze" + "dynn_Kherkheulidze" + "dynn_Mankaberdeli" + "dynn_Khimshiashvili" + "dynn_Shervashidze" + "dynn_Dadiani" + "dynn_Kobulashvili" + "dynn_Machutadze" + "dynn_Gamrekeli" + "dynn_Mikeladze" + "dynn_Mkhetsidze" + "dynn_Taoeli" + "dynn_Palavandishvili" + } + + dynasty_names = { + "dynn_Jaqeli" + "dynn_Sologashvili" + "dynn_Tavdgiridze" + "dynn_Vakhvakhishvili" + "dynn_Baghvashi" + "dynn_Apokapes" + "dynn_Andronikashvili" + "dynn_Gurieli" + "dynn_Abuserisdze" + "dynn_Surameli" + "dynn_Zevdginidze" + "dynn_Amirejibi" + "dynn_Abazasdze" + "dynn_Abuladze" + "dynn_Chkhetidze" + "dynn_Gelovani" + "dynn_Panaskerteli" + "dynn_Agiashvili" + "dynn_Kachibadze" + "dynn_Chavchavadze" + "dynn_Cholokashvili" + "dynn_Diasamidze" + "dynn_Khursidze" + "dynn_Shildisani" + "dynn_Shavliani" + "dynn_Donauri" + "dynn_Orbeliani" + "dynn_Japaridze" + "dynn_Javakhishvili" + "dynn_Jorjadze" + "dynn_Mkhargrdzeli" + "dynn_Kakhaberisdze" + "dynn_Kherkheulidze" + "dynn_Mankaberdeli" + "dynn_Khimshiashvili" + "dynn_Shervashidze" + "dynn_Dadiani" + "dynn_Kobulashvili" + "dynn_Machutadze" + "dynn_Gamrekeli" + "dynn_Mikeladze" + "dynn_Mkhetsidze" + "dynn_Taoeli" + "dynn_Palavandishvili" + } + + male_names = { + Adarnase Aghsartan Aleksandre Andronik Anzori Archili Ashot Bagrat Bakur Davit Demetre Demna Djavakhi Erekle Gabrieli Gagiki Giorgi Grigoli Guaram Gubaz + Gurgen Iese Ioane Ishkhanik Iveri Jarji Kaikhosro Kakhi Koba Konstantine Kvarkvare Kvirike Levan Luarsab Malkhazi Mamia Merab Mikheil Mukhran Nerse Nikoloz Okhropir Orbeli + Padla Samoeli Shanshe Shota Simon Stepanoz Sumbat Teimuraz Tornike Ushisha Vache Vakhtang Zurab Zviad + } + + female_names = { + Ana Baia Bedisa Borena Chiora Chito Dali Dedika Duda Dzabuli Elene Eliso Endzela Gogutsa Gulchara Guliko Gulisa Gulvardi Guranduht Gvantsa Ia Judjuna + Kekela Ketevan Lamara Lamzira Lela Mariami Mathiko Mthvarisa Mzekhar Natia Nino Rusudan Sanatha Shorena Shukhia Suliko + Tamari Taplo Tinatini Tsiala Vardo + } + + dynasty_of_location_prefix = "dynnp_ve" + + patronym_suffix_male = "dynnpat_suf_s_dze" + patronym_suffix_female = "dynnpat_suf_shvili" + + + + mercenary_names = { + { name = mercenary_company_veterans_of_chaldia } + } +} + +name_list_assyrian = { + + cadet_dynasty_names = { + "dynn_Bukhtishu" + "dynn_Qatwa" + "dynn_Nimreh" + "dynn_Gazarta" + "dynn_Salamas" + "dynn_Zakho" + "dynn_Arbilaya" + } + + dynasty_names = { + "dynn_Bukhtishu" + "dynn_Qatwa" + "dynn_Nimreh" + "dynn_Gazarta" + "dynn_Salamas" + "dynn_Zakho" + "dynn_Arbilaya" + } + + male_names = { + Aba Abahu Abaya Abaye Abayi Abba Abdima Abdisho Abgar Abimalek Abraham Abris Abrisius Acacius Achan Achina Addai + Adlai Aggai Ahai Ahadabui Ahha Akha_d_abuh Akh_es_Samain Aqib_Alaha Asa Ashur Avahu Avda Avdima Avdimi Avina Avira Azai + Babaeus Babai Babowai Babwahi Bar Bar_Abba Barba_shimin Bar_Nabha Bar_Talmai Bar_Timai Bar_Tolmai Bustan + Caiaphas Cephas Cephus Chadlai Chama Chanin Chanina Chaninai Chinena Chozai Chuma Chunya Clopas + Dadisho Denha Dikla Diklah Dimi Dinkha Dunanu Elisha Eliya Emmanuel Enosh Ezekiel Farbokht Foma Giwargis Grwgari + Hanina Hnanisho Hozai Idan Idra Ila Isaac Isho Isho_yahb Israel Kaiapha Karna Katsiu Kelaya + Laszio Lazar Lazare Lazaro Lazaros Lazarus Lazarz Lazer Lebbaeus Maadai Macabee Maccabee Magna Makkikha Maluch Ma_na Marabokht Maremmeh Mari Mikha_il Moqli Muna + Nahir Nahor Nahur Narsai Nazuk Nechunya Nehor Nehorai Niv Nun Nur Oran Pappa Paul Pethion Petros Petuel Qaligh Qayyoma Raca Rachim Rahim Raka Raz Raziel Rubil + Saad Saba Sabah Sabba_e Sabrisho Sabr_Ishu Salu Samal Sami Samiy Sagi Sargis Sava Sawma Shafer Shahdost + Shahlufa Shai Shalmai Shama Shamir Shammai Shemaiah Shem_on Sheraga Shila Shovai Shraga Sima Sliba-zkha Surin + Tabbai Taddai Talia Taliah Talmai Talya Tam Tam_as Ta_mhas Targhal Tauma Tavi Tavish Tevis Th_amhais Thoma Timai Tiv Toba Todos Tolmai Tomarsa Tamuza Tulmay + Ukba Yahballaha Yanai Ya_qob Yeshua Yohannan Yosip Yousef Yunanis Zerika + } + + female_names = { + Adva Alya Anena Anina Bustan Chanina Chasina Chayuta China Chiyuta + Dikla Diklah Diklit Duvsha Hanina Hasna Hayuta Hina Ketina Kitra + Magdala Mahalia Mahalie Marfa Mariam Marta Marte Martha Marthe Marti + Martita Mehalia Meiriona Meirona Morta Nahara Nura Raz Reuma + Saba Sabah Samantha Sameah Samee Sameea Samiya Samiyah Samiyya Samya Sava Shapira Sima + Tabatha Tabby Tabetha Tabitha Tadea Talia Taliah Talya Talitha + Tam Tamasin Tami Tammy Tamsin Tamsyn Tamzin Thaddea Thomasa + Zeita Zeta + } + + dynasty_of_location_prefix = "dynnp_of" + + patronym_prefix_male = "dynnpat_pre_Bar" + patronym_prefix_female = "dynnpat_pre_Barta" + + +} diff --git a/common/culture/name_lists/00_central_germanic.txt b/common/culture/name_lists/00_central_germanic.txt new file mode 100644 index 00000000..edcfb6f6 --- /dev/null +++ b/common/culture/name_lists/00_central_germanic.txt @@ -0,0 +1,1235 @@ +name_list_saxon = { + + cadet_dynasty_names = { + { "dynnp_von" "dynn_Brandenburg" } + { "dynnp_von" "dynn_Holstein" } + { "dynnp_von" "dynn_Slesvig" } + { "dynn_Wettin" } + { "dynnp_von" "dynn_Wettin" } + { "dynnp_von" "dynn_Versfleth" } + { "dynnp_von" "dynn_Winzenburg" } + { "dynn_Witte" } + { "dynnp_von" "dynn_Hagen" } + { "dynn_Steneke" } + { "dynn_Pleskow" } + { "dynnp_von" "dynn_Wunstorf" } + { "dynnp_von" "dynn_Goltern" } + { "dynnp_von" "dynn_WO_lpe" } + { "dynnp_von" "dynn_Are" } + { "dynnp_von" "dynn_Steinfurt" } + { "dynnp_von" "dynn_Tecklenburg" } + { "dynnp_von" "dynn_Ravensberg" } + { "dynnp_von" "dynn_Weyhe" } + { "dynnp_von" "dynn_Hoya" } + { "dynnp_von" "dynn_Buxthoeven" } + { "dynnp_von" "dynn_Schwerin" } + { "dynnp_von" "dynn_Haseldorf" } + { "dynnp_von" "dynn_Friesack" } + { "dynnp_von" "dynn_Badewide" } + { "dynnp_von" "dynn_Wassel" } + { "dynnp_von" "dynn_Dassel" } + { "dynnp_von" "dynn_der_Lippe" } + { "dynnp_von" "dynn_Schauenburg" } + { "dynnp_von" "dynn_Segeberg" } + { "dynn_Pahlen" } + { "dynnp_von" "dynn_Utlede" } + { "dynn_Niklotid" } + { "dynnp_von" "dynn_Arnsberg" } + { "dynnp_von" "dynn_Liebnitz" } + { "dynnp_von" "dynn_Bardewik" } + { "dynn_Vorrade" } + { "dynn_Warendorp" } + { "dynn_LU_neburg" } + { "dynn_Wittenborg" } + { "dynnp_von" "dynn_Klingenberg" } + { "dynnp_von" "dynn_Parchim" } + { "dynnp_von" "dynn_Hanover" } + { "dynnp_von" "dynn_Pommern" } + { "dynnp_von" "dynn_RU_gen" } + { "dynnp_von" "dynn_Wittenberg" } + { "dynnp_von" "dynn_Stade" } + { "dynnp_von" "dynn_Sachsen" } + { "dynn_Brunswick" } + { "dynn_Ydulfing" } + { "dynnp_von" "dynn_Stad" } + { "dynnp_von" "dynn_Ringelheim" } + { "dynn_Wullenpund" } + { "dynnp_von" "dynn_MO_lln" } + { "dynnp_von" "dynn_Arneburg" } + { "dynnp_von" "dynn_Seeburg" } + { "dynnp_von" "dynn_Bocksberg" } + { "dynnp_von" "dynn_Rugen" } + { "dynnp_von" "dynn_Ratzeburg" } + { "dynnp_von" "dynn_Schlawe" } + { "dynnp_von" "dynn_Kiel" } + { "dynnp_von" "dynn_Rostock" } + { "dynnp_von" "dynn_Gustrow" } + { "dynnp_von" "dynn_Rendsburg" } + { "dynnp_von" "dynn_Neuhaus" } + { "dynnp_von" "dynn_FU_rstenberg" } + { "dynnp_von" "dynn_Braunschweig" } + { "dynnp_von" "dynn_Celle" } + { "dynnp_von" "dynn_Mecklemburg" } + { "dynnp_von" "dynn_LU_beck" } + { "dynnp_von" "dynn_Amsberg" } + { "dynnp_von" "dynn_Altmark" } + { "dynnp_von" "dynn_Anhalt" } + { "dynnp_von" "dynn_Plauen" } + { "dynnp_von" "dynn_Ascania" } + { "dynnp_von" "dynn_Stettin" } + { "dynnp_von" "dynn_Bismarck" } + { "dynnp_von" "dynn_Bodeck" } + } + + dynasty_names = { + { "dynnp_von" "dynn_RU_gen" } + { "dynnp_von" "dynn_Mecklemburg" } + { "dynnp_von" "dynn_Wittenberg" } + { "dynnp_von" "dynn_Brandenburg" } + { "dynnp_von" "dynn_Holstein" } + { "dynnp_von" "dynn_Rendsburg" } + { "dynnp_von" "dynn_Slesvig" } + { "dynnp_von" "dynn_Wettin" } + { "dynn_Wettin" } + { "dynnp_von" "dynn_Versfleth" } + { "dynnp_von" "dynn_Winzenburg" } + { "dynnp_von" "dynn_Stade" } + { "dynnp_von" "dynn_Stad" } + { "dynnp_von" "dynn_Sachsen" } + { "dynn_Brunswick" } + { "dynn_Ydulfing" } + { "dynnp_von" "dynn_Ringelheim" } + { "dynn_Witte" } + { "dynn_Steneke" } + { "dynn_Pleskow" } + { "dynn_Wullenpund" } + { "dynnp_von" "dynn_MO_lln" } + { "dynnp_von" "dynn_Hagen" } + { "dynnp_von" "dynn_Wunstorf" } + { "dynnp_von" "dynn_Goltern" } + { "dynnp_von" "dynn_WO_lpe" } + { "dynnp_von" "dynn_Are" } + { "dynnp_von" "dynn_Steinfurt" } + { "dynnp_von" "dynn_Tecklenburg" } + { "dynnp_von" "dynn_Ravensberg" } + { "dynnp_von" "dynn_Weyhe" } + { "dynnp_von" "dynn_Hoya" } + { "dynnp_von" "dynn_Buxthoeven" } + { "dynnp_von" "dynn_Schwerin" } + { "dynnp_von" "dynn_Haseldorf" } + { "dynnp_von" "dynn_Friesack" } + { "dynnp_von" "dynn_Badewide" } + { "dynnp_von" "dynn_Wassel" } + { "dynnp_von" "dynn_Dassel" } + { "dynnp_von" "dynn_Arneburg" } + { "dynnp_von" "dynn_Seeburg" } + { "dynnp_von" "dynn_Bocksberg" } + { "dynnp_von" "dynn_Rugen" } + { "dynnp_von" "dynn_Ratzeburg" } + { "dynnp_von" "dynn_Schlawe" } + { "dynnp_von" "dynn_Kiel" } + { "dynnp_von" "dynn_Rostock" } + { "dynnp_von" "dynn_Gustrow" } + { "dynnp_von" "dynn_der_Lippe" } + { "dynnp_von" "dynn_Schauenburg" } + { "dynnp_von" "dynn_Segeberg" } + { "dynn_Pahlen" } + { "dynnp_von" "dynn_Neuhaus" } + { "dynnp_von" "dynn_FU_rstenberg" } + { "dynnp_von" "dynn_Braunschweig" } + { "dynnp_von" "dynn_Celle" } + { "dynnp_von" "dynn_LU_beck" } + { "dynnp_von" "dynn_Amsberg" } + { "dynnp_von" "dynn_Altmark" } + { "dynnp_von" "dynn_Anhalt" } + { "dynnp_von" "dynn_Plauen" } + { "dynnp_von" "dynn_Ascania" } + { "dynnp_von" "dynn_Stettin" } + { "dynnp_von" "dynn_Bismarck" } + { "dynnp_von" "dynn_Bodeck" } + { "dynnp_von" "dynn_Utlede" } + { "dynn_Niklotid" } + { "dynnp_von" "dynn_Arnsberg" } + { "dynnp_von" "dynn_Liebnitz" } + { "dynnp_von" "dynn_Bardewik" } + { "dynn_Vorrade" } + { "dynn_Warendorp" } + { "dynn_LU_neburg" } + { "dynn_Wittenborg" } + { "dynnp_von" "dynn_Klingenberg" } + { "dynnp_von" "dynn_Parchim" } + { "dynnp_von" "dynn_Hanover" } + } + + male_names = { + Abo Adalbero Adalbert Adalbrand Adaldag Adalgar Adalgod Adolf Aelle Albrecht Alebrand Altfrid Anno Ansgar Arnd Arnold Asig + Balduin Balthasar Banzleib Beneke Benno Bernd + Bernhard Bertold Bertram Boddic Brun Bruno Burchard Cissa Claus Cobbo Cord Cyprian + Dago Dedo Dethard Detleff Detmar Diederik Donar Drogo + Eggerd Egilmar Ekbert Engelbert Engelhard Erik Erp Esiko Everd Ewald Ezzo + Floribert Folmar Freawine Frederik + Gehrke Gelder Gero Gerold Gevert Ghert Giselher Giselmar Gosschalk Goswin Gunzelin GO_dke GU_nther + Haimirich Hans Harthgate Hartwig Hatto Heideke Heimrich Hengest Henneke Herberd Hermann Hezilo Hildebold Hinrik Hoger Hulderic Humfried + Immed Isidor + Jacob Jaspar Jochim Johann Juries + Kersten KO_pke + Laurentz Lembert Leuderic Liawizo Liemar Liudger Liudolf Luder Ludolf Ludwig + Magnus Marbold Marquard Mathias Meginhard Meinwerk Merten Michael + Norbert + Odo Ordulf Oldrik + Peter Philipp + Radke Reginbern Reinbern Reineke Reinmar Rudigar Rudolf Rutger + Sigbert Sigfrid Sigward Simon Steffen + Thankmar Theoderic Theodoric Theodwin Thietmar Thimo Thomas Tobe Tymmeke + Udu Otto Unwan + Viric Volkwin Volrad + Walbert Waldemar Waldered Waltard Walter Warin Warinechin Wecta Wenzel Wernhard Werneke Werner Weybrecht Wichbert Wichmann Wicho Widukind Wigebert Wilbrand Willichin Withgils Witikind Witta Wlencing Wolter Wulff Thurgot + } + female_names = { + Addila Adelheid Alof Agnes Anna Athela + Beatrix Bertha Bertrada Bia Bisina Bithild Brigida + Christina + Diedke + Eilika Elisabeth Enda + Frederuna + Geilana Gerberga Gertrud Gisela Glismod + Hadwig Hasala Heilwig Helene Hildegard Hrothwina + Ida Imma Irmgard Irminburg + Jutta + Katharina Kunigunde + Liutgard Liutswind Luitgard + Margarete Mathilde Mechthild + Oda Othelindis + Radegund Reginlint Richardis Rodelinda + Sophia Suanhilde + Theodrada Thiedburga + Wienke Wiltrud Wulfhild + } + dynasty_of_location_prefix = "dynnp_von" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 5 + father_name_chance = 10 + patronym_suffix_male = "dynnpat_suf_son" + patronym_suffix_female = "dynnpat_suf_son" + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_teutonic_brotherhood" } + { name = "mercenary_company_saxon_steelbearers" } + { name = "mercenary_company_hansa_guard" } + { name = "mercenary_company_sons_of_widukind" } + { name = "mercenary_company_veterans_of_the_marches" } + } +} + +name_list_franconian = { + + cadet_dynasty_names = { + { "dynnp_von" "dynn_Franconia" } + { "dynnp_von" "dynn_ThU_ringen" } + { "dynnp_von" "dynn_Glogau" } + { "dynn_Weimar" } + { "dynnp_von" "dynn_Weimar" } + { "dynnp_von" "dynn_Kleve" } + { "dynnp_von" "dynn_Wickerode" } + { "dynnp_von" "dynn_Arstein" } + { "dynnp_von" "dynn_Veldenz" } + { "dynnp_von" "dynn_Franken" } + { "dynn_Babenberg" } + { "dynnp_von" "dynn_Babenberg" } + { "dynnp_von" "dynn_Saarbrucken" } + { "dynnp_von" "dynn_Henneberg" } + { "dynnp_von" "dynn_Nassau" } + { "dynnp_von" "dynn_Heimbach" } + { "dynnp_von" "dynn_Vianden" } + { "dynnp_von" "dynn_NO_rvenich" } + { "dynnp_von" "dynn_JU_lich" } + { "dynnp_von" "dynn_Eppstein" } + { "dynnp_von" "dynn_Metz" } + { "dynn_Roes" } + { "dynnp_von" "dynn_Hornes" } + { "dynn_Bluome" } + { "dynnp_von" "dynn_Schweinfurt" } + { "dynnp_de" "dynn_Luxembourg" } + { "dynn_Hainaut" } + { "dynnp_von" "dynn_Boulogne" } + { "dynnp_von" "dynn_Arnstein" } + { "dynnp_von" "dynn_KO_ln" } + { "dynnp_von" "dynn_Wippra" } + { "dynnp_von" "dynn_Isenberg" } + { "dynnp_von" "dynn_der_Mark" } + { "dynnp_von" "dynn_Diest" } + { "dynnp_von" "dynn_Rietberg" } + { "dynnp_von" "dynn_RU_ssel" } + { "dynnp_von" "dynn_Waldeck" } + { "dynnp_von" "dynn_Bassenheim" } + { "dynnp_von" "dynn_Kerpen" } + { "dynnp_von" "dynn_Tunna" } + { "dynnp_von" "dynn_Salza" } + { "dynnp_von" "dynn_Malberg" } + { "dynnp_von" "dynn_Hohenlohe" } + { "dynnp_von" "dynn_WU_llersleben" } + { "dynnp_von" "dynn_Osterna" } + { "dynnp_von" "dynn_Heldrungen" } + { "dynnp_von" "dynn_Schwanden" } + { "dynnp_von" "dynn_Feuchtwangen" } + { "dynnp_von" "dynn_Trier" } + { "dynnp_von" "dynn_Orseln" } + { "dynnp_von" "dynn_Nauen" } + { "dynn_Suerbeer" } + { "dynnp_von" "dynn_Lunen" } + { "dynnp_von" "dynn_Vechta" } + { "dynn_Pernstein" } + { "dynnp_von" "dynn_Pernstein" } + { "dynnp_von" "dynn_Dorpat" } + { "dynnp_von" "dynn_Vyshusen" } + { "dynnp_von" "dynn_Dolen" } + { "dynnp_von" "dynn_O_sel" } + { "dynnp_von" "dynn_Ziegenhain" } + { "dynnp_von" "dynn_Dinslaken" } + { "dynnp_von" "dynn_Pluyvoise" } + { "dynnp_von" "dynn_Leistenberg" } + { "dynnp_von" "dynn_Schwarzburg" } + { "dynnp_von" "dynn_GrU_nberg" } + { "dynnp_von" "dynn_Gudensberg" } + { "dynnp_von" "dynn_Saffenberg" } + { "dynnp_von" "dynn_Naumburg" } + { "dynnp_von" "dynn_Schrapelnau" } + { "dynnp_von" "dynn_Wangen" } + { "dynnp_von" "dynn_Leiningen" } + { "dynnp_von" "dynn_Salm" } + { "dynnp_von" "dynn_Sayn" } + { "dynnp_von" "dynn_Altenburg" } + { "dynnp_von" "dynn_Monheim" } + { "dynnp_von" "dynn_GO_ttingen" } + { "dynnp_von" "dynn_Mainz" } + { "dynnp_von" "dynn_Altena" } + { "dynnp_von" "dynn_Regenstein" } + { "dynn_Grelle" } + { "dynnp_von" "dynn_Silesia-Glogau" } + { "dynnp_von" "dynn_Brabant" } + { "dynnp_von" "dynn_Puteledorg" } + { "dynnp_von" "dynn_Lusatia" } + { "dynn_Orlamunde" } + { "dynnp_von" "dynn_Egisheim" } + { "dynnp_von" "dynn_Carenwall" } + { "dynnp_von" "dynn_Mansfeld" } + { "dynnp_von" "dynn_Magdeburg" } + { "dynnp_von" "dynn_Kyrburg" } + { "dynnp_von" "dynn_Stolzenberg" } + { "dynnp_von" "dynn_Geroldseck" } + { "dynnp_von" "dynn_Vinstingen" } + { "dynnp_von" "dynn_Schoenecken" } + { "dynnp_von" "dynn_Daun" } + { "dynnp_von" "dynn_Limpurg" } + { "dynnp_von" "dynn_Hohenfels" } + { "dynnp_von" "dynn_Hunolstein" } + { "dynnp_von" "dynn_Blankenheim" } + { "dynnp_von" "dynn_Falkenstein" } + { "dynnp_von" "dynn_Bikkenbach" } + { "dynnp_von" "dynn_Heinsberg" } + { "dynnp_von" "dynn_Muhlhausen" } + { "dynnp_von" "dynn_LO_venstein" } + { "dynnp_von" "dynn_Assel" } + { "dynn_Kaunitz" } + { "dynn_Bach" } + { "dynnp_von" "dynn_Andernach" } + { "dynnp_von" "dynn_Pfalz" } + { "dynnp_von" "dynn_Lothringen" } + { "dynn_Brauchitsch" } + { "dynnp_von" "dynn_der_Marck" } + { "dynnp_von" "dynn_Hessen" } + { "dynnp_von" "dynn_Virneberg" } + { "dynnp_de" "dynn_Montjoie" } + { "dynn_RU_bsamen" } + } + + dynasty_names = { + { "dynnp_von" "dynn_Silesia-Glogau" } + { "dynnp_von" "dynn_Glogau" } + { "dynnp_von" "dynn_Heinsberg" } + { "dynnp_von" "dynn_Weimar" } + { "dynn_Weimar" } + { "dynnp_von" "dynn_Kleve" } + { "dynnp_von" "dynn_Wickerode" } + { "dynnp_von" "dynn_ThU_ringen" } + { "dynnp_von" "dynn_Arstein" } + { "dynnp_von" "dynn_Veldenz" } + { "dynnp_von" "dynn_Franken" } + { "dynnp_von" "dynn_Babenberg" } + { "dynn_Babenberg" } + { "dynnp_von" "dynn_Saarbrucken" } + { "dynnp_von" "dynn_Puteledorg" } + { "dynnp_von" "dynn_Henneberg" } + { "dynnp_von" "dynn_Nassau" } + { "dynnp_von" "dynn_Heimbach" } + { "dynnp_von" "dynn_Vianden" } + { "dynnp_von" "dynn_NO_rvenich" } + { "dynnp_von" "dynn_JU_lich" } + { "dynnp_von" "dynn_Eppstein" } + { "dynnp_von" "dynn_Metz" } + { "dynn_Roes" } + { "dynnp_von" "dynn_Hornes" } + { "dynn_Bluome" } + { "dynnp_von" "dynn_Schweinfurt" } + { "dynnp_de" "dynn_Luxembourg" } + { "dynn_Hainaut" } + { "dynnp_von" "dynn_Boulogne" } + { "dynnp_von" "dynn_Lusatia" } + { "dynn_Orlamunde" } + { "dynnp_von" "dynn_Egisheim" } + { "dynnp_von" "dynn_Carenwall" } + { "dynnp_von" "dynn_Arnstein" } + { "dynnp_von" "dynn_KO_ln" } + { "dynnp_von" "dynn_Wippra" } + { "dynnp_von" "dynn_Isenberg" } + { "dynnp_von" "dynn_der_Mark" } + { "dynnp_von" "dynn_Diest" } + { "dynnp_von" "dynn_Rietberg" } + { "dynnp_von" "dynn_RU_ssel" } + { "dynnp_von" "dynn_Waldeck" } + { "dynnp_von" "dynn_Bassenheim" } + { "dynnp_von" "dynn_Kerpen" } + { "dynnp_von" "dynn_Tunna" } + { "dynnp_von" "dynn_Salza" } + { "dynnp_von" "dynn_Malberg" } + { "dynnp_von" "dynn_Hohenlohe" } + { "dynnp_von" "dynn_WU_llersleben" } + { "dynnp_von" "dynn_Osterna" } + { "dynnp_von" "dynn_Heldrungen" } + { "dynnp_von" "dynn_Schwanden" } + { "dynnp_von" "dynn_Feuchtwangen" } + { "dynnp_von" "dynn_Trier" } + { "dynnp_von" "dynn_Orseln" } + { "dynnp_von" "dynn_Nauen" } + { "dynn_Suerbeer" } + { "dynnp_von" "dynn_Lunen" } + { "dynnp_von" "dynn_Vechta" } + { "dynnp_von" "dynn_Pernstein" } + { "dynn_Pernstein" } + { "dynnp_von" "dynn_Dorpat" } + { "dynnp_von" "dynn_Vyshusen" } + { "dynnp_von" "dynn_Dolen" } + { "dynnp_von" "dynn_O_sel" } + { "dynnp_von" "dynn_Ziegenhain" } + { "dynnp_von" "dynn_Dinslaken" } + { "dynnp_von" "dynn_Pluyvoise" } + { "dynnp_von" "dynn_Leistenberg" } + { "dynnp_von" "dynn_Schwarzburg" } + { "dynnp_von" "dynn_GrU_nberg" } + { "dynnp_von" "dynn_Gudensberg" } + { "dynnp_von" "dynn_Saffenberg" } + { "dynnp_von" "dynn_Naumburg" } + { "dynnp_von" "dynn_Schrapelnau" } + { "dynnp_von" "dynn_Mansfeld" } + { "dynnp_von" "dynn_Magdeburg" } + { "dynnp_von" "dynn_Kyrburg" } + { "dynnp_von" "dynn_Stolzenberg" } + { "dynnp_von" "dynn_Wangen" } + { "dynnp_von" "dynn_Leiningen" } + { "dynnp_von" "dynn_Salm" } + { "dynnp_von" "dynn_Sayn" } + { "dynnp_von" "dynn_Geroldseck" } + { "dynnp_von" "dynn_Vinstingen" } + { "dynnp_von" "dynn_Schoenecken" } + { "dynnp_von" "dynn_Daun" } + { "dynnp_von" "dynn_Limpurg" } + { "dynnp_von" "dynn_Hohenfels" } + { "dynnp_von" "dynn_Hunolstein" } + { "dynnp_von" "dynn_Blankenheim" } + { "dynnp_von" "dynn_Falkenstein" } + { "dynnp_von" "dynn_Bikkenbach" } + { "dynnp_von" "dynn_Muhlhausen" } + { "dynnp_von" "dynn_LO_venstein" } + { "dynnp_von" "dynn_Assel" } + { "dynn_Kaunitz" } + { "dynn_Bach" } + { "dynnp_von" "dynn_Andernach" } + { "dynnp_von" "dynn_Pfalz" } + { "dynnp_von" "dynn_Altenburg" } + { "dynnp_von" "dynn_Monheim" } + { "dynnp_von" "dynn_Brabant" } + { "dynnp_von" "dynn_GO_ttingen" } + { "dynnp_von" "dynn_Mainz" } + { "dynnp_von" "dynn_Lothringen" } + { "dynn_Brauchitsch" } + { "dynnp_von" "dynn_der_Marck" } + { "dynnp_von" "dynn_Hessen" } + { "dynnp_von" "dynn_Virneberg" } + { "dynnp_de" "dynn_Montjoie" } + { "dynn_RU_bsamen" } + { "dynnp_von" "dynn_Altena" } + { "dynnp_von" "dynn_Regenstein" } + { "dynn_Grelle" } + } + + male_names = { + Adalbero Adalbert Adalgod Adalhard Adam Ademar Adolf Alarich Alberich Albrecht Amadeus Amalrich Andreas Anno Anselm Ansgar Archembald Arnold Arnulf Augustin + Baldarich Baldewin Baldomar Baldur Berard Berengar Bernhard Berthold Bruno Burchard + Christopher + Dieter Dietmar Dietpold Dietrich Dietwin Drogo + Eberhard Eginolf Ehrenfried Ekbert Ekkehard Emelrich Emich Emmerich Emund Engelbert Erich Ernst Ezzo + Farabert Ferdinand Filibert Folkhard Folkmar Folmar Franz Friedrich + Gautselin Gebhard Georg Gerhard Gerlach Giselbert Gottfried Gotthard Gottschalk Gotzelo Guntram Gunzelin GU_nther + Hans Hartmann Hartwig Hardwin Hatto Heinrich Helferich Heribert Hermann Herold Hesso Hoger Hugo Humbert Hupold + Iwo + Jakob Johann JU_rgen + Karl Karlmann Kaspar Konrad Kuno + Lambert Landolf Leopold Liudolf Liutbert Liutbrand Liutpold Lothar Ludolf Ludwig Lutbert + Magnus Manegold Manfred Markward Martin Matthias Meginhard Meginher Meinhard Michael Milo + Nikolaus Norbert + Otbert Otto + Peter Philipp Poppo + Radbot Reginar Reinhard Reinhold Rudolf Ruprecht Rutger + Siegfried Sieghard Siegmund Sigismund Simon Stefan + Tagino Thachulf Thankulf Theodorich Thietmar Thomas + Udalrich Ulrich + Viktor Waldemar + Walram Walther Walter Welf Wenzel Wernhard Werner Wido Wigerich Wilbert Wilhelm Wolfgang Wolfram + } + female_names = { + Adela Adelheid Adelinde Agathe Agnes Alberade Amalberga Amalie + Barbara Beatrix Benedicta Berchte Berta Brunhilde + Cecilie Christine Cothilda + Dorothea + Elisabeth Emma Engeltraud Ermengard Eufemia + Frida Friedrica + Gerberga Gerhild Gertrude Gisela Gudrun Gunhilda + Hedwig Heike Heilwiva Helene Helga Hemma Henrike Heylwig Hildeburg Hildegard + Ida Ilsa Inga Ingeltrude Irmele Irmeltrud Irmgard Isentrude + Jutta + Karlotte Katharina Klara Klementia Konstanze Kriemhild Kunigunde + Luitgard + Margarete Maria Mechthild + Oda Osterhild + Richara Richenza Richwara Romilda + Serhilda Sofie Sybille + Trude + Ulrike Ursula Ute + Walpurga Wilhelmina Wiltrud Winfrida Wulfhilde + } + dynasty_of_location_prefix = "dynnp_von" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 5 + father_name_chance = 10 + patronym_suffix_male = "dynnpat_suf_son" + patronym_suffix_female = "dynnpat_suf_son" + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_great_company" coat_of_arms = "mc_great_company" } + { name = "mercenary_company_franconian_company" } + { name = "mercenary_company_thuringian_blades" } + { name = "mercenary_company_rhenish_band" } + { name = "mercenary_company_new_franks" } + } +} + +name_list_swabian = { + + cadet_dynasty_names = { + { "dynnp_von" "dynn_Swabia" } + { "dynnp_von" "dynn_Berg-Schelklingen" } + { "dynnp_von" "dynn_Hohenstauf" } + { "dynnp_von" "dynn_Kirchberg" } + { "dynnp_von" "dynn_WU_rttemberg" } + { "dynnp_von" "dynn_TU_bingen" } + { "dynnp_von" "dynn_ZA_hringen" } + { "dynnp_von" "dynn_Komburg" } + { "dynnp_von" "dynn_Scharfenberg" } + { "dynnp_von" "dynn_Grenchen" } + { "dynnp_von" "dynn_Lichtenberg" } + { "dynnp_von" "dynn_Hachberg" } + { "dynnp_von" "dynn_Wartenberg" } + { "dynnp_von" "dynn_Wolfach" } + { "dynnp_von" "dynn_Signau" } + { "dynnp_zu" "dynn_Schwaben" } + { "dynnp_von" "dynn_Schwaben" } + { "dynnp_von" "dynn_Tschudi" } + { "dynnp_von" "dynn_Urslingen" } + { "dynnp_von" "dynn_Neuchatel" } + { "dynnp_von" "dynn_Schwyz" } + { "dynnp_von" "dynn_Ulm" } + { "dynnp_von" "dynn_Arbon" } + { "dynnp_von" "dynn_Bucheck" } + { "dynnp_von" "dynn_Genf" } + { "dynn_Schauenburger" } + { "dynn_Oeningen" } + { "dynnp_von" "dynn_Eikenschild" } + { "dynnp_von" "dynn_Schmidtburg" } + { "dynnp_von" "dynn_Baumberg" } + { "dynnp_von" "dynn_Altenbaumberg" } + { "dynnp_von" "dynn_Veringen" } + { "dynnp_von" "dynn_Eselsberg" } + { "dynnp_von" "dynn_Landau" } + { "dynnp_von" "dynn_Glarus" } + { "dynnp_von" "dynn_Schwelz" } + { "dynnp_von" "dynn_Rosenberg" } + { "dynn_Bloch" } + { "dynnp_von" "dynn_Baden" } + { "dynnp_von" "dynn_Nordgau" } + { "dynnp_von" "dynn_Sundgau" } + { "dynnp_von" "dynn_Aargau" } + { "dynnp_von" "dynn_Bern" } + { "dynnp_von" "dynn_Breisgau" } + { "dynnp_von" "dynn_Berlichingen" } + { "dynnp_von" "dynn_Ohningen" } + { "dynnp_von" "dynn_Venis" } + { "dynnp_von" "dynn_Kyburg" } + { "dynn_Schmollinger" } + { "dynn_Beck" } + { "dynn_Walter" } + { "dynnp_von" "dynn_Eschenloch" } + { "dynnp_von" "dynn_Brunshorn" } + } + + dynasty_names = { + { "dynn_Wittelsbach" } + { "dynnp_von" "dynn_Wittelsbach" } + { "dynnp_von" "dynn_KA_rnten" } + { "dynnp_von" "dynn_O_sterreich" } + { "dynnp_von" "dynn_Otakar" } + { "dynnp_von" "dynn_Tirol" } + { "dynnp_von" "dynn_Berg-Schelklingen" } + { "dynnp_von" "dynn_Genf" } + { "dynnp_von" "dynn_Hohenstauf" } + { "dynnp_von" "dynn_Kirchberg" } + { "dynnp_von" "dynn_WU_rttemberg" } + { "dynnp_von" "dynn_TU_bingen" } + { "dynnp_von" "dynn_ZA_hringen" } + { "dynn_Schauenburger" } + { "dynn_Oeningen" } + { "dynnp_von" "dynn_Eikenschild" } + { "dynn_Schmollinger" } + { "dynnp_von" "dynn_Komburg" } + { "dynnp_von" "dynn_Scharfenberg" } + { "dynnp_von" "dynn_Grenchen" } + { "dynnp_von" "dynn_Lichtenberg" } + { "dynnp_von" "dynn_Hachberg" } + { "dynnp_von" "dynn_Wartenberg" } + { "dynnp_von" "dynn_Wolfach" } + { "dynnp_von" "dynn_Signau" } + { "dynn_Beck" } + { "dynnp_zu" "dynn_Schwaben" } + { "dynnp_von" "dynn_Eschenloch" } + { "dynnp_von" "dynn_Schmidtburg" } + { "dynnp_von" "dynn_Baumberg" } + { "dynnp_von" "dynn_Altenbaumberg" } + { "dynnp_von" "dynn_Brunshorn" } + { "dynnp_von" "dynn_Veringen" } + { "dynnp_von" "dynn_Eselsberg" } + { "dynnp_von" "dynn_Landau" } + { "dynnp_von" "dynn_Glarus" } + { "dynnp_von" "dynn_Schwelz" } + { "dynnp_von" "dynn_Tschudi" } + { "dynnp_von" "dynn_Rosenberg" } + { "dynn_Bloch" } + { "dynnp_von" "dynn_Baden" } + { "dynnp_von" "dynn_Nordgau" } + { "dynnp_von" "dynn_Sundgau" } + { "dynnp_von" "dynn_Aargau" } + { "dynnp_von" "dynn_Bern" } + { "dynnp_von" "dynn_Schwyz" } + { "dynnp_von" "dynn_Neuchatel" } + { "dynnp_von" "dynn_Urslingen" } + { "dynnp_von" "dynn_Breisgau" } + { "dynnp_von" "dynn_Ulm" } + { "dynnp_von" "dynn_Berlichingen" } + { "dynnp_von" "dynn_Ohningen" } + { "dynnp_von" "dynn_Venis" } + { "dynnp_von" "dynn_Kyburg" } + { "dynnp_von" "dynn_Arbon" } + { "dynnp_von" "dynn_Bucheck" } + { "dynn_Walter" } + } + + male_names = { + Adalbero Adalbert Adalhard Adam Ademar Adolf Alarich Alberich Albrecht Amadeus Amalrich Andreas Anno Anselm Ansgar Archembald Arnold Arnulf Augustin + Baldarich Baldewin Baldomar Baldur Berard Berengar Bernhard Berthold Bruno Burchard + Christopher + Dieter Dietmar Dietpold Dietrich Dietwin + Eberhard Eginolf Ehrenfried Ekbert Ekkehard Emelrich Emich Emmerich Emund Engelbert Erich Ernst Ezzo + Ferdinand Filibert Folkhard Folkmar Folmar Franz Friedrich + Gautselin Gebhard Georg Gerhard Gerlach Giselbert Gottfried Gotthard Gottschalk Gotzelo Guntram Gunzelin GU_nther + Hans Hartmann Hartwig Hardwin Hatto Heinrich Helferich Heribert Hermann Hesso Hugo Humbert Hunfrid Hupold + Iwo + Jakob Johann JU_rgen + Karl Karlmann Kaspar Konrad Kuno + Lambert Landolf Leopold Liudolf Liutbert Liutbrand Liutpold Lothar Ludolf Ludwig Lutbert + Magnus Manegold Manfred Markward Martin Matthias Meginhard Meinhard Michael Milo + Nikolaus Norbert Notker + Otto + Peter Philipp Poppo + Radbot Reinhard Reinhold Rudolf Ruprecht Rutger + Siegfried Sieghard Siegmund Sigismund Simon Stefan + Theodorich Thietmar Thomas + Udalrich Ulrich + Viktor Waldemar + Waldo Walram Walter Walther Welf Wenzel Wernhard Werner Wido Wigerich Wilhelm Wolfgang Wolfram + } + female_names = { + Adela Adelheid Adelinde Agathe Agnes Alberade Amalberga Amalie + Barbara Beatrix Benedicta Berchte Berta Brunhilde + Cecilie Christine Cothilda + Dorothea + Elisabeth Emma Engeltraud Ermengard Eufemia + Frida Friedrica + Gerberga Gerhild Gertrude Gisela Gudrun Gunhilda + Hedwig Heike Heilwiva Helene Helga Hemma Henrike Hildeburg Hildegard + Ida Ilsa Inga Ingeltrude Irmele Irmeltrud Irmgard Isentrude + Jutta + Karlotte Katharina Klara Klementia Konstanze Kriemhild Kunigunde + Luitgard + Margarete Maria Mechthild + Oda Osterhild + Richara Richenza Richwara Romilda + Serhilda Sofie Sybille + Trude + Ulrike Ursula Ute + Walpurga Wilhelmina Winfrida Wulfhilde + } + dynasty_of_location_prefix = "dynnp_von" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 5 + father_name_chance = 10 + patronym_suffix_male = "dynnpat_suf_son" + patronym_suffix_female = "dynnpat_suf_son" + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_swabian_band" } + { name = "mercenary_company_alsace_fighters" } + { name = "mercenary_company_alemannic_sellswords" } + { name = "mercenary_company_helvetic_guard" } + { name = "mercenary_company_swiss_guard" } + } +} + +name_list_bavarian = { + + cadet_dynasty_names = { + { "dynnp_von" "dynn_Wittelsbach" } + { "dynn_Wittelsbach" } + { "dynnp_von" "dynn_O_sterreich" } + { "dynnp_von" "dynn_Plain" } + { "dynnp_von" "dynn_Wasserburg" } + { "dynnp_von" "dynn_Lengenfeld" } + { "dynnp_von" "dynn_Eberstein" } + { "dynnp_von" "dynn_Andechs" } + { "dynnp_von" "dynn_Sulzbach" } + { "dynnp_von" "dynn_Bogen" } + { "dynnp_von" "dynn_Meissen" } + { "dynnp_von" "dynn_Tirol" } + { "dynnp_von" "dynn_Abensberg" } + { "dynnp_von" "dynn_Leibrechtskirchen" } + { "dynnp_von" "dynn_Treven" } + { "dynnp_von" "dynn_Attems" } + { "dynnp_von" "dynn_SchweipU_nt" } + { "dynnp_von" "dynn_Ortenburg" } + { "dynnp_von" "dynn_Beetzen" } + { "dynnp_von" "dynn_Cham" } + { "dynnp_von" "dynn_KA_rnten" } + { "dynnp_von" "dynn_Otakar" } + { "dynnp_von" "dynn_Landsberg" } + { "dynnp_von" "dynn_Raabs" } + { "dynnp_von" "dynn_Margrave" } + { "dynnp_von" "dynn_Dachau" } + { "dynnp_von" "dynn_LechsgmU_nd" } + { "dynnp_von" "dynn_Meran" } + { "dynnp_von" "dynn_Hardegg" } + { "dynnp_von" "dynn_Bamberg" } + { "dynnp_von" "dynn_Frontenhausen" } + { "dynnp_von" "dynn_Eurasburg" } + { "dynnp_von" "dynn_Stein" } + { "dynnp_von" "dynn_Friedenthal" } + { "dynnp_von" "dynn_Waldenstein" } + { "dynnp_von" "dynn_Ansbach" } + { "dynnp_von" "dynn_NU_rnberg" } + { "dynnp_von" "dynn_Arnim" } + { "dynnp_von" "dynn_Oberbayern" } + { "dynnp_von" "dynn_Niederbayern" } + { "dynnp_von" "dynn_Bibra" } + { "dynnp_von" "dynn_Cilli" } + { "dynn_Hildemar" } + { "dynn_Runese" } + { "dynn_Gross" } + { "dynn_Gualch" } + { "dynnp_von" "dynn_Liebschau" } + } + + dynasty_names = { + { "dynnp_von" "dynn_Plain" } + { "dynnp_von" "dynn_Wasserburg" } + { "dynnp_von" "dynn_Lengenfeld" } + { "dynnp_von" "dynn_Eberstein" } + { "dynnp_von" "dynn_Andechs" } + { "dynnp_von" "dynn_Sulzbach" } + { "dynnp_von" "dynn_Bogen" } + { "dynnp_von" "dynn_Meissen" } + { "dynnp_von" "dynn_Landsberg" } + { "dynnp_von" "dynn_Raabs" } + { "dynnp_von" "dynn_Margrave" } + { "dynn_Hildemar" } + { "dynn_Runese" } + { "dynn_Gross" } + { "dynn_Gualch" } + { "dynnp_von" "dynn_Dachau" } + { "dynnp_von" "dynn_LechsgmU_nd" } + { "dynnp_von" "dynn_Abensberg" } + { "dynnp_von" "dynn_Leibrechtskirchen" } + { "dynnp_von" "dynn_Treven" } + { "dynnp_von" "dynn_Attems" } + { "dynnp_von" "dynn_SchweipU_nt" } + { "dynnp_von" "dynn_Ortenburg" } + { "dynnp_von" "dynn_Meran" } + { "dynnp_von" "dynn_Hardegg" } + { "dynnp_von" "dynn_Bamberg" } + { "dynnp_von" "dynn_Frontenhausen" } + { "dynnp_von" "dynn_Eurasburg" } + { "dynnp_von" "dynn_Stein" } + { "dynnp_von" "dynn_Liebschau" } + { "dynnp_von" "dynn_Friedenthal" } + { "dynnp_von" "dynn_Waldenstein" } + { "dynnp_von" "dynn_Ansbach" } + { "dynnp_von" "dynn_NU_rnberg" } + { "dynnp_von" "dynn_Arnim" } + { "dynnp_von" "dynn_Oberbayern" } + { "dynnp_von" "dynn_Niederbayern" } + { "dynnp_von" "dynn_Beetzen" } + { "dynnp_von" "dynn_Bibra" } + { "dynnp_von" "dynn_Cilli" } + { "dynnp_von" "dynn_Cham" } + } + + male_names = { + Adalbert Adalwin Adolf Albero Albrecht Altmann Amelrich Andreas Anno Aribo Arnold Arnulf Azzo + Berengar Bernhard Berthold Bruno + Dietmar Dietpold Dietrich Dietwin + Eberhard Egilmar Ekbert Ekkehard Ellenhard Engelbert Engelmar Engelschalk Erich Ernst Eticho Ezzo + Folmar Friedrich + Garibald Gebhard Gerhard Gerold Gottfried Grimoald Gundakar Guntbald Guntbert Guntpolt + Hadmar Hartneid Hartwig Heilwich Heinrich Hereswind Heribert Hermann Herold Hugbert Hugo + Isanrich + Jakob Johann + Konrad Kuno + Lampert Lantfrid Lantpert Leutold Liupolt Liutfrid Lothar Ludolf Ludwig Luitpold Luther + Markwart Matthias Meginhard Meinhard + Nizzo + Odilo Otakar Otto Ottokar + Philipp Poppo + Rapoto Rasso Richer Rizzo Rothard Rudolf Ruprecht RU_diger + Stephan Siegfried Sieghart + Tassilo Thiemo Thimo + Udalschalk Udo Ulrich + Waldo Walter Weichart Weickhard Welf Wenzel Werigand Wernhard Wernher Wiknand Wilhelm Wolfgang Wolfram + } + female_names = { + Adelheid Agnes Andaberta Anna + Beatrix Berta Bertha Biltrude + Christine + Elisabeth Eugenia Emma Eilika Euphemia + Gerberga Gerbirg Gertrud Gertrude Gisela Guntrud + Haziga Hedwig Heilika Helene Hemma Hildegarde + Ida Imma Ingelrade Irmingard + Judith Jutta + Katharina Klara Kunigunde Kunizza + Luitgard Liutswind + Mathilde Margarethe Mechthild + Pilihilde + Ramhilde Richgard Richardis Richenza Richwara + Seburg Sophia Susanna + Tuta Theodorata Theodelinda + Ulrike Uta + Waldrada Wartrun Willa Willibirg + } + dynasty_of_location_prefix = "dynnp_von" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 5 + father_name_chance = 10 + patronym_suffix_male = "dynnpat_suf_son" + patronym_suffix_female = "dynnpat_suf_son" + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_bavarian_band" } + { name = "mercenary_company_austrian_company" } + { name = "mercenary_company_tyrol_warriors" } + { name = "mercenary_company_styrian_panthers" } + } +} + +name_list_frisian = { + dynasty_names = { + "dynn_Abdena" + "dynn_Allena" + "dynn_Andringa" + "dynn_Bauwenga" + "dynn_Beninga" + "dynn_Boltinge" + "dynn_Botta" + "dynn_Buning" + "dynn_Butzel" + "dynn_Cammingha" + "dynn_Cirksema" + "dynn_Clant" + "dynn_Coenders" + "dynn_Cordinghe" + "dynn_Dives" + "dynn_Ewsum" + "dynn_Folkerdinga" + "dynn_Gaykema" + "dynn_Ghetzerka" + "dynn_Gockinga" + "dynn_Goltraven" + "dynn_Haijkama" + "dynn_Harting" + "dynn_Heddama" + "dynn_Hedegu" + "dynn_Hedinge" + "dynn_Hornada" + "dynn_Hornekingh" + "dynn_Houwerda" + "dynn_Huginge" + "dynn_Huninga" + "dynn_Huwenga" + "dynn_Idzarda" + "dynn_Ildsisma" + "dynn_Jarges" + "dynn_Kalemere" + "dynn_Kater" + "dynn_Korenporta" + "dynn_Kote" + "dynn_Lewe" + "dynn_Manninga" + "dynn_Martena" + "dynn_Meckema" + "dynn_Mernseta" + "dynn_Niding" + "dynn_Oenema" + "dynn_Omken" + "dynn_Ommeloop" + "dynn_Onsta" + "dynn_Papinge" + "dynn_Poder" + "dynn_Pol" + "dynn_Popinghe" + "dynn_Potens" + "dynn_Reding" + "dynn_Remian" + "dynn_Rengers" + "dynn_Rickwardsma" + "dynn_Ripperda" + "dynn_Rodmersma" + "dynn_Schulte" + "dynn_Serda" + "dynn_Sickinge" + "dynn_Spegel" + "dynn_Stickel" + "dynn_Suanckerus" + "dynn_Swaneke" + "dynn_Tayingha" + "dynn_Tiddinga" + "dynn_Tjarksena" + "dynn_Ukena" + "dynn_Umbelap" + "dynn_Wiemken" + { "dynnp_de" "dynn_Aggere" } + { "dynnp_de" "dynn_Helpman" } + { "dynnp_de" "dynn_Mepsche" } + { "dynnp_van" "dynn_Hallum" } + } + + male_names = { + Adelbrik Aitet Aldgisl Audulf Auutet Avin Avo Avuko Avutet Bavo Bentet Bernhard Blekulf Blithulf Brunhard + Bubo BO_io Edulf Egildeg Eilbern Eilherd Eilulf Eilward Eldei Elderd Elhard Engilbald Enhard Entet Esulf Euitet + Euuerhard ET_elbern ET_elulf ET_elwi Focko Folcbald Folkbern Folkhard Folkward Frethirik Frethold Frethuhard Frethwi + Frithunath Geldulf Geltet Gerbald Gerbrand Gerbruht Gerdeg Gerhard Gerold Gerulf Gerwar + Gosse Habo Haring Hathuward Hatto Hebetet Helibad Hessel Hobern Hoitet HroT_hard HroT_ward Juw Liaftet Liudbad + Liudbald Liudger Liudgod Liudulf Liudward Liuppo Lubbiko Magnus Meginbraht Meginhard + Meginulf Meintet Menbold Menfrid Menger Menhard Menhold Meniko Mentet Menward Merulf Miginward Notheri + Occo Odo Osnath OsnoT_ Popetet Poppo Raeddeg Rauantet Redbad Reginhard Reinbern Reinier + Renhard Renward Riklef Rikwi Rodbern Saco Salaco Sibod Sibraht Sidei Sikke Silef Siward Siwi + Sjoerd Sytse Taco Tadaco Tado Thancward Thankbern Thiadbold Thiadbrund Thiaddi Thiaderd + Thiadulf Thiadward Thiadwi Thiedold Thonkrik Wambald Wening Wentet Wibad Wibraht Wibrund Wiftet Wigbald Wigerd + Wihard Wilbrand Wilco Wiltet Wulfnoth Ygo + } + female_names = { + Aleberna Alena Aleydis Alretieren Amalburga Amelgeir Atghardis Aue Auesoete Badeloghen Baua Berta + Bet Breghlent Brundonis Dieuwke Douwen Eingeliadis Elke Emgelberna Erkenradis Ermegardis + Esa Femke Fenna Folqui Gerburgis Ghela Ghodelde Hadewigis Heike Hersewindis Hodine Imma Imsoete Inka + Itsburgis Jeltsje Lenildis Liedelde Liudburgis Lutghardis Lys Maike Mareike Mette Minke Nienke + Rengnalda Volcwiif Wendelmodis Wiebke Wobbe Yda Ymmekine E_lidis + } + + dynasty_of_location_prefix = "dynnp_von" + + patronym_suffix_male = "dynnpat_suf_sson" + patronym_suffix_female = "dynnpat_suf_sdohtor" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 5 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 +} + +name_list_dutch = { + + cadet_dynasty_names = { + { "dynnp_van" "dynn_Loon" } + { "dynnp_von" "dynn_Geldern" } + { "dynnp_van" "dynn_Bonen" } + { "dynnp_van" "dynn_Sulzbach" } + { "dynnp_van" "dynn_Wassemberg" } + { "dynnp_van" "dynn_Geldern" } + { "dynnp_van" "dynn_Bergh" } + { "dynnp_van" "dynn_Brabant" } + { "dynnp_van" "dynn_Namen" } + { "dynnp_van" "dynn_Loon" } + { "dynnp_van" "dynn_Heinsberg" } + "dynn_De_Graeff" + { "dynnp_van" "dynn_Susa" } + "dynn_Groth" + { "dynnp_van" "dynn_Egmond" } + { "dynnp_van" "dynn_Amstel" } + { "dynnp_van" "dynn_Arkel" } + { "dynnp_van" "dynn_Boutershem" } + { "dynnp_van" "dynn_Brederode" } + { "dynnp_van" "dynn_Brunesheim" } + { "dynnp_van" "dynn_Breda" } + { "dynnp_van" "dynn_Heemskerk" } + { "dynnp_van" "dynn_Gaveren" } + { "dynnp_van" "dynn_Glymes" } + { "dynnp_van" "dynn_Grimberghe" } + { "dynnp_van" "dynn_Hurne" } + { "dynnp_van" "dynn_Renesse" } + { "dynnp_van" "dynn_Wesemael" } + { "dynnp_van" "dynn_Wassenaer" } + { "dynnp_van" "dynn_Rheden" } + { "dynnp_van" "dynn_Bronckhorst" } + { "dynnp_van" "dynn_Keppel" } + { "dynnp_van" "dynn_Voorst" } + { "dynnp_van" "dynn_Lathum" } + { "dynnp_van" "dynn_Swane" } + { "dynnp_van" "dynn_Wisch" } + { "dynnp_van" "dynn_Kamerijk" } + "dynn_Cirksena" + { "dynnp_van" "dynn_Visquard" } + { "dynnp_van" "dynn_Groothusen" } + { "dynnp_van" "dynn_Cuijck" } + { "dynnp_van" "dynn_Bierum" } + { "dynnp_van" "dynn_Rhenen" } + { "dynnp_van" "dynn_Are" } + { "dynnp_van" "dynn_Randerath" } + { "dynnp_van" "dynn_Sierck" } + { "dynnp_van" "dynn_Berthout" } + { "dynnp_van" "dynn_Diest" } + { "dynnp_van" "dynn_Voorne" } + { "dynnp_van" "dynn_Naaldwijk" } + { "dynnp_de" "dynn_Moravia" } + { "dynnp_van" "dynn_Yperen" } + { "dynnp_van" "dynn_Zeeland" } + "dynn_Munthe" + "dynn_Mard-e_Koochak" + "dynn_Hoving" + "dynn_Kuiper" + } + + dynasty_names = { + { "dynnp_van" "dynn_Loon" } + { "dynnp_von" "dynn_Geldern" } + { "dynnp_van" "dynn_Bonen" } + { "dynnp_van" "dynn_Sulzbach" } + { "dynnp_van" "dynn_Wassemberg" } + { "dynnp_van" "dynn_Geldern" } + { "dynnp_van" "dynn_Bergh" } + { "dynnp_van" "dynn_Brabant" } + { "dynnp_van" "dynn_Namen" } + { "dynnp_van" "dynn_Loon" } + { "dynnp_van" "dynn_Heinsberg" } + "dynn_De_Graeff" + { "dynnp_van" "dynn_Susa" } + "dynn_Groth" + { "dynnp_van" "dynn_Egmond" } + { "dynnp_van" "dynn_Amstel" } + { "dynnp_van" "dynn_Arkel" } + { "dynnp_van" "dynn_Boutershem" } + { "dynnp_van" "dynn_Brederode" } + { "dynnp_van" "dynn_Brunesheim" } + { "dynnp_van" "dynn_Breda" } + { "dynnp_van" "dynn_Heemskerk" } + { "dynnp_van" "dynn_Gaveren" } + { "dynnp_van" "dynn_Glymes" } + { "dynnp_van" "dynn_Grimberghe" } + { "dynnp_van" "dynn_Hurne" } + { "dynnp_van" "dynn_Renesse" } + { "dynnp_van" "dynn_Wesemael" } + { "dynnp_van" "dynn_Wassenaer" } + { "dynnp_van" "dynn_Rheden" } + { "dynnp_van" "dynn_Bronckhorst" } + { "dynnp_van" "dynn_Keppel" } + { "dynnp_van" "dynn_Voorst" } + { "dynnp_van" "dynn_Lathum" } + { "dynnp_van" "dynn_Swane" } + { "dynnp_van" "dynn_Wisch" } + { "dynnp_van" "dynn_Kamerijk" } + "dynn_Cirksena" + { "dynnp_van" "dynn_Visquard" } + { "dynnp_van" "dynn_Groothusen" } + { "dynnp_van" "dynn_Cuijck" } + { "dynnp_van" "dynn_Bierum" } + { "dynnp_van" "dynn_Rhenen" } + { "dynnp_van" "dynn_Are" } + { "dynnp_van" "dynn_Randerath" } + { "dynnp_van" "dynn_Sierck" } + { "dynnp_van" "dynn_Berthout" } + { "dynnp_van" "dynn_Diest" } + { "dynnp_van" "dynn_Voorne" } + { "dynnp_van" "dynn_Naaldwijk" } + { "dynnp_de" "dynn_Moravia" } + { "dynnp_van" "dynn_Yperen" } + { "dynnp_van" "dynn_Zeeland" } + "dynn_Munthe" + "dynn_Mard-e_Koochak" + "dynn_Hoving" + "dynn_Kuiper" + } + + male_names = { + Adriaen Albrecht Alwin Ambroos Antoon Arnold Arnulf Balderik Barend Barnaerd Bartolomeus + Bavo Bertold Boudewijn Claes Claeuwaert Daevit Damaes Diederick Dirk Douwe Eduard Egmund Ekbert + Emmo Engelbrecht Filips Floris Folbert Frans Frederik Gerard Gerolt Gerulf + Gerrit Gijsbrecht Giselbert Godfried Godschalk Gozewijn Guij Gwijde Hendrik Herman Hubert + Hugo Ijsbrand Ijsbrecht Jacco Jacob Jan Karel Koenraad + Kristof Lambert Lodewijk Ludewijn Lutbert Luthard Maertijn Marquart Niclaes + Olivier Otto Otwin Onno Pieter Reinaerd Reinoud Reginar Robrecht Robert Rodulf + Roelof Roland Rutger Sebastiaen Sicco Simon Steven Steyn Theodolf Waelram Walter + Wicher Willem Wolfard + } + female_names = { + Ada Adela Adelheid Aechte Agaete Aleid Alijse Aliken Anna Annelies Badeloge Bava Beatrijs Benedicta + Blanca Blanceflore Cecily Cille Clara Clementia Elisabeth Ellijnore Emma Ermingarde Fenne + Filippa Frida Gheertrude Gerda Godila Haduwijn Helena Herlinda Hilligonda Ide Imagina Irene Isabelle Iudith + Jacoba Jaccobijn Jasminne Johanna Jolanda Juliana Jutte Kathrijne Katrien Liedwin Lisebet Machtelt Margareta + Maria Mathilde Oda Odelt Olinde Onna Pieternelle Reynilde Sanne Sigerda Sophie Swanhildis Thetburga Waltrud + Wila Wendelmoet Wenna Willemine Yonefij Yvonne Zoete + } + + dynasty_of_location_prefix = "dynnp_van" + + patronym_suffix_male = "dynnpat_suf_szoon" + patronym_suffix_female = "dynnpat_suf_sdochter" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 25 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_of_the_brabancon_wolf" coat_of_arms = "mc_company_of_the_brabancon_wolf" } + { name = "mercenary_company_flemish_band" } + { name = "mercenary_false_earls_company" } + } +} + +name_list_german = { + + cadet_dynasty_names = { + { "dynn_Amaling" } + { "dynn_Hasding" } + } + + dynasty_names = { + { "dynn_Amaling" } + { "dynn_Hasding" } + } + + male_names = { + Adalbero Adalbert Adalhard Adam Ademar Adolf Alarich Alberich Albrecht Aldrich + Amadeus Amalrich Andreas Anselm Arnold Arnulf Augustin Baldarich + Baldewin Baldomar Baldur Berengar Bernhard Berthold Burchard Christopher + Dieter Dietmar Dietpold Dietrich Dietwin Eberhard Eginolf Ehrenfried Ekbert Ekkehard Emelrich + Emich Emmerich Emund Engelbert Erich Ernst Ferdinand Filibert Folkhard Folkmar Franz Friedrich + Gautselin Gebhard Georg Gerhard Gerlach Giselbert Gottfried Gotthard Gottschalk + Gotzelo Guntram Gunzelin GU_nther Hans Hartmann Hartwig Heinrich Helferich Heribert Hermann Hesso + Hugo Humbert Hupold Jakob Johann JU_rgen Karl Karlmann Kaspar Konrad Kuno + Lambert Landolf Leopold Liudolf Liutbert Liutbrand Liutpold Lothar Ludolf Ludwig Lutbert + Magnus Manegold Manfred Markward Martin Matthias Meinhard Michael Nikolaus Norbert + Otto Peter Philipp Poppo Radbot Reinhard Reinhold Rudolf Ruprecht Rutger Siegfried + Sieghard Siegmund Sigismund Simon Stefan Theodorich Thietmar Thomas + Udalrich Ulrich Viktor Waldemar Walram Walther Welf Wenzel Werner Wido + Wigerich Wilhelm Wolfgang Wolfram + } + female_names = { + Adela Adelheid Adelinde Agathe Agnes Alberade Amalberga Amalie Barbara + Beatrix Benedicta Berchte Berta Brunhilde Cecilie Christine + Cothilda Dorothea Elisabeth Emma Engeltraud Ermengard Eufemia + Frida Friedrica Gerberga Gerhild Gertrude Gisela Gudrun Gunhilda + Hedwig Heike Heilwiva Helene Helga Hemma Henrike Hildeburg Hildegard Ida Ilsa Inga + Ingeltrude Irmele Irmeltrud Irmgard Isentrude Jutta Karlotte Katharina Klara + Klementia Konstanze Kriemhild Kunigunde Luitgard Margarete Maria + Mechthild Oda Osterhild Richara Richenza Richwara Romilda Serhilda Sofie Sybille Trude + Ulrike Ursula Ute Walpurga Wilhelmina Winfrida Wulfhilde + } + dynasty_of_location_prefix = "dynnp_von" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 5 + father_name_chance = 10 + patronym_suffix_male = "dynnpat_suf_son" + patronym_suffix_female = "dynnpat_suf_son" + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 5 + + mercenary_names = { + } +} diff --git a/common/culture/name_lists/00_east_slavic.txt b/common/culture/name_lists/00_east_slavic.txt new file mode 100644 index 00000000..43aa34d8 --- /dev/null +++ b/common/culture/name_lists/00_east_slavic.txt @@ -0,0 +1,366 @@ +name_list_russian = { + + cadet_dynasty_names = { + "dynn_Mikhailovich" + "dynn_Fyodyorov" + "dynn_Lukinich" + "dynn_Andreievich" + "dynn_Dobrynich" + "dynn_Petrilov" + "dynn_Borisov" + "dynn_Kievskiy" + "dynn_Kholmsky" + "dynn_Izyaslavich" + "dynn_Ivannikov" + "dynn_Mikulinich" + "dynn_Miroslavich" + "dynn_Ivankovich" + "dynn_Tverdiatich" + "dynn_Zakharyinich" + "dynn_Nerevinich" + "dynn_Stepanovich" + "dynn_Nezdinich" + "dynn_Feofilaktovich" + "dynn_Klimovich" + "dynn_Konstantinov" + "dynn_Tolstoy" + "dynn_Oksakov" + "dynn_Ovinov" + "dynn_Romanov" + "dynn_Okolnichy" + "dynn_Yenikeyev" + "dynn_Bakunin" + "dynn_Balashov" + "dynn_Rumyanets" + "dynn_Matveev" + "dynn_Artamonovich" + "dynn_Osipovich" + "dynn_Ignatiev" + "dynn_Bestuzhev-Ryumin" + "dynn_Chernyshev" + "dynn_Galitsyn" + "dynn_Dashkov" + "dynn_Sobakin" + "dynn_Gurielov" + "dynn_Khitrov" + "dynn_Khovansky" + { "dynnp_of" "dynn_Terebovl" } + "dynn_Kobylin" + "dynn_Lopukhin" + "dynn_Rumyantsev" + "dynn_Matveyev" + "dynn_Menshikov" + "dynn_Morozov" + "dynn_Naryshkin" + "dynn_Poluektovich" + "dynn_Pankeyev" + "dynn_Pushkin" + "dynn_Rtishchev" + "dynn_Shein" + "dynn_Shemyaka" + "dynn_Sheremetev" + "dynn_Shuvalov" + "dynn_Stolnik" + "dynn_Trubetskoy" + "dynn_Uvarov" + "dynn_Turgenev" + "dynn_Valuyev" + "dynn_Vogak" + "dynn_Andreievich" + "dynn_Bryachislavich" + "dynn_Igorevich" + "dynn_Ivanovich" + "dynn_Iziaslavich" + "dynn_Mikhailovich" + "dynn_Mstislavich" + "dynn_Nikitich" + "dynn_Rostislavich" + "dynn_Sviatoslavich" + "dynn_Vasilievich" + "dynn_Viacheslavich" + "dynn_Vladimirovich" + "dynn_Vseslavich" + "dynn_Vsevolodovich" + "dynn_Vysheslavich" + "dynn_Yaroslavich" + "dynn_Yurievich" + "dynn_Dmitrievich" + "dynn_Fedorovich" + "dynn_Davidovich" + "dynn_Vsevolodich" + "dynn_Karpivin" + "dynn_Danilovich" + "dynn_Kromsky" + } + + dynasty_names = { + "dynn_Mikhailovich" + "dynn_Fyodyorov" + "dynn_Lukinich" + "dynn_Andreievich" + "dynn_Dobrynich" + "dynn_Petrilov" + "dynn_Borisov" + "dynn_Kievskiy" + "dynn_Kholmsky" + "dynn_Izyaslavich" + "dynn_Ivannikov" + "dynn_Mikulinich" + "dynn_Miroslavich" + "dynn_Ivankovich" + "dynn_Tverdiatich" + "dynn_Zakharyinich" + "dynn_Nerevinich" + "dynn_Stepanovich" + "dynn_Nezdinich" + "dynn_Feofilaktovich" + "dynn_Klimovich" + "dynn_Konstantinov" + "dynn_Tolstoy" + "dynn_Oksakov" + "dynn_Ovinov" + "dynn_Romanov" + "dynn_Okolnichy" + "dynn_Yenikeyev" + "dynn_Bakunin" + "dynn_Balashov" + "dynn_Rumyanets" + "dynn_Matveev" + "dynn_Artamonovich" + "dynn_Osipovich" + "dynn_Ignatiev" + "dynn_Bestuzhev-Ryumin" + "dynn_Chernyshev" + "dynn_Galitsyn" + "dynn_Dashkov" + "dynn_Sobakin" + "dynn_Gurielov" + "dynn_Khitrov" + "dynn_Khovansky" + { "dynnp_of" "dynn_Terebovl" } + "dynn_Kobylin" + "dynn_Lopukhin" + "dynn_Rumyantsev" + "dynn_Matveyev" + "dynn_Menshikov" + "dynn_Morozov" + "dynn_Naryshkin" + "dynn_Poluektovich" + "dynn_Pankeyev" + "dynn_Pushkin" + "dynn_Rtishchev" + "dynn_Shein" + "dynn_Shemyaka" + "dynn_Sheremetev" + "dynn_Shuvalov" + "dynn_Stolnik" + "dynn_Trubetskoy" + "dynn_Uvarov" + "dynn_Turgenev" + "dynn_Valuyev" + "dynn_Vogak" + "dynn_Andreievich" + "dynn_Bryachislavich" + "dynn_Igorevich" + "dynn_Ivanovich" + "dynn_Iziaslavich" + "dynn_Mikhailovich" + "dynn_Mstislavich" + "dynn_Nikitich" + "dynn_Rostislavich" + "dynn_Sviatoslavich" + "dynn_Vasilievich" + "dynn_Viacheslavich" + "dynn_Vladimirovich" + "dynn_Vseslavich" + "dynn_Vsevolodovich" + "dynn_Vysheslavich" + "dynn_Yaroslavich" + "dynn_Yurievich" + "dynn_Dmitrievich" + "dynn_Fedorovich" + "dynn_Davidovich" + "dynn_Vsevolodich" + "dynn_Karpivin" + "dynn_Danilovich" + "dynn_Kromsky" + } + + male_names = { + Afanasiy Alexandr Alexei Andrei Boris Briachislav Daniil Davyd Demid Dmitriy Dobrynia Fedot Feodor Gavriil Gleb + Grigoriy Iakov Igor Iliya Ingvar Ivan Iziaslav Kirill Konstantin Koz_ma Lev Matfei Mikhail Mitrofan Mstislav + Nikita Oleg Pavel Putiata Radoslav Rodislav Rogvolod Roman Rostislav Rurik Ruslan Simeon Stanislav Stepan Sudislav + Svetozar Sviatopolk Sviatoslav Terentiy Trifon Vasiliy Vasilko Viacheslav Vladimir Vladislav Voislav Volodar Vseslav + Vsevolod Vyshata Vysheslav Yaropolk Yaroslav Yefimiy Yelisey Yemelyan Yeremey Yevstafiy Yuriy + Aristarkh + } + female_names = { + Agafya Agrafena Alexandra Anastasia Anna Boleslava Darya Dobrava Dobronega Dobroslava Yefimia Yefrosinia Yekaterina + Yelizaveta Yevdokia Yevpraxia Feodora Feodosia Fevronia Gorislava Gradislava Gremislava Irina Xenia Liubava + Liudmila Malfrida Malusha Maria Marina Olena Olga Pereyaslava Praskovya Praxida Prebrana Predslava Premyslava + Pribislava Rogneda Rostislava Sbyslava Sofia Sviatoslava Tatyana Ulita Ulyana Varvara Vasilisa Veleslava Verkhoslava + Vseslava Viacheslava Yaroslava Zabava Zvenislava + } + dynasty_of_location_prefix = "dynnp_of" + + patronym_suffix_male = "dynnpat_suf_ovich" + patronym_suffix_female = "dynnpat_suf_ovna" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 40 + father_name_chance = 0 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 30 + mat_grm_name_chance = 30 + mother_name_chance = 0 + + +} +name_list_ilmenian = { + + cadet_dynasty_names = { + "dynn_Poloch" + "dynn_Izbor" + "dynn_Tversky" + "dynn_Lukisky" + "dynn_Pleskov" + "dynn_Toropetsky" + "dynn_Dukhovsky" + } + + dynasty_names = { + "dynn_Poloch" + "dynn_Izbor" + "dynn_Tversky" + "dynn_Lukisky" + "dynn_Pleskov" + "dynn_Toropetsky" + "dynn_Dukhovsky" + } + + male_names = { + Briachislav Demid Dobrynia Fedot Gleb Igor Iliya Iziaslav Lev Mitrofan Mstislav + Nikita Putiata Radoslav Rodislav Rogvolod Rostislav Ruslan Stanislav Sudislav Svetozar Sviatopolk Sviatoslav Terentiy Trifon Viacheslav Vladimir Vladislav Voislav Volodar Vseslav + Vsevolod Vyshata Vysheslav Yaropolk Yaroslav Yefimiy Yelisey Yeremey Yevstafiy + } + female_names = { + Boleslava Darya Dobrava Dobronega Dobroslava Yefimia Yefrosinia Fevronia Gorislava Gradislava Gremislava + Liubava Liudmila Malfrida Malusha Maria Marina Olena Olga Pereyaslava Praskovya Praxida Prebrana Predslava + Premyslava Pribislava Rogneda Rostislava Sbyslava Sviatoslava Tatyana Ulita Ulyana Varvara Vasilisa Veleslava Verkhoslava + Vseslava Viacheslava Yaroslava Zabava Zvenislava + } + dynasty_of_location_prefix = "dynnp_of" + + patronym_suffix_male = "dynnpat_suf_ovich" + patronym_suffix_female = "dynnpat_suf_ovna" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 40 + father_name_chance = 0 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 30 + mat_grm_name_chance = 30 + mother_name_chance = 0 + + +} +name_list_severian = { + + cadet_dynasty_names = { + "dynn_Polan" + "dynn_Drevl" + "dynn_Lyubech" + "dynn_Roslavsky" + "dynn_Koroviev" + "dynn_Woland" + } + + dynasty_names = { + "dynn_Polan" + "dynn_Drevl" + "dynn_Lyubech" + "dynn_Roslavsky" + "dynn_Koroviev" + "dynn_Woland" + } + + male_names = { + Briachislav Demid Dobrynia Fedot Gleb Igor Iliya Iziaslav Lev Mitrofan Mstislav + Nikita Putiata Radoslav Rodislav Rogvolod Rostislav Ruslan Stanislav Sudislav Svetozar Sviatopolk Sviatoslav Terentiy Trifon Viacheslav Vladimir Vladislav Voislav Volodar Vseslav + Vsevolod Vyshata Vysheslav Yaropolk Yaroslav Yefimiy Yelisey Yeremey Yevstafiy + } + female_names = { + Boleslava Darya Dobrava Dobronega Dobroslava Yefimia Yefrosinia Fevronia Gorislava Gradislava Gremislava + Liubava Liudmila Malfrida Malusha Maria Marina Olena Olga Pereyaslava Praskovya Praxida Prebrana Predslava + Premyslava Pribislava Rogneda Rostislava Sbyslava Sviatoslava Tatyana Ulita Ulyana Varvara Vasilisa Veleslava Verkhoslava + Vseslava Viacheslava Yaroslava Zabava Zvenislava + } + dynasty_of_location_prefix = "dynnp_of" + + patronym_suffix_male = "dynnpat_suf_ovich" + patronym_suffix_female = "dynnpat_suf_ovna" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 40 + father_name_chance = 0 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 30 + mat_grm_name_chance = 30 + mother_name_chance = 0 + + +} +name_list_volhynian = { + + cadet_dynasty_names = { + "dynn_Tyvertsky" + "dynn_Buzhansky" + "dynn_Slutsky" + "dynn_Pinesky" + "dynn_Zhytomyrsky" + "dynn_Vynnytsky" + } + + dynasty_names = { + "dynn_Tyvertsky" + "dynn_Buzhansky" + "dynn_Slutsky" + "dynn_Pinesky" + "dynn_Zhytomyrsky" + "dynn_Vynnytsky" + } + + male_names = { + Briachislav Demid Dobrynia Fedot Gleb Igor Iliya Iziaslav Lev Mitrofan Mstislav + Nikita Putiata Radoslav Rodislav Rogvolod Rostislav Ruslan Stanislav Sudislav Svetozar Sviatopolk Sviatoslav Terentiy Trifon Viacheslav Vladimir Vladislav Voislav Volodar Vseslav + Vsevolod Vyshata Vysheslav Yaropolk Yaroslav Yefimiy Yelisey Yeremey Yevstafiy + } + female_names = { + Boleslava Darya Dobrava Dobronega Dobroslava Yefimia Yefrosinia Fevronia Gorislava Gradislava Gremislava + Liubava Liudmila Malfrida Malusha Maria Marina Olena Olga Pereyaslava Praskovya Praxida Prebrana Predslava + Premyslava Pribislava Rogneda Rostislava Sbyslava Sviatoslava Tatyana Ulita Ulyana Varvara Vasilisa Veleslava Verkhoslava + Vseslava Viacheslava Yaroslava Zabava Zvenislava + } + dynasty_of_location_prefix = "dynnp_of" + + patronym_suffix_male = "dynnpat_suf_ovich" + patronym_suffix_female = "dynnpat_suf_ovna" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 40 + father_name_chance = 0 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 30 + mat_grm_name_chance = 30 + mother_name_chance = 0 + + +} diff --git a/common/culture/name_lists/00_frankish.txt b/common/culture/name_lists/00_frankish.txt new file mode 100644 index 00000000..42031181 --- /dev/null +++ b/common/culture/name_lists/00_frankish.txt @@ -0,0 +1,2210 @@ +name_list_frankish = { + + cadet_dynasty_names = { + { "dynnp_d_" "dynn_Merovingian" } + { "dynnp_d_" "dynn_Aubergine" } + } + + dynasty_names = { + { "dynnp_d_" "dynn_Merovingian" } + { "dynnp_d_" "dynn_Aubergine" } + } + + male_names = { + Abrahil Abram Adalbald Adalbert Adalgari Adalgrim Aegidius Ageric Agilbert Agiulf Ailbert Albric Aldedramn + Andica Ansovald Arcambald Aregisel Arnegisel Arnulf Ascaric Audovald Austregisel Autbert Autgari Autgeri + Avremar Badegisel Balduin Barnard Berald Bernard Berneri Bero Berold Berthefried Bertlin Bertram + Bertrand Burchard Karloman Ceslin Chararic Charibert Childebert Childeric Chilperic + Chlodomer Chlothar Chramnesind Clodio Clodion Clovis Creat Dagaric Dagobert Drogo Eberulf Ebregisel Engilbert + Euric Everard Faroard Faroin Feremund Feroard Foroen Frobert Frotari Frothard Frothari Frotlaic Fulcari Fulcrad + Galteri Gararic Garivald Gaucelm Gaudulf Gaujoin Gausbert Gausbold Gautmar Gauzbert Gedalbert Gedalca Genobaud Gerbert + Gerhard Gerold Gislari Gislevert Gocelm Godalbert Godomar Gozhelm Grimald Guadulf Gualtari Gualter Guillabert Guitard Gundobad + Gunthar Guntram Haldemar Hartmut Hildebald Hildebold Hildegaud Hildevold Hildoin Hucbert Hugbert Imnachar Ingalbert + Ingomer Karl Lambert Lantbert Leudast Lothar Magnachar Magneric Mainard Mallobaudes Marachar Marcomer + Marell Martin Maurifi Meginhard Merogais Merovech Munderic Niebelung Odelric Odolric Otbert Otgeri Otker Pepin Pharamond + Pippin Radulf Ragambald Ragena Ragenard Raginari Ragnachar Ragnald Ragno Raimbold Rainald Ramnulf Rathar + Raynold Reginari Ricchar Rignomer Roland Robert Rotbert Segoin Seguin Sicbald Sichar Sicland Sicleard Siclevold + Sigebald Sigebert Sigeric Sigismund Sigobert Sinop Sunnegisil Sunno Tancrad Tancred Tassilo Teotbert Tetbert Teutbald Teutbert + Theoderic Theoric Theudebald Theudemeres Theuderic Theudoald Theutbald Trutgaud Vuitard Vulfari Vulframn Vulvari + Waltgaud Werinbert Wilbert Willichar Wolfari + } + female_names = { + Adalgardis Adallinda Adaltrude Adaluildis Adelaidis Airsenda Albofleda Albrada Alda Aldegonde Aliberta Alitrudis Ansegudis Ansegundis + Anstrude Arsindis Audofleda Audovera Austreberta Austrechild Balthild Begga Beretrude Bernegildis Bertenildis Berthefled Berthefried + Berthegund Berthildis Bertilla Bertrada Bladovildis Brunhild Burgundofara Celsa Celsovildis Cesaria Chlodosind Chlothsinda Clotild Creada + Dagena Eldesendis Ermengardis Ermengildis Ermensindis Eustadiola Faileuba Faregildis Fastrada Framberta Fredegunde Frolaica Frotberga + Frotlildis Frotlina Galswinth Gaudildis Gautlindis Genovefa Gersvinda Gertrude Gisela Glodesind Goiswinth Gotberga Gundrada Halderudis + Harildis Hildegarde Hildegardis Hildesendis Hiltrude Illegardis Ingitrude Ingohildis Ingunde Itta Landina Lanthechilde Lantsida Leubast Leubovera + Leutberga Leutgardis Liutgarde Madelgarde Magnatrude Marcatrude Marcovefa Martinga Monegund Morberga Radegund Rictrude Rigunth + Rosamund Rothaide Rotrude Ruothilde Rusticula Sadalberga Siclehildis Sigalsis Theodelinda Theoderada Ultrogotha Vuldretrada Waltrude + } + + dynasty_of_location_prefix = "dynnp_de" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 5 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 5 +} + +name_list_french = { + + cadet_dynasty_names = { + { "dynnp_of" "dynn_Capet" } + "dynn_Fournier" + { "dynnp_du" "dynn_Dros" } + { "dynnp_de" "dynn_Piemont" } + { "dynnp_de" "dynn_Bage" } + { "dynnp_de" "dynn_Montferrat" } + { "dynnp_de" "dynn_Luxembourg" } + { "dynnp_d_" "dynn_Anjou" } + "dynn_Chamillart" + { "dynnp_de" "dynn_ChA_tillion" } + { "dynnp_d_" "dynn_Avaugour" } + { "dynnp_de" "dynn_Dreaux" } + { "dynnp_de" "dynn_Dreux" } + { "dynnp_de" "dynn_Clermont" } + { "dynnp_de" "dynn_Vitry" } + { "dynnp_de" "dynn_Dampierre" } + { "dynnp_de" "dynn_Sully" } + { "dynnp_de" "dynn_Bourg" } + { "dynnp_de" "dynn_Gironde" } + { "dynnp_d_" "dynn_Artois" } + { "dynnp_de" "dynn_Valois" } + { "dynnp_de" "dynn_GuI_nes" } + "dynn_Saint-Gilles" + { "dynnp_d_" "dynn_E_olienne" } + { "dynnp_de" "dynn_Bessa" } + { "dynnp_de" "dynn_Ramla" } + { "dynnp_d_" "dynn_Ibelin" } + "dynn_Luneville" + { "dynnp_de" "dynn_Cleriuex" } + { "dynnp_de" "dynn_Valpergue" } + { "dynnp_de" "dynn_Cuiseaux" } + { "dynnp_de" "dynn_Joinville" } + { "dynnp_de" "dynn_Vaudemont" } + { "dynnp_d_" "dynn_Hauteville" } + { "dynnp_de" "dynn_Narbonne" } + { "dynnp_de" "dynn_Bourgogne-ComtE_" } + { "dynnp_de" "dynn_l_Aigle" } + { "dynnp_de" "dynn_Flotte" } + { "dynnp_de" "dynn_Vendome" } + { "dynnp_de" "dynn_Champagne" } + { "dynnp_de" "dynn_Namur" } + { "dynnp_de" "dynn_Bissy" } + { "dynnp_d_" "dynn_Eu" } + { "dynnp_du" "dynn_Perche" } + { "dynnp_de" "dynn_Boulogne" } + "dynn_Puy_du_Fou" + { "dynnp_de" "dynn_Preuilly" } + { "dynnp_de" "dynn_Laval" } + { "dynnp_de" "dynn_Salins" } + { "dynnp_de" "dynn_ME_ziriac" } + { "dynnp_d_" "dynn_Oisy" } + { "dynnp_de" "dynn_Barthe" } + { "dynnp_de" "dynn_Fezensac" } + { "dynnp_de" "dynn_Boisrobert" } + { "dynnp_de" "dynn_Bourbon" } + { "dynnp_d_" "dynn_AngoulE_me" } + "dynn_Le_Tellier" + { "dynnp_de" "dynn_Talleyrand" } + { "dynnp_de" "dynn_Batarnay" } + { "dynnp_de" "dynn_Beaumont-au-Maine" } + { "dynnp_de" "dynn_Hainaut" } + { "dynnp_de" "dynn_Crecy" } + { "dynnp_de" "dynn_Bellegarde" } + { "dynnp_de" "dynn_St__Hilary" } + { "dynnp_d_" "dynn_Aubigny" } + { "dynnp_de" "dynn_Albemarle" } + { "dynnp_de" "dynn_Verre" } + { "dynnp_d_" "dynn_E_vreux" } + { "dynnp_de" "dynn_Mellent" } + { "dynnp_de" "dynn_Baalun" } + { "dynnp_de" "dynn_Vernon" } + "dynn_Estouteville" + "dynn_Nicolay" + { "dynnp_of" "dynn_Burgundy" } + { "dynnp_de" "dynn_Vexin-Amiens" } + { "dynnp_de" "dynn_Nimes" } + { "dynnp_de" "dynn_Tilly" } + { "dynnp_de" "dynn_Mons" } + { "dynnp_de" "dynn_Hainault" } + { "dynnp_de" "dynn_Montaigu" } + { "dynnp_de" "dynn_Benserade" } + "dynn_Barrois" + { "dynnp_de" "dynn_Harcourt" } + "dynn_Matfrieding" + { "dynnp_de" "dynn_Carolui" } + { "dynnp_de" "dynn_Lagery" } + "dynn_Litpolden" + { "dynnp_von" "dynn_Franken" } + { "dynnp_de" "dynn_Maurienne" } + { "dynnp_de" "dynn_Vienne" } + { "dynnp_de" "dynn_Foix" } + { "dynnp_de" "dynn_Lorraine" } + { "dynnp_de" "dynn_Vermandois" } + { "dynnp_de" "dynn_Blois" } + { "dynnp_de" "dynn_Gastinois" } + { "dynnp_de" "dynn_Guincamp" } + { "dynnp_de" "dynn_Bretagne" } + { "dynnp_de" "dynn_Boullion" } + { "dynnp_de" "dynn_Longwy" } + { "dynnp_de" "dynn_Macon" } + { "dynnp_de" "dynn_Roucy" } + { "dynnp_de" "dynn_Heismes" } + { "dynnp_de" "dynn_SE_mur-en-Brionnais" } + "dynn_Fergant" + { "dynnp_de" "dynn_Bolougne" } + { "dynnp_d_" "dynn_Antoing" } + { "dynnp_d_" "dynn_Espagne" } + { "dynnp_d_" "dynn_Arc" } + "dynn_Gladius_Christi" + { "dynnp_de" "dynn_Mortemart" } + { "dynnp_de" "dynn_la_Rochefoucauld" } + { "dynnp_de" "dynn_Caumont" } + { "dynnp_de" "dynn_Serrant" } + { "dynnp_de" "dynn_la_Roche_Aymon" } + { "dynnp_de" "dynn_LE_vis" } + { "dynnp_de" "dynn_Villeneuve" } + { "dynnp_de" "dynn_Beauffremont" } + { "dynnp_de" "dynn_Polignac" } + { "dynnp_de" "dynn_Riencourt" } + { "dynnp_de" "dynn_Menthon" } + { "dynnp_d_" "dynn_Argouges" } + { "dynnp_de" "dynn_Noailles" } + { "dynnp_de" "dynn_Mostuejouls" } + { "dynnp_de" "dynn_Briey" } + { "dynnp_de" "dynn_VoguE_" } + { "dynnp_de" "dynn_Tournemire" } + { "dynnp_de" "dynn_CuriE_res" } + { "dynnp_de" "dynn_Beauvau" } + "dynn_Chabot" + { "dynnp_de" "dynn_Menou" } + { "dynnp_de" "dynn_Saint-Gilles" } + { "dynnp_de" "dynn_Montrichard" } + { "dynnp_d_" "dynn_Abzac" } + { "dynnp_de" "dynn_Loubens" } + { "dynnp_de" "dynn_PontchA_teau" } + { "dynnp_de" "dynn_VitrE_" } + { "dynnp_d_" "dynn_Estouville" } + { "dynnp_de" "dynn_Mauvoisin" } + { "dynnp_de" "dynn_Blaison" } + { "dynnp_de" "dynn_Craon" } + { "dynnp_de" "dynn_Mayenne" } + { "dynnp_des" "dynn_Roches" } + { "dynnp_de" "dynn_SablE_" } + { "dynnp_d_" "dynn_Avesnes" } + "dynn_ClE_ment" + { "dynnp_du" "dynn_Perche" } + { "dynnp_des" "dynn_Barres" } + { "dynnp_de" "dynn_Campistron" } + { "dynnp_de" "dynn_Marly" } + { "dynnp_de" "dynn_Melun" } + { "dynnp_de" "dynn_Montmorency" } + { "dynnp_de" "dynn_Nanteuil" } + { "dynnp_de" "dynn_Neauphle" } + { "dynnp_de" "dynn_Saint-Denis" } + { "dynnp_de" "dynn_Voisins" } + { "dynnp_de" "dynn_Boves" } + { "dynnp_de" "dynn_Fontaines" } + { "dynnp_de" "dynn_Roucy" } + { "dynnp_de" "dynn_Saint-ValE_ry" } + { "dynnp_de" "dynn_Bar" } + { "dynnp_de" "dynn_Villehardouin" } + { "dynnp_de" "dynn_Donzy" } + { "dynnp_d_" "dynn_Astarac" } + { "dynnp_de" "dynn_Montesquiou" } + { "dynnp_de" "dynn_Cardaillac" } + { "dynnp_de" "dynn_Gontaut" } + { "dynnp_de" "dynn_Roquefeuil" } + { "dynnp_de" "dynn_Barbaira" } + { "dynnp_de" "dynn_Durfort" } + { "dynnp_d_" "dynn_Hautpoul" } + { "dynnp_de" "dynn_Laurac" } + { "dynnp_de" "dynn_Saissac" } + { "dynnp_de" "dynn_Termes" } + { "dynnp_de" "dynn_Durban" } + { "dynnp_de" "dynn_Saone" } + "dynn_Ledur" + { "dynnp_de" "dynn_Guise" } + { "dynnp_de" "dynn_Crysoing" } + { "dynnp_de" "dynn_Neuilly" } + { "dynnp_de" "dynn_Bazoches" } + { "dynnp_de" "dynn_Chappes" } + { "dynnp_de" "dynn_Toucy" } + { "dynnp_de" "dynn_Trith" } + { "dynnp_d_" "dynn_Apremont" } + { "dynnp_de" "dynn_Trainel" } + { "dynnp_de" "dynn_RhE_ninghe" } + { "dynnp_de" "dynn_Monteil" } + { "dynnp_de" "dynn_Bourbourg" } + { "dynnp_d_" "dynn_Ardres" } + { "dynnp_de" "dynn_Fiennes" } + { "dynnp_de" "dynn_Saint-Pol" } + { "dynnp_de" "dynn_Baudement" } + { "dynnp_d_" "dynn_Erville" } + { "dynnp_de" "dynn_Glane" } + { "dynnp_d_" "dynn_Apchier" } + { "dynnp_de" "dynn_Messines" } + "dynn_La_FertE_" + "dynn_Grenier" + { "dynnp_de" "dynn_Montfaucon" } + { "dynnp_de" "dynn_Plancy" } + { "dynnp_de" "dynn_Petra" } + { "dynnp_de" "dynn_Marash" } + { "dynnp_de" "dynn_Mousson" } + { "dynnp_d_" "dynn_Alamant" } + { "dynnp_de" "dynn_Cicon" } + { "dynnp_de" "dynn_Karditsa" } + { "dynnp_de" "dynn_Motluel" } + { "dynnp_de" "dynn_Salvaing" } + { "dynnp_de" "dynn_Thoire" } + { "dynnp_de" "dynn_Valromey" } + { "dynnp_de" "dynn_Lacarre" } + { "dynnp_de" "dynn_Fenouillet" } + "dynn_PantalE_on" + { "dynnp_de" "dynn_Tarentaise" } + { "dynnp_d_" "dynn_Euse" } + { "dynnp_de" "dynn_Courtenay" } + { "dynnp_de" "dynn_Saint-Valery" } + { "dynnp_d_" "dynn_Enghien" } + { "dynnp_de" "dynn_Matha" } + { "dynnp_d_" "dynn_Arcy" } + { "dynnp_de" "dynn_BaugE_" } + { "dynnp_de" "dynn_Montboissier" } + { "dynnp_de" "dynn_Baugency" } + { "dynnp_de" "dynn_Tresmes" } + { "dynnp_de" "dynn_Courtenay" } + { "dynnp_d_" "dynn_Ibelin" } + { "dynnp_de" "dynn_Milly" } + { "dynnp_de" "dynn_Joinville" } + { "dynnp_de" "dynn_ChA_tillon" } + { "dynnp_de" "dynn_la_Roche" } + { "dynnp_d_" "dynn_Altaville" } + { "dynnp_de" "dynn_Malveisin" } + { "dynnp_de" "dynn_Soule" } + { "dynnp_de" "dynn_Leu" } + { "dynnp_de" "dynn_Coarraze" } + { "dynnp_de" "dynn_Lescar" } + { "dynnp_de" "dynn_Morlaas" } + { "dynnp_de" "dynn_Pau" } + { "dynnp_d_" "dynn_Orthez" } + { "dynnp_de" "dynn_Pardiac" } + { "dynnp_de" "dynn_Fezenzaguet" } + { "dynnp_de" "dynn_LuC_on" } + { "dynnp_de" "dynn_Talmont" } + { "dynnp_de" "dynn_GuE_ret" } + { "dynnp_de" "dynn_Martel" } + { "dynnp_de" "dynn_Cognac" } + { "dynnp_de" "dynn_Riom" } + { "dynnp_de" "dynn_Thiers" } + { "dynnp_de" "dynn_Artois" } + { "dynnp_de" "dynn_Rennes" } + { "dynnp_de" "dynn_Penthievre" } + { "dynnp_de" "dynn_Vendome" } + { "dynnp_de" "dynn_Blois" } + { "dynnp_de" "dynn_Chartres" } + { "dynnp_d_" "dynn_I_le" } + { "dynnp_de" "dynn_Vermandois" } + { "dynnp_de" "dynn_Reims" } + { "dynnp_de" "dynn_Luxembourg" } + { "dynnp_d_" "dynn_Auxerre" } + { "dynnp_de" "dynn_Saintois" } + { "dynnp_de" "dynn_Besancon" } + { "dynnp_de" "dynn_Nevers" } + { "dynnp_de" "dynn_Tourraine" } + { "dynnp_de" "dynn_la_TrE_moille" } + { "dynnp_de" "dynn_Saintonge" } + { "dynnp_de" "dynn_Cilicia" } + { "dynnp_de" "dynn_Bourbon" } + { "dynnp_de" "dynn_Limousin" } + { "dynnp_d_" "dynn_Angouleme" } + { "dynnp_de" "dynn_Macon" } + { "dynnp_de" "dynn_Dauphine" } + { "dynnp_de" "dynn_Monferrato" } + { "dynnp_de" "dynn_Valais" } + { "dynnp_de" "dynn_Grisons" } + { "dynnp_de" "dynn_Chur" } + { "dynnp_de" "dynn_FE_zensaguet" } + { "dynnp_de" "dynn_Molle" } + { "dynnp_de" "dynn_Faucogney" } + { "dynnp_de" "dynn_Ridefort" } + { "dynnp_de" "dynn_Moulin" } + { "dynnp_de" "dynn_Chacim" } + { "dynnp_de" "dynn_Montreuil" } + { "dynnp_de" "dynn_Montoire" } + { "dynnp_de" "dynn_Clissa" } + "dynn_Mercadier" + { "dynnp_de" "dynn_Vaqueiras" } + "dynn_St__Genes" + { "dynnp_de" "dynn_Sancerre" } + "dynn_Vienne" + { "dynnp_de" "dynn_Dammartin" } + { "dynnp_de" "dynn_Coligny" } + { "dynnp_de" "dynn_Lautrec" } + { "dynnp_d_" "dynn_Amboise" } + { "dynnp_de" "dynn_Saint-Pol" } + "dynn_Saint-Menehould" + { "dynnp_de" "dynn_Bruyeres" } + { "dynnp_de" "dynn_Stromoncourt" } + { "dynnp_de" "dynn_Champlitte" } + { "dynnp_de" "dynn_Tries" } + { "dynnp_du" "dynn_Pay_de_Provence" } + { "dynnp_de" "dynn_Balben" } + { "dynnp_de" "dynn_Comps" } + { "dynnp_d_" "dynn_Aissailly" } + { "dynnp_de" "dynn_Murois" } + { "dynnp_of" "dynn_Syria" } + "dynn_Borrel" + { "dynnp_de" "dynn_Aspa" } + { "dynnp_de" "dynn_Naplouse" } + { "dynnp_de" "dynn_Donjon" } + { "dynnp_le" "dynn_Rat" } + { "dynnp_de" "dynn_Montaigu" } + { "dynnp_de" "dynn_Thercy" } + { "dynnp_de" "dynn_Montacute" } + { "dynnp_de" "dynn_Ville-Bride" } + { "dynnp_de" "dynn_Chateauneuf" } + { "dynnp_de" "dynn_Revel" } + { "dynnp_de" "dynn_Lorgue" } + { "dynnp_de" "dynn_Villiers" } + { "dynnp_de" "dynn_Pins" } + { "dynnp_de" "dynn_Villaret" } + { "dynnp_de" "dynn_la_Marck" } + { "dynnp_de" "dynn_Thourotte" } + { "dynnp_de" "dynn_Roussillon" } + { "dynnp_de" "dynn_Pontigny" } + { "dynnp_de" "dynn_Beauvoir" } + { "dynnp_de" "dynn_Marcey" } + { "dynnp_d_" "dynn_Aix" } + { "dynnp_de" "dynn_ME_didan" } + { "dynnp_de" "dynn_Sarvay" } + { "dynnp_de" "dynn_Ruvigny" } + { "dynnp_de" "dynn_Richercourt" } + { "dynnp_de" "dynn_BlA_mont" } + { "dynnp_de" "dynn_Neuville" } + { "dynnp_de" "dynn_TraI_nel" } + { "dynnp_de" "dynn_Ponthieu" } + { "dynnp_de" "dynn_Sully" } + { "dynnp_of" "dynn_Burgundy" } + } + + dynasty_names = { + "dynn_Fournier" + { "dynnp_du" "dynn_Dros" } + { "dynnp_de" "dynn_Piemont" } + { "dynnp_de" "dynn_Bage" } + { "dynnp_de" "dynn_Montferrat" } + { "dynnp_de" "dynn_Luxembourg" } + { "dynnp_d_" "dynn_Anjou" } + "dynn_Chamillart" + { "dynnp_de" "dynn_ChA_tillion" } + { "dynnp_d_" "dynn_Avaugour" } + { "dynnp_de" "dynn_Dreaux" } + { "dynnp_de" "dynn_Dreux" } + { "dynnp_de" "dynn_Clermont" } + { "dynnp_de" "dynn_Vitry" } + { "dynnp_de" "dynn_Dampierre" } + { "dynnp_de" "dynn_Sully" } + { "dynnp_de" "dynn_Bourg" } + { "dynnp_de" "dynn_Gironde" } + { "dynnp_d_" "dynn_Artois" } + { "dynnp_de" "dynn_Valois" } + { "dynnp_de" "dynn_GuI_nes" } + "dynn_Saint-Gilles" + { "dynnp_d_" "dynn_E_olienne" } + { "dynnp_de" "dynn_Bessa" } + { "dynnp_de" "dynn_Ramla" } + { "dynnp_d_" "dynn_Ibelin" } + "dynn_Luneville" + { "dynnp_de" "dynn_Cleriuex" } + { "dynnp_de" "dynn_Valpergue" } + { "dynnp_de" "dynn_Cuiseaux" } + { "dynnp_de" "dynn_Joinville" } + { "dynnp_de" "dynn_Vaudemont" } + { "dynnp_d_" "dynn_Hauteville" } + { "dynnp_de" "dynn_Narbonne" } + { "dynnp_de" "dynn_Bourgogne-ComtE_" } + { "dynnp_de" "dynn_l_Aigle" } + { "dynnp_de" "dynn_Flotte" } + { "dynnp_de" "dynn_Vendome" } + { "dynnp_de" "dynn_Champagne" } + { "dynnp_de" "dynn_Namur" } + { "dynnp_de" "dynn_Bissy" } + { "dynnp_d_" "dynn_Eu" } + { "dynnp_du" "dynn_Perche" } + { "dynnp_de" "dynn_Boulogne" } + "dynn_Puy_du_Fou" + { "dynnp_de" "dynn_Preuilly" } + { "dynnp_de" "dynn_Laval" } + { "dynnp_de" "dynn_Salins" } + { "dynnp_de" "dynn_ME_ziriac" } + { "dynnp_d_" "dynn_Oisy" } + { "dynnp_de" "dynn_Barthe" } + { "dynnp_de" "dynn_Fezensac" } + { "dynnp_de" "dynn_Boisrobert" } + { "dynnp_de" "dynn_Bourbon" } + { "dynnp_d_" "dynn_AngoulE_me" } + "dynn_Le_Tellier" + { "dynnp_de" "dynn_Talleyrand" } + { "dynnp_de" "dynn_Batarnay" } + { "dynnp_de" "dynn_Beaumont-au-Maine" } + { "dynnp_de" "dynn_Hainaut" } + { "dynnp_de" "dynn_Crecy" } + { "dynnp_de" "dynn_Bellegarde" } + { "dynnp_de" "dynn_St__Hilary" } + { "dynnp_d_" "dynn_Aubigny" } + { "dynnp_de" "dynn_Albemarle" } + { "dynnp_de" "dynn_Verre" } + { "dynnp_d_" "dynn_E_vreux" } + { "dynnp_de" "dynn_Mellent" } + { "dynnp_de" "dynn_Baalun" } + { "dynnp_de" "dynn_Vernon" } + "dynn_Estouteville" + "dynn_Nicolay" + { "dynnp_of" "dynn_Burgundy" } + { "dynnp_de" "dynn_Vexin-Amiens" } + { "dynnp_de" "dynn_Nimes" } + { "dynnp_de" "dynn_Tilly" } + { "dynnp_de" "dynn_Mons" } + { "dynnp_de" "dynn_Hainault" } + { "dynnp_de" "dynn_Montaigu" } + { "dynnp_de" "dynn_Benserade" } + "dynn_Barrois" + { "dynnp_de" "dynn_Harcourt" } + "dynn_Matfrieding" + { "dynnp_de" "dynn_Carolui" } + { "dynnp_de" "dynn_Lagery" } + "dynn_Litpolden" + { "dynnp_von" "dynn_Franken" } + { "dynnp_de" "dynn_Maurienne" } + { "dynnp_de" "dynn_Vienne" } + { "dynnp_de" "dynn_Foix" } + { "dynnp_de" "dynn_Lorraine" } + { "dynnp_de" "dynn_Vermandois" } + { "dynnp_de" "dynn_Blois" } + { "dynnp_de" "dynn_Gastinois" } + { "dynnp_de" "dynn_Guincamp" } + { "dynnp_de" "dynn_Bretagne" } + { "dynnp_de" "dynn_Boullion" } + { "dynnp_de" "dynn_Longwy" } + { "dynnp_de" "dynn_Macon" } + { "dynnp_de" "dynn_Roucy" } + { "dynnp_de" "dynn_Heismes" } + { "dynnp_de" "dynn_SE_mur-en-Brionnais" } + "dynn_Fergant" + { "dynnp_de" "dynn_Bolougne" } + { "dynnp_d_" "dynn_Antoing" } + { "dynnp_d_" "dynn_Espagne" } + { "dynnp_d_" "dynn_Arc" } + "dynn_Gladius_Christi" + { "dynnp_de" "dynn_Mortemart" } + { "dynnp_de" "dynn_la_Rochefoucauld" } + { "dynnp_de" "dynn_Caumont" } + { "dynnp_de" "dynn_Serrant" } + { "dynnp_de" "dynn_la_Roche_Aymon" } + { "dynnp_de" "dynn_LE_vis" } + { "dynnp_de" "dynn_Villeneuve" } + { "dynnp_de" "dynn_Beauffremont" } + { "dynnp_de" "dynn_Polignac" } + { "dynnp_de" "dynn_Riencourt" } + { "dynnp_de" "dynn_Menthon" } + { "dynnp_d_" "dynn_Argouges" } + { "dynnp_de" "dynn_Noailles" } + { "dynnp_de" "dynn_Mostuejouls" } + { "dynnp_de" "dynn_Briey" } + { "dynnp_de" "dynn_VoguE_" } + { "dynnp_de" "dynn_Tournemire" } + { "dynnp_de" "dynn_CuriE_res" } + { "dynnp_de" "dynn_Beauvau" } + "dynn_Chabot" + { "dynnp_de" "dynn_Menou" } + { "dynnp_de" "dynn_Saint-Gilles" } + { "dynnp_de" "dynn_Montrichard" } + { "dynnp_d_" "dynn_Abzac" } + { "dynnp_de" "dynn_Loubens" } + { "dynnp_de" "dynn_PontchA_teau" } + { "dynnp_de" "dynn_VitrE_" } + { "dynnp_d_" "dynn_Estouville" } + { "dynnp_de" "dynn_Mauvoisin" } + { "dynnp_de" "dynn_Blaison" } + { "dynnp_de" "dynn_Craon" } + { "dynnp_de" "dynn_Mayenne" } + { "dynnp_des" "dynn_Roches" } + { "dynnp_de" "dynn_SablE_" } + { "dynnp_d_" "dynn_Avesnes" } + "dynn_ClE_ment" + { "dynnp_du" "dynn_Perche" } + { "dynnp_des" "dynn_Barres" } + { "dynnp_de" "dynn_Campistron" } + { "dynnp_de" "dynn_Marly" } + { "dynnp_de" "dynn_Melun" } + { "dynnp_de" "dynn_Montmorency" } + { "dynnp_de" "dynn_Nanteuil" } + { "dynnp_de" "dynn_Neauphle" } + { "dynnp_de" "dynn_Saint-Denis" } + { "dynnp_de" "dynn_Voisins" } + { "dynnp_de" "dynn_Boves" } + { "dynnp_de" "dynn_Fontaines" } + { "dynnp_de" "dynn_Roucy" } + { "dynnp_de" "dynn_Saint-ValE_ry" } + { "dynnp_de" "dynn_Bar" } + { "dynnp_de" "dynn_Villehardouin" } + { "dynnp_de" "dynn_Donzy" } + { "dynnp_d_" "dynn_Astarac" } + { "dynnp_de" "dynn_Montesquiou" } + { "dynnp_de" "dynn_Cardaillac" } + { "dynnp_de" "dynn_Gontaut" } + { "dynnp_de" "dynn_Roquefeuil" } + { "dynnp_de" "dynn_Barbaira" } + { "dynnp_de" "dynn_Durfort" } + { "dynnp_d_" "dynn_Hautpoul" } + { "dynnp_de" "dynn_Laurac" } + { "dynnp_de" "dynn_Saissac" } + { "dynnp_de" "dynn_Termes" } + { "dynnp_de" "dynn_Durban" } + { "dynnp_de" "dynn_Saone" } + "dynn_Ledur" + { "dynnp_de" "dynn_Guise" } + { "dynnp_de" "dynn_Crysoing" } + { "dynnp_de" "dynn_Neuilly" } + { "dynnp_de" "dynn_Bazoches" } + { "dynnp_de" "dynn_Chappes" } + { "dynnp_de" "dynn_Toucy" } + { "dynnp_de" "dynn_Trith" } + { "dynnp_d_" "dynn_Apremont" } + { "dynnp_de" "dynn_Trainel" } + { "dynnp_de" "dynn_RhE_ninghe" } + { "dynnp_de" "dynn_Monteil" } + { "dynnp_de" "dynn_Bourbourg" } + { "dynnp_d_" "dynn_Ardres" } + { "dynnp_de" "dynn_Fiennes" } + { "dynnp_de" "dynn_Saint-Pol" } + { "dynnp_de" "dynn_Baudement" } + { "dynnp_d_" "dynn_Erville" } + { "dynnp_de" "dynn_Glane" } + { "dynnp_d_" "dynn_Apchier" } + { "dynnp_de" "dynn_Messines" } + "dynn_La_FertE_" + "dynn_Grenier" + { "dynnp_de" "dynn_Montfaucon" } + { "dynnp_de" "dynn_Plancy" } + { "dynnp_de" "dynn_Petra" } + { "dynnp_de" "dynn_Marash" } + { "dynnp_de" "dynn_Mousson" } + { "dynnp_d_" "dynn_Alamant" } + { "dynnp_de" "dynn_Cicon" } + { "dynnp_de" "dynn_Karditsa" } + { "dynnp_de" "dynn_Motluel" } + { "dynnp_de" "dynn_Salvaing" } + { "dynnp_de" "dynn_Thoire" } + { "dynnp_de" "dynn_Valromey" } + { "dynnp_de" "dynn_Lacarre" } + { "dynnp_de" "dynn_Fenouillet" } + "dynn_PantalE_on" + { "dynnp_de" "dynn_Tarentaise" } + { "dynnp_d_" "dynn_Euse" } + { "dynnp_de" "dynn_Courtenay" } + { "dynnp_de" "dynn_Saint-Valery" } + { "dynnp_d_" "dynn_Enghien" } + { "dynnp_de" "dynn_Matha" } + { "dynnp_d_" "dynn_Arcy" } + { "dynnp_de" "dynn_BaugE_" } + { "dynnp_de" "dynn_Montboissier" } + { "dynnp_de" "dynn_Baugency" } + { "dynnp_de" "dynn_Tresmes" } + { "dynnp_de" "dynn_Courtenay" } + { "dynnp_d_" "dynn_Ibelin" } + { "dynnp_de" "dynn_Milly" } + { "dynnp_de" "dynn_Joinville" } + { "dynnp_de" "dynn_ChA_tillon" } + { "dynnp_de" "dynn_la_Roche" } + { "dynnp_d_" "dynn_Altaville" } + { "dynnp_de" "dynn_Malveisin" } + { "dynnp_de" "dynn_Soule" } + { "dynnp_de" "dynn_Leu" } + { "dynnp_de" "dynn_Coarraze" } + { "dynnp_de" "dynn_Lescar" } + { "dynnp_de" "dynn_Morlaas" } + { "dynnp_de" "dynn_Pau" } + { "dynnp_d_" "dynn_Orthez" } + { "dynnp_de" "dynn_Pardiac" } + { "dynnp_de" "dynn_Fezenzaguet" } + { "dynnp_de" "dynn_LuC_on" } + { "dynnp_de" "dynn_Talmont" } + { "dynnp_de" "dynn_GuE_ret" } + { "dynnp_de" "dynn_Martel" } + { "dynnp_de" "dynn_Cognac" } + { "dynnp_de" "dynn_Riom" } + { "dynnp_de" "dynn_Thiers" } + { "dynnp_de" "dynn_Artois" } + { "dynnp_de" "dynn_Rennes" } + { "dynnp_de" "dynn_Penthievre" } + { "dynnp_de" "dynn_Vendome" } + { "dynnp_de" "dynn_Blois" } + { "dynnp_de" "dynn_Chartres" } + { "dynnp_d_" "dynn_I_le" } + { "dynnp_de" "dynn_Vermandois" } + { "dynnp_de" "dynn_Reims" } + { "dynnp_de" "dynn_Luxembourg" } + { "dynnp_d_" "dynn_Auxerre" } + { "dynnp_de" "dynn_Saintois" } + { "dynnp_de" "dynn_Besancon" } + { "dynnp_de" "dynn_Nevers" } + { "dynnp_de" "dynn_Tourraine" } + { "dynnp_de" "dynn_la_TrE_moille" } + { "dynnp_de" "dynn_Saintonge" } + { "dynnp_de" "dynn_Cilicia" } + { "dynnp_de" "dynn_Bourbon" } + { "dynnp_de" "dynn_Limousin" } + { "dynnp_d_" "dynn_Angouleme" } + { "dynnp_de" "dynn_Macon" } + { "dynnp_de" "dynn_Dauphine" } + { "dynnp_de" "dynn_Monferrato" } + { "dynnp_de" "dynn_Valais" } + { "dynnp_de" "dynn_Grisons" } + { "dynnp_de" "dynn_Chur" } + { "dynnp_de" "dynn_FE_zensaguet" } + { "dynnp_de" "dynn_Molle" } + { "dynnp_de" "dynn_Faucogney" } + { "dynnp_de" "dynn_Ridefort" } + { "dynnp_de" "dynn_Moulin" } + { "dynnp_de" "dynn_Chacim" } + { "dynnp_de" "dynn_Montreuil" } + { "dynnp_de" "dynn_Montoire" } + { "dynnp_de" "dynn_Clissa" } + "dynn_Mercadier" + { "dynnp_de" "dynn_Vaqueiras" } + "dynn_St__Genes" + { "dynnp_de" "dynn_Sancerre" } + "dynn_Vienne" + { "dynnp_de" "dynn_Dammartin" } + { "dynnp_de" "dynn_Coligny" } + { "dynnp_de" "dynn_Lautrec" } + { "dynnp_d_" "dynn_Amboise" } + { "dynnp_de" "dynn_Saint-Pol" } + "dynn_Saint-Menehould" + { "dynnp_de" "dynn_Bruyeres" } + { "dynnp_de" "dynn_Stromoncourt" } + { "dynnp_de" "dynn_Champlitte" } + { "dynnp_de" "dynn_Tries" } + { "dynnp_du" "dynn_Pay_de_Provence" } + { "dynnp_de" "dynn_Balben" } + { "dynnp_de" "dynn_Comps" } + { "dynnp_d_" "dynn_Aissailly" } + { "dynnp_de" "dynn_Murois" } + { "dynnp_of" "dynn_Syria" } + "dynn_Borrel" + { "dynnp_de" "dynn_Aspa" } + { "dynnp_de" "dynn_Naplouse" } + { "dynnp_de" "dynn_Donjon" } + { "dynnp_le" "dynn_Rat" } + { "dynnp_de" "dynn_Montaigu" } + { "dynnp_de" "dynn_Thercy" } + { "dynnp_de" "dynn_Montacute" } + { "dynnp_de" "dynn_Ville-Bride" } + { "dynnp_de" "dynn_Chateauneuf" } + { "dynnp_de" "dynn_Revel" } + { "dynnp_de" "dynn_Lorgue" } + { "dynnp_de" "dynn_Villiers" } + { "dynnp_de" "dynn_Pins" } + { "dynnp_de" "dynn_Villaret" } + { "dynnp_de" "dynn_la_Marck" } + { "dynnp_de" "dynn_Thourotte" } + { "dynnp_de" "dynn_Roussillon" } + { "dynnp_de" "dynn_Pontigny" } + { "dynnp_de" "dynn_Beauvoir" } + { "dynnp_de" "dynn_Marcey" } + { "dynnp_d_" "dynn_Aix" } + { "dynnp_de" "dynn_ME_didan" } + { "dynnp_de" "dynn_Sarvay" } + { "dynnp_de" "dynn_Ruvigny" } + { "dynnp_de" "dynn_Richercourt" } + { "dynnp_de" "dynn_BlA_mont" } + { "dynnp_de" "dynn_Neuville" } + { "dynnp_de" "dynn_TraI_nel" } + { "dynnp_de" "dynn_Ponthieu" } + { "dynnp_de" "dynn_Sully" } + { "dynnp_of" "dynn_Burgundy" } + { "dynnp_de" "dynn_Creil" } + } + + male_names = { + E_douard E_rrard E_tienne Adalbert AdE_mar Adrien Aimery Alain Aldebert AldE_ric Alphonse Amaury + AmE_dE_e Ancel AndrE_ Angelbert Antoine Archambaud Arnaud Arnault Arnoul Aubry Aymar BarthE_lE_mi + Baudouin BenoI_t BE_renger Bernard Bertrand Bohemond Boson Bouchard Centule Charles + Clotaire Ebbon Enguerrand Eudes Eustache Evrard Fabrice Foulques FranC_ois FrE_dE_ric GE_raud Gaucher Gaucelin + Gauthier Geoffroy GE_raud Gelduin Gilbert Gilles Godefroy Guichard Guiges Guilhem Guillaume + Guy HE_lie Hamelin Henri Herbert Hildebert Hugues Humbert Jacques JaufrE_ Jaspert Jean Josselin + Jourdain Julien LE_on LE_onard Lothaire Louis Loup ManassE_s Mathieu Maurice Nicolas Ogier Onfroy Orson Othon + Payen Philippe Pierre Raimbaut Raoul Raymond Raynaud Renaud Richard Robert Robin Roger + Rorgon Rorgues Roubaud Savary Sigismond Simon Thibault ThiE_baut Thierry Thomas Valeran Yves + } + female_names = { + E_lE_onore E_lodie E_tiennette AdE_le Adalmode Adelaide Adelinde Agathe AgnE_s AlE_arde Alice AliE_nor + Alix Almodis Amelie Anne Antoinette Arsinde Aude Aurengarde BE_atrice BE_atrix Belleassez BenoI_te BE_rengE_re + Berthe Blanche Bonne Bourgogne Bourguigne CE_cile CathE_rine Charlotte Constance Denise Douce Echive Eglantine + Elisabeth Emma Ermengarde Ermessinde Esclarmonde Euphrosine Eustachie Eve Gerberge + GisE_le Guillaumette HE_loise Helvis Hodierne Ide Ida IldE_garde Isabeau Isabelle Jeanne Judith + Julienne Mafalda Mahaut Margot Marguerite Marie Marthe Mascarose Mathilde ME_lisande + ME_lisende ME_lusine PE_ronelle Pernelle Perinne Pernette Plaisance Raymonde Sarrazine SolE_ne Sophie + StE_phanie Sybille Tiburge Valence Yolande + } + dynasty_of_location_prefix = "dynnp_de" + grammar_transform = french + patronym_prefix_male = "dynnpat_pre_fils" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 60 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 60 + mother_name_chance = 10 + + + + mercenary_names = { + { name = "mercenary_company_tard_venus_1" } + { name = "mercenary_company_french_band_1" } + { name = "mercenary_company_routiers_1" } + { name = "mercenary_company_french_band_2" } + } +} + +name_list_norman = { + + cadet_dynasty_names = { + { "dynnp_de" "dynn_Villeneuve" } + "dynn_Balliol" + "dynn_Plantagenet" + { "dynnp_de" "dynn_Chypre" } + { "dynnp_de" "dynn_Harenc" } + { "dynnp_de" "dynn_Tiberiade" } + { "dynnp_de" "dynn_Montjoy" } + { "dynnp_de" "dynn_Toron" } + { "dynnp_d_" "dynn_Urgel" } + { "dynnp_de" "dynn_Guingamp" } + { "dynnp_de" "dynn_BrE_zE_" } + { "dynnp_de" "dynn_Bigod" } + { "dynnp_de" "dynn_Warren" } + { "dynnp_de" "dynn_Newburgh" } + { "dynnp_de" "dynn_Braose" } + { "dynnp_de" "dynn_Toni" } + { "dynnp_de" "dynn_Blundeville" } + { "dynnp_de" "dynn_Gloucester" } + { "dynnp_de" "dynn_Grandmesnil" } + { "dynnp_de" "dynn_Morville" } + "dynn_Angevin" + "dynn_FitzWalter" + "dynn_FitzOsbern" + "dynn_Voclain" + { "dynnp_de" "dynn_ChA_tillon" } + "dynn_Fredelon" + { "dynnp_de" "dynn_JumiE_ges" } + { "dynnp_de" "dynn_Hauteville" } + "dynn_Roger" + { "dynnp_de" "dynn_Beaumont" } + { "dynnp_de" "dynn_Vielles" } + { "dynnp_d_" "dynn_Anjou" } + "dynn_Neville" + "dynn_Scrope" + "dynn_Crispin" + "dynn_Bourchier" + "dynn_Stanley" + "dynn_Talbot" + { "dynnp_d_" "dynn_Audley" } + { "dynnp_de" "dynn_St_John" } + { "dynnp_de" "dynn_Seagrave" } + { "dynnp_de" "dynn_Fauconberg" } + { "dynnp_de" "dynn_Leyburne" } + { "dynnp_de" "dynn_Greystock" } + { "dynnp_de" "dynn_Lisle" } + { "dynnp_d_" "dynn_Ufford" } + { "dynnp_de" "dynn_Frenes" } + "dynn_FitzGerald" + { "dynnp_de" "dynn_Cherleton" } + { "dynnp_d_" "dynn_Avranches" } + { "dynnp_d_" "dynn_Harcourt" } + { "dynnp_de" "dynn_PrunelE_" } + { "dynnp_de" "dynn_Beaufort" } + { "dynnp_de" "dynn_Cosnac" } + { "dynnp_de" "dynn_Matignon" } + { "dynnp_de" "dynn_Rohan" } + { "dynnp_de" "dynn_Forz" } + { "dynnp_de" "dynn_Montbray" } + { "dynnp_de" "dynn_Say" } + { "dynnp_de" "dynn_l_Isle" } + { "dynnp_de" "dynn_Beaumont" } + { "dynnp_de" "dynn_Senlis" } + { "dynnp_de" "dynn_Corbeil" } + { "dynnp_de" "dynn_Dreux" } + "dynn_Tyrel" + { "dynnp_de" "dynn_Thury" } + "dynn_Ridel" + "dynn_Mansel" + { "dynnp_de" "dynn_Bassonville" } + { "dynnp_de" "dynn_Chocques" } + { "dynnp_of" "dynn_Alife" } + { "dynnp_d_" "dynn_Aubigny" } + { "dynnp_de" "dynn_Vieuxpont" } + "dynn_Bordet" + "dynn_Longchamp" + "dynn_Penteur" + { "dynnp_de" "dynn_Bourcq" } + "dynn_LongespE_e" + { "dynnp_de" "dynn_Toni" } + "dynn_Grenier" + { "dynnp_le" "dynn_Cheyne" } + { "dynnp_de" "dynn_Soules" } + { "dynnp_de" "dynn_Valognes" } + "dynn_Avenel" + { "dynnp_d_" "dynn_Amiens" } + { "dynnp_d_" "dynn_Eu" } + { "dynnp_de" "dynn_Vexin" } + { "dynnp_de" "dynn_LE_on" } + { "dynnp_de" "dynn_Cornouaille" } + { "dynnp_de" "dynn_Vannes" } + { "dynnp_de" "dynn_Nantes" } + { "dynnp_d_" "dynn_Angers" } + { "dynnp_de" "dynn_Verdun" } + "dynn_Raoul" + "dynn_Comyn" + { "dynnp_de" "dynn_Quincy" } + { "dynnp_de" "dynn_Courcy" } + { "dynnp_de" "dynn_Courseulles" } + { "dynnp_de" "dynn_Meschines" } + { "dynnp_de" "dynn_Breteuil" } + { "dynnp_de" "dynn_Waer" } + { "dynnp_de" "dynn_Cippico" } + { "dynnp_de" "dynn_Botreaux" } + { "dynnp_de" "dynn_Barry" } + { "dynnp_de" "dynn_Windsor" } + "dynn_FitzRichard" + "dynn_Longespee" + { "dynnp_de" "dynn_BellE_me" } + { "dynnp_de" "dynn_Dunstanville" } + "dynn_Fitz-Count" + "dynn_Gaveston" + { "dynnp_de" "dynn_Luci" } + "dynn_Jess" + { "dynnp_de" "dynn_Theville" } + "dynn_Letourneau" + } + + dynasty_names = { + { "dynnp_de" "dynn_Villeneuve" } + "dynn_Balliol" + "dynn_Plantagenet" + { "dynnp_de" "dynn_Chypre" } + { "dynnp_de" "dynn_Harenc" } + { "dynnp_de" "dynn_Tiberiade" } + { "dynnp_de" "dynn_Montjoy" } + { "dynnp_de" "dynn_Toron" } + { "dynnp_d_" "dynn_Urgel" } + { "dynnp_de" "dynn_Guingamp" } + { "dynnp_de" "dynn_BrE_zE_" } + { "dynnp_de" "dynn_Bigod" } + { "dynnp_de" "dynn_Warren" } + { "dynnp_de" "dynn_Newburgh" } + { "dynnp_de" "dynn_Braose" } + { "dynnp_de" "dynn_Toni" } + { "dynnp_de" "dynn_Blundeville" } + { "dynnp_de" "dynn_Gloucester" } + { "dynnp_de" "dynn_Grandmesnil" } + { "dynnp_de" "dynn_Morville" } + "dynn_Angevin" + "dynn_FitzWalter" + "dynn_FitzOsbern" + "dynn_Voclain" + { "dynnp_de" "dynn_ChA_tillon" } + "dynn_Fredelon" + { "dynnp_de" "dynn_JumiE_ges" } + { "dynnp_de" "dynn_Hauteville" } + "dynn_Roger" + { "dynnp_de" "dynn_Beaumont" } + { "dynnp_de" "dynn_Vielles" } + { "dynnp_d_" "dynn_Anjou" } + "dynn_Neville" + "dynn_Scrope" + "dynn_Crispin" + "dynn_Bourchier" + "dynn_Stanley" + "dynn_Talbot" + { "dynnp_d_" "dynn_Audley" } + { "dynnp_de" "dynn_St_John" } + { "dynnp_de" "dynn_Seagrave" } + { "dynnp_de" "dynn_Fauconberg" } + { "dynnp_de" "dynn_Leyburne" } + { "dynnp_de" "dynn_Greystock" } + { "dynnp_de" "dynn_Lisle" } + { "dynnp_d_" "dynn_Ufford" } + { "dynnp_de" "dynn_Frenes" } + "dynn_FitzGerald" + { "dynnp_de" "dynn_Cherleton" } + { "dynnp_d_" "dynn_Avranches" } + { "dynnp_d_" "dynn_Harcourt" } + { "dynnp_de" "dynn_PrunelE_" } + { "dynnp_de" "dynn_Beaufort" } + { "dynnp_de" "dynn_Cosnac" } + { "dynnp_de" "dynn_Matignon" } + { "dynnp_de" "dynn_Rohan" } + { "dynnp_de" "dynn_Forz" } + { "dynnp_de" "dynn_Montbray" } + { "dynnp_de" "dynn_Say" } + { "dynnp_de" "dynn_l_Isle" } + { "dynnp_de" "dynn_Beaumont" } + { "dynnp_de" "dynn_Senlis" } + { "dynnp_de" "dynn_Corbeil" } + { "dynnp_de" "dynn_Dreux" } + "dynn_Tyrel" + { "dynnp_de" "dynn_Thury" } + "dynn_Ridel" + "dynn_Mansel" + { "dynnp_de" "dynn_Bassonville" } + { "dynnp_de" "dynn_Chocques" } + { "dynnp_of" "dynn_Alife" } + { "dynnp_d_" "dynn_Aubigny" } + { "dynnp_de" "dynn_Vieuxpont" } + "dynn_Bordet" + "dynn_Longchamp" + "dynn_Penteur" + { "dynnp_de" "dynn_Bourcq" } + "dynn_LongespE_e" + { "dynnp_de" "dynn_Toni" } + "dynn_Grenier" + { "dynnp_le" "dynn_Cheyne" } + { "dynnp_de" "dynn_Soules" } + { "dynnp_de" "dynn_Valognes" } + "dynn_Avenel" + { "dynnp_d_" "dynn_Amiens" } + { "dynnp_d_" "dynn_Eu" } + { "dynnp_de" "dynn_Vexin" } + { "dynnp_de" "dynn_LE_on" } + { "dynnp_de" "dynn_Cornouaille" } + { "dynnp_de" "dynn_Vannes" } + { "dynnp_de" "dynn_Nantes" } + { "dynnp_d_" "dynn_Angers" } + { "dynnp_de" "dynn_Verdun" } + "dynn_Raoul" + "dynn_Comyn" + { "dynnp_de" "dynn_Quincy" } + { "dynnp_de" "dynn_Courcy" } + { "dynnp_de" "dynn_Courseulles" } + { "dynnp_de" "dynn_Meschines" } + { "dynnp_de" "dynn_Breteuil" } + { "dynnp_de" "dynn_Waer" } + { "dynnp_de" "dynn_Cippico" } + { "dynnp_de" "dynn_Botreaux" } + { "dynnp_de" "dynn_Barry" } + { "dynnp_de" "dynn_Windsor" } + "dynn_FitzRichard" + "dynn_Longespee" + { "dynnp_de" "dynn_BellE_me" } + { "dynnp_de" "dynn_Dunstanville" } + "dynn_Fitz-Count" + "dynn_Gaveston" + { "dynnp_de" "dynn_Luci" } + "dynn_Jess" + { "dynnp_de" "dynn_Theville" } + "dynn_Letourneau" + } + + male_names = { + Abelard Adam Adelard Ademar Alexander Alfons Amaury Anfroi Anquetil Anselm Armand Arnald Asclettin Aubrey Baldwin + Bernard Berold Bertran Beuves Blayve Bohemond Botolf Clemence Drogo Errand Eustache Faramond Ferant Filbert + Fulk Fraunk Frery Gaillard Gaufrid Geoffroy Gerald Gerard GE_rard Geraud Gerbert Gervas Giffard Gilbert + Godfrey Goubert Guntard Guy Haimo Hamelin Henry Herbert Herman Hubert Hugh Humbert Humphrey Ildebrando Jordan Joscelin + Lambert Lancelin Mauger Nigel Norman Odo Orderic Osbern Osmond Oswulf Oswyn Radolf Radulf Randolf Ranulf Raymond Rayner + Richard Robert Roger Rolland Roscelin Sayer Serlo Serril Sewal Silvester Simon Stefen Tancred Torf Turold Turquetil Turstin + Tybalt Walter William Wymund + } + female_names = { + Adelaide Adele Adelin Adelise Agnes Alberada Alienora Aline Alisce Alison Amburga Aubrey Aveis Avelina Berengaria + Busilla Clarimond Clemenza Constance Cundo Egelina Eleanor Elise Elysande Emelenine Emma Emonie Eremberga Ermyntrude + Felicia Flandina Fredesende Fressenda Fressende Geva Giselle Gohilde Griselda Gundred Hadwis Helewisa Heria Herleve Hermessent Hermine Hugolina + Ida Judit Lesceline Mabel Marie Matheode Matilda Maud Mautild Maysant Millicent Muriella Oriel Richenda + Rosalind Selova Stephanie Sibyl Sibylla Umfreda Valdrade Wilmot Yolanda Yvon + } + dynasty_of_location_prefix = "dynnp_de" + grammar_transform = french + patronym_prefix_male = "dynnpat_pre_fitz" + + bastard_dynasty_prefix = "dynnp_fitz" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 25 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + mercenary_names = { + { name = mercenary_company_band_of_the_black_monk } + { name = mercenary_company_iron_arms_company } + { name = mercenary_company_normans_of_drengot } + } +} + +name_list_late_norman = { + + cadet_dynasty_names = { + { "dynnp_de" "dynn_Villeneuve" } + "dynn_Balliol" + "dynn_Plantagenet" + { "dynnp_de" "dynn_Chypre" } + { "dynnp_de" "dynn_Harenc" } + { "dynnp_de" "dynn_Tiberiade" } + { "dynnp_de" "dynn_Montjoy" } + { "dynnp_de" "dynn_Toron" } + { "dynnp_d_" "dynn_Urgel" } + { "dynnp_de" "dynn_Guingamp" } + { "dynnp_de" "dynn_BrE_zE_" } + { "dynnp_de" "dynn_Bigod" } + { "dynnp_de" "dynn_Warren" } + { "dynnp_de" "dynn_Newburgh" } + { "dynnp_de" "dynn_Braose" } + { "dynnp_de" "dynn_Toni" } + { "dynnp_de" "dynn_Blundeville" } + { "dynnp_de" "dynn_Gloucester" } + { "dynnp_de" "dynn_Grandmesnil" } + { "dynnp_de" "dynn_Morville" } + "dynn_Angevin" + "dynn_FitzWalter" + "dynn_FitzOsbern" + "dynn_Voclain" + { "dynnp_de" "dynn_ChA_tillon" } + "dynn_Fredelon" + { "dynnp_de" "dynn_JumiE_ges" } + { "dynnp_de" "dynn_Hauteville" } + "dynn_Roger" + { "dynnp_de" "dynn_Beaumont" } + { "dynnp_de" "dynn_Vielles" } + { "dynnp_d_" "dynn_Anjou" } + "dynn_Neville" + "dynn_Scrope" + "dynn_Crispin" + "dynn_Bourchier" + "dynn_Stanley" + "dynn_Talbot" + { "dynnp_d_" "dynn_Audley" } + { "dynnp_de" "dynn_St_John" } + { "dynnp_de" "dynn_Seagrave" } + { "dynnp_de" "dynn_Fauconberg" } + { "dynnp_de" "dynn_Leyburne" } + { "dynnp_de" "dynn_Greystock" } + { "dynnp_de" "dynn_Lisle" } + { "dynnp_d_" "dynn_Ufford" } + { "dynnp_de" "dynn_Frenes" } + "dynn_FitzGerald" + { "dynnp_de" "dynn_Cherleton" } + { "dynnp_d_" "dynn_Avranches" } + { "dynnp_d_" "dynn_Harcourt" } + { "dynnp_de" "dynn_PrunelE_" } + { "dynnp_de" "dynn_Beaufort" } + { "dynnp_de" "dynn_Cosnac" } + { "dynnp_de" "dynn_Matignon" } + { "dynnp_de" "dynn_Rohan" } + { "dynnp_de" "dynn_Forz" } + { "dynnp_de" "dynn_Montbray" } + { "dynnp_de" "dynn_Say" } + { "dynnp_de" "dynn_l_Isle" } + { "dynnp_de" "dynn_Beaumont" } + { "dynnp_de" "dynn_Senlis" } + { "dynnp_de" "dynn_Corbeil" } + { "dynnp_de" "dynn_Dreux" } + "dynn_Tyrel" + { "dynnp_de" "dynn_Thury" } + "dynn_Ridel" + "dynn_Mansel" + { "dynnp_de" "dynn_Bassonville" } + { "dynnp_de" "dynn_Chocques" } + { "dynnp_of" "dynn_Alife" } + { "dynnp_d_" "dynn_Aubigny" } + { "dynnp_de" "dynn_Vieuxpont" } + "dynn_Bordet" + "dynn_Longchamp" + "dynn_Penteur" + { "dynnp_de" "dynn_Bourcq" } + "dynn_LongespE_e" + { "dynnp_de" "dynn_Toni" } + "dynn_Grenier" + { "dynnp_le" "dynn_Cheyne" } + { "dynnp_de" "dynn_Soules" } + { "dynnp_de" "dynn_Valognes" } + "dynn_Avenel" + { "dynnp_d_" "dynn_Amiens" } + { "dynnp_d_" "dynn_Eu" } + { "dynnp_de" "dynn_Vexin" } + { "dynnp_de" "dynn_LE_on" } + { "dynnp_de" "dynn_Cornouaille" } + { "dynnp_de" "dynn_Vannes" } + { "dynnp_de" "dynn_Nantes" } + { "dynnp_d_" "dynn_Angers" } + { "dynnp_de" "dynn_Verdun" } + "dynn_Raoul" + "dynn_Comyn" + { "dynnp_de" "dynn_Quincy" } + { "dynnp_de" "dynn_Courcy" } + { "dynnp_de" "dynn_Courseulles" } + { "dynnp_de" "dynn_Meschines" } + { "dynnp_de" "dynn_Breteuil" } + { "dynnp_de" "dynn_Waer" } + { "dynnp_de" "dynn_Cippico" } + { "dynnp_de" "dynn_Botreaux" } + { "dynnp_de" "dynn_Barry" } + { "dynnp_de" "dynn_Windsor" } + "dynn_FitzRichard" + "dynn_Longespee" + { "dynnp_de" "dynn_BellE_me" } + { "dynnp_de" "dynn_Dunstanville" } + "dynn_Fitz-Count" + "dynn_Gaveston" + { "dynnp_de" "dynn_Luci" } + "dynn_Jess" + { "dynnp_de" "dynn_Theville" } + "dynn_Letourneau" + } + + dynasty_names = { + { "dynnp_de" "dynn_Villeneuve" } + "dynn_Balliol" + "dynn_Plantagenet" + { "dynnp_de" "dynn_Chypre" } + { "dynnp_de" "dynn_Harenc" } + { "dynnp_de" "dynn_Tiberiade" } + { "dynnp_de" "dynn_Montjoy" } + { "dynnp_de" "dynn_Toron" } + { "dynnp_d_" "dynn_Urgel" } + { "dynnp_de" "dynn_Guingamp" } + { "dynnp_de" "dynn_BrE_zE_" } + { "dynnp_de" "dynn_Bigod" } + { "dynnp_de" "dynn_Warren" } + { "dynnp_de" "dynn_Newburgh" } + { "dynnp_de" "dynn_Braose" } + { "dynnp_de" "dynn_Toni" } + { "dynnp_de" "dynn_Blundeville" } + { "dynnp_de" "dynn_Gloucester" } + { "dynnp_de" "dynn_Grandmesnil" } + { "dynnp_de" "dynn_Morville" } + "dynn_Angevin" + "dynn_FitzWalter" + "dynn_FitzOsbern" + "dynn_Voclain" + { "dynnp_de" "dynn_ChA_tillon" } + "dynn_Fredelon" + { "dynnp_de" "dynn_JumiE_ges" } + { "dynnp_de" "dynn_Hauteville" } + "dynn_Roger" + { "dynnp_de" "dynn_Beaumont" } + { "dynnp_de" "dynn_Vielles" } + { "dynnp_d_" "dynn_Anjou" } + "dynn_Neville" + "dynn_Scrope" + "dynn_Crispin" + "dynn_Bourchier" + "dynn_Stanley" + "dynn_Talbot" + { "dynnp_d_" "dynn_Audley" } + { "dynnp_de" "dynn_St_John" } + { "dynnp_de" "dynn_Seagrave" } + { "dynnp_de" "dynn_Fauconberg" } + { "dynnp_de" "dynn_Leyburne" } + { "dynnp_de" "dynn_Greystock" } + { "dynnp_de" "dynn_Lisle" } + { "dynnp_d_" "dynn_Ufford" } + { "dynnp_de" "dynn_Frenes" } + "dynn_FitzGerald" + { "dynnp_de" "dynn_Cherleton" } + { "dynnp_d_" "dynn_Avranches" } + { "dynnp_d_" "dynn_Harcourt" } + { "dynnp_de" "dynn_PrunelE_" } + { "dynnp_de" "dynn_Beaufort" } + { "dynnp_de" "dynn_Cosnac" } + { "dynnp_de" "dynn_Matignon" } + { "dynnp_de" "dynn_Rohan" } + { "dynnp_de" "dynn_Forz" } + { "dynnp_de" "dynn_Montbray" } + { "dynnp_de" "dynn_Say" } + { "dynnp_de" "dynn_l_Isle" } + { "dynnp_de" "dynn_Beaumont" } + { "dynnp_de" "dynn_Senlis" } + { "dynnp_de" "dynn_Corbeil" } + { "dynnp_de" "dynn_Dreux" } + "dynn_Tyrel" + { "dynnp_de" "dynn_Thury" } + "dynn_Ridel" + "dynn_Mansel" + { "dynnp_de" "dynn_Bassonville" } + { "dynnp_de" "dynn_Chocques" } + { "dynnp_of" "dynn_Alife" } + { "dynnp_d_" "dynn_Aubigny" } + { "dynnp_de" "dynn_Vieuxpont" } + "dynn_Bordet" + "dynn_Longchamp" + "dynn_Penteur" + { "dynnp_de" "dynn_Bourcq" } + "dynn_LongespE_e" + { "dynnp_de" "dynn_Toni" } + "dynn_Grenier" + { "dynnp_le" "dynn_Cheyne" } + { "dynnp_de" "dynn_Soules" } + { "dynnp_de" "dynn_Valognes" } + "dynn_Avenel" + { "dynnp_d_" "dynn_Amiens" } + { "dynnp_d_" "dynn_Eu" } + { "dynnp_de" "dynn_Vexin" } + { "dynnp_de" "dynn_LE_on" } + { "dynnp_de" "dynn_Cornouaille" } + { "dynnp_de" "dynn_Vannes" } + { "dynnp_de" "dynn_Nantes" } + { "dynnp_d_" "dynn_Angers" } + { "dynnp_de" "dynn_Verdun" } + "dynn_Raoul" + "dynn_Comyn" + { "dynnp_de" "dynn_Quincy" } + { "dynnp_de" "dynn_Courcy" } + { "dynnp_de" "dynn_Courseulles" } + { "dynnp_de" "dynn_Meschines" } + { "dynnp_de" "dynn_Breteuil" } + { "dynnp_de" "dynn_Waer" } + { "dynnp_de" "dynn_Cippico" } + { "dynnp_de" "dynn_Botreaux" } + { "dynnp_de" "dynn_Barry" } + { "dynnp_de" "dynn_Windsor" } + "dynn_FitzRichard" + "dynn_Longespee" + { "dynnp_de" "dynn_BellE_me" } + { "dynnp_de" "dynn_Dunstanville" } + "dynn_Fitz-Count" + "dynn_Gaveston" + { "dynnp_de" "dynn_Luci" } + "dynn_Jess" + { "dynnp_de" "dynn_Theville" } + "dynn_Letourneau" + } + + male_names = { + 15 = { # most common + William + } + 10 = { # second most common + John Henry Richard Robert Geoffrey + } + 45 = { # other common names + Aubrey Baldwin Gilbert Hugh Jordan Ranulph Reginald Roger Simon Walter + } + 30 = { # everything else + Adam Alan Alexander Bernard Clement Eustace Gerald Giles Guy Hamelin Laurence Martin Maurice Miles Nicholas Paul Peter Philip Ralph Randolph Raymond Serlo Stephen Thomas Walter + } + } + female_names = { + Adela Adeliza Agnes Alice Beatrice Catherine Cecilia Constance Edith Eleanor Elizabeth Emma Ida Isabel Isabella Joan Lucy Mabel Margaret Mary Matilda Maud Petronilla Philippa Sibyl + } + dynasty_of_location_prefix = "dynnp_de" + grammar_transform = french + patronym_prefix_male = "dynnpat_pre_fitz" + + bastard_dynasty_prefix = "dynnp_fitz" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 25 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + mercenary_names = { + { name = mercenary_company_band_of_the_black_monk } + { name = mercenary_company_iron_arms_company } + { name = "mercenary_company_white_company" coat_of_arms = "mc_white_company" } + { name = "mercenary_company_hawkwoods_band" } + } +} + +name_list_occitan = { + + cadet_dynasty_names = { + { "dynnp_de" "dynn_Rodez" } + { "dynnp_de" "dynn_Bergerac" } + { "dynnp_de" "dynn_L_isle_Jourdain" } + { "dynnp_de" "dynn_Poitiers-Valentinois" } + "dynn_Trencval" + { "dynnp_de" "dynn_ChA_tellerault" } + { "dynnp_de" "dynn_Rancon" } + { "dynnp_de" "dynn_Guyenne" } + { "dynnp_de" "dynn_Bezieres" } + { "dynnp_de" "dynn_Arelat" } + { "dynnp_de" "dynn_Ponthieu" } + { "dynnp_de" "dynn_Provence" } + { "dynnp_de" "dynn_Toulouse" } + { "dynnp_d_" "dynn_Aquitaine" } + { "dynnp_de" "dynn_PontevE_s" } + { "dynnp_de" "dynn_Sabran" } + { "dynnp_de" "dynn_Crussol" } + { "dynnp_de" "dynn_Quatrebarbes" } + { "dynnp_de" "dynn_la_Panouse" } + { "dynnp_de" "dynn_LE_vezou" } + { "dynnp_de" "dynn_la_Rochelambert" } + { "dynnp_de" "dynn_Cadoine" } + { "dynnp_de" "dynn_Kerret" } + { "dynnp_de" "dynn_Donges" } + { "dynnp_de" "dynn_Rouvray" } + { "dynnp_de" "dynn_Poissy" } + { "dynnp_de" "dynn_Cayeux" } + { "dynnp_de" "dynn_Beaujeu" } + { "dynnp_de" "dynn_Gourdon" } + { "dynnp_d_" "dynn_Anduze" } + { "dynnp_de" "dynn_Puylaurens" } + { "dynnp_de" "dynn_Castelbon" } + { "dynnp_de" "dynn_Fenolhet" } + { "dynnp_de" "dynn_FontiE_s" } + { "dynnp_d_" "dynn_OmE_las" } + { "dynnp_de" "dynn_Montaner" } + "dynn_Faucoi" + { "dynnp_de" "dynn_Got" } + { "dynnp_de" "dynn_Montcatanier" } + { "dynnp_de" "dynn_Caylus" } + { "dynnp_de" "dynn_Trians" } + { "dynnp_de" "dynn_Gavarret" } + { "dynnp_d_" "dynn_UzE_s" } + { "dynnp_de" "dynn_Villars" } + { "dynnp_de" "dynn_Rovignan" } + { "dynnp_de" "dynn_La_Valette" } + { "dynnp_d_" "dynn_Amalric" } + { "dynnp_le" "dynn_Bourg" } + { "dynnp_de" "dynn_Blanchegard" } + { "dynnp_de" "dynn_Villaret" } + { "dynnp_d_" "dynn_Aubusson" } + { "dynnp_de" "dynn_Montferrand" } + { "dynnp_de" "dynn_Poitiers" } + { "dynnp_de" "dynn_Bordeaux" } + { "dynnp_d_" "dynn_Albret" } + { "dynnp_de" "dynn_Labourd" } + { "dynnp_de" "dynn_Foix" } + { "dynnp_de" "dynn_RosellO_" } + { "dynnp_de" "dynn_Narbonne" } + { "dynnp_de" "dynn_Toulouse" } + { "dynnp_d_" "dynn_Agen" } + { "dynnp_de" "dynn_Rouergue" } + { "dynnp_de" "dynn_Provence" } + { "dynnp_de" "dynn_Venaissin" } + { "dynnp_de" "dynn_Charolais" } + { "dynnp_de" "dynn_Forcalquier" } + { "dynnp_de" "dynn_Nice" } + } + + dynasty_names = { + { "dynnp_de" "dynn_Rodez" } + { "dynnp_de" "dynn_Bergerac" } + { "dynnp_de" "dynn_L_isle_Jourdain" } + { "dynnp_de" "dynn_Poitiers-Valentinois" } + "dynn_Trencval" + { "dynnp_de" "dynn_ChA_tellerault" } + { "dynnp_de" "dynn_Rancon" } + { "dynnp_de" "dynn_Guyenne" } + { "dynnp_de" "dynn_Bezieres" } + { "dynnp_de" "dynn_Arelat" } + { "dynnp_de" "dynn_Ponthieu" } + { "dynnp_de" "dynn_Provence" } + { "dynnp_de" "dynn_Toulouse" } + { "dynnp_d_" "dynn_Aquitaine" } + { "dynnp_de" "dynn_PontevE_s" } + { "dynnp_de" "dynn_Sabran" } + { "dynnp_de" "dynn_Crussol" } + { "dynnp_de" "dynn_Quatrebarbes" } + { "dynnp_de" "dynn_la_Panouse" } + { "dynnp_de" "dynn_LE_vezou" } + { "dynnp_de" "dynn_la_Rochelambert" } + { "dynnp_de" "dynn_Cadoine" } + { "dynnp_de" "dynn_Kerret" } + { "dynnp_de" "dynn_Donges" } + { "dynnp_de" "dynn_Rouvray" } + { "dynnp_de" "dynn_Poissy" } + { "dynnp_de" "dynn_Cayeux" } + { "dynnp_de" "dynn_Beaujeu" } + { "dynnp_de" "dynn_Gourdon" } + { "dynnp_d_" "dynn_Anduze" } + { "dynnp_de" "dynn_Puylaurens" } + { "dynnp_de" "dynn_Castelbon" } + { "dynnp_de" "dynn_Fenolhet" } + { "dynnp_de" "dynn_FontiE_s" } + { "dynnp_d_" "dynn_OmE_las" } + { "dynnp_de" "dynn_Montaner" } + "dynn_Faucoi" + { "dynnp_de" "dynn_Got" } + { "dynnp_de" "dynn_Montcatanier" } + { "dynnp_de" "dynn_Caylus" } + { "dynnp_de" "dynn_Trians" } + { "dynnp_de" "dynn_Gavarret" } + { "dynnp_d_" "dynn_UzE_s" } + { "dynnp_de" "dynn_Villars" } + { "dynnp_de" "dynn_Rovignan" } + { "dynnp_de" "dynn_La_Valette" } + { "dynnp_d_" "dynn_Amalric" } + { "dynnp_le" "dynn_Bourg" } + { "dynnp_de" "dynn_Blanchegard" } + { "dynnp_de" "dynn_Villaret" } + { "dynnp_d_" "dynn_Aubusson" } + { "dynnp_de" "dynn_Montferrand" } + { "dynnp_de" "dynn_Poitiers" } + { "dynnp_de" "dynn_Bordeaux" } + { "dynnp_d_" "dynn_Albret" } + { "dynnp_de" "dynn_Labourd" } + { "dynnp_de" "dynn_Foix" } + { "dynnp_de" "dynn_RosellO_" } + { "dynnp_de" "dynn_Narbonne" } + { "dynnp_de" "dynn_Toulouse" } + { "dynnp_d_" "dynn_Agen" } + { "dynnp_de" "dynn_Rouergue" } + { "dynnp_de" "dynn_Provence" } + { "dynnp_de" "dynn_Venaissin" } + { "dynnp_de" "dynn_Charolais" } + { "dynnp_de" "dynn_Forcalquier" } + { "dynnp_de" "dynn_Nice" } + } + + male_names = { + AdhE_mar Acfred Aimeric Alberic Albert Aldebert Alias AnfO_s Amalric Amaneus Ancelmes AndrE_ Archambaut Arnaut Artau Aton AudoI_n Aymar Aymeric Aznar + Barral BartoumiE_u BaudoI_n Beneset BE_rard BerenguiE_ Bermond Bernat Bernat-Aton Bernat-Ezi Bertrand Blasi Borel Boson Carles + ClamenC_ Centolh DA_vi Dat Dodon Doumenge Duran Ebles EmmanuE_l Enric Ermengau EstE_ve Filip + Ferrand FlorE_nC_ Folquet FrancE_s Frederi Garcia Gaston Gausbert Gautier GilbE_rt Girard Girvais Godafres + Gui Guichard Guigues GuilhE_m Guiraud Guitart Ives Jacme Jaufret Joan Jordan Jorge + Josselin Julian LaurE_nC_ Leon LoI_s Loui Lop MarC_au Martin Matfre Matias Milo Miquel + Nicholaus Odon Otton PE_ire PE_ire-Arnaut PE_ire-Raimond Peranudet Pol Pons Raimond Raimond-BerenguiE_ Rainaut Rainer + Raolf Ricard RobE_rt Rogier Sancho Savarics Simon TiE_rri Tibaud Toumas Ubald Ubert Uc Ugues + VE_zian VicenC_ + } + female_names = { + AdE_la AdalaI_da Adeltrudis Agata AI_na AinE_s AlaI_s AlienO_r AliC_ AlmO_dis AlpaI_s Ana Arsenda Assalhida Ava + AzalaI_s Azelma BO_na Beatritz Berenguela Berta Blanca Brandimena Bregida Brunissenda Camila CarlO_ta Caterina Cecilia + Clara Clarmonda ClemE_ncia Cloutilda ConstA_ncia DolC_a EisabE_u Elena + Elisa ElisabE_ta Ermengarda Ermessentz Esclarmonda Estefania EufE_mia Eufrosina + Faidida Filipa Filomena FlO_ra Francesa Garcenda Geneviva GerbE_rga Gersenda Gisla Guigone Guilheumina Heloise + Ioulanda IsabE_u IsabE_la Joana Juliana LU_cia Laura LoI_sa Mabila Madalena + Margarida Maria Marquisa Marta MascarO_sa Matilda MelisE_nda Navar Patricia PeironE_la + Petronilha Puelle Raisenda Raimonda RichE_nda RosE_la Rosa SanC_a Sibilla TerE_sa Tiborg Verounica Violent + } + dynasty_of_location_prefix = "dynnp_de" + grammar_transform = french + + patronym_suffix_male = "dynnpat_suf_enc" + patronym_suffix_female = "dynnpat_suf_enc" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 25 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + + mercenary_names = { + { name = "mercenary_company_routiers_of_the_archpriest" } + { name = "mercenary_company_host_of_the_viscount" } + { name = "mercenary_company_marchers_of_wasconia" } + } +} + +name_list_outremer = { + + cadet_dynasty_names = { + "dynn_Agapite" + { "dynnp_d_" "dynn_Agot" } + { "dynn_Aleman" } + { "dynnp_d_" "dynn_Arsur" } + { "dynnp_de" "dynn_Asca" } + { "dynnp_de" "dynn_Avalon" } + "dynn_Babin" + { "dynnp_de" "dynn_Baphe" } + "dynn_Barlais" + { "dynnp_de" "dynn_Barut" } + "dynn_Beduin" + { "dynnp_de" "dynn_Bessan" } + { "dynnp_de" "dynn_la_Blanchegarde" } + { "dynnp_de" "dynn_Blundeville" } + "dynn_Bonvoisin" + "dynn_Bossat" + "dynn_Boule" + { "dynnp_de" "dynn_Bourg" } + "dynn_Brisebarre" + "dynn_Bromons" + { "dynnp_de" "dynn_Bures" } + { "dynnp_de" "dynn_Buriavis" } + { "dynnp_de" "dynn_Calan" } + "dynn_Capreolus" + "dynn_Carpas" + "dynn_Carpenel" + "dynn_Caulis" + { "dynnp_de" "dynn_Cayphas" } + { "dynnp_de" "dynn_CE_sarE_e" } + "dynn_Chappe" + "dynn_Chivides" + "dynn_Contaren" + { "dynnp_de" "dynn_Dineham" } + "dynn_Dorel" + "dynn_Ebriac" + "dynn_Escaface" + "dynn_Fabrice" + "dynn_Fahard" + "dynn_Farabel" + { "dynnp_le" "dynn_Fauconnier" } + { "dynnp_de" "dynn_Francleu" } + "dynn_Fremel" + "dynn_Galgari" + { "dynnp_de" "dynn_Gandonuille" } + "dynn_Garners" + "dynn_Gauvain" + { "dynnp_de" "dynn_Giblet" } + "dynn_Gorap" + { "dynnp_de" "dynn_Gourri" } + { "dynnp_de" "dynn_Gradonico" } + "dynn_Gregoras" + "dynn_Guonem" + { "dynnp_de" "dynn_Guyenne" } + "dynn_Hazart" + { "dynnp_de" "dynn_Hoveden" } + "dynn_Hundefel" + { "dynnp_d_" "dynn_Ibelin" } + "dynn_Justinian" + { "dynnp_de" "dynn_LanclE_e" } + { "dynnp_le" "dynn_Larron" } + "dynn_Lector" + "dynn_Lengles" + { "dynnp_de" "dynn_LiE_ron" } + "dynn_Lorgue" + { "dynnp_de" "dynn_Lubec" } + "dynn_Maiopule" + { "dynnp_de" "dynn_MaisiE_res" } + "dynn_Mansuer" + "dynn_Marmore" + "dynn_Marrain" + { "dynnp_le" "dynn_Mesel" } + { "dynnp_de" "dynn_Meulant" } + { "dynnp_de" "dynn_Mirabel" } + { "dynnp_de" "dynn_Montanis" } + { "dynnp_de" "dynn_Montgisart" } + { "dynnp_de" "dynn_Montolif" } + { "dynnp_de" "dynn_Morabit" } + { "dynnp_du" "dynn_Morf" } + "dynn_Moreim" + "dynn_Mustacon" + { "dynnp_de" "dynn_Neelle" } + { "dynnp_de" "dynn_NE_fin" } + { "dynnp_de" "dynn_Neubourg" } + { "dynnp_de" "dynn_Nores" } + { "dynnp_de" "dynn_Orca" } + { "dynnp_d_" "dynn_Oudegherst" } + "dynn_Pansat" + { "dynnp_de" "dynn_PE_lichin" } + { "dynnp_de" "dynn_Picquigny" } + { "dynnp_de" "dynn_Plancy" } + "dynn_Podocator" + "dynn_Porcellet" + { "dynnp_de" "dynn_PrE_monstrE_" } + "dynn_Pusterla" + { "dynnp_de" "dynn_Qveden" } + "dynn_Radouf" + { "dynnp_de" "dynn_Rameru" } + { "dynnp_de" "dynn_Rames" } + { "dynnp_le" "dynn_Rechin" } + "dynn_Revel" + "dynn_RhinotmE_te" + { "dynnp_de" "dynn_Romery" } + { "dynnp_de" "dynn_Rubaia" } + { "dynnp_de" "dynn_Saint-Abraham" } + { "dynnp_de" "dynn_Saint-Bertin" } + { "dynnp_de" "dynn_Saint-Gilles" } + { "dynnp_de" "dynn_Saint-Omer" } + { "dynnp_de" "dynn_Saint-Paul" } + { "dynnp_de" "dynn_Saint-Sauveur" } + { "dynnp_de" "dynn_Saint_SE_pulcre" } + { "dynnp_de" "dynn_Saint-Severin" } + { "dynnp_de" "dynn_Sajette" } + { "dynnp_de" "dynn_Salvaing" } + "dynn_Salvutius" + { "dynnp_de" "dynn_Saplana" } + { "dynnp_de" "dynn_Sarisbery" } + { "dynnp_de" "dynn_Scolare" } + "dynn_Senzaver" + "dynn_Synclitique" + { "dynnp_de" "dynn_Tabarie" } + "dynn_Talevas" + { "dynnp_de" "dynn_Tenremonde" } + { "dynnp_de" "dynn_Thorot" } + { "dynnp_de" "dynn_TibE_riade" } + { "dynnp_de" "dynn_Tinory" } + { "dynnp_de" "dynn_Toron" } + { "dynnp_de" "dynn_Tripoly" } + { "dynnp_de" "dynn_Turbessel" } + { "dynnp_de" "dynn_Turguolant" } + { "dynnp_de" "dynn_Tyr" } + { "dynnp_d_" "dynn_Usperg" } + "dynn_Vidans" + "dynn_Vital" + { "dynnp_de" "dynn_Welves" } + { "dynnp_d_" "dynn_Ysis" } + { "dynnp_de" "dynn_Zerban" } + { "dynnp_de" "dynn_Zimblet" } + } + + dynasty_names = { + "dynn_Agapite" + { "dynnp_d_" "dynn_Agot" } + { "dynn_Aleman" } + { "dynnp_d_" "dynn_Arsur" } + { "dynnp_de" "dynn_Asca" } + { "dynnp_de" "dynn_Avalon" } + "dynn_Babin" + { "dynnp_de" "dynn_Baphe" } + "dynn_Barlais" + { "dynnp_de" "dynn_Barut" } + "dynn_Beduin" + { "dynnp_de" "dynn_Bessan" } + { "dynnp_de" "dynn_la_Blanchegarde" } + { "dynnp_de" "dynn_Blundeville" } + "dynn_Bonvoisin" + "dynn_Bossat" + "dynn_Boule" + { "dynnp_de" "dynn_Bourg" } + "dynn_Brisebarre" + "dynn_Bromons" + { "dynnp_de" "dynn_Bures" } + { "dynnp_de" "dynn_Buriavis" } + { "dynnp_de" "dynn_Calan" } + "dynn_Capreolus" + "dynn_Carpas" + "dynn_Carpenel" + "dynn_Caulis" + { "dynnp_de" "dynn_Cayphas" } + { "dynnp_de" "dynn_CE_sarE_e" } + "dynn_Chappe" + "dynn_Chivides" + "dynn_Contaren" + { "dynnp_de" "dynn_Dineham" } + "dynn_Dorel" + "dynn_Ebriac" + "dynn_Escaface" + "dynn_Fabrice" + "dynn_Fahard" + "dynn_Farabel" + { "dynnp_le" "dynn_Fauconnier" } + { "dynnp_de" "dynn_Francleu" } + "dynn_Fremel" + "dynn_Galgari" + { "dynnp_de" "dynn_Gandonuille" } + "dynn_Garners" + "dynn_Gauvain" + { "dynnp_de" "dynn_Giblet" } + "dynn_Gorap" + { "dynnp_de" "dynn_Gourri" } + { "dynnp_de" "dynn_Gradonico" } + "dynn_Gregoras" + "dynn_Guonem" + { "dynnp_de" "dynn_Guyenne" } + "dynn_Hazart" + { "dynnp_de" "dynn_Hoveden" } + "dynn_Hundefel" + { "dynnp_d_" "dynn_Ibelin" } + "dynn_Justinian" + { "dynnp_de" "dynn_LanclE_e" } + { "dynnp_le" "dynn_Larron" } + "dynn_Lector" + "dynn_Lengles" + { "dynnp_de" "dynn_LiE_ron" } + "dynn_Lorgue" + { "dynnp_de" "dynn_Lubec" } + "dynn_Maiopule" + { "dynnp_de" "dynn_MaisiE_res" } + "dynn_Mansuer" + "dynn_Marmore" + "dynn_Marrain" + { "dynnp_le" "dynn_Mesel" } + { "dynnp_de" "dynn_Meulant" } + { "dynnp_de" "dynn_Mirabel" } + { "dynnp_de" "dynn_Montanis" } + { "dynnp_de" "dynn_Montgisart" } + { "dynnp_de" "dynn_Montolif" } + { "dynnp_de" "dynn_Morabit" } + { "dynnp_du" "dynn_Morf" } + "dynn_Moreim" + "dynn_Mustacon" + { "dynnp_de" "dynn_Neelle" } + { "dynnp_de" "dynn_NE_fin" } + { "dynnp_de" "dynn_Neubourg" } + { "dynnp_de" "dynn_Nores" } + { "dynnp_de" "dynn_Orca" } + { "dynnp_d_" "dynn_Oudegherst" } + "dynn_Pansat" + { "dynnp_de" "dynn_PE_lichin" } + { "dynnp_de" "dynn_Picquigny" } + { "dynnp_de" "dynn_Plancy" } + "dynn_Podocator" + "dynn_Porcellet" + { "dynnp_de" "dynn_PrE_monstrE_" } + "dynn_Pusterla" + { "dynnp_de" "dynn_Qveden" } + "dynn_Radouf" + { "dynnp_de" "dynn_Rameru" } + { "dynnp_de" "dynn_Rames" } + { "dynnp_le" "dynn_Rechin" } + "dynn_Revel" + "dynn_RhinotmE_te" + { "dynnp_de" "dynn_Romery" } + { "dynnp_de" "dynn_Rubaia" } + { "dynnp_de" "dynn_Saint-Abraham" } + { "dynnp_de" "dynn_Saint-Bertin" } + { "dynnp_de" "dynn_Saint-Gilles" } + { "dynnp_de" "dynn_Saint-Omer" } + { "dynnp_de" "dynn_Saint-Paul" } + { "dynnp_de" "dynn_Saint-Sauveur" } + { "dynnp_de" "dynn_Saint_SE_pulcre" } + { "dynnp_de" "dynn_Saint-Severin" } + { "dynnp_de" "dynn_Sajette" } + { "dynnp_de" "dynn_Salvaing" } + "dynn_Salvutius" + { "dynnp_de" "dynn_Saplana" } + { "dynnp_de" "dynn_Sarisbery" } + { "dynnp_de" "dynn_Scolare" } + "dynn_Senzaver" + "dynn_Synclitique" + { "dynnp_de" "dynn_Tabarie" } + "dynn_Talevas" + { "dynnp_de" "dynn_Tenremonde" } + { "dynnp_de" "dynn_Thorot" } + { "dynnp_de" "dynn_TibE_riade" } + { "dynnp_de" "dynn_Tinory" } + { "dynnp_de" "dynn_Toron" } + { "dynnp_de" "dynn_Tripoly" } + { "dynnp_de" "dynn_Turbessel" } + { "dynnp_de" "dynn_Turguolant" } + { "dynnp_de" "dynn_Tyr" } + { "dynnp_d_" "dynn_Usperg" } + "dynn_Vidans" + "dynn_Vital" + { "dynnp_de" "dynn_Welves" } + { "dynnp_d_" "dynn_Ysis" } + { "dynnp_de" "dynn_Zerban" } + { "dynnp_de" "dynn_Zimblet" } + } + + male_names = { + Albert Arnoul Amalric Andronic Antevel Auchin Adam Andri AlbE_ric Alain Augustin Ambroise Ansald Alexis Amelin Anfred Alixandre Alard Annibal AdE_mar Anselme Archambaud Arthur Anscatinus Alvar Antoine Attard Aldobrandin AmE_dE_e + Baudouin BoE_mond Bernart Balian Bertelemi Benjamin BrancalE_on Bouveret Bertrand Bonaplius Borrile Bengerius Baldric Baldin Basile Bonvassal Bovo Boniface Benoiet Burchard + Carles Conrad Constantin Constans Claude Climent Celsus Calaman Clarembald Chiarion Carreran Cosma Cyrille Caesareus Chrestien Christophe + Daniel DiomE_des Dreux Denys Daimbert Durand Dominic Davi + Eusthaices Eudes Estienne Estiennot Ebremar EugE_ne Engeler E_douard Engenraz Evrart Elinand Edwis Echard Egidius + Fouques FrE_dE_ric Florent Florin Foucher Filibert FranC_ois Fernand Fulcrand + Godefroi Galbert Guy Gervais Gabriel Gilles GE_dE_on Garnier Georges Girart GrE_mont Geldemar Garsias Gilduin Gaston Guillelme Guibert Gualon Guillelme-Jourdain Guillelme-Raymond Gislebert Garenton GrE_goire Guerric GaE_tan + Hugues Henri Honorius Humfroy Heymeri Humbert HE_lie Hector Hodradus HE_raclius Helyes Hercule + Isaac Isnard Itier + Jehan Justinien Josselin Julien Jourdain Jaques Julius Janus Jason Joscius Jotran + Lambert Livon LE_onard Loys Lancelot Lorenz Landulf Lazare Lucien Lutolf Liparit Lothaire Lucas + Manuel Marin Maurice Milon Miles Menassier Melior Mahuis Machaire Mahengot Michiel Marsile Maregnan Monachus Mainard Martin Marc + NicE_phore NicE_tas Nicolas Narjot Nevelet + Orderic Olivier Olric Oris Ogerius Oddet Omnebono Octave Odon Onfroi + Philippe PE_lage Pierre Plivain Payen Pons Paul PtolE_mE_e Phoebus Perrot Poppo Peregrinus Pancrace Paschal PhacE_rol + Quentin + Romuald Raymond Rainald Richart Raoul Rupin Reignarz Raymond-Rupin Rostang Rohart Roger Romain Roland Remi Rotres Rinzon Ribaldus + Symbatius Sembald Simon Sibo Sicard Scipion Scirro SE_joret Sanson Silvius Seguin Serlon Soibrand Seraphin Syfrid Salemon + Tancred Thomas Taphroc Turolt TiE_rri Tristan ThE_tore ThE_odoric Toustain Tramon Tybaut + Ubaud Urbain Ulric Ursion + Vivien Vincent Victor + Willebrand Wido Winemar Wautier Warmond Winric Walleran Wulfran + Yblin Ysembart + Zacarie + } + female_names = { + Alix AgnE_s Alberade AliE_nor Aveline Antonella AdE_le Anselle Appollonie Anne AdalaI_de Avice Agace Aiglantine Armesende Argentine Arda Ancelma + BE_atrix Bermonde Basilia Bienvenue Berthe Bigne Brigide Bonne Blanche Bruna Beneoite Bourjot Bourgine + Charlotte Constance Caternella Catherine CE_cile Celsa ChE_rubine Candelour Christine Claudia Constantia Covilla Clarice + DorothE_e Douce Dolet Dominica Donata Denise + EstE_fE_nie Eschive Estienette Ermelline Emma E_lizabeth E_melotte Eulalie EuphE_mie Electe Emmeline Edelinne Ermenjart Erembourc + Florence Florine FranC_oise Franqueite + Godivere Guiberge Geltide Genevieve Godchilde Guaille Gilla Guibourc + Hodierne Helvis Hermeline Hermengarde Hodierna HE_lE_ne Helissent + Isolde + Joye Jehanne Juliane Joette Jaqueline + Lucie Luciane Lijart + Mahaut ME_lisende Marfie Marie Marguerite Mathilde MagdelE_ne Mabile Magdaleine Michiele + Nicole + Orgueilleuse Orable Odula + Plaisance PenthE_silE_e Pavie Philippa Poitevine Petra Pentecouste + Raymond Richent Richeut Rogerete Rohez Romainne Rose + Sibylle Sophie Sanche Sabine Simone Susanna Sanceline Sedila Simonnete + ThE_odora ThE_ophanie Tiburge Torterelle Thomasse Tyfainne + Ursule Ulmote + Vivienne + Yolande Yvete Ysabel + } + dynasty_of_location_prefix = "dynnp_de" + grammar_transform = french + + + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 60 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 60 + mother_name_chance = 10 +} + +name_list_romansh = { + cadet_dynasty_names = { + "dynn_Adalbertus" + { "dynnp_d_" "dynn_Amede" } # Domat/Ems, 8th c + "dynn_Andermatt" + "dynn_Andri" + "dynn_Arquint" + "dynn_Bachelar" + { "dynnp_de" "dynn_Berinzona" } # Bellinzona, 8th-11th centuries + { "dynnp_de" "dynn_Biberach" } + "dynn_Bonadurer" + "dynn_Boner" + "dynn_Brasser" + { "dynnp_de" "dynn_Brienzola" } # Brienz/Brinzauls, 9th century + { "dynnp_de" "dynn_Cacias" } # old name of Cazis/Tgazas + "dynn_Caluzi" + "dynn_Camathias" + "dynn_Camenisch" + "dynn_Camichel" + { "dynnp_de" "dynn_Camma" } + "dynn_Canschutti" + { "dynnp_de" "dynn_Capol" } + "dynn_Caratsch" + { "dynnp_de" "dynn_Castella" } + "dynn_Cathrin" + "dynn_Cavelli" + "dynn_Chasprot" + "dynn_Chuonradus" + "dynn_Clavadetscher" + { "dynnp_de" "dynn_Cuira" } # Chur + "dynn_Dalp" + "dynn_Damur" + "dynn_Demont" + "dynn_Denicola" + "dynn_Depeder" + "dynn_Dethomas" + "dynn_Donatsch" + "dynn_Eichhardus" + "dynn_Erchangarius" + "dynn_Exoberius" + { "dynnp_de" "dynn_Faveras" } # old Romansh name of Pfäfers + "dynn_Fiffel" + "dynn_Flura" + "dynn_Foffa" + "dynn_Frictellinus" + "dynn_Gallati" + "dynn_Gasenzer" + "dynn_Gianel" + "dynn_Girordi" + "dynn_Glienard" + { "dynnp_de" "dynn_Grabs" } + "dynn_Grimold" + "dynn_Gudolf" + "dynn_Hadebertus" + "dynn_Hartpert" + "dynn_Hemmi" + { "dynnp_de" "dynn_Hersfeldia" } + "dynn_Jactatus" + "dynn_Janggen" + "dynn_Jecklin" + "dynn_Jelmoli" + "dynn_Jenni" + "dynn_JO_rigustin" # Jörigustin + "dynn_JO_rimann" # Jörimann + "dynn_Jochum" + "dynn_Jodocus" + "dynn_Just" + "dynn_Kilias" + "dynn_Kupli" + "dynn_Laurer" + "dynn_Levet" + "dynn_Lidorius" + "dynn_Lombardin" + "dynn_Loretz" + "dynn_Lory" + "dynn_Magistri" + { "dynnp_de" "dynn_Magenza" } # old name of Maienfeld + { "dynnp_de" "dynn_Maile" } + { "dynnp_de" "dynn_Malans" } + "dynn_Manzanell" + "dynn_Mathis" + "dynn_Maurelius" + "dynn_Meer" + { "dynnp_de" "dynn_Melide" } + "dynn_Moritzi" + "dynn_Nauli" + "dynn_Nold" + { "dynnp_de" "dynn_Panix" } + "dynn_Pedolin" + "dynn_Perrini" + "dynn_Pitsch" + { "dynnp_de" "dynn_Planta" } + { "dynnp_de" "dynn_Pludeno" } # Bludenz, Voralberg in Austria, 842 attestation + { "dynnp_de" "dynn_Pogio" } + { "dynnp_de" "dynn_Ramosch" } + { "dynnp_de" "dynn_Reynold" } + "dynn_Ruadolfus" + "dynn_Ruodharius" + "dynn_Rusca" + { "dynnp_de" "dynn_Sagogn" } + { "dynnp_de" "dynn_Salis" } + "dynn_Saluz" + { "dynnp_de" "dynn_Scanavico" } + "dynn_Schlanser" + "dynn_Selm" + { "dynnp_de" "dynn_Senegaune" } + "dynn_Sirroz" + { "dynnp_de" "dynn_Stierva" } + "dynn_Stoppa" + { "dynnp_de" "dynn_SU_s" } # de Süs + { "dynnp_de" "dynn_Tarasp" } + "dynn_Tgetgel" + { "dynnp_de" "dynn_Tinizong" } + { "dynnp_de" "dynn_Travers" } + { "dynnp_de" "dynn_Tremine" } # Trimmis + "dynn_Tscharner" + "dynn_Tschudius" + { "dynnp_de" "dynn_Tuminne" } # Tumans/Tumein, 13th c + "dynn_Ursecenus" + "dynn_ValA_r" + { "dynnp_de" "dynn_Valaulta" } + "dynn_Valier" + { "dynnp_de" "dynn_Vaz" } + "dynn_Verendarius" + "dynn_Vetsch" + "dynn_Vivengius" + "dynn_Wassali" + "dynn_Widrig" + "dynn_Zaccon" + "dynn_Zendralli" + { "dynnp_de" "dynn_Zizuris" } # Zizers/Zezras, 9th c + { "dynnp_de" "dynn_Zuoz" } + { "dynnp_de" "dynn_Zurlauben" } + } + + dynasty_names = { + "dynn_Adalbertus" + { "dynnp_d_" "dynn_Amede" } # Domat/Ems, 8th c + "dynn_Andermatt" + "dynn_Andri" + "dynn_Arquint" + "dynn_Bachelar" + { "dynnp_de" "dynn_Berinzona" } # Bellinzona, 8th-11th centuries + { "dynnp_de" "dynn_Biberach" } + "dynn_Bonadurer" + "dynn_Boner" + "dynn_Brasser" + { "dynnp_de" "dynn_Brienzola" } # Brienz/Brinzauls, 9th century + { "dynnp_de" "dynn_Cacias" } # old name of Cazis/Tgazas + "dynn_Caluzi" + "dynn_Camathias" + "dynn_Camenisch" + "dynn_Camichel" + { "dynnp_de" "dynn_Camma" } + "dynn_Canschutti" + { "dynnp_de" "dynn_Capol" } + "dynn_Caratsch" + { "dynnp_de" "dynn_Castella" } + "dynn_Cathrin" + "dynn_Cavelli" + "dynn_Chasprot" + "dynn_Chuonradus" + "dynn_Clavadetscher" + { "dynnp_de" "dynn_Cuira" } # Chur + "dynn_Dalp" + "dynn_Damur" + "dynn_Demont" + "dynn_Denicola" + "dynn_Depeder" + "dynn_Dethomas" + "dynn_Donatsch" + "dynn_Eichhardus" + "dynn_Erchangarius" + "dynn_Exoberius" + { "dynnp_de" "dynn_Faveras" } # old Romansh name of Pfäfers + "dynn_Fiffel" + "dynn_Flura" + "dynn_Foffa" + "dynn_Frictellinus" + "dynn_Gallati" + "dynn_Gasenzer" + "dynn_Gianel" + "dynn_Girordi" + "dynn_Glienard" + { "dynnp_de" "dynn_Grabs" } + "dynn_Grimold" + "dynn_Gudolf" + "dynn_Hadebertus" + "dynn_Hartpert" + "dynn_Hemmi" + { "dynnp_de" "dynn_Hersfeldia" } + "dynn_Jactatus" + "dynn_Janggen" + "dynn_Jecklin" + "dynn_Jelmoli" + "dynn_Jenni" + "dynn_JO_rigustin" # Jörigustin + "dynn_JO_rimann" # Jörimann + "dynn_Jochum" + "dynn_Jodocus" + "dynn_Just" + "dynn_Kilias" + "dynn_Kupli" + "dynn_Laurer" + "dynn_Levet" + "dynn_Lidorius" + "dynn_Lombardin" + "dynn_Loretz" + "dynn_Lory" + "dynn_Magistri" + { "dynnp_de" "dynn_Magenza" } # old name of Maienfeld + { "dynnp_de" "dynn_Maile" } + { "dynnp_de" "dynn_Malans" } + "dynn_Manzanell" + "dynn_Mathis" + "dynn_Maurelius" + "dynn_Meer" + { "dynnp_de" "dynn_Melide" } + "dynn_Moritzi" + "dynn_Nauli" + "dynn_Nold" + { "dynnp_de" "dynn_Panix" } + "dynn_Pedolin" + "dynn_Perrini" + "dynn_Pitsch" + { "dynnp_de" "dynn_Planta" } + { "dynnp_de" "dynn_Pludeno" } # Bludenz, Voralberg in Austria, 842 attestation + { "dynnp_de" "dynn_Pogio" } + { "dynnp_de" "dynn_Ramosch" } + { "dynnp_de" "dynn_Reynold" } + "dynn_Ruadolfus" + "dynn_Ruodharius" + "dynn_Rusca" + { "dynnp_de" "dynn_Sagogn" } + { "dynnp_de" "dynn_Salis" } + "dynn_Saluz" + { "dynnp_de" "dynn_Scanavico" } + "dynn_Schlanser" + "dynn_Selm" + { "dynnp_de" "dynn_Senegaune" } + "dynn_Sirroz" + { "dynnp_de" "dynn_Stierva" } + "dynn_Stoppa" + { "dynnp_de" "dynn_SU_s" } # de Süs + { "dynnp_de" "dynn_Tarasp" } + "dynn_Tgetgel" + { "dynnp_de" "dynn_Tinizong" } + { "dynnp_de" "dynn_Travers" } + { "dynnp_de" "dynn_Tremine" } # Trimmis + "dynn_Tscharner" + "dynn_Tschudius" + { "dynnp_de" "dynn_Tuminne" } # Tumans/Tumein, 13th c + "dynn_Ursecenus" + "dynn_ValA_r" + { "dynnp_de" "dynn_Valaulta" } + "dynn_Valier" + { "dynnp_de" "dynn_Vaz" } + "dynn_Verendarius" + "dynn_Vetsch" + "dynn_Vivengius" + "dynn_Wassali" + "dynn_Widrig" + "dynn_Zaccon" + "dynn_Zendralli" + { "dynnp_de" "dynn_Zizuris" } # Zizers/Zezras, 9th c + { "dynnp_de" "dynn_Zuoz" } + { "dynnp_de" "dynn_Zurlauben" } + } + + male_names = { + Adalgott Alesch Ambros Andreia Antimus Antieni Armon Agilmar + Bastiaun Bernardin Baltisar Baltran Banadetg Battesta Barclameu Blesi Bonifazi Bruno + Constantin Cristoffel Cundrau Calist Camil Carlin Cesar Crisost Claudi Chrest Chiaspar Columbin + Duitg Donatus Danuet Dionys Domeni Duriges Durich Diotolfus + Eligi Erco Eusebi Esso Egino Eberhard + Flurin Fadri Faust Fideli Felici Fortunat Francestg Frideric Fridolin Foscio + Gion Gisep Gieri Gudench Gaudenz Gaitan Gallas Gervasi Geronas Gilgian Gionas Giovan Gualbert Guglielm + Hendri Hiltibald Hartpert Herloino + Ignazi Ildefons + Jachum Josua + Largias Leodegar Leci Linard Librat Liun Ludivic Lurainz Lobucio + Martegn Magnasch Marchet Mathiu Melcher Mitgel Mudest Muretzen + NicolA_ + Oresti Otto + Placi Peider Padrut Paschalis Pauli Pancraz Paulin Pult Pertbold + Raduolf Raget Ramun Remigi Reparat Romedi + Schimun Sigisbert Salesi Sein Steafan Salomon + Tello Tarcisi Teodosi Tgasper Tumasch Thietmar + Ursicin Uorsin Ursilin + Vigeli Viezel Venanzi Valantin Vendelin Vincenz Volkard + Waldo + } + female_names = { + Annamengia Agta Anghela Anna Adeleida Amalia + Barla Balungia Basilissa Beatriz Bevenuta Bertilla Brida + Castoria Carlina Carmelia Catrina Cilgia Claritta Culastia Constanzia Cresenzia Cristigna Cypriana Cunigunda + Domenichina Dorathea + Edelfina Emerita Eugenia + Favorita Ferena Fiana Filomena Flurinda Franzesca Fridolina Fumeia + Guota Gelgia Gerhilda Georghina Gionina Giuanna Greata Genoveva + Hiazinta Henrica + Ignazia + Jacobea Juventina + Laurenzia Letta Librata Ligrezie Lisabetta Liuna Ludivica + Maria Macrina Magdleina Magreta + Niculina Nutala + Odda Ottiglia Otavia + Paluongia Pitschna + Rosvita + Salvia Saira Seraina Sibila Staschia SU_sanna + Teusinda Tarzisia Teodosia Tomasina Teresa TignO_la + Ursula Ursicina Urbania Ursina + Vespula Violanta Vigelia Vualdrada + } + + dynasty_of_location_prefix = "dynnp_de" + grammar_transform = french + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 10 + + mercenary_names = { + { name = "mercenary_company_league_of_gods_house" } + { name = "mercenary_company_gray_league" } + { name = "mercenary_company_swiss_guard" } + { name = "mercenary_company_rhaetian_column" } + } +} diff --git a/common/culture/name_lists/00_goidelic.txt b/common/culture/name_lists/00_goidelic.txt new file mode 100644 index 00000000..8240dedb --- /dev/null +++ b/common/culture/name_lists/00_goidelic.txt @@ -0,0 +1,432 @@ +name_list_irish = { + + cadet_dynasty_names = { + { "dynnp_ua" "dynn_Braenain" } + { "dynnp_ua" "dynn_Murchada" } + { "dynnp_mac" "dynn_Murchada" } + "dynn_Lorc" + "dynn_Crovan" + { "dynnp_ua" "dynn_FA_elA_in" } + { "dynnp_ua" "dynn_NE_ill_MO_ir" } + { "dynnp_mac" "dynn_Diarmaida" } + "dynn_NI__Rhodan" + "dynn_Shannon" + "dynn_Ceiteach" + { "dynnp_ua" "dynn_Domnaill" } + { "dynnp_ua" "dynn_Ruairc" } + { "dynnp_ua" "dynn_MA_il_EO_in" } + "dynn_FitzPatrick" + { "dynnp_ua" "dynn_Cearbhaill" } + { "dynnp_mac" "dynn_Mathgamna" } + "dynn_Got" + { "dynnp_mac" "dynn_Murchada_CA_emA_nach" } + { "dynnp_mac" "dynn_Murchada_Cennselach" } + { "dynnp_ua" "dynn_FA_elA_in" } + { "dynnp_ua" "dynn_Conchobar_Sligig" } + { "dynnp_ua" "dynn_Conchobar_Ruad" } + { "dynnp_ua" "dynn_Conchobar_Donn" } + { "dynnp_ua" "dynn_BA_egill" } + { "dynnp_ua" "dynn_DU_ngaile" } + { "dynnp_ua" "dynn_Dochartaigh" } + { "dynnp_ua" "dynn_hEchtigirn" } + "dynn_Barry" + "dynn_O__Braonain" + "dynn_Burke" + { "dynnp_ua" "dynn_BrA_E_in" } + { "dynnp_ua" "dynn_Cathail" } + { "dynnp_ua" "dynn_Cerbaill" } + { "dynnp_ua" "dynn_Cathasaigh" } + { "dynnp_ua" "dynn_Flannchaid" } + { "dynnp_ua" "dynn_Congalaigh" } + { "dynnp_ua" "dynn_CruadlA_ich" } + { "dynnp_ua" "dynn_Dimasaigh" } + { "dynnp_ua" "dynn_Dubgaill" } + { "dynnp_ua" "dynn_A_edacA_in" } + { "dynnp_ua" "dynn_Fergail" } + { "dynnp_ua" "dynn_Gallchobair" } + "dynn_Lowery" + { "dynnp_ua" "dynn_DubagA_in" } + "dynn_Connachta" + { "dynnp_ui" "dynn_NE_ill" } + { "dynnp_ui" "dynn_Maine" } + "dynn_Laigin" + "dynn_Oitir" + { "dynnp_ui" "dynn_Briain" } + "dynn_CholmA_in" + { "dynnp_ua" "dynn_Mael_Sechlainn" } + { "dynnp_ui" "dynn_Garrchon" } + "dynn_Laighin" + "dynn_Crovan" + "dynn_Craig" + { "dynnp_ua" "dynn_MO_rdha" } + { "dynnp_ua" "dynn_Ruairc" } + { "dynnp_ua" "dynn_Flaithri" } + { "dynnp_ua" "dynn_hEochadha" } + { "dynnp_mac" "dynn_A_E_da" } + { "dynnp_an" "dynn_t-Saoir" } + { "dynnp_ua" "dynn_Caollaidhe" } + { "dynnp_ua" "dynn_Maoileachlainn" } + { "dynnp_ua" "dynn_Carthaigh" } + "dynn_Llyn" + "dynn_Michael" + { "dynnp_mac" "dynn_Dalach" } + { "dynnp_mac" "dynn_Flannacan" } + { "dynnp_ua" "dynn_Meiscill" } + { "dynnp_ua" "dynn_Laidhgnen" } + { "dynnp_ua" "dynn_Baoigheallain" } + { "dynnp_ua" "dynn_hEiccnigh" } + } + + dynasty_names = { + { "dynnp_ua" "dynn_Braenain" } + { "dynnp_ua" "dynn_Murchada" } + { "dynnp_mac" "dynn_Murchada" } + "dynn_Lorc" + "dynn_Crovan" + { "dynnp_ua" "dynn_FA_elA_in" } + { "dynnp_ua" "dynn_NE_ill_MO_ir" } + { "dynnp_mac" "dynn_Diarmaida" } + "dynn_NI__Rhodan" + "dynn_Shannon" + "dynn_Ceiteach" + { "dynnp_ua" "dynn_Domnaill" } + { "dynnp_ua" "dynn_Ruairc" } + { "dynnp_ua" "dynn_MA_il_EO_in" } + "dynn_FitzPatrick" + { "dynnp_ua" "dynn_Cearbhaill" } + { "dynnp_mac" "dynn_Mathgamna" } + "dynn_Got" + { "dynnp_mac" "dynn_Murchada_CA_emA_nach" } + { "dynnp_mac" "dynn_Murchada_Cennselach" } + { "dynnp_ua" "dynn_FA_elA_in" } + { "dynnp_ua" "dynn_Conchobar_Sligig" } + { "dynnp_ua" "dynn_Conchobar_Ruad" } + { "dynnp_ua" "dynn_Conchobar_Donn" } + { "dynnp_ua" "dynn_BA_egill" } + { "dynnp_ua" "dynn_DU_ngaile" } + { "dynnp_ua" "dynn_Dochartaigh" } + { "dynnp_ua" "dynn_hEchtigirn" } + "dynn_Barry" + "dynn_O__Braonain" + "dynn_Burke" + { "dynnp_ua" "dynn_BrA_E_in" } + { "dynnp_ua" "dynn_Cathail" } + { "dynnp_ua" "dynn_Cerbaill" } + { "dynnp_ua" "dynn_Cathasaigh" } + { "dynnp_ua" "dynn_Flannchaid" } + { "dynnp_ua" "dynn_Congalaigh" } + { "dynnp_ua" "dynn_CruadlA_ich" } + { "dynnp_ua" "dynn_Dimasaigh" } + { "dynnp_ua" "dynn_Dubgaill" } + { "dynnp_ua" "dynn_A_edacA_in" } + { "dynnp_ua" "dynn_Fergail" } + { "dynnp_ua" "dynn_Gallchobair" } + "dynn_Lowery" + { "dynnp_ua" "dynn_DubagA_in" } + "dynn_Connachta" + { "dynnp_ui" "dynn_NE_ill" } + { "dynnp_ui" "dynn_Maine" } + "dynn_Laigin" + "dynn_Oitir" + { "dynnp_ui" "dynn_Briain" } + "dynn_CholmA_in" + { "dynnp_ua" "dynn_Mael_Sechlainn" } + { "dynnp_ui" "dynn_Garrchon" } + "dynn_Laighin" + "dynn_Crovan" + "dynn_Craig" + { "dynnp_ua" "dynn_MO_rdha" } + { "dynnp_ua" "dynn_Ruairc" } + { "dynnp_ua" "dynn_Flaithri" } + { "dynnp_ua" "dynn_hEochadha" } + { "dynnp_mac" "dynn_A_E_da" } + { "dynnp_an" "dynn_t-Saoir" } + { "dynnp_ua" "dynn_Caollaidhe" } + { "dynnp_ua" "dynn_Maoileachlainn" } + { "dynnp_ua" "dynn_Carthaigh" } + "dynn_Llyn" + "dynn_Michael" + { "dynnp_mac" "dynn_Dalach" } + { "dynnp_mac" "dynn_Flannacan" } + { "dynnp_ua" "dynn_Meiscill" } + { "dynnp_ua" "dynn_Laidhgnen" } + { "dynnp_ua" "dynn_Baoigheallain" } + { "dynnp_ua" "dynn_hEiccnigh" } + } + + male_names = { + Aaron AbbA_n Abner AbE_l AdomnA_n A_ed A_edgen A_educA_n A_edA_n A_engus Affiath Ailbe Ailbrend Ailbrenn AilchU_ Aildobur Ailgel A_ilgenA_n Ailgus + Ailill AilpI_n Ainbchellach A_indle Ainftech Ainmere Airechtach AirfhindA_n AirfhinnA_n Airleid Airmedach Amalgaid AmlaI_b AnfudA_n AnlO_n Anmchaid A_nrothA_n Ardgal + Ardgar Art Artbran Artgal Artgus ArtucA_n ArtU_r Assiucc Augaire AugustI_n Aurthuile BA_ethgalach BA_ethI_ne BA_etA_n BE_oA_ed Barrfhind BeccA_n Berrach BhA_tair + Blathmacc Bran Brandub Brangen Bressal Brian BriccE_ne BriccI_ne BroccA_n Bruatur Bruide BrE_naind BrE_nainn BrO_en BU_aidbE_o Caicher Cailech Cailte Cairbre + Cairell CaissE_ne CaissI_n CaissI_ne Canann CanannA_n Carlus Cathal CathalA_n Cathassach Cathbad CathmA_el CathmA_l Cathnio Cathub CausantI_n CaI_lte CaI_nchomrac + CaI_ndelbA_n Ceithernach Cellach CellachA_n CennE_tig Cenn-FA_elad CennlachA_n Cerball Cernach CernachA_n Cian CiarA_n CillE_ne CillI_ne CinA_ed Clemens Cobthach + Coirpre Colcu ColmA_n Columb ComgA_n Conaing Conall ConallA_n Conamail ConA_n Conchenn Conchobar Condla Congal Congalach Congus Conlang Conmac Conmacc + ConmA_el ConmA_l Conn Connla ConrI_ Constans ConstantI_n Corbb CorbA_n CorccA_n CorcrA_n Cormac Coscrach CoI_lboth Crimthann CrundmA_el CruinnmA_el + CrI_chA_n CrO_nA_n CuilE_n Cuindles Cuircthe Cummascach CA_emA_n CO_elbad CO_elub CO_emA_n CU_-Allaid CU_-Bretan CU_-Caech CU_-Cen CU_-Cen-MA_thair CU_-CU_arA_in CU_-Gamna CU_-RoI_ CU_anu CU_ldub CU_A_n + CU_A_nA_n DabI_d Daigre Dalbach DallA_n DaniE_l Dathal Dathgus DemmA_n Diarmait Doedgus Domangart Domnall Donn Donnchad Donncuan DonndubA_n Donngal + DonnucA_n DoE_lgus Drost Drust Dub-dA_-Lethe Dubcenn Dubgenn Dubh Dubhghall Dubhglais Dubthach DubA_ed DubA_n Duiblesc Duibne DunA_ed DA_lach DI_cuill DI_glach DI_mmae + DI_mmasach DI_mmA_n DI_nertach DU_nacA_n DU_nadach DU_nchad DU_ngal DU_ngalach DU_nlang E_amonn Echmarcach E_chtgal E_chtgus Echthigern Echuid E_icnech E_icnechA_n ElA_ir E_nna E_nri E_ochad + Eochaid Eochu EochucA_n E_ogan Erc Ercaid ErcA_ed ErcA_n E_remO_n E_rennach ErnA_n EterscE_l EO_gan EO_ganA_n Fachtna Fairchellach Fallaman FarannA_n FaI_lbe Fearghus + Fechtnach Fedach Fearchar Fedelmid Feirgil Felic Fer-Fugaill Feradach Ferdomnach Fergal Fergus Fionnghall Fiachnae FianchU_ Findbarr FindlaI_ch Fingen Finguine Finn FinnacA_n Finnbarr + FinnchU_ Finnlagh Finnsnechtae Fintan Flaithbertach Flaithem FlaithemA_n Flaithgus FlaithrI_ Flann FlannacA_n Flannchad FlannA_n Fogartach Folachtach ForannA_n Forbassach Fothad Fothud + Fuacarta Fubthad Fuirechtach Fursu FA_elcar FA_elchad FA_elchU_ FA_eldobur FA_elgus FA_elA_n FA_elbe FI_achnae FI_adchU_ FI_ngin FI_nsnechta FO_carta GabrA_n Garalt Garbith Gilla-I_osa Gilla-BrI_gte + Gilla-Coluim Gilla-ComgA_in Gilla-CrI_st Gilla-na-NA_em Gilla-PA_traic Gilla-Ruad Glaisiuc Glaschu GlU_n-Iairn Gofraid GormacA_n Gormgus GormA_n Guaire GA_ethA_n + GA_ethI_ne GO_sacht Iacob Iarlaithe Imchad Indrechtach Ioseph I_omhar Labraid Lachtnae LachtnA_n LachtnE_ne Laidcenn Laidgenn LaidI_ne LaisrE_n LennA_n Lethlobur Liam + Liber Lochlann Loingsech LonA_n LorcA_n Lugh Lugaid LugA_ed LA_egaire LO_chE_ne LO_chI_ne LO_eguire Mac-Laisre MainchI_ne Maine ManchA_n Martan Mathgamain MatudA_n MinchA_n Mo-Chonna Mo-Lua MO_enach + Morand Morann MugrO_n Muirchertach MuirecA_n Muiredach Muirgius Murchad MurchU_ MA_el-Anfaid MA_el-Bresail MA_el-BrI_gte MA_el-Cein MA_el-CianA_in MA_el-CiarA_in MA_el-Coluim MA_el-Corgis + MA_el-Dubh MA_el-DU_in MA_el-Fothartaig MA_el-FA_baill MA_el-I_osa MA_el-MA_edO_c MA_el-Martain MA_el-MO_rda MA_el-Muire MA_el-MI_chI_l MA_el-Petair MA_el-PA_traic MA_el-Ruanaid MA_el-Sechnaill + MA_el-TO_lai MA_elA_n MA_enach MA_thair MU_adA_n Nadarchu Nannid Natfraech Natfraich Natsluaig Nechtan Niall Niallgus NiallA_n Nuadu OdrA_n O_engus O_enucA_n OissE_ne OissI_ne OlcA_n O_lchobar + OnchU_ Orthanach Oscar PA_traic Petair Pilib PO_l Proinsias Rechtabra RiacA_n Riaguil Robartach Rogallach Rogellach Ruah RuaidrI_ Ruarcc Rumann + RA_thach RI_gA_n RI_A_n RO_dA_n RO_nchU_ RO_nA_n RU_adacA_n RU_adA_n Scandal ScandlA_n ScellA_n Scolaige SE_aghdha SE_afra SE_amas SeA_n Sechnassach Selbach SenchA_n SeoA_n Sinach + SiothrU_n SlE_bI_ne Snedgus Sogan Somhairle Suibne SA_erbrethach SA_rA_n SE_igI_ne SE_tna SE_tnae Tadg Taithlech Talorc TalorcA_n TemnE_n Tigernach TigernA_n + Tipraite Tomaltach TomA_s TorccA_n Trenchad Trengus Tressach TuathalA_n Tuireann TA_lA_n TO_la TU_athal Ualgarg Ualan Ualtar U_amnachA_n Uargal Uargalach Uargus + Uilliam UltA_n + } + female_names = { + Ablach A_edammair Affraic AI_binn AibilI_n Aileann A_ine Anlaith ArO_c Barrdub Ben-Laigen Ben-MI_de Ben-Muman Ben-Ulad Brigit BE_-FA_il BE_binn Cacht Caillech-FhinnE_in + Cainnech CaissE_ne CaitilI_n CaI_ntigern CaI_rech CathA_n CatrI_ona Cellach Ciar Cnes Coblaith Cobflaith Conchenn CondA_l CrI_nO_ch CrI_stina Cumman + Deirdre Der-bForgaill DerbA_il Derborgaill Der-Ilei Der-Lugdach Dianaim Doriend Dub-Dil Dub-Essa Dub-Lemna Dubchoblaig Dubgilla DU_insech DU_nlaith Echrad E_ibhleann + Eilionora Eithne EllbrI_g Emer E_taI_n E_ua Euginia FaI_lenn Fedelm Finneacht Finnguala Flann Forbflaith FI_ne Garb GelgE_is GerrO_c Gnathnad Gormflaith + Gormlaith GrA_inne Imag I_te Lann LasairfI_ona Lathir Lerben Lerthan LI_gach Lucia Martha Mauda Muadhnait Muirenn Muirgel Muirne MA_el-Mide + MA_el-Muire MA_ire MA_iread MA_irgred MO_r MO_r-Muman NA_rbflaith Nuala O_rlaith O_rnat RO_is Sadb Samthann ScA_thach SE_bdann Selblaith Seonaid Sinech SiobA_n + Sisuile SlA_I_ne Sorcha Suaibsech SA_erlaith SE_tach SI_thmaith Tailefhlaith Tailltiu Temair Tuathflaith TO_mnat Uallach Uasal U_na + } + + patronym_prefix_male = "dynnpat_pre_mac" + patronym_prefix_male_vowel = "dynnpat_pre_vow_mag" + patronym_prefix_female = "dynnpat_pre_nic" + patronym_prefix_female_vowel = "dynnpat_pre_vow_nig" + + always_use_patronym = yes + + + pat_grf_name_chance = 30 + mat_grf_name_chance = 15 + father_name_chance = 5 + + pat_grm_name_chance = 30 + mat_grm_name_chance = 15 + mother_name_chance = 10 + + mercenary_names = { + { name = mercenary_company_band_of_kerns } + { name = mercenary_company_madhmanns_company } + { name = mercenary_company_company_of_shield_and_scian } + } +} +name_list_gaelic = { + + cadet_dynasty_names = { + { "dynnp_a_" "dynn_Phearsain" } + { "dynnp_a" "dynn_Baidenaich" } + { "dynnp_a" "dynn_Cairge" } + { "dynnp_a" "dynn_DU_in_Chaillden" } + { "dynnp_a" "dynn_GabrA_in" } + { "dynnp_a" "dynn_hE_rinn" } + { "dynnp_a" "dynn_hInberuraid" } + { "dynnp_a" "dynn_Lemnain" } + { "dynnp_a" "dynn_Monid-TE_daich" } + { "dynnp_a" "dynn_ScO_ine" } + { "dynnp_a" "dynn_Sratha_Balgaid" } + { "dynnp_an" "dynn_Dorsair" } + { "dynnp_mac" "dynn_Aillein" } + { "dynnp_na" "dynn_Ceardadh" } + dynn_A__Mhaoirne + dynn_BairE_ad + dynn_Breitheamh + dynn_Caimbeul + dynn_Cataibh + dynn_Ceanadach + dynn_Ceitein + dynn_Cormaig + dynn_Donnchaid + dynn_Gallaibh + dynn_Glaschu + dynn_Grannd + dynn_Lachlainn + { "dynnp_mac" "dynn_a__Chruiteir" } + { "dynnp_mac" "dynn_a__Phearsain" } + { "dynnp_mac" "dynn_A_egusa" } + { "dynnp_mac" "dynn_Adaim" } + { "dynnp_mac" "dynn_Alaxandair" } + { "dynnp_mac" "dynn_Amhlaigh" } + { "dynnp_mac" "dynn_Amlaigh" } + { "dynnp_mac" "dynn_Arailt" } + { "dynnp_mac" "dynn_Bethain" } + { "dynnp_mac" "dynn_Cainnig" } + { "dynnp_mac" "dynn_CennE_tig" } + { "dynnp_mac" "dynn_Coistela" } + { "dynnp_mac" "dynn_Domnaill" } + { "dynnp_mac" "dynn_Donnchada" } + { "dynnp_mac" "dynn_Dubgaill" } + { "dynnp_mac" "dynn_Dubgaill" } + { "dynnp_mac" "dynn_DubSithe" } + { "dynnp_mac" "dynn_EO_gain" } + { "dynnp_mac" "dynn_EO_in_Duib" } + { "dynnp_mac" "dynn_Fergusa" } + { "dynnp_mac" "dynn_FindlA_ich" } + { "dynnp_mac" "dynn_FinnagA_in" } + { "dynnp_mac" "dynn_Gille-FA_elain" } + { "dynnp_mac" "dynn_Gillebrath" } + { "dynnp_mac" "dynn_Gillepatraig" } + { "dynnp_mac" "dynn_Ilwham" } + { "dynnp_mac" "dynn_in_Baird" } + { "dynnp_mac" "dynn_in_Rothaich" } + { "dynnp_mac" "dynn_in_Toisich" } + { "dynnp_mac" "dynn_in_tSagairt" } + { "dynnp_mac" "dynn_LE_oit" } + { "dynnp_mac" "dynn_NE_ill" } + { "dynnp_mac" "dynn_Ragnaill" } + { "dynnp_mac" "dynn_Ruaidri" } + { "dynnp_mac" "dynn_Torfinn" } + { "dynnp_mac" "dynn_Uchtraigh" } + { "dynnp_mac" "dynn_Uilleim" } + dynn_Machair + dynn_Madethyn + dynn_Muireadhach + dynn_Na_Rannaibh + dynn_Neacail + dynn_SdI_bard + dynn_Sgain + dynn_Siorrachd + dynn_Somhairle + dynn_Srath_Nid + } + + dynasty_names = { + { "dynnp_a_" "dynn_Phearsain" } + { "dynnp_a" "dynn_Baidenaich" } + { "dynnp_a" "dynn_Cairge" } + { "dynnp_a" "dynn_DU_in_Chaillden" } + { "dynnp_a" "dynn_GabrA_in" } + { "dynnp_a" "dynn_hE_rinn" } + { "dynnp_a" "dynn_hInberuraid" } + { "dynnp_a" "dynn_Lemnain" } + { "dynnp_a" "dynn_Monid-TE_daich" } + { "dynnp_a" "dynn_ScO_ine" } + { "dynnp_a" "dynn_Sratha_Balgaid" } + { "dynnp_an" "dynn_Dorsair" } + { "dynnp_mac" "dynn_Aillein" } + { "dynnp_na" "dynn_Ceardadh" } + dynn_A__Mhaoirne + dynn_BairE_ad + dynn_Breitheamh + dynn_Caimbeul + dynn_Cataibh + dynn_Ceanadach + dynn_Ceitein + dynn_Cormaig + dynn_Donnchaid + dynn_Gallaibh + dynn_Glaschu + dynn_Grannd + dynn_Lachlainn + { "dynnp_mac" "dynn_a__Chruiteir" } + { "dynnp_mac" "dynn_a__Phearsain" } + { "dynnp_mac" "dynn_A_egusa" } + { "dynnp_mac" "dynn_Adaim" } + { "dynnp_mac" "dynn_Alaxandair" } + { "dynnp_mac" "dynn_Amhlaigh" } + { "dynnp_mac" "dynn_Amlaigh" } + { "dynnp_mac" "dynn_Arailt" } + { "dynnp_mac" "dynn_Bethain" } + { "dynnp_mac" "dynn_Cainnig" } + { "dynnp_mac" "dynn_CennE_tig" } + { "dynnp_mac" "dynn_Coistela" } + { "dynnp_mac" "dynn_Domnaill" } + { "dynnp_mac" "dynn_Donnchada" } + { "dynnp_mac" "dynn_Dubgaill" } + { "dynnp_mac" "dynn_Dubgaill" } + { "dynnp_mac" "dynn_DubSithe" } + { "dynnp_mac" "dynn_EO_gain" } + { "dynnp_mac" "dynn_EO_in_Duib" } + { "dynnp_mac" "dynn_Fergusa" } + { "dynnp_mac" "dynn_FindlA_ich" } + { "dynnp_mac" "dynn_FinnagA_in" } + { "dynnp_mac" "dynn_Gille-FA_elain" } + { "dynnp_mac" "dynn_Gillebrath" } + { "dynnp_mac" "dynn_Gillepatraig" } + { "dynnp_mac" "dynn_Ilwham" } + { "dynnp_mac" "dynn_in_Baird" } + { "dynnp_mac" "dynn_in_Rothaich" } + { "dynnp_mac" "dynn_in_Toisich" } + { "dynnp_mac" "dynn_in_tSagairt" } + { "dynnp_mac" "dynn_LE_oit" } + { "dynnp_mac" "dynn_NE_ill" } + { "dynnp_mac" "dynn_Ragnaill" } + { "dynnp_mac" "dynn_Ruaidri" } + { "dynnp_mac" "dynn_Torfinn" } + { "dynnp_mac" "dynn_Uchtraigh" } + { "dynnp_mac" "dynn_Uilleim" } + dynn_Machair + dynn_Madethyn + dynn_Muireadhach + dynn_Na_Rannaibh + dynn_Neacail + dynn_SdI_bard + dynn_Sgain + dynn_Siorrachd + dynn_Somhairle + dynn_Srath_Nid + } + + male_names = { + Aaron AbbA_n Abner AbE_l AdomnA_n A_ed A_edgen A_educA_n A_edA_n A_engus Affiath Ailbe Ailbrend Ailbrenn AilchU_ Aildobur Ailgel A_ilgenA_n Ailgus + Ailill AilpI_n Ainbchellach A_indle Ainftech Ainmere Airechtach AirfhindA_n AirfhinnA_n Airleid Airmedach Amalgaid AmlaI_b AnfudA_n AnlO_n Anmchaid A_nrothA_n Ardgal + Ardgar Art Artbran Artgal Artgus ArtucA_n ArtU_r Assiucc Augaire AugustI_n Aurthuile BA_ethgalach BA_ethI_ne BA_etA_n BE_oA_ed Barrfhind BeccA_n Berrach BhA_tair + Blathmacc Bran Brandub Brangen Bressal Brian BriccE_ne BriccI_ne BroccA_n Bruatur Bruide BrE_naind BrE_nainn BrO_en BU_aidbE_o Caicher Cailech Cailte Cairbre + Cairell CaissE_ne CaissI_n CaissI_ne Canann CanannA_n Carlus Cathal CathalA_n Cathassach Cathbad CathmA_el CathmA_l Cathnio Cathub CausantI_n CaI_lte CaI_nchomrac + CaI_ndelbA_n Ceithernach Cellach CellachA_n CennE_tig Cenn-FA_elad CennlachA_n Cerball Cernach CernachA_n Cian CiarA_n CillE_ne CillI_ne CinA_ed Clemens Cobthach + Coirpre Colcu ColmA_n Columb ComgA_n Conaing Conall ConallA_n Conamail ConA_n Conchenn Conchobar Condla Congal Congalach Congus Conlang Conmac Conmacc Cailean + ConmA_el ConmA_l Conn Connla ConrI_ Constans ConstantI_n Corbb CorbA_n CorccA_n CorcrA_n Cormac Coscrach CoI_lboth Crimthann CrI_nA_n CrundmA_el CruinnmA_el + CrI_chA_n CrO_nA_n CuilE_n Cuindles Cuircthe Cummascach CA_emA_n CO_elbad CO_elub CO_emA_n CU_-Allaid CU_-Bretan CU_-Caech CU_-Cen CU_-Cen-MA_thair CU_-CU_arA_in CU_-Gamna CU_-RoI_ CU_anu CU_ldub CU_A_n + CU_A_nA_n DabI_d Daigre Dalbach DallA_n DaniE_l Dathal Dathgus DemmA_n Drystan Diarmait Doedgus Domangart Domnall Donn Donnchad Donncuan DonndubA_n Donngal + DonnucA_n DoE_lgus Drost Drust Dub-dA_-Lethe Dubcenn Dubgenn Dubh Dubhghall Dubhglais Dubthach DubA_ed DubA_n Duib Duiblesc Duibne DunA_ed DA_lach DI_cuill DI_glach DI_mmae + DI_mmasach DI_mmA_n DI_nertach DU_nacA_n DU_nadach DU_nchad DU_ngal DU_ngalach DU_nlang E_amonn Echmarcach E_chtgal E_chtgus Echthigern Echuid E_icnech E_icnechA_n ElA_ir E_nna E_nri E_ochad + Eochaid Eochu EochucA_n E_ogan Erc Ercaid ErcA_ed ErcA_n E_remO_n E_rennach ErnA_n EterscE_l EO_gan EO_ganA_n Fachtna Fairchellach Fallaman FarannA_n FaI_lbe Fearghus + Fechtnach Fedach Fearchar Fedelmid Feirgil Felic Fer-Fugaill Feradach Ferdomnach Fergal Fergus Fiachnae FianchU_ Findbarr Fingen Finguine Finn FinnacA_n Finnbarr + FinnchU_ Finnlagh Finnsnechtae Fintan Flaithbertach Flaithem FlaithemA_n Flaithgus FlaithrI_ Flann FlannacA_n Flannchad FlannA_n Fogartach Folachtach ForannA_n Forbassach Fothad Fothud + Fuacarta Fubthad Fuirechtach Fursu FA_elcar FA_elchad FA_elchU_ FA_eldobur FA_elgus FA_elA_n FA_elbe FI_achnae FI_adchU_ FI_ngin FI_nsnechta FO_carta GabrA_n Garalt Garbith Gilla-I_osa Gilla-BrI_gte + Gilla-Coluim Gilla-ComgA_in Gilla-CrI_st Gilla-na-NA_em Gilla-PA_traic Gilla-Ruad Glaisiuc Glaschu GlU_n-Iairn Gofraid GormacA_n Gormgus GormA_n Guaire GA_ethA_n + GA_ethI_ne GO_sacht Iacob Iarlaithe Ildulb Imchad Indrechtach Ioseph I_omhar Labraid Lachtnae LachtnA_n LachtnE_ne Laidcenn Laidgenn LaidI_ne LaisrE_n LennA_n Lethlobur Liam + Liber Lochlann Loingsech LonA_n LorcA_n Lugh Lugaid LugA_ed LA_egaire LO_chE_ne LO_chI_ne LO_eguire Macbethad Muirgein MA_elSnechtai Mac-Laisre MainchI_ne Maine ManchA_n Martan Murethach Mathgamain MatudA_n MinchA_n Mo-Chonna Mo-Lua MO_enach + Morand Morann MugrO_n Muirchertach MuirecA_n Muiredach Muirgius Murchad MurchU_ MA_el-Anfaid MA_el-Bresail MA_el-BrI_gte MA_el-Cein MA_el-CianA_in MA_el-CiarA_in MA_el-Coluim MA_el-Corgis + MA_el-Dubh MA_el-DU_in MA_el-Fothartaig MA_el-FA_baill MA_el-I_osa MA_el-MA_edO_c MA_el-Martain MA_el-MO_rda MA_el-Muire MA_el-MI_chI_l MA_el-Petair MA_el-PA_traic MA_el-Ruanaid MA_el-Sechnaill + MA_el-TO_lai MA_elA_n MA_enach MA_thair MU_adA_n Nadarchu Nannid Natfraech Natfraich Natsluaig Nechtan Niall Niallgus NiallA_n Nuadu OdrA_n O_engus O_enucA_n OissE_ne OissI_ne OlcA_n O_lchobar + OnchU_ Orthanach Oscar PA_traic Petair Pilib PO_l Proinsias Rechtabra RiacA_n Riaguil Robartach Rogallach Rogellach Ruah RuaidrI_ Ruarcc Rumann + RA_thach RI_gA_n RI_A_n RO_dA_n RO_nchU_ RO_nA_n RU_adacA_n RU_adA_n Scandal ScandlA_n ScellA_n Scolaige SE_aghdha SE_afra SE_amas SeA_n Sechnassach Selbach SenchA_n SeoA_n Sinach + SiothrU_n SlE_bI_ne Snedgus Sogan Somhairle Suibne SA_erbrethach SA_rA_n SE_igI_ne SE_tna SE_tnae Tadhg Taithlech Talorc TalorcA_n TemnE_n Tigernach TigernA_n + Tipraite Tomaltach TomA_s TorccA_n Trenchad Trengus Tressach TuathalA_n Tuireann TA_lA_n TO_la TU_athal Ualgarg Ualan Ualtar U_amnachA_n Uargal Uargalach Uargus + Uilliam UltA_n + } + female_names = { + Ablach A_edammair Affraic AI_binn AibilI_n Aileann A_ine Anlaith Anleta ArO_c Barrdub Ben-Laigen Ben-MI_de Ben-Muman Ben-Ulad Brigit BE_-FA_il BE_binn Cacht Caillech-FhinnE_in + Cainnech CaissE_ne CaitilI_n CaI_ntigern CaI_rech CathA_n CatrI_ona Cellach Ciar Cnes Coblaith Cobflaith Conchenn CondA_l CrI_nO_ch CrI_stina Cumman + Deirdre Der-bForgaill DerbA_il Derborgaill Der-Ilei Der-Lugdach Dianaim Doriend Dub-Dil Dub-Essa Dub-Lemna Dubchoblaig Dubgilla DU_insech DU_nlaith Echrad E_ibhleann + Eilionora Eithne EllbrI_g Emer E_taI_n E_ua Euginia FaI_lenn Fedelm Finneacht Finnguala Flann Forbflaith FI_ne Garb Gormuil GelgE_is GerrO_c Gnathnad Gormflaith + Gormlaith GrA_inne Imag I_te Lann LasairfI_ona Lathir Lerben Lerthan LI_gach Lucia Martha Mauda Muadhnait Muirenn Muirgel Muirne MA_el-Mide + MA_el-Muire MA_ire MA_iread MA_irgred MO_r MO_r-Muman NA_rbflaith Nuala O_rlaith O_rnat RO_is Sadb Samthann ScA_thach SE_bdann Selblaith Seonaid Sinech SiobA_n + Sisuile SlA_I_ne Sorcha Suaibsech SA_erlaith SE_tach SI_thmaith Tailefhlaith Tailltiu Temair Tuathflaith TO_mnat Uallach Uasal U_na + } + + patronym_prefix_male = "dynnpat_pre_Mac" + patronym_prefix_female = "dynnpat_pre_Mac" + dynasty_of_location_prefix = "dynnp_a" + + always_use_patronym = yes + + + pat_grf_name_chance = 30 + mat_grf_name_chance = 15 + father_name_chance = 5 + + pat_grm_name_chance = 30 + mat_grm_name_chance = 15 + mother_name_chance = 10 + + mercenary_names = { + { name = mercenary_company_gallowglasses } + { name = mercenary_company_redshanks } + } +} diff --git a/common/culture/name_lists/00_iberian.txt b/common/culture/name_lists/00_iberian.txt new file mode 100644 index 00000000..598141eb --- /dev/null +++ b/common/culture/name_lists/00_iberian.txt @@ -0,0 +1,1438 @@ +name_list_basque = { + + cadet_dynasty_names = { + { "dynnp_de" "dynn_Agurto" } + { "dynnp_de" "dynn_Vizcaya" } + { "dynnp_d_" "dynn_A_valos" } + { "dynnp_de" "dynn_BazA_n" } + { "dynnp_de" "dynn_NA_jera" } + { "dynnp_de" "dynn_Noboa" } + { "dynnp_de" "dynn_Vidaure" } + { "dynnp_de" "dynn_Azagra" } + "dynn_Benavides" + { "dynnp_de" "dynn_ZU_N_iga" } + "dynn_Coronel" + { "dynnp_de" "dynn_Viguera" } + { "dynnp_de" "dynn_Cea" } + "dynn_Cajal" + { "dynnp_de" "dynn_los_Cameros" } + { "dynnp_de" "dynn_EstI_baliz" } + { "dynnp_de" "dynn_Viscaya" } + { "dynnp_de" "dynn_La_Rioja" } + { "dynnp_de" "dynn_Jaca" } + { "dynnp_de" "dynn_Laturce" } + "dynn_LadrO_n_de_Guevara" + } + + dynasty_names = { + { "dynnp_de" "dynn_Agurto" } + { "dynnp_de" "dynn_Vizcaya" } + { "dynnp_d_" "dynn_A_valos" } + { "dynnp_de" "dynn_BazA_n" } + { "dynnp_de" "dynn_NA_jera" } + { "dynnp_de" "dynn_Noboa" } + { "dynnp_de" "dynn_Vidaure" } + { "dynnp_de" "dynn_Azagra" } + "dynn_Benavides" + { "dynnp_de" "dynn_ZU_N_iga" } + "dynn_Coronel" + { "dynnp_de" "dynn_Viguera" } + { "dynnp_de" "dynn_Cea" } + "dynn_Cajal" + { "dynnp_de" "dynn_los_Cameros" } + { "dynnp_de" "dynn_EstI_baliz" } + { "dynnp_de" "dynn_Viscaya" } + { "dynnp_de" "dynn_La_Rioja" } + { "dynnp_de" "dynn_Laturce" } + "dynn_LadrO_n_de_Guevara" + } + + male_names = { + Alfontso Alvar Antso Armengol Aznar Belasko Bermudo Bernart Diego Donato + Egidio Eneko Erramun Fernando Filipe Fortun Galindo Gartzia Gil Gilen + Gomez Gontzal Henrique Herramel Jakue Joanes Karlos Kasio Ladron Lope + Luis Manrike MartI_n Munio NuN_o Obeko OrdoN_o Pelaio Piarres Ramiro + Rodrigo Suero Tibalt Vela Ximeno Zentulo + +# Abdala Isa Ismail Mohamed Motarrif Muza Saad Salama Taur Yahya Yunus Zahir + } + female_names = { + Adalais Aines Alausia Aldontza Anderkina Andregoto Antsa Assona Ava Azibella + Beatritz Belaskita Berengaria Blanka Briska Elbira Elisabet Eliza Emili Endulcia + Ermesinda Estefania Fakilo Fronilde Gersenda Guntroda Joana Katalina Kisilo Konstantzia + Leonor Maior Maria Matilda Matrona Mentzia Munia Muniadona Nunila NuN_a + Oneka Oria Plazentzia Tekla Teresa Toda Toda-Adalais Urraka Ximena + +# Awriya + } + dynasty_of_location_prefix = "dynnp_de" + + patronym_suffix_male = "dynnpat_suf_ez" + patronym_suffix_female = "dynnpat_suf_ez" + always_use_patronym = yes + + pat_grf_name_chance = 80 + mat_grf_name_chance = 5 + father_name_chance = 5 + + pat_grm_name_chance = 55 + mat_grm_name_chance = 15 + mother_name_chance = 20 + + + + mercenary_names = { + { name = "mercenary_company_nafarroako_konpainia" coat_of_arms = "mc_nafarroako_konpainia" } + } +} +name_list_castilian = { + + cadet_dynasty_names = { + "dynn_NU_N_ez" + { "dynnp_de" "dynn_la_Cerda" } + { "dynnp_de" "dynn_Deza" } + { "dynnp_de" "dynn_Borgona" } + "dynn_Alonso" + { "dynnp_de" "dynn_Castro" } + { "dynnp_del" "dynn_Carpio" } + { "dynnp_de" "dynn_Bolea" } + { "dynnp_de" "dynn_AcuN_a" } + "dynn_RamI_rez" + "dynn_Trillo_de_las_Asturias" + { "dynnp_de" "dynn_Menezes" } + { "dynnp_de" "dynn_Alba_de_Liste" } + { "dynnp_de" "dynn_Castrogeriz" } + { "dynnp_de" "dynn_Alencastre" } + { "dynnp_de" "dynn_Ovando" } + { "dynnp_de" "dynn_Viguera" } + { "dynnp_de" "dynn_LeO_n" } + { "dynnp_de" "dynn_Benavides" } + "dynn_MenE_ndez" + { "dynnp_de" "dynn_TrastA_mara" } + { "dynnp_de" "dynn_CastaN_eda" } + { "dynnp_de" "dynn_Molina" } + "dynn_A_lvarez_de_Azagra" + { "dynnp_de" "dynn_Alfaro" } + "dynn_Ponce_de_LeO_n" + "dynn_Barrientos" + { "dynnp_de" "dynn_Ceballos" } + { "dynnp_de" "dynn_Toledo" } + { "dynnp_de" "dynn_CO_rdoba" } + { "dynnp_de" "dynn_Godoy" } + { "dynnp_de" "dynn_la_Vega" } + { "dynnp_de" "dynn_Villalobos" } + { "dynnp_de" "dynn_NoreN_a" } + { "dynnp_de" "dynn_GijO_n" } + { "dynnp_de" "dynn_Sotomayor" } + { "dynnp_de" "dynn_CA_ceres" } + { "dynnp_de" "dynn_SolI_s" } + { "dynnp_de" "dynn_QuiN_ones" } + { "dynnp_de" "dynn_Quintana" } + { "dynnp_de" "dynn_Padilla" } + { "dynnp_de" "dynn_Candamio" } + "dynn_BarragA_n" + "dynn_MejI_a" + "dynn_Cabeza_de_Vaca" + { "dynnp_de" "dynn_VillagarcI_a" } + { "dynnp_de" "dynn_Luna" } + { "dynnp_de" "dynn_la_Cueva" } + { "dynnp_de" "dynn_Pacheco" } + { "dynnp_de" "dynn_CA_rdenas" } + "dynn_FernA_ndez" + "dynn_PE_rez" + "dynn_RuI_z" + "dynn_LO_pez" + "dynn_DI_az" + "dynn_Alonso" + "dynn_SA_nchez" + "dynn_LA_inez" + { "dynnp_de" "dynn_Prado" } + "dynn_GutiE_rrez" + { "dynnp_de" "dynn_LiE_bana" } + "dynn_Feijoo" + { "dynnp_de" "dynn_Lugo" } + { "dynnp_de" "dynn_Bergido" } + { "dynnp_de" "dynn_PeN_alba" } + "dynn_MuN_oz" + { "dynnp_de" "dynn_Miravalles" } + { "dynnp_de" "dynn_Cisneros" } + "dynn_PelA_ez" + { "dynnp_de" "dynn_SahagU_n" } + "dynn_Alfonso" + "dynn_RodrI_guez" + "dynn_BermU_dez" + { "dynnp_de" "dynn_Manzanedo" } + { "dynnp_de" "dynn_AlagO_n" } + { "dynnp_de" "dynn_Samos" } + { "dynnp_de" "dynn_Villacorta" } + { "dynnp_de" "dynn_SantibA_N_ez" } + { "dynnp_de" "dynn_Silos" } + { "dynnp_de" "dynn_Aguilar" } + { "dynnp_de" "dynn_Toro" } + { "dynnp_de" "dynn_Segovia" } + { "dynnp_de" "dynn_Biedma" } + { "dynnp_de" "dynn_Cabra" } + { "dynnp_de" "dynn_Ayerbe" } + { "dynnp_de" "dynn_HI_jar" } + { "dynnp_de" "dynn_Castilla_y_LeO_n" } + "dynn_Furtado" + { "dynnp_de" "dynn_Soler" } + { "dynnp_de" "dynn_CaN_amas" } + { "dynnp_de" "dynn_Borja" } + { "dynnp_de" "dynn_RiaN_o" } + { "dynnp_de" "dynn_Limia" } + { "dynnp_de" "dynn_Belorado" } + { "dynnp_de" "dynn_Arroyolos" } + { "dynnp_de" "dynn_Villamayor" } + "dynn_Manrique" + "dynn_Venegas" + { "dynnp_de" "dynn_la_Vega" } + { "dynnp_de" "dynn_Rojas" } + { "dynnp_de" "dynn_Escobar" } + { "dynnp_de" "dynn_Fuente_Almexir" } + { "dynnp_de" "dynn_Avellaneda" } + { "dynnp_de" "dynn_Fano" } + "dynn_Adgaz" + { "dynnp_de" "dynn_Xinzo" } + { "dynnp_de" "dynn_Entralgo" } + { "dynnp_de" "dynn_Feniosara" } + { "dynnp_de" "dynn_Saz" } + { "dynnp_de" "dynn_Silva" } + { "dynnp_de" "dynn_ToroN_o" } + { "dynnp_del" "dynn_Puente" } + { "dynnp_de" "dynn_Palencia" } + "dynn_HelI_as" + "dynn_GelmI_rez" + "dynn_Episcopus" + "dynn_Camundo" + "dynn_GundestE_iz" + "dynn_MuN_I_z" + { "dynnp_de" "dynn_PadrO_n" } + { "dynnp_de" "dynn_Landora" } + { "dynnp_de" "dynn_CarriO_n" } + { "dynnp_de" "dynn_San_MillA_n" } + { "dynnp_de" "dynn_la_Frontera" } + "dynn_Icaza" + { "dynnp_de" "dynn_Yanguas" } + { "dynnp_de" "dynn_Novoa" } + { "dynnp_de" "dynn_Cevallos" } + { "dynnp_de" "dynn_Santsoles" } + { "dynnp_de" "dynn_Barrantes" } + "dynn_Gallego" + { "dynnp_de" "dynn_Quiroga" } + "dynn_Maldonado" + { "dynnp_de" "dynn_Fuentes" } + { "dynnp_de" "dynn_TrastA_mara" } + { "dynnp_de" "dynn_Santiago" } + { "dynnp_de" "dynn_Niebla" } + { "dynnp_de" "dynn_CA_diz" } + { "dynnp_de" "dynn_Algeciras" } + { "dynnp_de" "dynn_MA_laga" } + { "dynnp_de" "dynn_AlmerI_a" } + { "dynnp_de" "dynn_Murcia" } + { "dynnp_de" "dynn_Denia" } + { "dynnp_de" "dynn_Valencia" } + { "dynnp_de" "dynn_Castellon" } + { "dynnp_de" "dynn_AlbarracI_n" } + { "dynnp_de" "dynn_Calatayud" } + { "dynnp_de" "dynn_Molina" } + { "dynnp_de" "dynn_Cuenca" } + { "dynnp_de" "dynn_La_Mancha" } + { "dynnp_de" "dynn_Almansa" } + { "dynnp_de" "dynn_Granada" } + { "dynnp_de" "dynn_Cordoba" } + { "dynnp_de" "dynn_Sevilla" } + { "dynnp_de" "dynn_Aracena" } + { "dynnp_de" "dynn_Badajoz" } + { "dynnp_de" "dynn_Astorga" } + { "dynnp_de" "dynn_LeO_n" } + { "dynnp_de" "dynn_Zamora" } + { "dynnp_de" "dynn_Salamanca" } + { "dynnp_de" "dynn_AlcA_ntara" } + { "dynnp_de" "dynn_Plasencia" } + { "dynnp_de" "dynn_Calatrava" } + { "dynnp_de" "dynn_Valladolid" } + { "dynnp_de" "dynn_Burgos" } + { "dynnp_de" "dynn_Soria" } + { "dynnp_de" "dynn_Zaragoza" } + "dynn_Arias" + { "dynnp_de" "dynn_Mendoza" } + "dynn_MartI_nez_de_Oviedo" + { "dynnp_de" "dynn_Peralta" } + "dynn_PE_rez_de_Zamora" + "dynn_MartI_n" + { "dynnp_de" "dynn_Castrosiero" } + { "dynnp_de" "dynn_Toledo" } + } + + dynasty_names = { + "dynn_NU_N_ez" + { "dynnp_de" "dynn_la_Cerda" } + { "dynnp_de" "dynn_Deza" } + { "dynnp_de" "dynn_Borgona" } + "dynn_Alonso" + { "dynnp_de" "dynn_Castro" } + { "dynnp_del" "dynn_Carpio" } + { "dynnp_de" "dynn_Bolea" } + { "dynnp_de" "dynn_AcuN_a" } + "dynn_RamI_rez" + "dynn_Trillo_de_las_Asturias" + { "dynnp_de" "dynn_Menezes" } + { "dynnp_de" "dynn_las_Asturias" } + { "dynnp_de" "dynn_Alba_de_Liste" } + { "dynnp_de" "dynn_Castrogeriz" } + { "dynnp_de" "dynn_Alencastre" } + { "dynnp_de" "dynn_Ovando" } + { "dynnp_de" "dynn_Viguera" } + { "dynnp_de" "dynn_LeO_n" } + { "dynnp_de" "dynn_Benavides" } + "dynn_MenE_ndez" + { "dynnp_de" "dynn_TrastA_mara" } + { "dynnp_de" "dynn_CastaN_eda" } + { "dynnp_de" "dynn_Molina" } + "dynn_A_lvarez_de_Azagra" + { "dynnp_de" "dynn_Alfaro" } + "dynn_Ponce_de_LeO_n" + "dynn_Barrientos" + { "dynnp_de" "dynn_Ceballos" } + { "dynnp_de" "dynn_Toledo" } + { "dynnp_de" "dynn_CO_rdoba" } + { "dynnp_de" "dynn_Godoy" } + { "dynnp_de" "dynn_la_Vega" } + { "dynnp_de" "dynn_Villalobos" } + { "dynnp_de" "dynn_NoreN_a" } + { "dynnp_de" "dynn_GijO_n" } + { "dynnp_de" "dynn_Sotomayor" } + { "dynnp_de" "dynn_CA_ceres" } + { "dynnp_de" "dynn_SolI_s" } + { "dynnp_de" "dynn_QuiN_ones" } + { "dynnp_de" "dynn_Quintana" } + { "dynnp_de" "dynn_Padilla" } + { "dynnp_de" "dynn_Candamio" } + "dynn_BarragA_n" + "dynn_MejI_a" + "dynn_Cabeza_de_Vaca" + { "dynnp_de" "dynn_VillagarcI_a" } + { "dynnp_de" "dynn_Luna" } + { "dynnp_de" "dynn_la_Cueva" } + { "dynnp_de" "dynn_Pacheco" } + { "dynnp_de" "dynn_CA_rdenas" } + "dynn_FernA_ndez" + "dynn_PE_rez" + "dynn_RuI_z" + "dynn_LO_pez" + "dynn_DI_az" + "dynn_Alonso" + "dynn_SA_nchez" + "dynn_LA_inez" + { "dynnp_de" "dynn_Prado" } + "dynn_GutiE_rrez" + { "dynnp_de" "dynn_LiE_bana" } + "dynn_Feijoo" + { "dynnp_de" "dynn_Lugo" } + { "dynnp_de" "dynn_Bergido" } + { "dynnp_de" "dynn_PeN_alba" } + "dynn_MuN_oz" + { "dynnp_de" "dynn_Miravalles" } + { "dynnp_de" "dynn_Cisneros" } + "dynn_PelA_ez" + { "dynnp_de" "dynn_SahagU_n" } + "dynn_Alfonso" + "dynn_RodrI_guez" + "dynn_BermU_dez" + { "dynnp_de" "dynn_Manzanedo" } + { "dynnp_de" "dynn_AlagO_n" } + { "dynnp_de" "dynn_Samos" } + { "dynnp_de" "dynn_Villacorta" } + { "dynnp_de" "dynn_SantibA_N_ez" } + { "dynnp_de" "dynn_Silos" } + { "dynnp_de" "dynn_Aguilar" } + { "dynnp_de" "dynn_Toro" } + { "dynnp_de" "dynn_Segovia" } + { "dynnp_de" "dynn_Biedma" } + { "dynnp_de" "dynn_Cabra" } + { "dynnp_de" "dynn_Ayerbe" } + { "dynnp_de" "dynn_HI_jar" } + { "dynnp_de" "dynn_Castilla_y_LeO_n" } + { "dynnp_de" "dynn_AragO_n" } + { "dynnp_de" "dynn_Risnal" } + "dynn_Furtado" + { "dynnp_de" "dynn_Soler" } + { "dynnp_de" "dynn_CaN_amas" } + { "dynnp_de" "dynn_Borja" } + { "dynnp_de" "dynn_Huesca" } + { "dynnp_de" "dynn_RiaN_o" } + { "dynnp_de" "dynn_Limia" } + { "dynnp_de" "dynn_Belorado" } + { "dynnp_de" "dynn_Arroyolos" } + { "dynnp_de" "dynn_Villamayor" } + "dynn_Manrique" + "dynn_Venegas" + { "dynnp_de" "dynn_la_Vega" } + { "dynnp_de" "dynn_Rojas" } + { "dynnp_de" "dynn_Escobar" } + { "dynnp_de" "dynn_Fuente_Almexir" } + { "dynnp_de" "dynn_Avellaneda" } + { "dynnp_de" "dynn_Fano" } + "dynn_Adgaz" + { "dynnp_de" "dynn_Xinzo" } + { "dynnp_de" "dynn_Entralgo" } + { "dynnp_de" "dynn_Feniosara" } + { "dynnp_de" "dynn_Saz" } + { "dynnp_de" "dynn_Silva" } + { "dynnp_de" "dynn_ToroN_o" } + { "dynnp_del" "dynn_Puente" } + { "dynnp_de" "dynn_Palencia" } + "dynn_HelI_as" + "dynn_GelmI_rez" + "dynn_Episcopus" + "dynn_Camundo" + "dynn_GundestE_iz" + "dynn_MuN_I_z" + { "dynnp_de" "dynn_PadrO_n" } + { "dynnp_de" "dynn_Landora" } + { "dynnp_de" "dynn_CarriO_n" } + { "dynnp_de" "dynn_San_MillA_n" } + { "dynnp_de" "dynn_la_Frontera" } + "dynn_Icaza" + { "dynnp_de" "dynn_Yanguas" } + { "dynnp_de" "dynn_Novoa" } + { "dynnp_de" "dynn_Cevallos" } + { "dynnp_de" "dynn_Santsoles" } + { "dynnp_de" "dynn_Barrantes" } + "dynn_Gallego" + { "dynnp_de" "dynn_Quiroga" } + "dynn_Maldonado" + { "dynnp_de" "dynn_Fuentes" } + { "dynnp_de" "dynn_TrastA_mara" } + { "dynnp_de" "dynn_Santiago" } + { "dynnp_de" "dynn_Niebla" } + { "dynnp_de" "dynn_CA_diz" } + { "dynnp_de" "dynn_Algeciras" } + { "dynnp_de" "dynn_MA_laga" } + { "dynnp_de" "dynn_AlmerI_a" } + { "dynnp_de" "dynn_Murcia" } + { "dynnp_de" "dynn_Denia" } + { "dynnp_de" "dynn_Valencia" } + { "dynnp_de" "dynn_Castellon" } + { "dynnp_de" "dynn_AlbarracI_n" } + { "dynnp_de" "dynn_Calatayud" } + { "dynnp_de" "dynn_Molina" } + { "dynnp_de" "dynn_Cuenca" } + { "dynnp_de" "dynn_La_Mancha" } + { "dynnp_de" "dynn_Almansa" } + { "dynnp_de" "dynn_Granada" } + { "dynnp_de" "dynn_Cordoba" } + { "dynnp_de" "dynn_Sevilla" } + { "dynnp_de" "dynn_Aracena" } + { "dynnp_de" "dynn_Badajoz" } + { "dynnp_de" "dynn_Astorga" } + { "dynnp_de" "dynn_LeO_n" } + { "dynnp_de" "dynn_Zamora" } + { "dynnp_de" "dynn_Salamanca" } + { "dynnp_de" "dynn_AlcA_ntara" } + { "dynnp_de" "dynn_Plasencia" } + { "dynnp_de" "dynn_Calatrava" } + { "dynnp_de" "dynn_Valladolid" } + { "dynnp_de" "dynn_Burgos" } + { "dynnp_de" "dynn_Soria" } + { "dynnp_de" "dynn_Zaragoza" } + "dynn_Arias" + { "dynnp_de" "dynn_Mendoza" } + "dynn_MartI_nez_de_Oviedo" + { "dynnp_de" "dynn_Peralta" } + "dynn_PE_rez_de_Zamora" + "dynn_MartI_n" + { "dynnp_de" "dynn_Castrosiero" } + { "dynnp_de" "dynn_Toledo" } + } + + male_names = { + Alfonso Alonso A_lvar A_lvaro AndrE_s Ansur Antonino Arias Benito Berenguel + Bermudo Bernardo Diego Domingo Enrique Esteban Fadrique Felipe FernA_n Fernando + Fruela GarcI_a Gerardo Gil GO_mez Gonzalo GuillE_n Guillermo Gutierre Hermenegildo + Jaime Jimeno Juan LaI_n Lope Lorenzo Luis Manrique Manuel MartI_n + Menendo Munio NuN_o OrdoN_o Osorio Oveco Pedro Pelayo Pero Ponce + Raimundo Ramiro RamO_n Rodrigo Salvador Sancho SebastiA_n SimO_n Suero Tello + Teobaldo Vela Velasco Vellido + } + female_names = { + Aldonza Alduara Alicia Anderquina Andregoto Aragonte Argilo Beatriz Benita Berenguela + Blanca BrI_gida Catalina Constanza Cristina DueN_a Dulce Elvira Ermengarda Ermesinda + Eslonza EstefanI_a Eulalia Eva Eylo FlA_mula Fronilde Godina Goto Gotruda + Guina Guiomar Gustio InEEs Isabel Jimena Juana Leonor Mafalda Margarita + MarI_a Marina Marquesa Mayor MencI_a MI_lia Munia Muniadona Oneca Sancha + Sol Teresa Toda Urraca Velasquita Violante Visclavara + } + + dynasty_of_location_prefix = "dynnp_de" + + patronym_suffix_male = "dynnpat_suf_ez" + patronym_suffix_female = "dynnpat_suf_ez" + always_use_patronym = yes + + pat_grf_name_chance = 45 + mat_grf_name_chance = 15 + father_name_chance = 30 + + pat_grm_name_chance = 40 + mat_grm_name_chance = 10 + mother_name_chance = 40 + + + + mercenary_names = { + { name = "mercenary_company_slaughterers" } + { name = "mercenary_company_band_of_the_brigand_emperor" } + } +} +name_list_catalan = { + + cadet_dynasty_names = { + { "dynnp_de" "dynn_Mallorca" } + { "dynnp_d_" "dynn_EntenC_a" } + { "dynnp_d_" "dynn_Urgell" } + { "dynnp_de" "dynn_Vilademuls" } + { "dynnp_d_" "dynn_Anoia" } + { "dynnp_d_" "dynn_AragO_" } + { "dynnp_de" "dynn_Montcada" } + { "dynnp_de" "dynn_LluC_A_" } + { "dynnp_d_" "dynn_EmpU_ries" } + { "dynnp_de" "dynn_Ribera" } + { "dynnp_d_" "dynn_Urgell" } + "dynn_Barcino" + { "dynnp_de" "dynn_ValE_ncia" } + { "dynnp_de" "dynn_Gandia" } + { "dynnp_d_" "dynn_AragO_" } + { "dynnp_de" "dynn_Villena" } + { "dynnp_de" "dynn_Figueroa" } + "dynn_Desllor" + { "dynnp_de" "dynn_Tost" } + { "dynnp_de" "dynn_CastellbO_" } + { "dynnp_de" "dynn_Cervera" } + { "dynnp_de" "dynn_Torroja" } + { "dynnp_d_" "dynn_Aniort" } + { "dynnp_de" "dynn_XE_rica" } + { "dynnp_del" "dynn_Rei" } + { "dynnp_de" "dynn_PinO_s" } + { "dynnp_de" "dynn_Vilaragut" } + { "dynnp_del" "dynn_Port" } + { "dynnp_de" "dynn_Castre" } + { "dynnp_de" "dynn_Canet" } + { "dynnp_de" "dynn_Sa_Roca" } + { "dynnp_de" "dynn_Thous" } + "dynn_March" + { "dynnp_de" "dynn_Corbera" } + { "dynnp_de" "dynn_Montsoriu" } + "dynn_Despuig" + { "dynnp_d_" "dynn_Almenara" } + { "dynnp_de" "dynn_Castellvell" } + { "dynnp_de" "dynn_TA_rrega" } + { "dynnp_de" "dynn_CastellO_" } + "dynn_Urgell" + { "dynnp_d_" "dynn_EmpU_ries" } + { "dynnp_del" "dynn_RipollE_s" } + { "dynnp_d_" "dynn_Amador" } + { "dynnp_de" "dynn_Cardona" } + { "dynnp_de" "dynn_Montcada" } + { "dynnp_de" "dynn_Mataplana" } + { "dynnp_de" "dynn_Cardona" } + { "dynnp_d_" "dynn_Erill" } + { "dynnp_d_" "dynn_en_Bas" } + "dynn_RocO_" + { "dynnp_de" "dynn_Sant_MartI_" } + "dynn_GarC_adO_" + { "dynnp_de" "dynn_Sales" } + { "dynnp_de" "dynn_RibellE_s" } + { "dynnp_de" "dynn_MontclU_s" } + { "dynnp_de" "dynn_Castellet" } + { "dynnp_de" "dynn_CervellO_" } + { "dynnp_d_" "dynn_AntillO_" } + { "dynnp_de" "dynn_Palafolls" } + { "dynnp_de" "dynn_Castellnou" } + "dynn_Descatllar" + { "dynnp_de" "dynn_Cabrenys" } + { "dynnp_d_" "dynn_Anglesola" } + "dynn_Alemany" + { "dynnp_de" "dynn_CruI_lles" } + { "dynnp_de" "dynn_Pontiac" } + { "dynnp_de" "dynn_Rocafull" } + { "dynnp_d_" "dynn_A_ger" } + "dynn_PonC__de_Minerva" + { "dynnp_de" "dynn_Tarragona" } + "dynn_Ferrer" + { "dynnp_de" "dynn_Lleida" } + { "dynnp_d_" "dynn_EmpordA_" } + } + + dynasty_names = { + { "dynnp_de" "dynn_Mallorca" } + { "dynnp_d_" "dynn_EntenC_a" } + { "dynnp_d_" "dynn_Urgell" } + { "dynnp_de" "dynn_Vilademuls" } + { "dynnp_d_" "dynn_Anoia" } + { "dynnp_d_" "dynn_AragO_" } + { "dynnp_de" "dynn_Montcada" } + { "dynnp_de" "dynn_LluC_A_" } + { "dynnp_d_" "dynn_EmpU_ries" } + { "dynnp_de" "dynn_Ribera" } + { "dynnp_d_" "dynn_Urgell" } + "dynn_Barcino" + { "dynnp_de" "dynn_ValE_ncia" } + { "dynnp_de" "dynn_Gandia" } + { "dynnp_d_" "dynn_AragO_" } + { "dynnp_de" "dynn_Villena" } + { "dynnp_de" "dynn_Figueroa" } + "dynn_Desllor" + { "dynnp_de" "dynn_Tost" } + { "dynnp_de" "dynn_CastellbO_" } + { "dynnp_de" "dynn_Cervera" } + { "dynnp_de" "dynn_Torroja" } + { "dynnp_d_" "dynn_Aniort" } + { "dynnp_de" "dynn_XE_rica" } + { "dynnp_del" "dynn_Rei" } + { "dynnp_de" "dynn_PinO_s" } + { "dynnp_de" "dynn_Vilaragut" } + { "dynnp_del" "dynn_Port" } + { "dynnp_de" "dynn_Castre" } + { "dynnp_de" "dynn_Canet" } + { "dynnp_de" "dynn_Sa_Roca" } + { "dynnp_de" "dynn_Thous" } + "dynn_March" + { "dynnp_de" "dynn_Corbera" } + { "dynnp_de" "dynn_Montsoriu" } + "dynn_Despuig" + { "dynnp_d_" "dynn_Almenara" } + { "dynnp_de" "dynn_Castellvell" } + { "dynnp_de" "dynn_TA_rrega" } + { "dynnp_de" "dynn_CastellO_" } + "dynn_Urgell" + { "dynnp_d_" "dynn_EmpU_ries" } + { "dynnp_del" "dynn_RipollE_s" } + { "dynnp_d_" "dynn_Amador" } + { "dynnp_de" "dynn_Cardona" } + { "dynnp_de" "dynn_Montcada" } + { "dynnp_de" "dynn_Mataplana" } + { "dynnp_de" "dynn_Cardona" } + { "dynnp_d_" "dynn_Erill" } + { "dynnp_d_" "dynn_en_Bas" } + "dynn_RocO_" + { "dynnp_de" "dynn_Sant_MartI_" } + "dynn_GarC_adO_" + { "dynnp_de" "dynn_Sales" } + { "dynnp_de" "dynn_RibellE_s" } + { "dynnp_de" "dynn_MontclU_s" } + { "dynnp_de" "dynn_Castellet" } + { "dynnp_de" "dynn_CervellO_" } + { "dynnp_d_" "dynn_AntillO_" } + { "dynnp_de" "dynn_Palafolls" } + { "dynnp_de" "dynn_Castellnou" } + "dynn_Descatllar" + { "dynnp_de" "dynn_Cabrenys" } + { "dynnp_d_" "dynn_Anglesola" } + "dynn_Alemany" + { "dynnp_de" "dynn_CruI_lles" } + { "dynnp_de" "dynn_Pontiac" } + { "dynnp_de" "dynn_Rocafull" } + { "dynnp_d_" "dynn_A_ger" } + "dynn_PonC__de_Minerva" + { "dynnp_de" "dynn_Tarragona" } + "dynn_Ferrer" + { "dynnp_de" "dynn_Lleida" } + { "dynnp_d_" "dynn_EmpordA_" } + } + + male_names = { + Alfons AAlvar Arnau Arnau-MirO_ Artau Benet Berenguer Berenguer-Ramon Berenguer-Renard Bermond + Bernat Bernat-Amat Bernat-Guillem Bernat-Hug Bertran Borrell Carles Dalmau Dalmau-Berenguer Deodat + DI_dac Enric Ermengol Felip Felip-Dalmau Ferran Frederic GalcerA_ Gausbert Gausfred + Gerard Gombau Guerau GuifrE_ Guillem Guillem-GalcerA_ Guillem-JordA_ Guillem-Ramon Guislabert Hug + Hug-JofrE_ Jaume Joan Joan-Guerau JofrE_ Llop Lluis Manel Mateu MirO_ + Munio NapoleO_ NunO_ Oliba Ott Pagan Pere Pere-Amat Pere-Ramon PonC_ + PonC_-Hug Radulf Ramir Ramon Ramon-Berenguer Ramon-Borrell Renard Riculf Roderic Roger + Roger-Bernat SanC_ Sunifred Sunyer Tetbald Udalard + } + female_names = { + Adelaida AgnE_s Alamanda AldonC_a Algaburga Almodis Angarina Anglesa Arnaua + Arsenda Aurembaix Ava Beatriu Beliarda Berenguera Blanca Brunisenda Caterina CecI_lia + Cesarea Clemencia ConstanC_a DolC_a Eldionda Elionor Elisenda Elvira Ermenerda Ermengarda + Ermessenda Esclaramunda Estefania Flor Gaia Galceranda Gausfredina Gotruda Gueraua Guillelma + Guinidilda Guisla Isabel Isabel-Sibila Joana Jusiana Laura Ledgarda LlU_cia Mahalta + Maior Margarida Maria Marquesa Miraglia MU_nia MU_niadomna Nicolesa O_ria Peronella + Ralinda Ramona Ricarda Riquilda SanC_a Saura Sesenanda Sibila Teresa Timbor + Toda Urraca ValE_ncia Violant Ximena + } + dynasty_of_location_prefix = "dynnp_de" + grammar_transform = french + always_use_patronym = yes + + pat_grf_name_chance = 50 + mat_grf_name_chance = 10 + father_name_chance = 30 + + pat_grm_name_chance = 40 + mat_grm_name_chance = 25 + mother_name_chance = 25 + + + + mercenary_names = { + { name = "mercenary_company_gran_companyia_catalana" coat_of_arms = "mc_gran_companyia_catalana" } + } +} +name_list_portuguese = { + + cadet_dynasty_names = { + { "dynnp_de" "dynn_Coimbra" } + "dynn_FogaC_a" + "dynn_Nunes" + { "dynnp_de" "dynn_Borgonha" } + "dynn_Mendes" + { "dynnp_de" "dynn_Albuquerque" } + { "dynnp_de" "dynn_Ribeira" } + "dynn_Pacheco" + { "dynnp_de" "dynn_Briteiros" } + { "dynnp_de" "dynn_Briteirose" } + { "dynnp_de" "dynn_Siones" } + { "dynnp_de" "dynn_Pereira" } + { "dynnp_de" "dynn_Aviz" } + { "dynnp_de" "dynn_Fonseca" } + { "dynnp_da" "dynn_Cunha" } + { "dynnp_de" "dynn_Braga" } + "dynn_Froilies" + "dynn_Hispano" + { "dynnp_de" "dynn_TA_vora" } + "dynn_Moniz" + "dynn_Pais" + { "dynnp_de" "dynn_SA_" } + "dynn_Martins" + { "dynnp_de" "dynn_Melo" } + "dynn_Certores" + { "dynnp_de" "dynn_Riva" } + { "dynnp_de" "dynn_Coimbra" } + { "dynnp_de" "dynn_Lisboa" } + { "dynnp_de" "dynn_AlcA_cer_do_Sal" } + { "dynnp_de" "dynn_Silves" } + { "dynnp_de" "dynn_Faro" } + { "dynnp_de" "dynn_ME_rtola" } + { "dynnp_de" "dynn_E_vora" } + { "dynnp_de" "dynn_Castelo_Branco" } + { "dynnp_de" "dynn_Braganza" } + "dynn_Camelo" + "dynn_Pires" + "dynn_FernA_ndez_de_Lima" + "dynn_Darc" + { "dynnp_de" "dynn_Vasconcelos" } + { "dynnp_de" "dynn_Lumiares" } + { "dynnp_de" "dynn_Aboim" } + { "dynnp_de" "dynn_Valadares" } + { "dynnp_de" "dynn_Sousa_Chichorro" } + { "dynnp_de" "dynn_Sousa_Arronches" } + { "dynnp_de" "dynn_Soverosa" } + { "dynnp_de" "dynn_Alvarenga" } + "dynn_Coelho" + { "dynnp_da" "dynn_Fonseca" } + { "dynnp_de" "dynn_Sande" } + { "dynnp_de" "dynn_Melo" } + { "dynnp_da" "dynn_NO_brega" } + { "dynnp_de" "dynn_Portugal" } + "dynn_Arias" + } + + dynasty_names = { + { "dynnp_de" "dynn_Coimbra" } + "dynn_FogaC_a" + "dynn_Nunes" + { "dynnp_de" "dynn_Borgonha" } + "dynn_Mendes" + { "dynnp_de" "dynn_Albuquerque" } + { "dynnp_de" "dynn_Ribeira" } + "dynn_Pacheco" + { "dynnp_de" "dynn_Briteiros" } + { "dynnp_de" "dynn_Briteirose" } + { "dynnp_de" "dynn_Siones" } + { "dynnp_de" "dynn_Pereira" } + { "dynnp_de" "dynn_Aviz" } + { "dynnp_de" "dynn_Fonseca" } + { "dynnp_da" "dynn_Cunha" } + { "dynnp_de" "dynn_Braga" } + "dynn_Froilies" + "dynn_Hispano" + { "dynnp_de" "dynn_TA_vora" } + "dynn_Moniz" + "dynn_Pais" + { "dynnp_de" "dynn_SA_" } + "dynn_Martins" + { "dynnp_de" "dynn_Melo" } + "dynn_Certores" + { "dynnp_de" "dynn_Riva" } + { "dynnp_de" "dynn_Coimbra" } + { "dynnp_de" "dynn_Lisboa" } + { "dynnp_de" "dynn_AlcA_cer_do_Sal" } + { "dynnp_de" "dynn_Silves" } + { "dynnp_de" "dynn_Faro" } + { "dynnp_de" "dynn_ME_rtola" } + { "dynnp_de" "dynn_E_vora" } + { "dynnp_de" "dynn_Castelo_Branco" } + { "dynnp_de" "dynn_Braganza" } + "dynn_Camelo" + "dynn_Pires" + "dynn_FernA_ndez_de_Lima" + "dynn_Darc" + { "dynnp_de" "dynn_Vasconcelos" } + { "dynnp_de" "dynn_Lumiares" } + { "dynnp_de" "dynn_Aboim" } + { "dynnp_de" "dynn_Valadares" } + { "dynnp_de" "dynn_Sousa_Chichorro" } + { "dynnp_de" "dynn_Sousa_Arronches" } + { "dynnp_de" "dynn_Soverosa" } + { "dynnp_de" "dynn_Alvarenga" } + "dynn_Coelho" + { "dynnp_da" "dynn_Fonseca" } + { "dynnp_de" "dynn_Sande" } + { "dynnp_de" "dynn_Melo" } + { "dynnp_da" "dynn_NO_brega" } + { "dynnp_de" "dynn_Portugal" } + "dynn_Arias" + } + + male_names = { + Abril Afonso Aires Aloito A_lvaro AndrE_ Arualdo Aurovelido BerengA_rio Bermudo + Bernardo Dinis Diogo DurA_o Egas EstE_vA_o FernA_o Fernando Galindo Garcia + Geraldo Gil Godinho Gomes GonC_alo Gondesendo Guilherme Guterre Heitor Henrique + Hermenegildo HermI_gio JoA_o Lopo LourenC_o Lovesendo Lucidio Manuel Martim Martinho + Mem Mendo Monio MourA_o Muno Nuno Ordonho Paio Pedro Pero + PO_ncio Raimundo Ramiro Roberto Rodrigo Rui Sancho SebastiA_o Sisnando Soeiro + Trastemiro Vasco Vela Vicente Xelmirio + } + female_names = { + Adosinda Alda Aldara AldonC_a Aragunta Ausenda Beatriz BerengA_ria Branca Brites + Catarina Chamoa Clara ConstanC_a Cristina Domingas DO_rdia Dulce Elvira Emisu + Ermesinda Estevainha EstefA_nia Eva Fruilhe Geralda GonC_inha Goda Goina Goldregodo + Gontinha Gontroda Guiomar Ilduara InE_s Isabel Joana LeodegU_ndia Leonor Loba + LU_cia Mafalda Margarida Maria Marinha Marquesa ME_cia MI_lia Moninha Mor + Mumadona Onega Ouroana Ourtigueira Sancha Senhorinha Teresa Toda Tota Trodilde + Unisco Urraca Usco Velasquida Violante Vivili Ximena + } + + dynasty_of_location_prefix = "dynnp_de" + patronym_suffix_male = "dynnpat_suf_es" + patronym_suffix_female = "dynnpat_suf_es" + always_use_patronym = yes + + + + pat_grf_name_chance = 55 + mat_grf_name_chance = 5 + father_name_chance = 30 + + pat_grm_name_chance = 60 + mat_grm_name_chance = 15 + mother_name_chance = 15 + + + + mercenary_names = { + { name = mercenary_company_counts_exiles } + } +} +name_list_visigothic = { + + cadet_dynasty_names = { + "dynn_Erwigiana" + "dynn_Kindasuinthiana" + "dynn_Athanagildid" + "dynn_Athaulf" + "dynn_Sigireik" + "dynn_Gaisalaik" + "dynn_Thiudis" + "dynn_Liwa" + "dynn_Guntimer" + "dynn_Swinthila" + "dynn_Tulga" + "dynn_Hairwig" + "dynn_Witiza" + "dynn_Rotreik" + "dynn_Lewigild" + "dynn_Walja" + "dynn_Witireik" + "dynn_Sisibaud" + "dynn_Kindila" + "dynn_Wanbs" + } + + dynasty_names = { + "dynn_Erwigiana" + "dynn_Kindasuinthiana" + "dynn_Athanagildid" + "dynn_Athaulf" + "dynn_Sigireik" + "dynn_Gaisalaik" + "dynn_Thiudis" + "dynn_Liwa" + "dynn_Guntimer" + "dynn_Swinthila" + "dynn_Tulga" + "dynn_Hairwig" + "dynn_Witiza" + "dynn_Rotreik" + "dynn_Lewigild" + "dynn_Walja" + "dynn_Witireik" + "dynn_Sisibaud" + "dynn_Kindila" + "dynn_Wanbs" + } + + male_names = { + Adelfonso Adelgaster Agila Airmanagildo Alaricho Alatheo Aloito Amalaricho Amalmondo Ambroz + Aoricho Ardo Arias Assur Atawulfo Athanagildo Athanaricho Aurelio Bego Bera + Berengario Diaco Egica Ermengar Erwigio Euricho Fafila Fredol Friedenando Friednand + Fruella GarC_i Gaton Gauzberto Geila Gesalecho GonC_alo Gundemar Guttier Johan + Julian Khindaswintho Khintila Leovigildo Liuva Liuvericho Lucidio Lupo Madrubal Matheo + Mauregato Miron Monnio Nunno Obada Oddilon Odoario Oliba Olmondo Oppas + Ordonno Pelagio Petro Radulfo Ranimiro Rekkaredo Rekkeswintho Ricimero Riculfo Rocesthes + Rodericho Rostan Sans Savarico Silo Sisebuto Sisenando Suinthila Suneario Suniefredo + Tello Theodefredo Theodemiro Theodoricho Theudigislo Theudis Thorismondo Tulga Veremondo Wifredo + Wimarano Witiza Wittericho + +# Abdela AbdelaC_iC_ Abdelmelic Abdeluahid Abderrabmen Abrafim Ambroz Amet Ayyub C_acharya +# C_elim C_ulema Hacan Hamdan Harun IC_ag Mahomat Maruan MuC_a Omar +# Xabrit Yabya Yafar YuC_uf Yunus + } + female_names = { + Adelgundis Adosinda Agnes Aragonte Argilo Ariberga Ava Baddo Brunechildis Cixillo + Creusa Egilona Eldonza Elduara Elvira Ercheswintha Ermeneberga Ermengardis Ermenierdis Ermenisinda + Fafinia Flamula Froiliuva Fronilde Gado Gaudiosa Gonterote Gothina Gudilona Iberia + Ingundis Leodegundis Liuvigothona Menenda Monnia Monniadomna Onecca Paterna Patruina Ralindis + Riciberga Ricilo Sibilia Sisenanda Theodora Urraca Winidilda + +# Abda Ayab AyC_a C_ayida C_eida Emira Isra Leyla Melica Nadia +# Nadira Neyla Nur Tarifa YaC_mina + } + dynasty_of_location_prefix = "dynnp_de" + #grammar_transform = french + patronym_suffix_male = "dynnpat_suf_iz" + patronym_suffix_female = "dynnpat_suf_iz" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 5 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 5 + + +} + +name_list_galician = { + + cadet_dynasty_names = { + "dynn_Gallego" + { "dynnp_de" "dynn_Acibeiro" } + { "dynnp_de" "dynn_Armenteira" } + { "dynnp_de" "dynn_Astorga" } + { "dynnp_de" "dynn_Barrantes" } + { "dynnp_de" "dynn_Betanzos" } + { "dynnp_de" "dynn_Carballido" } + { "dynnp_da" "dynn_CoruN_a" } + { "dynnp_de" "dynn_Dubra" } + { "dynnp_de" "dynn_Ferreira" } + { "dynnp_do" "dynn_Ferrol" } + { "dynnp_de" "dynn_Galicia" } + { "dynnp_de" "dynn_Lemos" } + { "dynnp_de" "dynn_LE_rez" } + { "dynnp_de" "dynn_Limia" } + { "dynnp_de" "dynn_Lourenza" } + { "dynnp_de" "dynn_Lugo" } + { "dynnp_de" "dynn_Meira" } + { "dynnp_de" "dynn_ME_lide" } + { "dynnp_de" "dynn_MelO_n" } + { "dynnp_de" "dynn_MondoN_edo" } + { "dynnp_de" "dynn_Monfero" } + { "dynnp_de" "dynn_Monterrei" } + { "dynnp_de" "dynn_Novoa" } + { "dynnp_de" "dynn_Oseira" } + { "dynnp_de" "dynn_Ourense" } + { "dynnp_do" "dynn_PadrO_n" } + { "dynnp_de" "dynn_Penamaior" } + { "dynnp_de" "dynn_Poio" } + { "dynnp_de" "dynn_Pontevedra" } + { "dynnp_de" "dynn_Quiroga" } + { "dynnp_de" "dynn_Salvatierra" } + { "dynnp_de" "dynn_Samos" } + { "dynnp_de" "dynn_Santiago" } + { "dynnp_de" "dynn_Sobrado" } + { "dynnp_de" "dynn_TrastA_mara" } + { "dynnp_de" "dynn_Tui" } + { "dynnp_de" "dynn_Vigo" } + { "dynnp_de" "dynn_Vilalba" } + } + + dynasty_names = { + "dynn_AlfO_nsez" + "dynn_A_lvarez" + "dynn_AndrE_s" + "dynn_Arias" + "dynn_Berenguer" + "dynn_Bernardo" + "dynn_Camundo" + "dynn_DI_az" + "dynn_EstE_vez" + "dynn_FernA_ndez" + "dynn_FLA_inez" + "dynn_Froilaz" + "dynn_GarcI_a" + "dynn_GO_mes" + "dynn_GonzA_lez" + "dynn_GundestE_iz" + "dynn_GotE_rrez" + "dynn_Lorenzo" + "dynn_MartI_n" + "dynn_ME_ndez" + "dynn_MuN_oz" + "dynn_OdoA_riz" + "dynn_Osorio" + "dynn_PA_ez" + "dynn_PE_rez" + "dynn_Quiroga" + "dynn_RodrI_guez" + "dynn_RomA_niz" + "dynn_RuI_z" + "dynn_Pereira" + "dynn_SA_nchez" + "dynn_SuA_rez" + "dynn_VA_squez" + "dynn_VE_laz" + "dynn_VermU_dez" + "dynn_XelmI_rez" + "dynn_Xil" + { "dynnp_de" "dynn_Andrade" } + { "dynnp_de" "dynn_Barrantes" } + { "dynnp_de" "dynn_Castro" } + { "dynnp_do" "dynn_Cela" } + { "dynnp_de" "dynn_Deza" } + { "dynnp_de" "dynn_Gres" } + { "dynnp_de" "dynn_Lemos" } + { "dynnp_de" "dynn_Limia" } + { "dynnp_de" "dynn_Monterroso" } + { "dynnp_de" "dynn_Moscoso" } + { "dynnp_de" "dynn_Novoa" } + { "dynnp_do" "dynn_PadrO_n" } + { "dynnp_de" "dynn_Quiroga" } + { "dynnp_de" "dynn_Santiago" } + { "dynnp_de" "dynn_Sarmiento" } + { "dynnp_de" "dynn_Sarria" } + { "dynnp_de" "dynn_Silva" } + { "dynnp_de" "dynn_ToroN_o" } + { "dynnp_de" "dynn_Trava" } + { "dynnp_de" "dynn_Ulloa" } + } + + male_names = { + Afonso A_lvar Alvito AndrE_ Ansur Arias Berenguel Bernardo Diego Estevo + FernA_n Fernando FlaI_n Froila GarcI_a Gerardo GO_mez Gonzalo Guillerme Guterre + Henrique Hermenexildo Lope Lourenzo Lucidio Manuel MartiN_o Mendo Munio NuN_o + OrdoN_o Osorio Oveco Paio Pedro Ponce Raimundo Rodrigo Roi RomA_n + Rosendo Sancho SebastiA_n Sueiro Vasco Vela Vermudo Xil XoA_n + } + female_names = { + Adosinda Aldara Aldonza Beatriz Berengaria Branca Catarina Constanza CorexI_a Cristina + Duce Elo Elvira Enderquina EstefanI_a Eulalia Eva Fronilde Gontrode Goto + Gudilona Guiomar Guntina Hermesinda InEEs Leodegundia Leonor Loba Mafalda Maior + Margarida MarI_a Marina Marquesa MencI_a MI_lia Mumadona Munia Oneca Sabela + Sancha Tarexia Tigridia Toda Urraca Velasquida Visclavara Ximena Xoana + } + + dynasty_of_location_prefix = "dynnp_de" + + patronym_suffix_male = "dynnpat_suf_ez" + patronym_suffix_female = "dynnpat_suf_ez" + always_use_patronym = yes + + pat_grf_name_chance = 45 + mat_grf_name_chance = 15 + father_name_chance = 30 + + pat_grm_name_chance = 40 + mat_grm_name_chance = 10 + mother_name_chance = 40 + + +} +name_list_asturleonese = { + + cadet_dynasty_names = { + "dynn_AbI_n" + "dynn_Abrego" + "dynn_Asturiano" + "dynn_DO_riga" + "dynn_LeonE_s" + { "dynnp_de" "dynn_Aguilar" } + { "dynnp_de" "dynn_Alba" } + { "dynnp_de" "dynn_Alcantara" } + { "dynnp_de" "dynn_ArgU_ellos" } + { "dynnp_de_las" "dynn_Asturias" } + { "dynnp_de" "dynn_Badajoz" } + { "dynnp_de" "dynn_Bembibre" } + { "dynnp_de" "dynn_Benavente" } + { "dynnp_de" "dynn_BE_jar" } + { "dynnp_de_la" "dynn_Buelga" } + { "dynnp_de" "dynn_Burguillos" } + { "dynnp_de" "dynn_CA_ceres" } + { "dynnp_de" "dynn_Candamu" } + { "dynnp_de" "dynn_Cangas" } + { "dynnp_de" "dynn_CarriO_n" } + { "dynnp_de" "dynn_Ciudad_Rodrigo" } + { "dynnp_de" "dynn_Coria" } + { "dynnp_de" "dynn_Corias" } + { "dynnp_de" "dynn_Cuadonga" } + { "dynnp_de" "dynn_Estorga" } + { "dynnp_de" "dynn_Guardo" } + { "dynnp_de" "dynn_L_Entregu" } + { "dynnp_de" "dynn_LleO_n" } + { "dynnp_de" "dynn_Llerena" } + { "dynnp_de" "dynn_ME_rida" } + { "dynnp_del" "dynn_Narcea" } + { "dynnp_de" "dynn_Navia" } + { "dynnp_de" "dynn_NoreN_a" } + { "dynnp_de" "dynn_Olivenza" } + { "dynnp_de" "dynn_OnI_s" } + { "dynnp_de" "dynn_Pravia" } + { "dynnp_de" "dynn_QuirO_s" } + { "dynnp_de" "dynn_RiaN_u" } + { "dynnp_de" "dynn_Rioseco" } + { "dynnp_de" "dynn_Rueda" } + { "dynnp_de" "dynn_SaldaN_a" } + { "dynnp_de" "dynn_Sama" } + { "dynnp_de" "dynn_Salamanca" } + { "dynnp_de" "dynn_Salas" } + { "dynnp_de" "dynn_Salvatierra" } + { "dynnp_de" "dynn_Santalla" } + { "dynnp_de" "dynn_SantibA_N_ez" } + { "dynnp_del" "dynn_Sella" } + { "dynnp_de" "dynn_Tabladiellu" } + { "dynnp_de" "dynn_Toro" } + { "dynnp_de" "dynn_Trujillo" } + { "dynnp_de_los" "dynn_Tusinos" } + { "dynnp_de" "dynn_UviE_u" } + { "dynnp_de" "dynn_ValdE_s" } + { "dynnp_de" "dynn_Villalba" } + { "dynnp_de" "dynn_Villalobos" } + { "dynnp_de" "dynn_Villablino" } + { "dynnp_de" "dynn_Villaviciosa" } + { "dynnp_de" "dynn_Villanueva" } + { "dynnp_de" "dynn_Villafafila" } + { "dynnp_de" "dynn_XixO_n" } + { "dynnp_de" "dynn_Zalaca" } + { "dynnp_de" "dynn_Zamora" } + } + + dynasty_names = { + "dynn_AdefO_nsiz" + "dynn_A_lvarez" + "dynn_ArgU_elles" + "dynn_Arias" + "dynn_ArmendA_riz" + "dynn_BaroncE_lliz" + "dynn_BermU_dez" + "dynn_BraU_lez" + "dynn_DI_az" + "dynn_DomI_nguez" + "dynn_EstE_vez" + "dynn_FacU_ndez" + "dynn_FernA_ndez" + "dynn_FLA_inez" + "dynn_Froilaz" + "dynn_GarcI_a" + "dynn_GodestE_iz" + "dynn_GO_mez" + "dynn_GonzA_lez" + "dynn_GundemA_riz" + "dynn_GuillE_n" + "dynn_GutiE_rrez" + "dynn_LO_pez" + "dynn_MartI_n" + "dynn_MelE_ndez" + "dynn_MuN_iz" + "dynn_NU_N_ez" + "dynn_OrdO_N_ez" + "dynn_Osorio" + "dynn_OvE_quiz" + "dynn_PelA_ez" + "dynn_PE_rez" + "dynn_PiN_ole" + "dynn_Ponce" + "dynn_PurcE_lliz" + "dynn_QuiN_ones" + "dynn_RodrI_guez" + "dynn_SA_nchez" + "dynn_SebastiA_nez" + "dynn_SolI_s" + "dynn_SuA_rez" + "dynn_YA_N_ez" + "dynn_Vela" + "dynn_VE_laz" + "dynn_VelA_zquez" + { "dynnp_de" "dynn_Aguilar" } + { "dynnp_de" "dynn_Bembibre" } + { "dynnp_de" "dynn_Cachero" } + { "dynnp_de" "dynn_Canales" } + { "dynnp_de" "dynn_Candamu" } + { "dynnp_de" "dynn_CarriO_n" } + { "dynnp_de" "dynn_Corias" } + { "dynnp_de" "dynn_Entralgo" } + { "dynnp_de" "dynn_Ferrera" } + { "dynnp_de" "dynn_Granda" } + { "dynnp_de" "dynn_Ledesma" } + { "dynnp_de" "dynn_LeO_n" } + { "dynnp_de" "dynn_Mancilla" } + { "dynnp_de" "dynn_Mier" } + { "dynnp_de" "dynn_Navia" } + { "dynnp_del" "dynn_Ponte" } + { "dynnp_de" "dynn_QuirO_s" } + { "dynnp_de" "dynn_RiaN_o" } + { "dynnp_de" "dynn_Robles" } + { "dynnp_de" "dynn_SaldaN_a" } + { "dynnp_de" "dynn_Santalla" } + { "dynnp_de" "dynn_SantibA_N_ez" } + { "dynnp_de" "dynn_Tabladiello" } + { "dynnp_de" "dynn_Oviedo" } + { "dynnp_de" "dynn_Valdivia" } + { "dynnp_del" "dynn_Valle" } + { "dynnp_de_la" "dynn_Vega" } + { "dynnp_de" "dynn_Villagra" } + { "dynnp_de" "dynn_Villalba" } + { "dynnp_de" "dynn_Villanueva" } + { "dynnp_de" "dynn_Villalobos" } + } + + male_names = { + Alfonsu A_lvaru AndrE_s Arias Asur Aureliu Bermudu Bernaldu BosO_n Diegu + Domingu EstE_banu Facundu Favila Fernandu FlaI_n Fruela GarcI_a GO_mez Gonzalu + GuillE_n Gundemaru Gutierre Hermenexildu Llope LloriA_n Manuel MartI_n Melendu Muniu + NuN_u OrdoN_u Osoriu Ovecu Pedru Pelayu PiN_olu Ponce Ramiru RamO_n + Rodrigu Sanchu Savaricu SebastiA_n Silu Sueru Vela Velascu Xerardu Xil + Xuan + } + female_names = { + Adosinda Aldara Aldonza Aragonte Beatriz Belasquida Blanca Catalina Constanza Cristina + Dulce Egilona Elvira Enderquina Ermesenda EstefanI_a Eva Fronilde Gontroda Gotina + Goto Guiomar InEEs Iyana Leodegundia Lleonor Margarita MarI_a Marina Marquesa + Mayor MencI_a MI_lia Munia Muniadona Nicor NuN_a Olaya Oneca Patrona + Sabela Sancha Taresa Tegridia Toda Urraca Varela Ximena Xuana Xusta + } + + dynasty_of_location_prefix = "dynnp_de" + + patronym_suffix_male = "dynnpat_suf_ez" + patronym_suffix_female = "dynnpat_suf_ez" + always_use_patronym = yes + + pat_grf_name_chance = 45 + mat_grf_name_chance = 15 + father_name_chance = 30 + + pat_grm_name_chance = 40 + mat_grm_name_chance = 10 + mother_name_chance = 40 + + +} +name_list_aragonese = { + + cadet_dynasty_names = { + "dynn_AragonE_s" + { "dynnp_d_" "dynn_AlagO_n" } + { "dynnp_d_" "dynn_AlbarrazI_n" } + { "dynnp_d_" "dynn_Alcampell" } + { "dynnp_d_" "dynn_Alcanyiz" } + { "dynnp_d_" "dynn_Alpuente" } + { "dynnp_d_" "dynn_Andorra" } + { "dynnp_d_" "dynn_AnsO_" } + { "dynnp_d_" "dynn_AragO_n" } + { "dynnp_d_" "dynn_Ayerbe" } + { "dynnp_de" "dynn_Balbastro" } + { "dynnp_de" "dynn_Belchit" } + { "dynnp_de" "dynn_BinE_far" } + { "dynnp_de" "dynn_Borcha" } + { "dynnp_de" "dynn_Calaceite" } + { "dynnp_de" "dynn_Calamocha" } + { "dynnp_de" "dynn_CalatayU_" } + { "dynnp_de" "dynn_Casp" } + { "dynnp_de" "dynn_Chaca" } + { "dynnp_de" "dynn_Daroca" } + { "dynnp_del" "dynn_Ebro" } + { "dynnp_d_" "dynn_Epila" } + { "dynnp_d_" "dynn_Exea" } + { "dynnp_de" "dynn_Fraga" } + { "dynnp_del" "dynn_Galligo" } + { "dynnp_de" "dynn_Gotor" } + { "dynnp_d_" "dynn_I_xar" } + { "dynnp_de" "dynn_Luna" } + { "dynnp_del" "dynn_Maestrazgo" } + { "dynnp_del" "dynn_Moncayo" } + { "dynnp_de_los" "dynn_Monegros" } + { "dynnp_de" "dynn_MonzO_n" } + { "dynnp_de" "dynn_Ribagorza" } + { "dynnp_de" "dynn_SariN_ena" } + { "dynnp_de" "dynn_Sobrarbe" } + { "dynnp_de" "dynn_Tarazona" } + { "dynnp_de" "dynn_Teruel" } + { "dynnp_d_" "dynn_Uncastiello" } + { "dynnp_d_" "dynn_Uesca" } + { "dynnp_d_" "dynn_Utrillas" } + { "dynnp_de" "dynn_Villanueva" } + { "dynnp_del" "dynn_XalO_n" } + { "dynnp_del" "dynn_Xiloca" } + { "dynnp_de" "dynn_Zaragoza" } + { "dynnp_de" "dynn_Zuera" } + } + + dynasty_names = { + "dynn_A_lvarez" + "dynn_AznA_rez" + "dynn_AlfO_nsez" + "dynn_BermU_dez" + "dynn_BlA_zquez" + "dynn_DI_az" + "dynn_EnnE_guez" + "dynn_EnrI_quez" + "dynn_EstE_vez" + "dynn_FerrA_ndez" + "dynn_FortU_n" + "dynn_GalI_ndez" + "dynn_GarcE_s" + "dynn_Gatonez" + "dynn_Gil" + "dynn_GirA_ldez" + "dynn_GO_mez" + "dynn_GonzA_lez" + "dynn_GuillE_n" + "dynn_IbA_N_ez" + "dynn_LO_pez" + "dynn_Manrique" + "dynn_Manuel" + "dynn_MartI_nez" + "dynn_Menendez" + "dynn_MuN_oz" + "dynn_NU_N_ez" + "dynn_Palafox" + "dynn_PE_rez" + "dynn_RemI_riz" + "dynn_Rivera" + "dynn_RuI_z" + "dynn_SA_nchez" + "dynn_Varela" + "dynn_XimE_nez" + { "dynnp_de" "dynn_Balbastro" } + { "dynnp_de" "dynn_Borja" } + { "dynnp_de" "dynn_Chaca" } + { "dynnp_de" "dynn_Fraga" } + { "dynnp_de" "dynn_Sobrarbe" } + { "dynnp_de" "dynn_Ribagorza" } + { "dynnp_de" "dynn_Risnal" } + } + + male_names = { + A_lbar Alifonso Armengol Artal Aznar Berenguer Bernat BertrA_n Blasco Chaime + Chil Chuan Diago Eneco Felipe Ferrando FortU_n Frederico GarcI_a Gaton GO_mez + Gonzalo GuillE_n Guiral Henrique Hermenechildo Isteban Lope Manrique Manuel MartI_n + Munio NuN_o Pero Ponz Remiro RemO_n Rodrigo Sancho Veremundo + XimE_n + } + female_names = { + AgnE_s Albira Aldonza Alionor Andregoto Beatriz Blanca Caterina Chuana Costanza + Dulzis Eba Eilo Elvira Ermisenda EstefanI_a Gotruda Isabela Mafalda Margalida MarI_a + Marquesa Mayor MencI_a MI_lia Munia Muniadona Peironela Sancha Talesa Toda + Urraca Violant Ximena + } + + dynasty_of_location_prefix = "dynnp_de" + + patronym_suffix_male = "dynnpat_suf_iz" + patronym_suffix_female = "dynnpat_suf_iz" + always_use_patronym = yes + + pat_grf_name_chance = 45 + mat_grf_name_chance = 15 + father_name_chance = 30 + + pat_grm_name_chance = 40 + mat_grm_name_chance = 10 + mother_name_chance = 40 + + +} +name_list_suebi = { + + cadet_dynasty_names = { + "dynn_Hermerici" + "dynn_Rechili" + "dynn_Remis" + "dynn_Burela" + "dynn_Faberi" + "dynn_Cavadus" + "dynn_Bracara" + "dynn_Duro" + } + + dynasty_names = { + "dynn_Hermerici" + "dynn_Rechili" + "dynn_Remis" + "dynn_Burela" + "dynn_Faberi" + "dynn_Cavadus" + "dynn_Bracara" + "dynn_Duro" + } + + male_names = { + Adeqisio Adoric Agimadus Agriulfum Alamiro Algaster Anila Ansuario Argiovitus Ariamir Arosinda Audeca + Badamundus Baldemarius Balderedo Baltarius Baudemiro Becilla Berteiro Bonesindus Boniza Cagildo Cartemiro + Chararici Commundus Crodemiro Dagaredus Daildus Damiro Docemiro Donazarius Donegildus Dulcemirus Eboric + Egenio Eimiro Eirigu Eisindus Eldegotus Eldesindus Elperico Engomiro Ensaldus Ermaric Evosindo Fagildus + Felmiro Fralenko Framuldo Francolino Fredoaldus Froatingus Fromildus Frumeiro Gardingus Gaudesindo Gomedei + Gomulfus Gresumarus Gudesteus Gumarius Gundivaldo Guntato Gunterotis Heremigar Hermeric Hespanisco Hildemir + Hilderic Hunisco Huniscus Leodegasti Leoderigus Leodulfus Leovaldo Lodemiro Magitus Malaredus Malaric Maldras + Marcosendus Massilan Mervigius Miro Moderido Nandaricus Nantildo Neufila Nitigis Notarius Odamiro Odemundus + Odericus Onemiro Onoricus Osdulfus Osorico Ostromirus Otualdo Pabregildus Pantard Pantinus Pappinus Pederagildu + Pennio Pipinus Provaredo Quedesendo Quedulfus Quidemiro Quidericus Ragimiro Ragolfus Rakericus Randinus + Randuarius Ranisclus Rechiar Rechila Refulfo Reirigus Remismund Remisol Rendericus Ricardo Richimund Rodomiro + Roelindus Romanisco Romarigus Sagatus Saxomero Segomirus Sentarius Sescutus Sisulfus Spanarius Spoderigo Suavarius + Sunila Teobald Teoderedus Theodemar Todegogia Trasmira Trasoldi Tumtuldo Uittimer Venedario Veremund Viamundus + Vidraldus Villisendo Vistremiro Zamarius Zendasindo + } + female_names = { + Acilo Ailo Alatrudia Aliverga Aliverta Aniedrudia Ansetrudia Astriverga Bagina Berina Cenabrida Cisilo Dadilo Dagadruida + Desteilli Donadildi Drusilla Ebragundia Ebrildi Eldegundia Emilo Entrudi Ermedrudia Ermildi Espallo Facalo Fagilo Faquilo + Fradegundia Framilli Fremosilli Frogildi Froilo Frolio Fronosili Frumildi Frunilo Gelvira Genlo Godoigia Goldrerona Granilo + Guandilo Gundiverga Guntedrudia Ildiverga Kindiverga Lallina Liuvilo Mansuara Margilli Mirosinda Penefreda Penetrudia + Ragesenda Randilo Raniverta Recerona Recesenda Recesuinda Rezevera Riquilo Rudilo Sabegoto Senuita Sindiverga + Sisilli Sisiverta Sitividis Sontrilli Sparuildi Stodildi Suevisco Tanquilli Tederona Tenildi Teodevirga Teodiverta Teodoriga + Teudileova Texilli Tractuilli Trasavara Trasmira Trastivigia Vergina Viscaverga Visterlo Vistravara Vistrildi Zanina + } + + dynasty_of_location_prefix = "dynnp_de" + + patronym_suffix_male = "dynnpat_suf_az" + patronym_suffix_female = "dynnpat_suf_az" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 5 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 50 + mother_name_chance = 5 + + +} diff --git a/common/culture/name_lists/00_israelite.txt b/common/culture/name_lists/00_israelite.txt new file mode 100644 index 00000000..a0746459 --- /dev/null +++ b/common/culture/name_lists/00_israelite.txt @@ -0,0 +1,175 @@ +name_list_ashkenazi = { + + cadet_dynasty_names = { + "dynn_Ben_Aharon" + "dynn_Ben_Ari" + "dynn_Binyamin" + "dynn_Ben_David" + "dynn_Ben_Jeremias" + "dynn_Ben_Leonhard" + "dynn_Ben_Michael" + "dynn_Mose" + "dynn_Ben_Reuben" + "dynn_Ebheri" + } + + dynasty_names = { + "dynn_Ben_Aharon" + "dynn_Ben_Ari" + "dynn_Binyamin" + "dynn_Ben_David" + "dynn_Ben_Jeremias" + "dynn_Ben_Leonhard" + "dynn_Ben_Michael" + "dynn_Mose" + "dynn_Ben_Reuben" + "dynn_Ebheri" + } + + male_names = { + Abba Abbaye Acha Achai Achunai Aharon Alechsandri Ammi Amram Amunah Ashi Asher Avomai Avraham Azariah Baboi Baruch + Bibai Binyamin Boaz Bustenai Chanan Chananel Chaninai Chanoch Chaim Chayim Chelbo Chisdai Chiyya Chizkiyah Chofni Chushiel + Daniel David Dimi Dodai Dudai Efrayim Eina Elazar Elchanan Eldad Eliezer Elyakim Gedalyah Gershom Ghayyat Giat Giza Hillel + Hila Isaac Ivomai Kafnai Kahana Kalonymos Levi Kiyomi Machir Malcha Mar Mari Matiyahu Meir Menechem Menashe Mesharsheya Meshulam + Mevasser Mishael Mordechai Moshe Nachman Nachshon Nasan Natan Natroi Natronai Nechemiah Nehilai Nesanel Nissim Paltoi Pirkoi + Peter Rava Ravai Ravi Ravya Reuven Rivai Saadiah Sechok Shabsai Shalom Shanoi Shemaryah Sherira Sheshna Shila Shimon Shinoi + Shlomo Shmuel Sorgo Sulam Tachlifa Tamar Tzadok Tzemach Uri Yaakov Yachya Yechiel Yehudah Yehudai Yehoshua Yeshayah + Yisrael Yitzchak Yoel Yosef Yoshiah Yosi Yuda Zakkai Zelekman Zuiskind + } + female_names = { + Beila Belet Chana Doltza Esther Guta Guthela Madrona Matrona Minna Pultzelina Rachel Rivkah Saris Scolaster + Shluida Shoinlin Shonlin Tziporah Yehudis Yeintil + } + + dynasty_of_location_prefix = "dynnp_of" + + +} +name_list_sephardi = { + + cadet_dynasty_names = { + "dynn_Shaoul" + "dynn_Ben_Sol" + "dynn_Ben_Shlomo" + "dynn_Ben_Shimon" + "dynn_Ben_Yitzhak" + "dynn_Ya_akov" + "dynn_Ben_Yankev" + "dynn_Yeshayahu" + "dynn_Ben_Yosef" + } + + dynasty_names = { + "dynn_Shaoul" + "dynn_Ben_Sol" + "dynn_Ben_Shlomo" + "dynn_Ben_Shimon" + "dynn_Ben_Yitzhak" + "dynn_Ya_akov" + "dynn_Ben_Yankev" + "dynn_Yeshayahu" + "dynn_Ben_Yosef" + } + + male_names = { + Abba Abbaye Acha Achai Achunai Aharon Alechsandri Ammi Amram Amunah Ashi Asher Avomai Avraham Azariah Baboi Baruch + Bibai Binyamin Boaz Bustenai Chanan Chananel Chaninai Chanoch Chaim Chayim Chelbo Chisdai Chiyya Chizkiyah Chofni Chushiel + Daniel David Dimi Dodai Dudai Efrayim Eina Elazar Elchanan Eldad Eliezer Elyakim Gedalyah Gershom Ghayyat Giat Giza Hillel + Hila Isaac Ivomai Kafnai Kahana Kalonymos Levi Kiyomi Machir Malcha Mar Mari Matiyahu Meir Menechem Menashe Mesharsheya Meshulam + Mevasser Mishael Mordechai Moshe Nachman Nachshon Nasan Natan Natroi Natronai Nechemiah Nehilai Nesanel Nissim Paltoi Pirkoi + Peter Rava Ravai Ravi Ravya Reuven Rivai Saadiah Sechok Shabsai Shalom Shanoi Shemaryah Sherira Sheshna Shila Shimon Shinoi + Shlomo Shmuel Sorgo Sulam Tachlifa Tamar Tzadok Tzemach Uri Yaakov Yachya Yechiel Yehudah Yehudai Yehoshua Yeshayah + Yisrael Yitzchak Yoel Yosef Yoshiah Yosi Yuda Zakkai Zelekman Zuiskind + } + female_names = { + Beila Belet Chana Doltza Esther Guta Guthela Madrona Matrona Minna Pultzelina Rachel Rivkah Saris Scolaster + Shluida Shoinlin Shonlin Tziporah Yehudis Yeintil + } + + dynasty_of_location_prefix = "dynnp_of" + + +} +name_list_radhanite = { + + cadet_dynasty_names = { + "dynn_Rabban" + "dynn_Efraim" + "dynn_Eliyahu" + "dynn_Cohen" + "dynn_Dharan" + "dynn_Yitzhak" + "dynn_Koder" + "dynn_Japheth" + "dynn_Hallegua" + "dynn_Madayi" + "dynn_Meir" + "dynn_Menahem" + "dynn_Mutath" + "dynn_Nehemya" + "dynn_Oran" + "dynn_Pallivathikal" + "dynn_Rahabi" + "dynn_Sarphati" + "dynn_Sassoon" + "dynn_Chorath" + "dynn_Solomon" + "dynn_Yaakov" + } + + dynasty_names = { + "dynn_Rabban" + "dynn_Efraim" + "dynn_Eliyahu" + "dynn_Cohen" + "dynn_Dharan" + "dynn_Yitzhak" + "dynn_Koder" + "dynn_Japheth" + "dynn_Hallegua" + "dynn_Madayi" + "dynn_Meir" + "dynn_Menahem" + "dynn_Mutath" + "dynn_Nehemya" + "dynn_Oran" + "dynn_Pallivathikal" + "dynn_Rahabi" + "dynn_Sarphati" + "dynn_Sassoon" + "dynn_Chorath" + "dynn_Solomon" + "dynn_Yaakov" + } + + male_names = { + Anah Anat Atalyah MaAkhah Machlah Aviyah Diklah Gomer Mikhayahu Ofir Yachin AchAv Adalya Adam Adinah + Adlai Adoniram Adoniyah Adriel Aharon Amaryahu Amittai Ammiel Amnon Amos Amram Anaiah Anan Anani Aran Arieh + AriEl Asa Asaf Asher Asnappar AvdiEl Avidan AviEl Avihu AvimaEl Avimelekh Aviram Avishay Avner Avraham + Avram Avshalom Azarel Azaryah Azazyahu AzriEl BaAl Barak Barukh Belshatzzar Benayahu BetUel Binyamin Boaz + Chaggai Chanan Chananyah Chanokh Chavaqquq ChazaEl Chizqiyahu Dan Daniyyel Daryawesh Dawid Delayahu Efrayim + Ehud Eiran Eitan Elah ElAzar Elchanan Eli Eliav Eliel EliEzer Elifalet Elifelet Elihu Elisha Elishua Eliyyahu + Elkanah Elnatan Elon Enosh Esaw Evyatar Ezer Ezra Gad Gamaliel GavriEl Gedalyahu Gemaryahu Gershom Gershon + GidOn Gilad Golyat Haran Hevel Hillel Hiram Hoshea Iddo Ilai Immanuel Ira Itamar Iyyov Kalev Kayin + Keinan Kenanyahu Koresh Laban Lael Lebanah Lemuel Levi Lot Machli MalAkhi Mattan Mattanyahu Mattithyahu Mattityahu + Melech Menachem Menashsheh Meshullam Metushelach MikhaEl Mikhah Mordokhay Moshe Nachum Nadav Naftali Natan Nechemyah + Neriah NetanEl Netanyahu Nimrod Nogah Ofrah Omri Ovadyah Oved Peleg Penuel Peretz Pinchas QemuEl + RafaEl RehavAm Reuel Reuven Sancheriv Seraiah Shalmaneser ShaUl SheAltiEl Shelach Shelah Shelomoh + Shem ShemaYah ShemuEl Shet Shimon Shimshon Talmai Tammuz Teman Terach Toviyyah Tzefanyah Tzidkiyahu Tzion Tzivah + TzuriEl Uri Uriyah UriyEl Uzzi Uzziel Uzziyyah Yaakov YachleEl YachtzeEl Yadon Yair Yamin YaRah YaravAm + Yared Yawan Yechezkel YechiEl Yedidyah Yefet YehoAsh Yehochanan Yehonatan Yehoram Yehoshafat Yehoshua Yehoyakhin + Yehoyakim Yehu Yehudah Yehudi Yekonyah YerachmeEl Yeriyahu YeshaYahu Yeshua Yiftach Yirmiyahu Yishai Ittay + BaAlZevuv Tovi Noach + } + female_names = { + Anah Anat Atalyah MaAkhah Machlah Achinoam Asenat Atarah Avigayil Avishag Avital Basmat BatSheva + Beulah Bilhah Bityah Chaggit Channah Chavah CheftziBah Chuldah Delilah Devorah Dinah Ednah Efrat Elisheva + Ester Hadassah Hagar Hodiyah Izevel KetziAh Leah Machalat MeheitavEl Merav Mikhal Miriam NaAmah NaOmi + Orpah Rachel Rivqah Rut Sarah Shifra Shoshannah Shulammit Tamar Tirtzah Tzillah Tzipporah Tzivyah + Yael Yedidah Yehosheva Yehudit Yemima Yerushah NoAh Keren Aviyah Diklah Gomer Mikhayahu Ofir Yachin + } + + dynasty_of_location_prefix = "dynnp_of" + + +} diff --git a/common/culture/name_lists/00_latin.txt b/common/culture/name_lists/00_latin.txt new file mode 100644 index 00000000..377b20b1 --- /dev/null +++ b/common/culture/name_lists/00_latin.txt @@ -0,0 +1,971 @@ +name_list_italian = { + + cadet_dynasty_names = { + "dynn_Capraia" + "dynn_Castracani" + "dynn_Farnese" + "dynn_Romano" + { "dynnp_di" "dynn_Ancona" } + { "dynnp_di" "dynn_Boi" } + { "dynnp_di" "dynn_Corsica" } + { "dynnp_di" "dynn_Firenze" } + { "dynnp_di" "dynn_L_Aquila" } + { "dynnp_di" "dynn_Orbetello" } + { "dynnp_di" "dynn_Orvieto" } + { "dynnp_di" "dynn_Piombino" } + { "dynnp_di" "dynn_Siena" } + { "dynnp_di" "dynn_Urbino" } + } + + dynasty_names = { + "dynn_Allucingolli" + "dynn_Antelminelli" + "dynn_Bandinelli" + "dynn_Biancolaccio" + "dynn_Bobone" + "dynn_Boccaccio" + "dynn_Botticelli" + "dynn_Borghese" + "dynn_Borri" + "dynn_Buzzacavani" + "dynn_Capponi" + "dynn_Cenci" + "dynn_Colonna" + "dynn_Concini" + "dynn_Duodi" + "dynn_Fibonacci" + "dynn_Glandi" + "dynn_Gerra" # Rename to Guerra + "dynn_Lanfranchi" + "dynn_Larzone" + "dynn_Lasan" + "dynn_Lodde" + "dynn_Luzzatti" + "dynn_Mancini" + "dynn_Mastropiero" + "dynn_Orsini" + "dynn_Ossoli" + "dynn_Pannocchieschi" + "dynn_Panico" + "dynn_Parentucelli" + "dynn_Petrarca" + "dynn_Piga" + "dynn_Pilloni" + "dynn_Pio" + "dynn_Rainalducci" + "dynn_Ramberti" + "dynn_Razzi" + "dynn_Romano" + "dynn_Rossi" + "dynn_Sasudo" + "dynn_Savelli" + "dynn_Scolari" + "dynn_Scripari" + "dynn_Strozzi" + "dynn_Tittoni" + "dynn_Tocco" + "dynn_Torda" + "dynn_Vacca" + "dynn_Visconti" + "dynn_Zen" + { "dynnp_di" "dynn_Acerenza" } + { "dynnp_di" "dynn_Alando" } + { "dynnp_di" "dynn_Ancona" } + { "dynnp_d_" "dynn_Aquino" } + { "dynnp_d_" "dynn_Attala" } + { "dynnp_di" "dynn_Battifolle" } + { "dynnp_di" "dynn_Belforti" } + { "dynnp_di" "dynn_Brunforte" } + { "dynnp_di" "dynn_Calcinaia" } + { "dynnp_di" "dynn_Campiglia" } + { "dynnp_dalle" "dynn_Carceri" } + { "dynnp_di" "dynn_Castello" } + { "dynnp_di" "dynn_Celano" } + { "dynnp_de" "dynn_Chigi" } + { "dynnp_di" "dynn_Cinarca" } + { "dynnp_da" "dynn_Covasina" } + { "dynnp_di" "dynn_Cozzi" } + { "dynnp_di" "dynn_Egidio" } # Rename to Sant'Egidio + { "dynnp_di" "dynn_Firenze" } + { "dynnp_di" "dynn_Guidoti" } + { "dynnp_di" "dynn_Jenne" } + { "dynnp_di" "dynn_L_Aquila" } + { "dynnp_de" "dynn_Larsa" } + { "dynnp_di" "dynn_Latreto" } + { "dynnp_di" "dynn_Mandelli" } + { "dynnp_de" "dynn_Medici" } + { "dynnp_da" "dynn_Montecchio" } + { "dynnp_di" "dynn_Montefeltro" } + { "dynnp_di" "dynn_Monticelli" } + { "dynnp_da" "dynn_Morrone" } + { "dynnp_di" "dynn_Ocra" } # Rename to Ocri + { "dynnp_di" "dynn_Orbetello" } + { "dynnp_di" "dynn_Ornano" } + { "dynnp_di" "dynn_Orvieto" } + { "dynnp_da" "dynn_Parlascio" } + { "dynnp_di" "dynn_Piombino" } + { "dynnp_di" "dynn_Poli" } + { "dynnp_di" "dynn_Rienzi" } # Rename to Rienzo + { "dynnp_della" "dynn_Rocca" } + { "dynnp_da" "dynn_Romano" } + { "dynnp_di" "dynn_Segni" } + { "dynnp_di" "dynn_Siena" } + { "dynnp_della" "dynn_Suburra" } + { "dynnp_dei" "dynn_Turchi" } + { "dynnp_degli" "dynn_Ubaldini" } + { "dynnp_di" "dynn_Urbino" } + } + + male_names = { + Abbondanzio Abbondio Abelardo Abelino Achille Adalberto Adelfo Adelmio Adelmo Adone + Adriano Agapito Agostino Aimone Alamanno Alarico Albano Alberico Alberto Albino + Alboino Alcide Aldobrandino Aleardo Aleramo Alessandro Alessio Alighiero Alvise Ambrogio + Amedeo Anastasio Andrea Angelo Annibale Anselmo Antonino Antonio Antoniotto Arcibaldo + Arderico Armando Arnolfo Arrigo Arsenio Artemio Ascanio Astorre Atenolfo Attilio + Augusto Aurelio Ausilio Ausonio Averado Azzo Azzone Baldassarre Baldovino Barnaba + Bartolomeo Basilio Bassiano Basso Battista Beltrano Benedetto Benvenuto Berardo BernabO_ + Bernardo Berto Bertoldo Biagio Bonaventura Bonifacio Borso Bruno Bruto Buonconte + Buoso Callisto Camillo Candido Cangrande Carlo Cassio Castore Cataldo Catone + Cecco Cesare Chiaffredo Chiano Ciro Ciuccio Claudio Clemente Comita Conone + Cornelio Corradino Corrado Cosimo Cosma Costante Costantino Costanzo Cristoforo Damiano + Davide Demetrio Dioniso DomE_nico Durante Eduardo Elio Emmanuele Ennio Enrico + Enzio Enzo Ercole Eriprando Ermenegildo Ettore Eugenio Ezio Ezzelino Fabrizio + Fausto Federigo Felice Ferdinando Ferruccio Filippo Fiorello Flavio Folco Fortunato + Fosco Francesco Fresco Gabriele Gabrino Gaetano Galasso Galeazzo Galeotto Gaspare + Gastone Gelasio Gentile Geraldo Gerardo Germano Gerolamo Gherardo Giacinto Giacomo + Gian Gianfranco Gianleone Giano Giberto Gilberto Giolio Giordano Giorgio Giovanni + Giulio Giuseppe Goffredo Gregorio Gualtiero Guarnito Guerrino Guglielmo Guido Guidone + Guigliadore Iacopo Igino Innocenzo Ippolito Isnardo Jacopo Lamberto Landolfo Landone + Lanfranco Lattanzio Lazzarino Lazzaro Lealdo Leonardo Leone Leonello Leopoldo Libero + Lionello Livio Lodovico Lorenzo Luca Luchino Lucio Luigi Malacresta Manfredo + Manuele Marco Mariano Marino Mario Marsiglio Martino Massimo Mastino Matteo + Merigo Michelangelo Michele Napoleone Nazareno Nestore NiccolO_ Nicola Nino Nolfo + Oberto Obizzino Obizzo Oddone Omero Onorio Oreste Orlando Ottavio Ottobono + Ottone Pagano Pancrazio Pandolfo Paolo Pasquale Patrizio Pellegrino Pericle Pietro + Pio Prospero Rafaello Radul Raimondo Rainero Raineri Riccardo Rinaldo Rizzardo + Roberto Rodolfo Rolando Rosso Ruggiero Salinguerra Salvatore Salvestro Sante Saverio + Sciarra Sebastiano Secondotto Serafino Sergio Sesto Settimio Severino Severo Silvano + Silvestro Simone Simonetto Sinibaldo Sinucello Sozzo Spinetto Stefano Stentore Taddeo + Tedaldo Tedice Teodoro Tibaldo Tiziano Tommaso Torgodorio Torquato Ubaldo Uberto + Ugo Ugoccione Ugolino Umberto Urbano Valentino Valerio Vincentello Vincenzo Virginio + Vitale Vittore Vittorio Zaccaria + } + + female_names = { + Abelina Adalberta Adalgisa Adelaida Adelasia Adelia Adriana Agalina Agnese Agostina + Albina Alda Alessandra Alfonsina Alisia Aloisia Amalia Ambrosia Anastasia Anna + Antonella Antonia Argentina Augusta Aurelia Ausilia Ausonia Beatrice Benedetta Benilde + Berenice Berta Bianca Bona Brunilde Camilla Candida Caracosa Carla Carola + Caterina Cecilia Clara Claudia Clorinda Clotilde Constanza Cornelia Delinda Dora + Edda Elena Eleonora Elisa Elisabetta Ermenegilda Eudossia Eugenia Fausta Felicia + Felicita Filippa Filomena Fiorenza Flavia Flora Fortunata Fosca Francesca Froizza Giacinta + Ginevra Giovanna Giuditta Giulia Giuseppa Ippolita Isabella Joscella Laura Lavinia + Leonide Letizia Lidia Livia Lodovica Lucia Lucinetta Lucrezia Maddalena Marcella + Margherita Maria Mariana Marietta Martina Matilda Micaela Nunzia Paola Patrizia + Renata Ricciarda Silvana Sofia Stefania Tiziana Tomasina Valentina Violante Virginia + } + + dynasty_of_location_prefix = "dynnp_di" + + patronym_prefix_male = "dynnpat_pre_di" + patronym_prefix_female = "dynnpat_pre_di" + + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 25 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_compagnia_della_stella" coat_of_arms = "mc_compagnia_della_stella" } + { name = "mercenary_company_black_band" } + { name = "mercenary_company_condottiere_band" } + } +} + +name_list_roman = { + + cadet_dynasty_names = { + "dynn_Julio_Claudian" + "dynn_Flavian" + "dynn_Nerva_Antonine" + "dynn_Severan" + "dynn_Gordian" + "dynn_Constantinian" + "dynn_Valentinian" + "dynn_Theodosian" + "dynn_Leonid" + "dynn_Justinian" + "dynn_Heraclian" + "dynn_Isaurian" + "dynn_Nikephorian" + "dynn_Amorian" + "dynn_Macedonian" + "dynn_Doukid" + "dynn_Komnenid" + "dynn_Angelid" + "dynn_Laskarid" + "dynn_Palaiologan" + } + + dynasty_names = { + "dynn_Julio_Claudian" + "dynn_Flavian" + "dynn_Nerva_Antonine" + "dynn_Severan" + "dynn_Gordian" + "dynn_Constantinian" + "dynn_Valentinian" + "dynn_Theodosian" + "dynn_Leonid" + "dynn_Justinian" + "dynn_Heraclian" + "dynn_Isaurian" + "dynn_Nikephorian" + "dynn_Amorian" + "dynn_Macedonian" + "dynn_Doukid" + "dynn_Komnenid" + "dynn_Angelid" + "dynn_Laskarid" + "dynn_Palaiologan" + "dynn_Fabricius" + } + + male_names = { + Aemilian Aemilius Aetius Albinus Alexander Anastasius Anicius Annius Antoninus Antonius Arcadius Aurelian Aurelius + Avitus Belisarius Britannicus Caecilius Caesar Callistus Carinus Carus Cassius Claudius Clementius Constans Constantine + Constantius Cornelius Crassus Decimus Decius Diocletian Domitian Domitius Drusus Ennodius Fabianus Fabius Fabricius Faustus Felix Flavianus Florian + Gaius Galerius Gallienus Gallus Germanus Gordian Gracchus Gratian Hadrian Herculius Honorius Joannes Jovian + Julian Julius Julius-Caesar Junius Justin Justinian Leo Leontius Liberius Licinius Lucius Magnus Marcellinus + Marcellus Marcian Marcus Marinus Marius Martinus Maximian Maximinus Maximus Nepotian Nerva Numerian Octavianus Octavius Otho + Paulinus Paulus Petronius Philip Pompeius Pontianus Priscus Probus Publius Quintus Romanus Romulus Rufinus Rutilius Sabinianus + Saturninus Sempronius Septimius Sergius Severinus Severus Sextus Symmachus Tacitus Theodosius Tiberius + Titius Titus Trajan Urbanus Valens Valentinian Valerian Valerius Venantius Vespasian Victor Victorinus Vigilius Vitalianus Volusianus + } + female_names = { + Aelia Agrippina Antonia Antonina Aquilia Aurelia Caecilia Caesaris Candida Cassia Claudia Clementia Constantia + Constantina Cornelia Crispina Dominica Domitiana Domna Domnina Drusilla Fausta Faustina Flacilla Flavia Fortunata Frontina Gaia Galeria + Gordiana Hadriana Helvia Hilara Honoria Hortensia Julia Juliana Junia Justa Justina Justiniana Licinia Livia Livilla Lucilla + Magnia Magnilla Marcella Marcia Marciana Marina Martina Matrona Maxima Maximiana Messalina Minervina Minucia Modia Mustela + Octavia Palatina Paula Paulina Petronella Petronia Placidia Plautia Plautilla Pompeia Poppaea Praeiecta Publia Pulcheria + Rusticiana Sabina Sallustia Salonina Salvianella Scantilla Serena Sergia Severa Severina Silvia Spadusa Sulpicia Tarsilla Titiana Ulpia Valeria + Verina Victoria Vigilantia Viviana + } + dynasty_of_location_prefix = "dynnp_of" + patronym_prefix_male = "dynnpat_pre_filius" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 50 + mat_grf_name_chance = 0 + father_name_chance = 50 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 50 + mat_grm_name_chance = 50 + mother_name_chance = 0 + + +} + +name_list_cisalpine = { + + cadet_dynasty_names = { + "dynn_Bentivoglio" + "dynn_Colombo" + "dynn_Malatesta" + "dynn_Moneta" + "dynn_Obertenghi" + "dynn_Pico_di_Mirandola" + { "dynnp_di" "dynn_Brescia" } + { "dynnp_di" "dynn_Candia" } + { "dynnp_del" "dynn_Caretto" } # Rename to Carretto + { "dynnp_da" "dynn_Carrara" } + { "dynnp_de" "dynn_Castro_Arquato" } + { "dynnp_d_" "dynn_Este" } + { "dynnp_di" "dynn_Ferrara" } + { "dynnp_di" "dynn_Genova" } + { "dynnp_di" "dynn_Lucca" } + { "dynnp_di" "dynn_Monferrato" } + { "dynnp_di" "dynn_Modena" } + { "dynnp_di" "dynn_Padua" } + { "dynnp_di" "dynn_Ravenna" } + { "dynnp_di" "dynn_Saluzzo" } + { "dynnp_di" "dynn_San_Bonifazio" } # Rename to Sambonifacio + { "dynnp_di" "dynn_S__Cassiano" } # Rename to San Cassiano + { "dynnp_di" "dynn_Torino" } + { "dynnp_di" "dynn_Venezia" } + { "dynnp_di" "dynn_Verona" } + } + + dynasty_names = { + "dynn_Adorno" + "dynn_Aleramo" + "dynn_Ariosti" + "dynn_Avogadro" + "dynn_Badoer" + "dynn_Beccaria" + "dynn_Boccadelli" + "dynn_Boccanegra" + "dynn_Caccianemici" + "dynn_Cambiano" + "dynn_Campofregoso" + "dynn_CavalcabO_" + "dynn_Cipolla" + "dynn_Clavelli" + "dynn_Colleoni" + "dynn_Condulmer" + "dynn_Coniulo" # Rename to Coniolo + "dynn_Cornaro" + "dynn_Crivelli" + "dynn_Crispo" + "dynn_Cybo" + "dynn_Dandolo" + "dynn_Defuseh" + "dynn_Delfino" + "dynn_Faliero" + "dynn_Foscaro" + "dynn_Gattilusio" + "dynn_Ghisi" + "dynn_Gonzaga" + "dynn_Gozzadini" + "dynn_Gradenigo" # Rename to Gradenigo + "dynn_Grasso" + "dynn_Graziano" + "dynn_Guerrazzi" + "dynn_Lancia" + "dynn_Loredano" + "dynn_Maggi" + "dynn_Manin" # Rename to Manini + "dynn_Mocenigo" + "dynn_Navigajoso" + "dynn_Ordelaffo" + "dynn_Paganelli" + "dynn_Pepoli" + "dynn_Pescatore" + "dynn_Pettiti" + "dynn_Pintus" + "dynn_Polentano" + "dynn_Polo" + "dynn_Scrofegni" # Rename to Scrovegni + "dynn_Sfondrati" + "dynn_Sforza" + "dynn_Sommariva" + "dynn_Soranzo" + "dynn_Steno" + "dynn_Taparelli" + "dynn_Terzi" + "dynn_Tiepolo" + "dynn_Tizzone" + "dynn_Togliatti" + "dynn_Torelli" + "dynn_Traversari" + "dynn_Turati" + "dynn_Valenti" + "dynn_Velate" + "dynn_Ventimiglia" + "dynn_Visconti" + "dynn_Vistarini" + "dynn_Zaccaria" + "dynn_Zanardelli" + "dynn_Zoagli" + "dynn_Zorzi" + { "dynnp_di" "dynn_Agledo" } + { "dynnp_di" "dynn_Barbiano" } + { "dynnp_de" "dynn_Bonacolsi" } + { "dynnp_di" "dynn_Brescia" } + { "dynnp_de" "dynn_Busca" } + { "dynnp_da" "dynn_Camino" } + { "dynnp_da" "dynn_Carmagnola" } + { "dynnp_da" "dynn_Carrara" } + { "dynnp_di" "dynn_Castiglione" } + { "dynnp_de" "dynn_Castro_Arquato" } + { "dynnp_di" "dynn_Castropola" } + { "dynnp_di" "dynn_Ceva" } + { "dynnp_da" "dynn_Conti" } + { "dynnp_di" "dynn_Cosseria" } + { "dynnp_di" "dynn_Crivelli" } + { "dynnp_da" "dynn_Dovara" } + { "dynnp_da" "dynn_Egna" } + { "dynnp_della" "dynn_Faggiola" } + { "dynnp_di" "dynn_Ferrara" } + { "dynnp_di" "dynn_Gattinara" } + { "dynnp_di" "dynn_Genova" } + { "dynnp_di" "dynn_Gucellone" } + { "dynnp_di" "dynn_Guercio" } + { "dynnp_da" "dynn_Intimiano" } + { "dynnp_di" "dynn_Istria" } + { "dynnp_di" "dynn_Lucca" } + { "dynnp_de" "dynn_Machierato" } + { "dynnp_di" "dynn_Maltraversi" } + { "dynnp_de" "dynn_Mele" } + { "dynnp_di" "dynn_Modena" } + { "dynnp_di" "dynn_Monferrato" } + { "dynnp_di" "dynn_Montemerlo" } + { "dynnp_di" "dynn_Montigli" } + { "dynnp_di" "dynn_Morra" } + { "dynnp_di" "dynn_Mulazzano" } + { "dynnp_di" "dynn_Murta" } + { "dynnp_d_" "dynn_Ivrea" } + { "dynnp_dell_" "dynn_Dell_Orto" } # Rename to Orto + { "dynnp_di" "dynn_Padua" } + { "dynnp_da" "dynn_Ponte" } + { "dynnp_di" "dynn_Pontio" } + { "dynnp_di" "dynn_Ponzone" } + { "dynnp_da" "dynn_Promontorio" } + { "dynnp_di" "dynn_Ravenna" } + { "dynnp_di" "dynn_Saluzzo" } + { "dynnp_della" "dynn_Scala" } + { "dynnp_di" "dynn_S__Cassiano" } # Rename to San Cassiano + { "dynnp_di" "dynn_Salizzolo" } + { "dynnp_di" "dynn_Serro" } + { "dynnp_della" "dynn_Torre" } + { "dynnp_di" "dynn_Torino" } + { "dynnp_di" "dynn_Valperga" } + { "dynnp_di" "dynn_Venezia" } + { "dynnp_di" "dynn_Verona" } + { "dynnp_da" "dynn_Verucchio" } + } + + male_names = { + Adalberto Alberto Alberto-Azzo Aldobrandino Aleramo Alessandro Ambrogio Amedeo Andrea Anscario Anselmo Anterio Antonio Ardicino Ardizzone Ardoino Azzo Azzone BernabO_ Bartolomeo Benedetto Berengario Bernardo Bernardino Bertoldo Biagio Bonconte Bonifacio Bonifazio Boso Burgondo Carlo Corrado Dado Damiano Demetrio Domenico Emanuele Emrico Enrico Eriprando Everardo Federigo Filippo Folco Francesco Fresco Galeazzo Gandolfo Gausberto Gherardo Ghiberto Giacomo Giacopo Giorgio Giovanni Girolamo Giselberto Giulio Gotefredo Guglielmo Guido Lamberto Lanfranco Leo Liudfredo Lodovico Lorenzo Luchetto Luchino Luigi Manfredo Martino Massimiliano Matteo Michele Montefeltrano Moruello Napoleone NiccolO_ Oberto Obizzo Odalrico Oddone Odoardo Opizzino Ottone Ostisio Pagano Pallodino Pandolfo Paolo Pietro Pio Raimondo Rambaldo Ranieri Raniero-Ioannes Riccardo Rinaldo Riprando Roberto Rodolfo Ruggiero Stefano Ubaldo Udalrico Ugolino Salinguerra Sebastiano Sigifredo Siginolfo Simone Taddeo Teobaldo Teodoro Tommaso Ugo Ugonino Vilfredo Vincenzo Vittorio Walfredo + } + + female_names = { + Abelina Adalberta Adalgisa Adelaida Adelasia Adelia Adriana Agalina Agnese Agostina Albina Alda Alessandra Alfonsina Alisia Aloisia Amalia Ambrosia Anastasia Anna Antonella Antonia Argentina Augusta Aurelia Ausilia Ausonia Beatrice Benedetta Benilde Berenice Berta Bianca Bona Brunilde Camilla Candida Caracosa Carla Carola Caterina Cecilia Clara Claudia Clorinda Clotilde Constanza Cornelia Delinda Dora Edda Elena Eleonora Elisa Elisabetta Ermenegilda Eudossia Eugenia Fausta Felicia Felicita Filippa Filomena Flavia Flora Fortunata Fosca Francesca Froizza Giacinta Ginevra Giovanna Giuditta Giulia Giuliana Giuseppa Ippolita Isabella Joscella Laura Lavinia Leonide Letizia Lidia Livia Lodovica Lucia Lucinetta Lucrezia Maddalena Marcella Margherita Maria Mariana Marietta Martina Matilda Micaela Nunzia Paola Patrizia Renata Ricciarda Silvana Sofia Stefania Tiziana Tomasina Valentina Violante Virginia + } + + dynasty_of_location_prefix = "dynnp_di" + + patronym_prefix_male = "dynnpat_pre_di" + patronym_prefix_female = "dynnpat_pre_di" + + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 25 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_compagnia_di_san_giorgio" coat_of_arms = "mc_compagnia_di_san_giorgio" } + { name = "mercenary_company_compagnia_della_stella" coat_of_arms = "mc_compagnia_della_stella" } + { name = "mercenary_company_compagnia_del_cappalletto" } + { name = "mercenary_company_compagnia_della_rosa" coat_of_arms = "mc_compagnia_della_rosa" } + { name = "mercenary_company_condottiere_band" } + } +} + +name_list_sardinian = { + + cadet_dynasty_names = { + "dynn_Sardi" + { "dynnp_de" "dynn_Anglone" } + { "dynnp_de" "dynn_Balariana" } + { "dynnp_de" "dynn_Barbajana" } + { "dynnp_de" "dynn_Barbaza_de_Austis" } + { "dynnp_de" "dynn_Barbaza_de_Brebi" } + { "dynnp_de" "dynn_Barbaza_de_Ollolai" } + { "dynnp_de" "dynn_Barbaza_de_Seulo" } + { "dynnp_de" "dynn_Barigadu" } + { "dynnp_de" "dynn_Bitti" } + { "dynnp_de" "dynn_Bonurtzuli" } + { "dynnp_de" "dynn_Campidanu_Majore" } + { "dynnp_de" "dynn_Campidanu_Milis" } + { "dynnp_de" "dynn_Campidanu_Simaghis" } + { "dynnp_de" "dynn_Canahini" } + { "dynnp_de" "dynn_Caputabas" } + { "dynnp_de" "dynn_Chirra" } + { "dynnp_de" "dynn_Civita" } + { "dynnp_de" "dynn_Cixerri" } + { "dynnp_de" "dynn_Coros" } + { "dynnp_de" "dynn_Costa_de_Addes" } + { "dynnp_de" "dynn_Costera" } + { "dynnp_de" "dynn_Cuirra" } + { "dynnp_de" "dynn_Deximu" } + { "dynnp_de" "dynn_Dolia" } + { "dynnp_de" "dynn_Ficulinas" } + { "dynnp_de" "dynn_Flumenargia" } + { "dynnp_de" "dynn_GE_mini" } + { "dynnp_de" "dynn_Gerrei" } + { "dynnp_de" "dynn_Gipi" } + { "dynnp_de" "dynn_Gisarclu" } + { "dynnp_de" "dynn_Gociani" } + { "dynnp_de" "dynn_Golostrai" } + { "dynnp_de" "dynn_Guilcer" } + { "dynnp_de" "dynn_Gunale" } + { "dynnp_de" "dynn_Jirifai" } + { "dynnp_de" "dynn_Lacon" } + { "dynnp_de" "dynn_Lerron" } + { "dynnp_de" "dynn_Mandrolisai" } + { "dynnp_de" "dynn_Marghine" } + { "dynnp_de" "dynn_Marmidda" } + { "dynnp_de" "dynn_Meilocu" } + { "dynnp_de" "dynn_MontA_ngia" } + { "dynnp_de" "dynn_Monteacuto" } + { "dynnp_de" "dynn_Montiverro" } + { "dynnp_de" "dynn_Nugor" } + { "dynnp_de" "dynn_Nulabros" } + { "dynnp_de" "dynn_Nuraminis" } + { "dynnp_de" "dynn_Nuras" } + { "dynnp_de" "dynn_Nurcar" } + { "dynnp_de" "dynn_Nurra" } + { "dynnp_de" "dynn_Ogiastra" } + { "dynnp_de" "dynn_Oppia" } + { "dynnp_de" "dynn_Orfili" } + { "dynnp_de" "dynn_Orosei_Galtelli" } + { "dynnp_de" "dynn_Ozan" } + { "dynnp_de" "dynn_Planaria" } + { "dynnp_de" "dynn_Plovake" } + { "dynnp_de" "dynn_Posada" } + { "dynnp_de" "dynn_Romanja" } + { "dynnp_de" "dynn_Santu_Antiogu" } + { "dynnp_de" "dynn_Santu_Pantaleu" } + { "dynnp_de" "dynn_SardI_gna" } + { "dynnp_de" "dynn_Sarrabus" } + { "dynnp_de" "dynn_Sarule" } + { "dynnp_de" "dynn_Sriugus" } + { "dynnp_de" "dynn_Suelli" } + { "dynnp_de" "dynn_Sulkis" } + { "dynnp_de" "dynn_Taras" } + { "dynnp_de" "dynn_Tolastrai" } + { "dynnp_de" "dynn_Tratalias" } + { "dynnp_de" "dynn_Trexenta" } + { "dynnp_de" "dynn_Trigonia" } + { "dynnp_de" "dynn_Ulumetu" } + { "dynnp_de" "dynn_Unale_Josso" } + { "dynnp_de" "dynn_Unali_Susu" } + { "dynnp_de" "dynn_Useddus" } + } + + dynasty_names = { + "dynn_Floris" + "dynn_Gambella" + "dynn_Manca" + "dynn_Melis" + "dynn_Meloni" + "dynn_Mura" + "dynn_Pinna" + "dynn_Piras" + "dynn_Porcu" + "dynn_Salusiu_de_Lacon" + "dynn_Sanna" + "dynn_Serra" + "dynn_Spanu" + "dynn_Torchitorio" + "dynn_Usai" + { "dynnp_de" "dynn_Agugliastra" } + { "dynnp_de" "dynn_Ajaccio" } + { "dynnp_de" "dynn_A_ldara" } + { "dynnp_de" "dynn_Aleria" } + { "dynnp_de" "dynn_Ampurias" } + { "dynnp_de" "dynn_Arborea" } + { "dynnp_de" "dynn_Aristanis" } + { "dynnp_de" "dynn_Athen" } + { "dynnp_de" "dynn_Bidda_de_CrE_ssias" } + { "dynnp_de" "dynn_Bisarcio" } + { "dynnp_de" "dynn_BonA_rcadu" } + { "dynnp_de" "dynn_Bosa" } + { "dynnp_de" "dynn_Callaris" } + { "dynnp_de" "dynn_Casteddu" } + { "dynnp_de" "dynn_Castro" } + { "dynnp_de" "dynn_Civita" } + { "dynnp_de" "dynn_Durgali" } + { "dynnp_de" "dynn_Gallura" } + { "dynnp_de" "dynn_Gisarclu" } + { "dynnp_de" "dynn_Grifai" } + { "dynnp_de" "dynn_Gunale" } + { "dynnp_de" "dynn_Lacon" } + { "dynnp_de" "dynn_Logudoro" } + { "dynnp_de" "dynn_Logusanto" } + { "dynnp_de" "dynn_Lungoni" } + { "dynnp_de" "dynn_Monteleone" } + { "dynnp_de" "dynn_Oristani" } + { "dynnp_de" "dynn_Orrubu" } + { "dynnp_de" "dynn_O_sile" } + { "dynnp_de" "dynn_Othane" } + { "dynnp_de" "dynn_Padres" } + { "dynnp_de" "dynn_Pasada" } + { "dynnp_de" "dynn_Plovake" } + { "dynnp_de" "dynn_Portu_Turre" } + { "dynnp_de" "dynn_S_AlighE_ra" } + { "dynnp_de" "dynn_Sagona" } + { "dynnp_de" "dynn_Salanis" } + { "dynnp_de" "dynn_Sarrabus" } + { "dynnp_de" "dynn_Serra" } + { "dynnp_de" "dynn_Sorres" } + { "dynnp_de" "dynn_Su_Burgu" } + { "dynnp_de" "dynn_TA_tari" } + { "dynnp_de" "dynn_Terranoa" } + { "dynnp_de" "dynn_Tharros" } + { "dynnp_de" "dynn_Torres" } + { "dynnp_de" "dynn_Tortoli" } + { "dynnp_de" "dynn_Zori" } + } + + male_names = { + Abisatu AdA_mu AdriA_nu Alaverru Albertu Albu Alfonsu AmbrO_su Andria Antiogu + AntO_ni Antoninu Armannu Arrammundu Arzoccu Ausone Austinu Austu Baldu Barisone + BartO_lu Basiliu Bassu Beneitu Bernardu Bobore BonifA_tziu Bosone Carolu Carule + CelestI_nu Clemente Comita CorrA_du ConstantI_nu Costantzu Crabiele Cristolu Damianu Danelu + Dionisi Dominigu EusE_biu Fabritziu Felictu Ferdinandu Filipu Franku Frantziscu Furatu Gabinu GaetA_nu Gaine + Gallu Gasparru Gavini Gialetu Giuanne Giustinu Giustu Goffredu Gomita GonA_riu + GO_samu GosantI_nu Grabielle GrigO_riu Guantine Gublenu Guglielmu Gunnare Idu Iginu + Ignatziu Ilariu IstE_vene Izocor Jacopu Jagu Juanne Justu Kiprianu Laurentu Leonardu + Leone Lircu Lissandru Luca Luciu Lussurgiu Manfredu Markellu Marku Marianu + Martinu Mattia Matteu Mauru Micheli Migali Mighele Mikelli Nicolau + Nigola Onoradu Orgodor Orizone Orlandu Orzocor Pancratziu Pantaleu Pascale Patriziu + PA_ulu Pedru Pellegrinu Pirillu Pizente Ponzu Prosperu Ramundu Robertu Rodulfu Sadurru + Salluri Saltaru SalU_siu Samaritanu SamuE_li Saraginu Sebustianu Serafinu SE_rgiu + Simachu Simione Simplitziu Siru Sparau TA_ntalu Tedore Tedu Tobias Tocode Tommasu TorbE_nu + Torchitor Torchitoriu Ubertu Ugone Ugu Vissente Vittore Vivianu Zennaru ZirO_nimu + Zonetu Zuseppe + } + + female_names = { + Adela AdelA_sia A_gata Agnese Albina Alena Amira Angelica A_nghela Angiolae + Angioletta Angiolina Anna Assunta Austina Barbara BeatrI_ci Beneita Bibiana Bina Branca + Brigida Caderina Cassia Catellina Chiara ConstantI_na Costantza CristI_na Diane Dominiga + Dorotea Elena Elianora EufEEmia Eusebia Eva Fausta Fidula Filumena Frantzisca Giorga + Giuanna Giulia GO_sama Grazia Guisiana Igia Ilaria Ilia Ippolita Ispella Jana + Jorgia Juanna Justa Kipriana Lucia Luisa Luna Margarita Maria Marianna + Markusa Maura Melissa MO_nica Natalia Nivata Nivatora Olimpia Padulesa Pasca + Pascalina PA_ula Pellegrina Petrenella Placidia Preciosa Pretziosa Rita Rosa Rosalia + Rosina Rossana Sabina Saragina Sardinia Sauina Sinispella Stefania Subia Susanna + Tedora Teresa Valeria Vera Vittoria Viviana Zuseppa + } + + dynasty_of_location_prefix = "dynnp_de" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 25 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 30 + mat_grm_name_chance = 10 + mother_name_chance = 25 + + + + mercenary_names = { + { name = "mercenary_company_sardinian_band" } + } +} + +name_list_sicilian = { + + cadet_dynasty_names = { + "dynn_Gesualdu" + "dynn_Fidiricu" + "dynn_Mazzarinu" + "dynn_Palazzu" + { "dynnp_di" "dynn_Altavilla" } + { "dynnp_di" "dynn_Apulia" } + { "dynnp_di" "dynn_Arena" } + { "dynnp_di" "dynn_Avola" } + { "dynnp_di" "dynn_Acquaviva" } + { "dynnp_di" "dynn_Basilicata" } + { "dynnp_di" "dynn_CalA_bbria" } + { "dynnp_di" "dynn_Casaranu" } + { "dynnp_di" "dynn_Campania" } + { "dynnp_di" "dynn_Campubassu" } + { "dynnp_di" "dynn_Castellaneta" } + { "dynnp_di" "dynn_Conversanu" } + { "dynnp_di" "dynn_Cuma" } + { "dynnp_di" "dynn_Cunigghiuni" } + { "dynnp_di" "dynn_Gaeta" } + { "dynnp_di" "dynn_Galati" } + { "dynnp_di" "dynn_Gallucciu" } + { "dynnp_di" "dynn_Gravina" } + { "dynnp_di" "dynn_Gruttaghie" } + { "dynnp_della" "dynn_I_sula" } + { "dynnp_di" "dynn_L_Abbruzzu" } + { "dynnp_di" "dynn_Lampidusa" } + { "dynnp_di" "dynn_Lucania" } + { "dynnp_di" "dynn_Lucera" } + { "dynnp_di" "dynn_Malta" } + { "dynnp_di" "dynn_Manduria" } + { "dynnp_di" "dynn_Marineu" } + { "dynnp_di" "dynn_Massafra" } + { "dynnp_di" "dynn_Milazzu" } + { "dynnp_di" "dynn_Miletu" } + { "dynnp_di" "dynn_Militeddu" } + { "dynnp_di" "dynn_Mottola" } + { "dynnp_di" "dynn_Mulisi" } + { "dynnp_di" "dynn_Muntalauni" } + { "dynnp_di" "dynn_Muntiscagghiusu" } + { "dynnp_di" "dynn_Murriali" } + { "dynnp_di" "dynn_NA_puli" } + { "dynnp_di" "dynn_Oria" } + { "dynnp_di" "dynn_Otrantu" } + { "dynnp_di" "dynn_Pellari" } + { "dynnp_di" "dynn_Piamunti" } + { "dynnp_di" "dynn_San_Giuvanni" } + { "dynnp_di" "dynn_San_Grigoriu" } + { "dynnp_di" "dynn_Sant_Anastasia" } + { "dynnp_di" "dynn_Sant_Antoniu" } + { "dynnp_di" "dynn_Santu_Catallu" } + { "dynnp_di" "dynn_Santa_Catarina" } + { "dynnp_di" "dynn_Santu_Frateddu" } + { "dynnp_di" "dynn_San_Marcu" } + { "dynnp_di" "dynn_San_Micheli" } + { "dynnp_di" "dynn_San_PA_ulu" } + { "dynnp_di" "dynn_San_Petru" } + { "dynnp_di" "dynn_San_Vitu" } + { "dynnp_di" "dynn_Sicilia" } + { "dynnp_di" "dynn_Squillache" } + { "dynnp_di" "dynn_Sulmona" } + { "dynnp_di" "dynn_Taranto" } + { "dynnp_di" "dynn_Trinacria" } + { "dynnp_di" "dynn_Unale_of_Naples" } + { "dynnp_di" "dynn_Villafranca" } + { "dynnp_di" "dynn_Villarosa" } + { "dynnp_di" "dynn_Vintimigghia" } + } + + dynasty_names = { + "dynn_Angelerio" + "dynn_Boccasini" + "dynn_Cossa" + "dynn_Curliuni" + "dynn_Dauferio" + "dynn_Fimetta" + "dynn_Giustiniano" + "dynn_Grecu" + "dynn_Lombardu" + "dynn_Masci" + "dynn_Migliorati" + "dynn_Nurmannu" + "dynn_Pachinu" + "dynn_Pellegrino" + "dynn_Pirovano" + "dynn_Prignano" + "dynn_Polizzi" + "dynn_Rangoni" + "dynn_Ruffo" + "dynn_Sormella" + "dynn_Sturzo" + "dynn_Tomacelli" + "dynn_Uppezzhingi" + "dynn_Valenti" + "dynn_Vetrano" + { "dynnp_di" "dynn_Agrigento" } + { "dynnp_di" "dynn_Aiellu" } + { "dynnp_di" "dynn_Alissandria" } + { "dynnp_di" "dynn_Amalfi" } + { "dynnp_di" "dynn_Andria" } + { "dynnp_di" "dynn_Apulia" } + { "dynnp_di" "dynn_Avillinu" } + { "dynnp_di" "dynn_Bari" } + { "dynnp_di" "dynn_Barletta" } + { "dynnp_di" "dynn_Benevento" } + { "dynnp_di" "dynn_Bonacossi" } + { "dynnp_di" "dynn_Brindisi" } + { "dynnp_di" "dynn_CalA_bbria" } + { "dynnp_di" "dynn_Cammarata" } + { "dynnp_di" "dynn_Capua" } + { "dynnp_di" "dynn_Castalnasetta" } + { "dynnp_di" "dynn_Castiddubbuonu" } + { "dynnp_di" "dynn_Castrugiovanni" } + { "dynnp_di" "dynn_Catania" } + { "dynnp_di" "dynn_Catanzaro" } + { "dynnp_di" "dynn_Chiaramonte" } + { "dynnp_di" "dynn_Consenza" } + { "dynnp_di" "dynn_Cutroni" } + { "dynnp_di" "dynn_Enna" } + { "dynnp_di" "dynn_Foggia" } + { "dynnp_di" "dynn_Isernia" } + { "dynnp_di" "dynn_Lauria" } + { "dynnp_di" "dynn_Lecci" } + { "dynnp_di" "dynn_Leone" } + { "dynnp_di" "dynn_Licinardo" } + { "dynnp_di" "dynn_Lintini" } + { "dynnp_di" "dynn_Loritello" } + { "dynnp_di" "dynn_Malta" } + { "dynnp_di" "dynn_Melfi" } + { "dynnp_di" "dynn_Messina" } + { "dynnp_di" "dynn_Montelongo" } + { "dynnp_di" "dynn_Morra" } + { "dynnp_di" "dynn_NA_puli" } + { "dynnp_di" "dynn_NicusI_a" } + { "dynnp_di" "dynn_Nissa" } + { "dynnp_di" "dynn_Nuoto" } + { "dynnp_di" "dynn_Palermo" } + { "dynnp_di" "dynn_Palizzi" } + { "dynnp_di" "dynn_PaternO_" } + { "dynnp_di" "dynn_Pecoriari" } + { "dynnp_di" "dynn_Putenza" } + { "dynnp_di" "dynn_Rausa" } + { "dynnp_di" "dynn_Reggio" } + { "dynnp_di" "dynn_Salentu" } + { "dynnp_di" "dynn_Salernu" } + { "dynnp_di" "dynn_San_Lucido" } + { "dynnp_di" "dynn_Sanseverino" } + { "dynnp_di" "dynn_Siracusa" } + { "dynnp_di" "dynn_Sorrento" } + { "dynnp_di" "dynn_Squillache" } + { "dynnp_di" "dynn_Taranto" } + { "dynnp_di" "dynn_TE_rmini" } + { "dynnp_di" "dynn_Trani" } + { "dynnp_di" "dynn_Trapani" } + { "dynnp_del" "dynn_Zotto" } + } + + male_names = { + Abbilardu Acciardu Ademariu Adrianu Agapitu Albanu Albertu Alessiu Alissandru + Alfonzu Ambbrogghiu Andrea Annirea A_ngilu Anteru Antoniu Antuninu Anselmu Arricu + Arduinu Ascaniu Atanasiu Atenolfu Augustu Austinu Aureliu Baccu Basiliu Belisariu + Biaggiu Birnardu Binidittu Boemunnu Bonifaziu Cabbrieli Caiu Callistu CalO_giru Carbonellu + Carlu CE_sari Cilistinu ClA_udiu Climenti CristO_furu CO_simu Curneliu Curradu Custanti + Custantinu Custanzu DA_masu Damianu Danieli Dauferiu DumI_nicu Eduardu Elia Eracliu + Ermannu Euggeniu Eufemiu Fabrizziu Fidiricu Filici Filippu Firdinannu Florianu Franciscu + Frateddu Fulcone Furtunatu Gaitanu Giordanu Giorgi Girardu Giuacchinu Giulianu Giuseppi + Giustinu Giuvanni Girvasiu Gisulfu Gnazziu Guaimariu Guffredu Gugghiermu Grazzianu Grigoriu + Guidu Ilariu JA_picu Lambertu Lanciottu Landolfu Libberiu Lissandru Liuni Luca + Luduvicu Luiggi Luciu Lupu Lurenzu Manfredi Mansone Marcu Margaritu Marianu + Marinu Mariu Martinu Massimu Massiminu Matteu MA_uru Micheli Napuliuni Nicefuru + Nicola Nicudemu Nnuccenzu Olimpiu Onoriu Orazzu Orlannu Ottaviu Pandone Pandolfu + Pasquale PA_ulu Petru Piu PO_litu Ranieri Rainulfu Ramuni Riccardu Rinaldu + Rinatu Rubbertu Rudolfu Ruffredu Ruggeru Samueli Sanciu Sarvaturi Sebastianu Sergiu + Severinu Sigeriu Silvestru Simuni StE_fanu Tancredi TelE_sfuru Teodosiu Tiudoru Tiuduricu + Tumasi Ugu Umbertu Unfredu Uttuni Valenti Valintinu Valirianu Vicenzu Vinciguerra + Vittoriu Vitu Zaccaria ZO_simu + } + + female_names = { + Adelia Adriana Adilasia A_gata Agnesa Agrippina Albina Arianna Alessia + Alvisa A_ngila Anna Antonia Anastasia Augusta Aurelia Austina Bianca Biata + Biatrici Biniditta Bricita Brunhilda Berta Bona CalO_gira Camilla Candida Carulina + Catarina Chiara Cicilia ClA_udia Climenza Colella Cristina Cuncetta Curnelia + Curradina Custanza Damiana Desiderata DumI_nica Dora E_lina Eleunora Elvira Emma + Eudissia Eufemia Euggenia Fausta FilicitA_ Fidirica Filippa Filumena Flavia Flora + Fortunata Francisca Gaitana Gesualda Giacinta Gimarca Ginuvra Giordana Giorgia Giuditta + Giulia Giuseppa Giuvanna Gohilda Isabella Laura Lionora Lisabetta Litizzia Livia + Lucia Lucina Lucrezzia Luiggia Luisa Macalda Maddalena MarIIa Marianna Marina + Marghirita Martina MA_ura Medania Olimpia Oria Ottavia PA_ula Pulchera Rosa + Sibbila Simuna Tiresa Valdrada Valintina Virginia Vittoria Viulanti + } + + dynasty_of_location_prefix = "dynnp_di" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 40 + mat_grf_name_chance = 5 + father_name_chance = 40 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 50 + mat_grm_name_chance = 30 + mother_name_chance = 10 + + + + mercenary_names = { + { name = "mercenary_company_condottiere_band" } + { name = "mercenary_company_sicilian_band" } + } +} + +name_list_lombard = { + + cadet_dynasty_names = { + "dynn_Lethings" + "dynn_Lotharling" + "dynn_Theoderisian" + "dynn_Landulfid" + "dynn_Atenulfing" + "dynn_Hunding" + "dynn_Wulfing" + "dynn_Arodi" + "dynn_Alboining" + "dynn_Clephing" + "dynn_Autharing" + "dynn_Ariolading" + "dynn_Aripertid" + "dynn_Perctartid" + "dynn_Grimualding" + "dynn_Alahisid" + "dynn_Raginperting" + "dynn_Liutperting" + } + + dynasty_names = { + "dynn_Lethings" + "dynn_Lotharling" + "dynn_Theoderisian" + "dynn_Landulfid" + "dynn_Atenulfing" + "dynn_Hunding" + "dynn_Wulfing" + "dynn_Arodi" + "dynn_Alboining" + "dynn_Clephing" + "dynn_Autharing" + "dynn_Ariolading" + "dynn_Aripertid" + "dynn_Perctartid" + "dynn_Grimualding" + "dynn_Alahisid" + "dynn_Raginperting" + "dynn_Liutperting" + } + + male_names = { + Adalgis Adaloald Adhemar Ado Agelmund Agilof Agilulf Agiprand Ago Ahthari Aimeric + Aistulf Aiulf Ajo Alahis Alboin Aldihoc Alo Altpert Amefrith Anselm Ansfrid Ansfrith + Ansprand Ardoin Arechis Ariald Aribert Arichis Aripert Ariulf Arnefrith Arnifrid Artavasdas Atenulf + Atto Audelahis Audoin Aunepert Ausfrid Authari Berin Bernard Birinus Cleph Corvulus + Daufer Desiderius Donnolo Erchempert Erchinoald Erlembald Ewin Fara Faroald Ferdulf Gacco Garibald Gisulf Godehoc + Godepert Godescalc Grasulf Grimoald Guaifer Guaimar Gumpert Gundo Gundoald + Hermenfred Hildeprand Hilderic Hildigis Hilmagis Hrodgaud Hucpert Ibor Ildiches Indulf + Ingoald Ioann Irnerius Kakko Kunibert Laiamicho Laidulf Lambert Landari Landenulf Lando + Landulf Lantpert Laudari Liutbald Liutbrand Liutpert Liutprand Liutward Lupus Maginulf Manso Munichis + Nordepert Odilo Odoaker Odoin Orson Pandenulf Pandulf Pemmo Penno Perctarit Petrus + Poppo Radelchis Radelgar Radgis Radwald Raginpert Ratchis Reccared Risiulf Rochus Rodgand + Rodoald Rodolf Rodwald Romuald Rothari Saxo Sico Siconulf Sigibuld Sigisbert Sigisbrand Sikard + Sinibald Taino Taso Theodelap Theoderich Theodicius Theodo Theodorich Theotpert Theudoald Thrasimund + Unichis Unigild Unulf Ursus Vacho Waifar Waimar Waldchis Waldipert Walthari Wechthari Wido Zotto Zuchilo + } + female_names = { + Adelberga Adelchisa Adelgrima Adelperga Altruda Amalasuintha Amalberga Amalfrida Ansa Anselberga Anselperga Ansia + Appa Areagne Aurona Chlotsuintha Cotani Cunigunda Desiderata Ereleuva Erelieva Gaatha Gaila Gaitelgrima Gambara Geila + Gemma Geretrudis Gerperga Giseltrude Giso Glismoda Gudeliva Gundeperga Guntrud Helchen Hermelinda + Hunila Imma Kriemhild Liutberga Liutperga Liutpirc Maria Marozia Matasuntha Menia Pilitrud Rodelinda Rosamund Rotrude Rumetruda + Serenahilt Sichelgaita Sunigilda Sunilda Swanahild Theodarada Theodelinda Theodorada Theodota Theuderada Thiudigotho Uta + Vadamerca Valdamerca Walderada Wilgefortis Wisigarda + } + + dynasty_of_location_prefix = "dynnp_de" + grammar_transform = french + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 25 + mat_grf_name_chance = 5 + father_name_chance = 40 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 5 + mother_name_chance = 25 + + + + mercenary_names = { + { name = "mercenary_company_the_longbeard_band" } + } +} diff --git a/common/culture/name_lists/00_magyar.txt b/common/culture/name_lists/00_magyar.txt new file mode 100644 index 00000000..3e0d218c --- /dev/null +++ b/common/culture/name_lists/00_magyar.txt @@ -0,0 +1,393 @@ +name_list_mogyer = { + + cadet_dynasty_names = { + "dynn_A_rpA_dy" + "dynn_CsA_szA_r" + "dynn_Vajlok" + "dynn_KA_n" + "dynn_Omodej" + "dynn_Zapolsky" + "dynn_Drugeth" + "dynn_Csak" + "dynn_Pallfy" + "dynn_Apafi" + "dynn_BA_nffy" + "dynn_BerzE_nyi" + "dynn_Bocskai" + "dynn_Borsa" + "dynn_CzirA_ky" + "dynn_Debreceni" + "dynn_DerencsE_nyi" + "dynn_DiO_szegi" + "dynn_DO_ry" + "dynn_EgervA_ri" + "dynn_ForgA_ch" + "dynn_Garai" + "dynn_PA_lO_czi" + "dynn_HE_dervA_ri" + "dynn_Hunyadi" + "dynn_KA_n" + "dynn_KA_rolyi" + "dynn_KO_szegi" + "dynn_Kun" + "dynn_Losonczi" + "dynn_MarO_ti" + "dynn_PerE_nyi" + "dynn_RA_tO_t" + "dynn_Rozgonyi" + "dynn_Szakoly" + "dynn_SzE_csE_nyi" + "dynn_SzE_chy" + "dynn_Telegdi" + "dynn_ThurzO_" + "dynn_U_jlaki" + "dynn_Kanizsai" + "dynn_Meggyesi" + "dynn_Osli" + "dynn_Viczay" + "dynn_Balassa" + "dynn_BA_thory" + "dynn_KA_lnoky" + "dynn_Niedzica" + "dynn_ZA_polya" + "dynn_SzE_kely" + "dynn_DO_zsa" + "dynn_Apafi" + "dynn_Balassi" + "dynn_Bethlen_von_IktA_r" + { "dynnp_of" "dynn_Szekezfehervar" } + "dynn_Budai_Nagy" + { "dynnp_de" "dynn_KincstartO_" } + "dynn_Celko" + "dynn_Corvinus" + { "dynnp_de" "dynn_Cseszneky" } + { "dynnp_de" "dynn_MilvA_ny" } + { "dynnp_von" "dynn_MoravA_n" } + "dynn_DA_vid" + "dynn_DE_csey" + "dynn_ME_zesi" + { "dynnp_de" "dynn_Ruszka" } + "dynn_Draskovich" + "dynn_ErdO_dy" + "dynn_RE_vay" + "dynn_DuruZ_mic" + "dynn_Szemere" + "dynn_Hadik" + "dynn_BatthyA_ny" + "dynn_Csesznegi" + "dynn_EsterhA_zy" + "dynn_HajdU_" + "dynn_JesenskY_" + "dynn_Medveczky" + "dynn_RA_kO_czi" + "dynn_Wass_de_Czege" + "dynn_Szapolyai" + "dynn_Zichy" + "dynn_Zrinski" + } + + dynasty_names = { + "dynn_A_rpA_dy" + "dynn_CsA_szA_r" + "dynn_Vajlok" + "dynn_KA_n" + "dynn_Omodej" + "dynn_Zapolsky" + "dynn_Drugeth" + "dynn_Csak" + "dynn_Pallfy" + "dynn_Apafi" + "dynn_BA_nffy" + "dynn_BerzE_nyi" + "dynn_Bocskai" + "dynn_Borsa" + "dynn_CzirA_ky" + "dynn_Debreceni" + "dynn_DerencsE_nyi" + "dynn_DiO_szegi" + "dynn_DO_ry" + "dynn_EgervA_ri" + "dynn_ForgA_ch" + "dynn_Garai" + "dynn_PA_lO_czi" + "dynn_HE_dervA_ri" + "dynn_Hunyadi" + "dynn_KA_n" + "dynn_KA_rolyi" + "dynn_KO_szegi" + "dynn_Kun" + "dynn_Losonczi" + "dynn_MarO_ti" + "dynn_PerE_nyi" + "dynn_RA_tO_t" + "dynn_Rozgonyi" + "dynn_Szakoly" + "dynn_SzE_csE_nyi" + "dynn_SzE_chy" + "dynn_Telegdi" + "dynn_ThurzO_" + "dynn_U_jlaki" + "dynn_Kanizsai" + "dynn_Meggyesi" + "dynn_Osli" + "dynn_Viczay" + "dynn_Balassa" + "dynn_BA_thory" + "dynn_KA_lnoky" + "dynn_Niedzica" + "dynn_ZA_polya" + "dynn_SzE_kely" + "dynn_DO_zsa" + "dynn_Apafi" + "dynn_Balassi" + "dynn_Bethlen_von_IktA_r" + { "dynnp_of" "dynn_Szekezfehervar" } + "dynn_Budai_Nagy" + { "dynnp_de" "dynn_KincstartO_" } + "dynn_Celko" + "dynn_Corvinus" + { "dynnp_de" "dynn_Cseszneky" } + { "dynnp_de" "dynn_MilvA_ny" } + { "dynnp_von" "dynn_MoravA_n" } + "dynn_DA_vid" + "dynn_DE_csey" + "dynn_ME_zesi" + { "dynnp_de" "dynn_Ruszka" } + "dynn_Draskovich" + "dynn_ErdO_dy" + "dynn_RE_vay" + "dynn_DuruZ_mic" + "dynn_Szemere" + "dynn_Hadik" + "dynn_BatthyA_ny" + "dynn_Csesznegi" + "dynn_EsterhA_zy" + "dynn_HajdU_" + "dynn_JesenskY_" + "dynn_Medveczky" + "dynn_RA_kO_czi" + "dynn_Wass_de_Czege" + "dynn_Szapolyai" + "dynn_Zichy" + "dynn_Zrinski" + } + + male_names = { + A_bel A_dA_rn A_goston A_lmos A_rpA_d O_dO_n Alajos Ambrus AndrA_s Antal Attila BA_lint BE_la BalA_zs Benedek BernA_t BertO_k Bertalan BoldizsA_r Bonuslo + Borisz CsA_k Csaba Csongor DE_nes DO_mO_tO_r DezsO_ DomoszlO_ DonA_t Elek ElemE_r Endre ErnO_ FulO_p Ferenc Frigyes GA_bor GA_briel GA_spA_r GE_za Gazsi + GellE_rt Gergely GyO_rgy Gyula Imre IstvA_n IzsA_k JA_kob JA_nos JO_zsef JenO_ KA_lmA_n KA_roly KonrA_d KornE_l KristO_f LA_szlO_ LA_zA_r LO_rinc Lajos + Lampert Levente LukA_cs MA_rk MA_rton MA_tE_ MA_tyA_s MO_ric MO_zes MihA_ly MiklO_s NA_ndor OrbA_n OszkA_r PA_l PE_ter SA_muel SA_ndor Salamon Saul Soma + Szilveszter TA_dor Tacsony TamA_s Tibor Tivadar Vazul Vencel Vilmos ZoltA_n Zsigmond Zsolt + } + female_names = { + A_gnes E_va Adelaida AgA_ta AmA_lia Angyalka AnikO_ Aranka Berta BorbA_la Csilla Csillag Czenzi Dorottya Edit EmO_ke Emese Erika ErzsE_bet Eszter + Etel Euphemia Gizella GyO_rgyi Hajnal Hedwig Ibolya IldikO_ Illona IrE_n JA_cinta JO_zsa JU_lia JolA_n Judith Kamilla Katalin Kinga KlA_ra + Konstancia Krisztina Kunigunda Luca MA_ria MA_rta Magdolna MargarE_ta Margit Matild NatA_lia Odola Orsolya Panni Piroska RO_zsa SA_ra Sarolt + Skolasztika Sophia TundE_r Terezia Viola VirA_g ZoltA_na ZsO_fia Zsanett Zsuzsa + } + + dynasty_of_location_prefix = "dynnp_a" + + patronym_suffix_male = "dynnpat_suf_fi" + + dynasty_name_first = yes + + +} + +name_list_hungarian = { + + cadet_dynasty_names = { + "dynn_A_rpA_dy" + "dynn_CsA_szA_r" + "dynn_Vajlok" + "dynn_KA_n" + "dynn_Omodej" + "dynn_Zapolsky" + "dynn_Drugeth" + "dynn_Csak" + "dynn_Pallfy" + "dynn_Apafi" + "dynn_BA_nffy" + "dynn_BerzE_nyi" + "dynn_Bocskai" + "dynn_Borsa" + "dynn_CzirA_ky" + "dynn_Debreceni" + "dynn_DerencsE_nyi" + "dynn_DiO_szegi" + "dynn_DO_ry" + "dynn_EgervA_ri" + "dynn_ForgA_ch" + "dynn_Garai" + "dynn_PA_lO_czi" + "dynn_HE_dervA_ri" + "dynn_Hunyadi" + "dynn_KA_n" + "dynn_KA_rolyi" + "dynn_KO_szegi" + "dynn_Kun" + "dynn_Losonczi" + "dynn_MarO_ti" + "dynn_PerE_nyi" + "dynn_RA_tO_t" + "dynn_Rozgonyi" + "dynn_Szakoly" + "dynn_SzE_csE_nyi" + "dynn_SzE_chy" + "dynn_Telegdi" + "dynn_ThurzO_" + "dynn_U_jlaki" + "dynn_Kanizsai" + "dynn_Meggyesi" + "dynn_Osli" + "dynn_Viczay" + "dynn_Balassa" + "dynn_BA_thory" + "dynn_KA_lnoky" + "dynn_Niedzica" + "dynn_ZA_polya" + "dynn_SzE_kely" + "dynn_DO_zsa" + "dynn_Apafi" + "dynn_Balassi" + "dynn_Bethlen_von_IktA_r" + { "dynnp_of" "dynn_Szekezfehervar" } + "dynn_Budai_Nagy" + { "dynnp_de" "dynn_KincstartO_" } + "dynn_Celko" + "dynn_Corvinus" + { "dynnp_de" "dynn_Cseszneky" } + { "dynnp_de" "dynn_MilvA_ny" } + { "dynnp_von" "dynn_MoravA_n" } + "dynn_DA_vid" + "dynn_DE_csey" + "dynn_ME_zesi" + { "dynnp_de" "dynn_Ruszka" } + "dynn_Draskovich" + "dynn_ErdO_dy" + "dynn_RE_vay" + "dynn_DuruZ_mic" + "dynn_Szemere" + "dynn_Hadik" + "dynn_BatthyA_ny" + "dynn_Csesznegi" + "dynn_EsterhA_zy" + "dynn_HajdU_" + "dynn_JesenskY_" + "dynn_Medveczky" + "dynn_RA_kO_czi" + "dynn_Wass_de_Czege" + "dynn_Szapolyai" + "dynn_Zichy" + "dynn_Zrinski" + } + + dynasty_names = { + "dynn_A_rpA_dy" + "dynn_CsA_szA_r" + "dynn_Vajlok" + "dynn_KA_n" + "dynn_Omodej" + "dynn_Zapolsky" + "dynn_Drugeth" + "dynn_Csak" + "dynn_Pallfy" + "dynn_Apafi" + "dynn_BA_nffy" + "dynn_BerzE_nyi" + "dynn_Bocskai" + "dynn_Borsa" + "dynn_CzirA_ky" + "dynn_Debreceni" + "dynn_DerencsE_nyi" + "dynn_DiO_szegi" + "dynn_DO_ry" + "dynn_EgervA_ri" + "dynn_ForgA_ch" + "dynn_Garai" + "dynn_PA_lO_czi" + "dynn_HE_dervA_ri" + "dynn_Hunyadi" + "dynn_KA_n" + "dynn_KA_rolyi" + "dynn_KO_szegi" + "dynn_Kun" + "dynn_Losonczi" + "dynn_MarO_ti" + "dynn_PerE_nyi" + "dynn_RA_tO_t" + "dynn_Rozgonyi" + "dynn_Szakoly" + "dynn_SzE_csE_nyi" + "dynn_SzE_chy" + "dynn_Telegdi" + "dynn_ThurzO_" + "dynn_U_jlaki" + "dynn_Kanizsai" + "dynn_Meggyesi" + "dynn_Osli" + "dynn_Viczay" + "dynn_Balassa" + "dynn_BA_thory" + "dynn_KA_lnoky" + "dynn_Niedzica" + "dynn_ZA_polya" + "dynn_SzE_kely" + "dynn_DO_zsa" + "dynn_Apafi" + "dynn_Balassi" + "dynn_Bethlen_von_IktA_r" + { "dynnp_of" "dynn_Szekezfehervar" } + "dynn_Budai_Nagy" + { "dynnp_de" "dynn_KincstartO_" } + "dynn_Celko" + "dynn_Corvinus" + { "dynnp_de" "dynn_Cseszneky" } + { "dynnp_de" "dynn_MilvA_ny" } + { "dynnp_von" "dynn_MoravA_n" } + "dynn_DA_vid" + "dynn_DE_csey" + "dynn_ME_zesi" + { "dynnp_de" "dynn_Ruszka" } + "dynn_Draskovich" + "dynn_ErdO_dy" + "dynn_RE_vay" + "dynn_DuruZ_mic" + "dynn_Szemere" + "dynn_Hadik" + "dynn_BatthyA_ny" + "dynn_Csesznegi" + "dynn_EsterhA_zy" + "dynn_HajdU_" + "dynn_JesenskY_" + "dynn_Medveczky" + "dynn_RA_kO_czi" + "dynn_Wass_de_Czege" + "dynn_Szapolyai" + "dynn_Zichy" + "dynn_Zrinski" + } + + male_names = { + A_bel A_dA_rn A_goston A_lmos A_rpA_d O_dO_n Alajos Ambrus AndrA_s Antal Attila BA_lint BE_la BalA_zs Benedek BernA_t BertO_k Bertalan BoldizsA_r Bonuslo + Borisz CsA_k Csaba Csongor DE_nes DO_mO_tO_r DezsO_ DomoszlO_ DonA_t Elek ElemE_r Endre ErnO_ FulO_p Ferenc Frigyes GA_bor GA_briel GA_spA_r GE_za Gazsi + GellE_rt Gergely GyO_rgy Gyula Imre IstvA_n IzsA_k JA_kob JA_nos JO_zsef JenO_ KA_lmA_n KA_roly KonrA_d KornE_l KristO_f LA_szlO_ LA_zA_r LO_rinc Lajos + Lampert Levente LukA_cs MA_rk MA_rton MA_tE_ MA_tyA_s MO_ric MO_zes MihA_ly MiklO_s NA_ndor OrbA_n OszkA_r PA_l PE_ter SA_muel SA_ndor Salamon Saul Soma + Szilveszter TA_dor Tacsony TamA_s Tibor Tivadar Vazul Vencel Vilmos ZoltA_n Zsigmond Zsolt + } + female_names = { + A_gnes E_va Adelaida AgA_ta AmA_lia Angyalka AnikO_ Aranka Berta BorbA_la Csilla Csillag Czenzi Dorottya Edit EmO_ke Emese Erika ErzsE_bet Eszter + Etel Euphemia Gizella GyO_rgyi Hajnal Hedwig Ibolya IldikO_ Illona IrE_n JA_cinta JO_zsa JU_lia JolA_n Judith Kamilla Katalin Kinga KlA_ra + Konstancia Krisztina Kunigunda Luca MA_ria MA_rta Magdolna MargarE_ta Margit Matild NatA_lia Odola Orsolya Panni Piroska RO_zsa SA_ra Sarolt + Skolasztika Sophia TundE_r Terezia Viola VirA_g ZoltA_na ZsO_fia Zsanett Zsuzsa + } + + dynasty_of_location_prefix = "dynnp_a" + + patronym_suffix_male = "dynnpat_suf_fi" + + dynasty_name_first = yes + + +} diff --git a/common/culture/name_lists/00_south_slavic.txt b/common/culture/name_lists/00_south_slavic.txt new file mode 100644 index 00000000..1745f535 --- /dev/null +++ b/common/culture/name_lists/00_south_slavic.txt @@ -0,0 +1,687 @@ +name_list_croatian = { + + cadet_dynasty_names = { + "dynn_MihaljeviC_" + "dynn_Vukasin" + "dynn_Dukasin" + "dynn_KastriotiC_" + "dynn_Frankopan" + "dynn_KaC_iC_" + "dynn_DraskoviC_" + "dynn_ZelemE_ri" + "dynn_Bebek" + "dynn_SvetoslaviC_" + "dynn_KreS_imiroviC_" + "dynn_FeS_tetiC_" + "dynn_Lackfi" + "dynn_S_ubiC_" + "dynn_KobiliC_" + "dynn_LackoviC_" + "dynn_Frankopan" + "dynn_TrpimiroviC_" + "dynn_Lopac" + "dynn_Winch" + "dynn_BijelahrvatskiC_" + "dynn_BaboniC_" + "dynn_DomagojeviC_" + "dynn_Gorjanski" + "dynn_Lackfi" + "dynn_SvaciC_" + "dynn_SenulatoviC_" + "dynn_Vit" + "dynn_JesoviC_" + "dynn_TeroviC_" + } + + dynasty_names = { + "dynn_MihaljeviC_" + "dynn_Vukasin" + "dynn_Dukasin" + "dynn_KastriotiC_" + "dynn_Frankopan" + "dynn_KaC_iC_" + "dynn_DraskoviC_" + "dynn_ZelemE_ri" + "dynn_Bebek" + "dynn_SvetoslaviC_" + "dynn_KreS_imiroviC_" + "dynn_FeS_tetiC_" + "dynn_Lackfi" + "dynn_S_ubiC_" + "dynn_KobiliC_" + "dynn_LackoviC_" + "dynn_Frankopan" + "dynn_TrpimiroviC_" + "dynn_Lopac" + "dynn_Winch" + "dynn_BijelahrvatskiC_" + "dynn_BaboniC_" + "dynn_DomagojeviC_" + "dynn_Gorjanski" + "dynn_Lackfi" + "dynn_SvaciC_" + "dynn_SenulatoviC_" + "dynn_Vit" + "dynn_JesoviC_" + "dynn_TeroviC_" + } + + male_names = { + Adam Andrija Bartol Besar Bojan Boris Branimir Castimir Danail Dmitar Dobromir Dragan Dragomir Drzislav Dujam Duym Filip Gaspar Gheorghe Grigorii + Hranislav Hrvoje Igor Ioan Ivan Ivanis Jitej Karlo Koloman KreS_imir Ladislav Ljudevit Ljutomisl Lovro Matej Mihajlo Milman Mislav Mutimir + Nikolitza Ognjen Petar Prohor Radomir Ratimir Sebeslav Seslav Slavich Stanislav Stjepan Sulvan Teodor TI_semir Tomislav Tvrdoslav Tvrtko Ulfo Uskrsimir Vid Vitomir Vlaicu + Vukan Zvonimir + } + female_names = { + Adriana Anna Borislava Cededa Doroteja Ekaterina Helena Jadviga Jovana Kera Ladika Maria Mihaela Nada Petra Viola Jadranka Mare + Antonija Capeka Dragana Dubravka Emilija Gordana Jagoda Jelena Jelka Lucija Katalin Marija Marijana Mirjana Mirna Mojca Natalija NataS_a + Rijeka Silvija Snjezana Sofija Suzana Svjetlana Suronja Tatjana Tihana Valerija Vedrana Visnja Vjekoslava Zlata Zvonimira + } + + dynasty_of_location_prefix = "dynnp_od" + + patronym_suffix_male = "dynnpat_suf_iC_" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 40 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + +} + +name_list_bosnian = { + + cadet_dynasty_names = { + "dynn_KotromaniC_" + "dynn_KuliniC_" + "dynn_HrvatiniC_" + "dynn_KosaC_a" + "dynn_VukciC_" + "dynn_NikoliC_" + "dynn_SankoviC_" + "dynn_VukoviC_" + "dynn_ViS_eviC_" + "dynn_RadivojeviC_" + "dynn_VlatkoviC_" + "dynn_RadinoviC_" + "dynn_ZlatonosoviC_" + "dynn_KristiC_" + "dynn_S_antiC_" + "dynn_TepC_iC_" + "dynn_HercegoviC_" + "dynn_TezaloviC_" + "dynn_MurZ_iC_" + "dynn_HvaeoniC_" + "dynn_MasnoviC_" + "dynn_MirkoviC_" + "dynn_VojsaliC_" + "dynn_Ugrin" + } + + dynasty_names = { + "dynn_KotromaniC_" + "dynn_KuliniC_" + "dynn_HrvatiniC_" + "dynn_KosaC_a" + "dynn_VukciC_" + "dynn_NikoliC_" + "dynn_SankoviC_" + "dynn_VukoviC_" + "dynn_ViS_eviC_" + "dynn_RadivojeviC_" + "dynn_VlatkoviC_" + "dynn_RadinoviC_" + "dynn_ZlatonosoviC_" + "dynn_KristiC_" + "dynn_S_antiC_" + "dynn_TepC_iC_" + "dynn_HercegoviC_" + "dynn_TezaloviC_" + "dynn_MurZ_iC_" + "dynn_HvaeoniC_" + "dynn_MasnoviC_" + "dynn_MirkoviC_" + "dynn_VojsaliC_" + "dynn_Ugrin" + } + + male_names = { + Andrija Batalo BatiC_ BogiS_a Bogut BoriC_ Brailo Brajko DabiS_a Danis Dragonja Gojslav Grgur Hran Hrana Hrvoje Hval IvaniS_ Juraj Krsmir Kulin Matej Matej_Ninoslav Mihajlo Milovan Miroslav Nikola Ninoslav Ostoja Pavle Petar Priboje Prijezda RadiC_ Radislav Radivoj Radogost Sandalj Sanko Sibislav Stjepan TI_semir TomaS_ Tvrtko Uskrsimir Vladislav Vlatko Vuk Vukac VukaS_in Vukmir + } + female_names = { + Andrijana Doroteja Elizabeta Gojslava Gruba Jelena Katarina Kujava Mara Marija Mateja MiliS_a Miroslava Nika Nikolena Pavica Petra Radislava Resa Stana Teodora VitaC_a VojaC_a Vojislava + } + + dynasty_of_location_prefix = "dynnp_od" + + patronym_suffix_male = "dynnpat_suf_iC_" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 40 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_bitter_winter_band" } + { name = "mercenary_company_knE_z_evi_of_the_road" } + { name = "mercenary_company_forest_wolves" } + } +} + +name_list_serbian = { + + cadet_dynasty_names = { + "dynn_Dragutin" + "dynn_Srbija" + "dynn_Znaim" + "dynn_NemanjiC_" + "dynn_SokoloviC_" + "dynn_Thopia" + "dynn_Muzaka" + "dynn_Assen" + "dynn_Tich" + "dynn_Soimirovich" + "dynn_Balin" + "dynn_VukanoviC_" + "dynn_MrnjavceviC_" + "dynn_BrankoviC_" + "dynn_Uglesa" + "dynn_Hlapen" + "dynn_Blagai" + "dynn_Czobor" + "dynn_ProgonoviC_" + "dynn_Grot" + "dynn_Radoslav" + "dynn_Caradja" + "dynn_Prosigoj" + "dynn_GojnikoviC_" + "dynn_BranoviC_" + "dynn_PribisavljeviC_" + "dynn_KlonimiroviC_" + "dynn_Radomiros" + "dynn_TvrtkoviC_" + "dynn_Vrana" + } + + dynasty_names = { + "dynn_Dragutin" + "dynn_Srbija" + "dynn_Znaim" + "dynn_NemanjiC_" + "dynn_SokoloviC_" + "dynn_Thopia" + "dynn_Muzaka" + "dynn_Assen" + "dynn_Tich" + "dynn_Soimirovich" + "dynn_Balin" + "dynn_VukanoviC_" + "dynn_MrnjavceviC_" + "dynn_BrankoviC_" + "dynn_Uglesa" + "dynn_Hlapen" + "dynn_Blagai" + "dynn_Czobor" + "dynn_ProgonoviC_" + "dynn_Grot" + "dynn_Radoslav" + "dynn_Caradja" + "dynn_Prosigoj" + "dynn_GojnikoviC_" + "dynn_BranoviC_" + "dynn_PribisavljeviC_" + "dynn_KlonimiroviC_" + "dynn_Radomiros" + "dynn_TvrtkoviC_" + "dynn_Vrana" + "dynn_Dragosevic" + } + + male_names = { + Aldimir Asen Berbat Blaz Boleslav Borna Branimir Budimir Kosmin Danilo Djordje Dmitar Dobroslav Dragija Dragos Dragutin Gavrilo Godimir Goran + Grgur Ilija Ivan Josif Josip Jovan Kasjan Konstantin Krsto Lazar Ljudevit Luka Marko Martin Matija Mihailo Mihovil Milorad Milutin Mircea Miroslav Mislav Nenad Nikodim Nikola + Ninoslav Petar Porin Prvoslav Radoslav Rastko Ratomir Roman Serapion Simeon Sinisa Slavko Slobodan Stefan Teodosije Tihomir Trajan Uros Visarion Vladimir Vladislav Vlastimir + Vuk Vukan Vukasin Vukoman Zoran Zvonimir + } + female_names = { + Agata Barbara Branimira Desislava Dubravka Elena Hicela Jelena Karolina Keratza Lovorka Marija Milka Neda Radica Zdenka Andjela Antonija + Bastina Biljana Bistrina Bojana Casna Chasna Dejana Dragana Dragoslava Duga Dusica Gordana Grana Grubana Jagoda Jovana Jovanka Karika + Ljubica Luka Majka Malina Medeni Meki Milinka Miljana Miriti Mirjana Mudary Mudra Nada Nadanje Namena + } + + dynasty_of_location_prefix = "dynnp_od" + + patronym_suffix_male = "dynnpat_suf_iC_" + always_use_patronym = yes + + + + mercenary_names = { + { name = "mercenary_company_allemannic_guard" } + } +} + +name_list_vlach = { + + cadet_dynasty_names = { + "dynn_Basarab" + "dynn_Dragusin" + "dynn_Basarab" + "dynn_Litovoi" + "dynn_SelimoviC_" + "dynn_CsA_ky" + "dynn_DezsO_fi" + "dynn_Guthi-OrszA_gh" + "dynn_MarczaltO_vi" + "dynn_Petenye" + "dynn_Tibai" + "dynn_ZA_ch" + "dynn_Szapolyai" + "dynn_VA_rdai" + "dynn_ProdaniC_" + "dynn_Odescalchi" + "dynn_Costin" + } + + dynasty_names = { + "dynn_Basarab" + "dynn_Dragusin" + "dynn_Basarab" + "dynn_Litovoi" + "dynn_SelimoviC_" + "dynn_CsA_ky" + "dynn_DezsO_fi" + "dynn_Guthi-OrszA_gh" + "dynn_MarczaltO_vi" + "dynn_Petenye" + "dynn_Tibai" + "dynn_ZA_ch" + "dynn_Szapolyai" + "dynn_VA_rdai" + "dynn_ProdaniC_" + "dynn_Odescalchi" + "dynn_Costin" + "dynn_BA_dA_rA_u" + "dynn_BA_lA_ceanu" + "dynn_Bosie" + "dynn_BrA_iloi" + "dynn_BuS_ilA_" + "dynn_Calerghi" + "dynn_Callimachi" + "dynn_Cantemir" + "dynn_Carianopol" + "dynn_Crihan" + "dynn_Carionfil" + "dynn_Cristescu" + "dynn_Casassovici" + "dynn_Cesianu" + "dynn_ChinteS_ti" + "dynn_Chirescu" + "dynn_CoteS_ti" + "dynn_CraioveS_tilor" + "dynn_CrA_snaru" + "dynn_Dinastia" + "dynn_DA_neS_tilor" + "dynn_Diamandy" + "dynn_DrA_culeS_tilor" + "dynn_DrugA_" + "dynn_Eliescu" + "dynn_Emandi" + "dynn_Filipescu" + "dynn_Florescu" + "dynn_FundA_T_eni" + "dynn_Giosani" + "dynn_Golescu" + "dynn_GrA_diS_teanu" + "dynn_Greceanu" + "dynn_Hagi" + "dynn_HA_jdA_u" + "dynn_Jianu" + "dynn_Korne" + "dynn_Lecca" + "dynn_LereS_ti" + "dynn_Magheru" + "dynn_Marineanu" + "dynn_Miclescu" + "dynn_MovilA_" + "dynn_MA_nA_stireanu" + "dynn_Niculescu_DorobanT_u" + "dynn_PA_cleanu" + "dynn_Pisoschi" + "dynn_PleS_ia" + "dynn_PleS_nilA_" + "dynn_PleS_oianu" + "dynn_RacovitzA_" + "dynn_RA_S_canu" + "dynn_Rallet" + "dynn_Rosetti" + "dynn_RusA_neS_ti" + "dynn_Savoia" + "dynn_Stoicescu" + "dynn_S_oarec" + "dynn_S_oldan" + "dynn_TurbureS_ti" + "dynn_UrlA_T_eni" + "dynn_VidraS_cu" + "dynn_Yarka" + } + + male_names = { + Adrian Alexandru Anghel Aron Bajan Balc Barbat Basarab Bogdan Carol Ciprian Ciubar Claudiu + Corneliu Costin Damjan Dan Dragos Dumitru Emerik Florin Franjo Gavril Gheorghe Grigore Iacob + Iancu Ieremia Ilie Ioan Iorghu Iosif Iuga Janos Ladislau Latcu Laurentiu Litovoi Lucian Marin + Mihai Milos Mircea Moise Nicolaie Petre Pirvu Radovan Radu Roman Sas Seneslav Sergiu Simion + Stefan Stelian Teodor Tepes Tibor Tihomir Timotei Tudor Valentin Valeriu Vasile Veaceslav + Victor Vilhelm Vintila Vlad + } + female_names = { + Adelina Adriana Afina Alexandra Alexia Ana Anastasia Angela Arina Christina Clara Dana Ecatarina + Elena Elisabeta Emilia Eufroysina Felicia Floarea Iacoba Ioana Ionela Irina Iulia Maria Monica + Natalia Olimpia Paraschiva Petra Roxana Ruxandra Smaranda Sophia Stana Stefana Stefania Teodora + Tereza Vasilica Violeta Voica Zina + + } + + dynasty_of_location_prefix = "dynnp_de" + + patronym_suffix_male = "dynnpat_suf_escu" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 40 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_sheperds_of_the_romans" } + } +} + +name_list_bulgarian = { + + cadet_dynasty_names = { + "dynn_Srednogorski" + "dynn_Karvuna" + "dynn_Terter" + "dynn_Shishman" + "dynn_Struma" + "dynn_Asen" + "dynn_Delyan" + "dynn_Radomir" + "dynn_Kometopoulos" + "dynn_Mytzes" + "dynn_Tikh" + "dynn_Bardovka" + "dynn_Sliven" + "dynn_Terter" + "dynn_Bogoris" + "dynn_Slav" + "dynn_Hriz" + "dynn_Momtchil" + "dynn_Cherven" + "dynn_Marko" + "dynn_Fruzhin" + "dynn_Ermi" + "dynn_Hrabar" + "dynn_Exarch" + "dynn_Sigritsa" + "dynn_Chrysos" + "dynn_Komnene" + "dynn_Svetoslav" + "dynn_Palaeologus" + "dynn_Asanes" + "dynn_Komitopulov" + } + + dynasty_names = { + "dynn_Srednogorski" + "dynn_Karvuna" + "dynn_Terter" + "dynn_Shishman" + "dynn_Struma" + "dynn_Asen" + "dynn_Delyan" + "dynn_Radomir" + "dynn_Kometopoulos" + "dynn_Mytzes" + "dynn_Tikh" + "dynn_Bardovka" + "dynn_Sliven" + "dynn_Terter" + "dynn_Bogoris" + "dynn_Slav" + "dynn_Hriz" + "dynn_Momtchil" + "dynn_Cherven" + "dynn_Marko" + "dynn_Fruzhin" + "dynn_Ermi" + "dynn_Hrabar" + "dynn_Exarch" + "dynn_Sigritsa" + "dynn_Chrysos" + "dynn_Komnene" + "dynn_Svetoslav" + "dynn_Palaeologus" + "dynn_Asanes" + "dynn_Komitopulov" + } + + male_names = { + Aleksii Balin Bernardin Bertalan Bogoris Boril Bozidar Braslav Dan Dionisii Dominik Dragoman Dragshan Drzislav Evtimii Frujin German Grgur Hranimir + Ioakim Ivan Jerolim Kalojan Kocelj Kozma Kresimir Kulin Ljubomir Ljutomisl Marko Mihail Mikica Miroslav Momchil Nikola Ognen Petar + Prijezda Radislav Radu Sava Sermon Slavac Soimir Stracimir Svetislav Tomislav Trpimir Vasilii Viseslav Vladislav Vojnomir Zdeslav + } + female_names = { + Aleksandra Aleksandrina Bilyana Bisera Bogdana Bogna Borislava Boyana Dana Desislava Donka Elisaveta Emiliya Evdokiya Filipa Gergana + Hristina Iskra Iva Ivana Ivanka Ivet Lala Lidiya Lilyana Lyudmila Maya Nadejda Nevena Nikolina Penka Rada Radka Raina Raya Rayna Rosa + Rositsa Silva Silviya Snezhana Stoyanka Tereza Todorka Tsveta Tsvetanka Vasilka Violeta Yana Yoanan Yordanka Zhivka + } + + dynasty_of_location_prefix = "dynnp_ot" + + patronym_suffix_male = "dynnpat_suf_ov" + patronym_suffix_female = "dynnpat_suf_ova" + + + + mercenary_names = { + { name = "mercenary_company_company_of_the_skull_cup" } + { name = "mercenary_company_brothers_of_bayan" } + } +} + +name_list_albanian = { + + cadet_dynasty_names = { + "dynn_Arianiti" + "dynn_BalshE_n" # "Balshën" + "dynn_Bashta" + "dynn_Blinishti" + "dynn_Brankoviq" # Albanianized Slavic surname + "dynn_Bua" + "dynn_Dukagjini" + "dynn_Dushmani" + "dynn_Frangu" + "dynn_Gegaj" + "dynn_Gjurashi" + "dynn_Gropa" + "dynn_Jonima" + "dynn_Kamona" + "dynn_Kastrioti" + "dynn_Kryethi" + "dynn_Losha" + "dynn_MantrE_nga" # "Matrënga" + "dynn_Mazreku" + "dynn_Muzaka" + "dynn_Nemanjiq" # Albanianized Slavic surname + "dynn_Pavloviq" # Albanianized Slavic surname + "dynn_Progoni" + "dynn_Skura" + "dynn_Spani" + "dynn_Spata" + "dynn_Strezi" + "dynn_Thopia" + "dynn_Vojsaliq" # Albanianized Slavic surname + "dynn_Vukosaliq" # Albanianized Slavic surname + "dynn_Zaharia" + "dynn_Zenebishi" + } + + dynasty_names = { + "dynn_Arianiti" + "dynn_BalshE_n" # "Balshën" + "dynn_Bashta" + "dynn_Blinishti" + "dynn_Brankoviq" # Albanianized Slavic surname + "dynn_Bua" + "dynn_Dukagjini" + "dynn_Dushmani" + "dynn_Frangu" + "dynn_Gegaj" + "dynn_Gjurashi" + "dynn_Gropa" + "dynn_Jonima" + "dynn_Kamona" + "dynn_Kastrioti" + "dynn_Kryethi" + "dynn_Losha" + "dynn_MantrE_nga" # "Matrënga" + "dynn_Mazreku" + "dynn_Muzaka" + "dynn_Nemanjiq" # Albanianized Slavic surname + "dynn_Pavloviq" # Albanianized Slavic surname + "dynn_Progoni" + "dynn_Skura" + "dynn_Spani" + "dynn_Spata" + "dynn_Strezi" + "dynn_Thopia" + "dynn_Vojsaliq" # Albanianized Slavic surname + "dynn_Vukosaliq" # Albanianized Slavic surname + "dynn_Zaharia" + "dynn_Zenebishi" + } + + male_names = { + Adrian # Adrian + AleksandE_r # "Aleksandër", Alexander. + Andrea # Andrew. "Andrija" might be valid, but I'm pretty sure it's how Albanian renders the Serbo-Croatian form of the name. + Balsha + Bozhidar + Cezar # Caesar + David + DhimitE_r # "Dhimitër", Demetrius + EngjE_ll # "Engjëll", Angelus + Eugjeni # Eugenius + Filip + FranC_esku # "Françesku" + Gjergj # George + Gjon # John/Iohannes + Gojko + Golem + Grigor # Gregorius + Gulielm # William + Irakli + Jakov # Jacob/James/Iacobus. "Jakup" might be a Turkish form of the name, in which case the other form I've seen is "Jakob" + Jeronim # Jerome + Jozef + Jul # Julius + Karl # Carolus + KojE_ # "Kojë", no idea what its cognates are + Komnen + Konstandin # Constantine + Krisant # + Kristofor # Christophorus + Ksenophon + Llazar # Lazarus + Maksimilian # Maximilian + Marku # Mark/Marcus + Mateu # Matthew/Matthaeus + Maxim + ME_rkur # "Mërkur", Mercurius + Mikel # Michael + Niketa # Nicetas + Nikodim + NikollE_ # "Nikollë", Nicholas + Ninac + Niqifor + Pal # Paul + PjetE_r # "Pjetër", Peter/Petrus + Progon + Serafin + Severin + Stanisha + Stefan # Stephanus. + Tanush # + Teodor # Theodore + Thoma # Thomas. Most common Albanian form of the name. + TomajE_ # "Tomajë", Thomas. "Tomajë Paq" is the Albanian form of the Italian name "Tommaso Pace", so this form has Italian influences I think + Vasil + Vlash + Vrana + Zognush + } + female_names = { + Ana + Andronika + Angjelina # Angelina + Despina + Dorothea + Filomena + Hirana + Jelena # Helena + Jerina # Irene + Komita + Kondisa + Kostandine # Constantina + Kristina # Christina + Magdalena + Mamica + Maria # Can also be spelled "Mëria"? + Merjeme + Rudina + Sofia # Sophia + Tereza # Theresa + Vasilika + Vlajka + Vojsava + Zhulieta # Juliet + } + + dynasty_of_location_prefix = "dynnp_i_" + + patronym_suffix_male = "dynnpat_suf_i" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 40 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 40 + mother_name_chance = 5 +} diff --git a/common/culture/name_lists/00_turkic.txt b/common/culture/name_lists/00_turkic.txt new file mode 100644 index 00000000..95bb1955 --- /dev/null +++ b/common/culture/name_lists/00_turkic.txt @@ -0,0 +1,1549 @@ +name_list_turkish = { + + cadet_dynasty_names = { + "dynn_Ottoman" + "dynn_Tigin" + "dynn_Arslan" + "dynn_Bunduqdarid" + "dynn_Aybakid" + "dynn_Qutuzid" + "dynn_Kitbughai" + "dynn_Lajinli" + "dynn_Jashnakirid" + "dynn_Karesili" + "dynn_Khurshidi" + "dynn_Salaghurid" + "dynn_Ghuzz" + "dynn_Pishkinoghlu" + "dynn_Bohruz" + "dynn_Sonqorjali" + "dynn_Juyushli" + "dynn_Aq_Sonqor" + "dynn_Begtimurid" + "dynn_Hazardinari" + "dynn_Dulkadir" + "dynn_Inalid" + "dynn_Burid" + "dynn_Inanj" + "dynn_Bajkam" + "dynn_Pervane" + "dynn_Qayi" + "dynn_Eretnid" + "dynn_Germiyan" + "dynn_Saruhan" + "dynn_Mentese" + "dynn_Aydin" + "dynn_Karaman" + "dynn_Tekke" + "dynn_Balik" + "dynn_Altar" + "dynn_Aybars" + "dynn_Doganin" + "dynn_Ecevit" + "dynn_GO_khan" + "dynn_Ilhan" + "dynn_Kagan" + "dynn_Metehan" + "dynn_Ozan" + "dynn_Senol" + "dynn_Tarkan" + "dynn_Utku" + "dynn_Yavuz" + "dynn_Olcayto" + "dynn_O_zkan" + "dynn_Doganin" + "dynn_Artuqid" + "dynn_Kazanjian" + "dynn_Namrun_Kalesi" + "dynn_Ildeguzid" + "dynn_Candar" + "dynn_Doranites" + "dynn_Kabasites" + "dynn_Meizomates" + "dynn_Tzanichites" + "dynn_Mamluk" + "dynn_Delhi" + "dynn_Altunia" + "dynn_Balban" + "dynn_Khilji" + "dynn_Kushru" + "dynn_Tughluq" + "dynn_Alauddin" + "dynn_Saifuddin" + "dynn_Awar" + "dynn_Tughral" + "dynn_Tamar" + "dynn_Iuzbaki" + "dynn_Tatar" + "dynn_Iitigin" + "dynn_Sonargaon" + "dynn_Lakhnauti" + "dynn_Satgaon" + "dynn_Qabajah" + "dynn_Yildoz" + "dynn_Toghril" + "dynn_Multani" + "dynn_Ajmerid" + "dynn_Kasid" + "dynn_Magadhid" + "dynn_Maturid" + "dynn_Lahurid" + "dynn_Bhadrid" + "dynn_Maymanid" + "dynn_Kyzylid" + "dynn_Tabasid" + "dynn_Barhid" + "dynn_Bayezid" + "dynn_GO_k" + "dynn_Mavi" + "dynn_Yesil" + "dynn_GU_C_lU_" + "dynn_RU_zgar" + "dynn_U_zengi" + "dynn_Trakhan" + "dynn_Raisiyya" + "dynn_Bunduqdarid" + "dynn_Muhtajid" + } + + dynasty_names = { + "dynn_Ottoman" + "dynn_Tigin" + "dynn_Arslan" + "dynn_Bunduqdarid" + "dynn_Aybakid" + "dynn_Qutuzid" + "dynn_Kitbughai" + "dynn_Lajinli" + "dynn_Jashnakirid" + "dynn_Karesili" + "dynn_Khurshidi" + "dynn_Salaghurid" + "dynn_Ghuzz" + "dynn_Pishkinoghlu" + "dynn_Bohruz" + "dynn_Sonqorjali" + "dynn_Juyushli" + "dynn_Aq_Sonqor" + "dynn_Begtimurid" + "dynn_Hazardinari" + "dynn_Dulkadir" + "dynn_Inalid" + "dynn_Burid" + "dynn_Inanj" + "dynn_Bajkam" + "dynn_Pervane" + "dynn_Qayi" + "dynn_Eretnid" + "dynn_Germiyan" + "dynn_Saruhan" + "dynn_Mentese" + "dynn_Aydin" + "dynn_Karaman" + "dynn_Tekke" + "dynn_Balik" + "dynn_Altar" + "dynn_Aybars" + "dynn_Doganin" + "dynn_Ecevit" + "dynn_GO_khan" + "dynn_Ilhan" + "dynn_Kagan" + "dynn_Metehan" + "dynn_Ozan" + "dynn_Senol" + "dynn_Tarkan" + "dynn_Utku" + "dynn_Yavuz" + "dynn_Olcayto" + "dynn_O_zkan" + "dynn_Doganin" + "dynn_Artuqid" + "dynn_Kazanjian" + "dynn_Namrun_Kalesi" + "dynn_Ildeguzid" + "dynn_Candar" + "dynn_Doranites" + "dynn_Kabasites" + "dynn_Meizomates" + "dynn_Tzanichites" + "dynn_Mamluk" + "dynn_Delhi" + "dynn_Altunia" + "dynn_Balban" + "dynn_Khilji" + "dynn_Kushru" + "dynn_Tughluq" + "dynn_Alauddin" + "dynn_Saifuddin" + "dynn_Awar" + "dynn_Tughral" + "dynn_Tamar" + "dynn_Iuzbaki" + "dynn_Tatar" + "dynn_Iitigin" + "dynn_Sonargaon" + "dynn_Lakhnauti" + "dynn_Satgaon" + "dynn_Qabajah" + "dynn_Yildoz" + "dynn_Toghril" + "dynn_Multani" + "dynn_Ajmerid" + "dynn_Kasid" + "dynn_Magadhid" + "dynn_Maturid" + "dynn_Lahurid" + "dynn_Bhadrid" + "dynn_Maymanid" + "dynn_Kyzylid" + "dynn_Tabasid" + "dynn_Barhid" + "dynn_Bayezid" + "dynn_GO_k" + "dynn_Mavi" + "dynn_Yesil" + "dynn_GU_C_lU_" + "dynn_RU_zgar" + "dynn_U_zengi" + "dynn_Trakhan" + "dynn_Raisiyya" + "dynn_Bunduqdarid" + "dynn_Muhtajid" + } + + male_names = { + C_agri C_aka Afsin Ahmet Aksonqor Alaeddin Ali Alkan "Alp_Arslan" "Alp_Yurek" Alptigin Artuk Ayaz Aydin Aydogan Aydogdu Aytekin BO_ru Bulend Bahadir Balaban Basbuga Batuhan Baturay Baybars Bayezid Baytas Belek Berkan Berkiyaruk Bozan Bugra Burak Cuneyd Dundar Danismend + Davud Demir Dogan Dogukan Dukak Erdem Ertan Ertekin Ertugrul Gunduz Hasan Hizir Ibrahim Ilgazi Inal Iskender Kurboga Kaikaus Kaikhusraw Kaiqobad Kara Karatay Kasim Kaya Kaytun Kemal KiliC_ Korkut Kutalmis Kutay Kutlug Mursel Mahmud Mehmed Meliksah Mengucek Mesud Murad Mustafa Orhan Osman Porsuk Rustem Ramazan Ridvan SO_buk SO_kmen SO_nmez Suleyman Saim Saltuk Saruca Savtekin Savur Sehinsah SelC_uk Selim Sencer Sinan Tanrivermis Tekin Timurtas Togay Togtekin Toktamis Tolun Toruntay Tugrul Tunga Turgut Turhan Tutus UluC_ Umur Yakut Yaman Yinal Yunus + } + female_names = { + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Aslihan Ayasun Ayla Ayse Ayten Azize Bahar Banu BozC_in Canan Ceylan Dunya Dilber Dilek Emine + Esin Fatma Firuze GulC_iC_ek Gulay Gulbahar Gulfem Gulsum Gumus Gunduz Gundes Gunes Hatice Hayat Huriye Ilkay Ilknur Ipek Ipekel Irge + Karacik Lale Leyla Mala Mansure Merve Mutlu Nagihan Nergis Neslihan Nilufer Nur Peksen Terkhen Samur Sarica Sati Sehnaz Serap Serife Sevilay + Sevindik Sibel Sirin Sirma Songul Sumru TekC_e Tura Umay Usunbike Vahide Yasar Yeldem Yildiz Zehra Zuhal + } + + dynasty_of_location_prefix = "dynnp_ve" + + patronym_suffix_male = "dynnpat_suf_oglu" + + founder_named_dynasties = yes + house_based_map_names = yes +} +name_list_pecheneg = { + + cadet_dynasty_names = { + "dynn_Kankali" + "dynn_Tzopon" + "dynn_Paguman" + "dynn_Belermen" + "dynn_Thonuzoba" + "dynn_YU_regir" + "dynn_BeC_enek" + "dynn_BU_gdU_z" + "dynn_U_C_ok" + "dynn_C_avuldur" + "dynn_Bayandur" + "dynn_Irtim" + "dynn_Talmat" + "dynn_Batas" + "dynn_Alayuntlu" + "dynn_C_epni" + "dynn_EymU_r" + "dynn_Salgurlu" + "dynn_Kankali" + } + + dynasty_names = { + "dynn_Kankali" + "dynn_Tzopon" + "dynn_Paguman" + "dynn_Belermen" + "dynn_Thonuzoba" + "dynn_YU_regir" + "dynn_BeC_enek" + "dynn_BU_gdU_z" + "dynn_U_C_ok" + "dynn_C_avuldur" + "dynn_Bayandur" + "dynn_Irtim" + "dynn_Talmat" + "dynn_Batas" + "dynn_Alayuntlu" + "dynn_C_epni" + "dynn_EymU_r" + "dynn_Salgurlu" + "dynn_Kankali" + } + + male_names = { + C_elgil Aba Baitzas Balgor Batan Batas Bator BayC_a BiC_kili Bizel Boru Bula Giazis Ildey Ipa Ipaos + Kabuksin Karaca Kaydum Kegen Konel Korkutan Kortan Kostas Kourkoutai Kuchug KuerC_i Kugel Kure KU_rA_ + Metiga + Sol Suru Tatus Teber Temir Tyrach Yavdi Yazi Yeke + } + female_names = { + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_ek Gulay Gunduz Gundes Gunes Ilkay Ipek Ipekel Irge + Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_cuman = { + + cadet_dynasty_names = { + "dynn_Osenevich" + "dynn_Kimak" + "dynn_Askarid" + "dynn_Adirlu" + "dynn_Olas" + "dynn_Polovtsy" + "dynn_Kuman" + "dynn_KiskunsA_g" + "dynn_Bortz" + "dynn_Klobuky" + "dynn_Kimak" + "dynn_Kimek" + "dynn_Laktan" + "dynn_Kuni" + "dynn_KO_pek" + "dynn_Varzas" + "dynn_Tana" + "dynn_Itil" + "dynn_Ochak" + "dynn_Zaporzhye" + "dynn_Akhtuba" + } + + dynasty_names = { + "dynn_Osenevich" + "dynn_Kimak" + "dynn_Askarid" + "dynn_Adirlu" + "dynn_Olas" + "dynn_Polovtsy" + "dynn_Kuman" + "dynn_KiskunsA_g" + "dynn_Bortz" + "dynn_Klobuky" + "dynn_Kimak" + "dynn_Kimek" + "dynn_Laktan" + "dynn_Kuni" + "dynn_KO_pek" + "dynn_Varzas" + "dynn_Tana" + "dynn_Itil" + "dynn_Ochak" + "dynn_Zaporzhye" + "dynn_Akhtuba" + } + + male_names = { + C_ilbu Aepak Aibak Alpra Altunopa Arbuz Asalup Asep Atrak Ayepa BO_nek Bachman Baytursun Begluk Beka Blush Bonyak BorC_ + Chemgura Chilbuk EldeC_yuk Ele Eltut Etrek Girgen Gzak Gzi Itlar Ituk + Kemenche Kitzes KO_nC_ek Kobyak Kolo Kopti Kopulch Kotyan Koza Kozel Kubasar Kuntuvdi Kutan Kutesk Kutlu Kza + Lavor Manj Menk Otrok Ovlur Pulad Saru Sharaga Sharukan SevenC_ Seyhan Sicgan SirC_an Sokal Sotan Sugr Suthoi + Tapar Taz Tetr TO_rtogul Togli Togortok Toks Tolun Tugor Vlur Uzluk Uzur Zeyhan + } + female_names = { + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_ek Gulay Gunduz Gundes Gunes Guranduk + Ilkay Ipek Ipekel Irge Jiajak Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul + TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_khazar = { + + cadet_dynasty_names = { + { "dynn_Kabar" } + { "dynn_Khwaliz" } + { "dynn_Kozar" } + { "dynn_Baranjar" } + { "dynn_Bulanid" } + { "dynn_Karakhazar" } + { "dynn_Akkhazar" } + { "dynn_Alpid" } + { "dynn_Balgitzinid" } + { "dynn_Barjikid" } + { "dynn_Bluchanid" } + { "dynn_Hazerid" } + { "dynn_Tarkhanid" } + { "dynn_Rasid" } + { "dynn_Pesakhi" } + { "dynn_Yulduz" } + { "dynn_Kyzylkil" } + { "dynn_Toluyurek" } + { "dynn_Uzunkol" } + { "dynn_Kokyulduz" } + { "dynn_Atbulut" } + { "dynn_Toprakyt" } + { "dynn_Kuler" } + { "dynn_Otogul" } + { "dynn_Topukisi" } + { "dynn_Savuzun" } + { "dynn_Yanyol" } + { "dynn_Onkunes" } + { "dynn_Karayagac" } + } + + dynasty_names = { + { "dynn_Kabar" } + { "dynn_Khwaliz" } + { "dynn_Kozar" } + { "dynn_Baranjar" } + { "dynn_Bulanid" } + { "dynn_Karakhazar" } + { "dynn_Akkhazar" } + { "dynn_Alpid" } + { "dynn_Balgitzinid" } + { "dynn_Barjikid" } + { "dynn_Bluchanid" } + { "dynn_Hazerid" } + { "dynn_Tarkhanid" } + { "dynn_Rasid" } + { "dynn_Pesakhi" } + { "dynn_Yulduz" } + { "dynn_Kyzylkil" } + { "dynn_Toluyurek" } + { "dynn_Uzunkol" } + { "dynn_Kokyulduz" } + { "dynn_Atbulut" } + { "dynn_Toprakyt" } + { "dynn_Kuler" } + { "dynn_Otogul" } + { "dynn_Topukisi" } + { "dynn_Savuzun" } + { "dynn_Yanyol" } + { "dynn_Onkunes" } + { "dynn_Karayagac" } + } + + male_names = { + Alp Araslan Bagha Baghatur BA_lgiC_i Barjik Barsbek Bastu Bashtwa Bihor BO_ri Bugha Bulan BulC_an Busir Buzer C_at C_at_n C_orpan Ilik IltA_bA_r Itakh Kamaj Karadakh Kayghalagh Khatir Khuterkin + Kibar Kisa KundaC_iq KundaC_ MA_nA_r MA_nA_s ME_nU_marO_t O_temis PapaC_yz Samsam SartA_C_ Simsam TA_bA_r TabghaC_ Tarkhan TarmaC_ Tuzniq Vakrim Yabghu Yavantey YenC_epi Yerneslu YeC_tirek Yilig + Belet Ezra Hanukkah Hezekiah Isaac Manasseh Nisi Yavdi Zebulun + } + female_names = { + C_iC_A_k C_eC_eppi C_eC_ki C_eC_tilet C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_A_k Gulay Gunduz Gundes Gunes Ikalay Ilkay Ipek Ipekel Irge + Karacik KA_tyarikka KE_lnissa KE_lyamal Khatun LA_rkka Lyukha Mala Maturkka Mutlu NaC_a Parsbit Patiyer PaykE_lti Peksen Puyantay Samur Sarantay SarA_ Sarica Sarikel + Sati SavaC_ka SavkE_lti Savtilek Savilay Savintik Shurkka Sibel Sirin Sirma Songul TA_htani TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz Yartilek + } + + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_bolghar = { + + cadet_dynasty_names = { + { "dynn_Vokil" } + { "dynn_Altsikur" } + { "dynn_Kashu" } + { "dynn_Barskhan" } + { "dynn_Barsil" } + { "dynn_Balanjar" } + { "dynn_Vokil" } + { "dynn_Erdevulu" } + { "dynn_Silkid" } + { "dynn_Bilar" } + { "dynn_Sabir" } + { "dynn_Esegel" } + { "dynn_Izgil" } + { "dynn_Askil" } + { "dynn_Bersula" } + { "dynn_Urazgilid" } + { "dynn_Kalmagorid" } + { "dynn_Klyuch" } + { "dynn_Uren_" } + { "dynn_Mayna" } + { "dynn_Yasach" } + { "dynn_Utka" } + { "dynn_Bezd" } + { "dynn_Kurnal" } + { "dynn_Mesha" } + { "dynn_Kaban" } + { "dynn_Oshnya" } + { "dynn_Tolkish" } + { "dynn_Izgar" } + { "dynn_Sulcha" } + { "dynn_Karmal" } + } + + dynasty_names = { + { "dynn_Vokil" } + { "dynn_Altsikur" } + { "dynn_Kashu" } + { "dynn_Barskhan" } + { "dynn_Barsil" } + { "dynn_Balanjar" } + { "dynn_Vokil" } + { "dynn_Erdevulu" } + { "dynn_Silkid" } + { "dynn_Bilar" } + { "dynn_Sabir" } + { "dynn_Esegel" } + { "dynn_Izgil" } + { "dynn_Askil" } + { "dynn_Bersula" } + { "dynn_Urazgilid" } + { "dynn_Kalmagorid" } + { "dynn_Klyuch" } + { "dynn_Uren_" } + { "dynn_Mayna" } + { "dynn_Yasach" } + { "dynn_Utka" } + { "dynn_Bezd" } + { "dynn_Kurnal" } + { "dynn_Mesha" } + { "dynn_Kaban" } + { "dynn_Oshnya" } + { "dynn_Tolkish" } + { "dynn_Izgar" } + { "dynn_Sulcha" } + { "dynn_Karmal" } + } + + male_names = { + Almish Alzek Anzi Apskhih Araslan Asparukh Balamber Bars Bataul Batbayan Batoya Batulia Bayan Belkermak Bezmer Boyan Bulger Buzan Chepa Chinialush Dengizikh + Dizeng Dometa Dristar Drong Dukum Ellak Elemag Ernakh Eskhakh Goleda Gostun Guar Hudbad Iani Irnek Isbul Islivan Isperikh Ispor KA_laC_ Kano Karan Karaton + Kardam Kharaton Khinialon Khudbard Kordil Kormesiy Kormisosh Kotrag Krovat Krum Kuber Kubrat Kurt Kutrigur Kuvrat Labertam Magotin Malamir Mugel Odolgan Okhsi + Okhsun Okors Omurtag Onegavon Organ Organa Ornag Oshi Ostro Pagan Pakhtiyar PavA_l Praksa Rassate Rugila Sabin Sandil Sandilkh Sarkhan SartA_C_ Savin Sevar Shilki + Sondoke TA_htaman Tarasiy Taridin Tatra Telec Telerig Tervel TimE_r TimE_reC_ TimE_rpA_lat Tingiz Tiradin Tokhtaman Toktu Tsog Tsul Tuk Umor Uturgur Vakrim Venda Vetam Vinekh Yani + Yavantey YenC_epi Yerneslu YeC_tirek Zabergan Zenti Tukiy Aydar Irkhan Batir + + } + female_names = { + C_eC_ek C_eC_eppi C_eC_ki C_eC_tilet C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_eC_ek Gulay Gunduz Gundes Gunes Ikalay Ilkay Ipek Ipekel Irge + Karacik KA_tyarikka KE_lnissa KE_lyamal LA_rkka Lyukha Mala Maturkka Mutlu NaC_a Patiyer PaykE_lti Peksen Puyantay Samur Sarantay SarA_ Sarica Sarikel + Sati SavaC_ka SavkE_lti Savtilek Savilay Savintik Shurkka Sibel Sirin Sirma Songul TA_htani TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz Yartilek + } + + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_bashkir = { + + cadet_dynasty_names = { + { "dynn_Ural" } + { "dynn_Bashkiran" } + { "dynn_Okorsid" } + { "dynn_Karatonan" } + { "dynn_Chepa" } + { "dynn_Inzeri" } + { "dynn_Bielak" } + { "dynn_Yurzen" } + { "dynn_Au" } + { "dynn_Igeld" } + { "dynn_YU_" } + { "dynn_Simti" } + { "dynn_Lemeza" } + { "dynn_Yuryuz" } + { "dynn_Air" } + { "dynn_Byank" } + { "dynn_Yinz" } + { "dynn_Yumel" } + } + + dynasty_names = { + { "dynn_Ural" } + { "dynn_Bashkiran" } + { "dynn_Okorsid" } + { "dynn_Karatonan" } + { "dynn_Chepa" } + { "dynn_Inzeri" } + { "dynn_Bielak" } + { "dynn_Yurzen" } + { "dynn_Au" } + { "dynn_Igeld" } + { "dynn_YU_" } + { "dynn_Simti" } + { "dynn_Lemeza" } + { "dynn_Yuryuz" } + { "dynn_Air" } + { "dynn_Byank" } + { "dynn_Yinz" } + { "dynn_Yumel" } + } + + male_names = { + Almish Alzek Anzi Apskhih Araslan Asparukh Balamber Bars Bataul Batbayan Batoya Batulia Bayan Belkermak Bezmer Boyan Bulger Buzan Chepa Chinialush Dengizikh + Dizeng Dometa Dristar Drong Dukum Ellak Elemag Ernakh Eskhakh Goleda Gostun Guar Hudbad Iani Irnek Isbul Islivan Isperikh Ispor KA_laC_ Kano Karan Karaton + Kardam Kharaton Khinialon Khudbard Kordil Kormesiy Kormisosh Kotrag Krovat Krum Kuber Kubrat Kurt Kutrigur Kuvrat Labertam Magotin Malamir Mugel Odolgan Okhsi + Okhsun Okors Omurtag Onegavon Organ Organa Ornag Oshi Ostro Pagan Pakhtiyar PavA_l Praksa Rassate Rugila Sabin Sandil Sandilkh Sarkhan SartA_C_ Savin Sevar Shilki + Sondoke TA_htaman Tarasiy Taridin Tatra Telec Telerig Tervel TimE_r TimE_reC_ TimE_rpA_lat Tingiz Tiradin Tokhtaman Toktu Tsog Tsul Tuk Umor Uturgur Vakrim Venda Vetam Vinekh Yani + Yavantey YenC_epi Yerneslu YeC_tirek Zabergan Zenti Tukiy Aydar Irkhan Batir + + } + female_names = { + C_eC_ek C_eC_eppi C_eC_ki C_eC_tilet C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_eC_ek Gulay Gunduz Gundes Gunes Ikalay Ilkay Ipek Ipekel Irge + Karacik KA_tyarikka KE_lnissa KE_lyamal LA_rkka Lyukha Mala Maturkka Mutlu NaC_a Patiyer PaykE_lti Peksen Puyantay Samur Sarantay SarA_ Sarica Sarikel + Sati SavaC_ka SavkE_lti Savtilek Savilay Savintik Shurkka Sibel Sirin Sirma Songul TA_htani TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz Yartilek + } + + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_avar = { + + cadet_dynasty_names = { + "dynn_Sabir" + "dynn_Akhasir" + "dynn_Kazarig" + "dynn_Kidar" + "dynn_Ghidatli" + "dynn_Gumbekh" + "dynn_Kharoda" + "dynn_Ghunib" + "dynn_Yandalal" + "dynn_Tsumadal" + "dynn_Tsuntab" + } + + dynasty_names = { + "dynn_Sabir" + "dynn_Akhasir" + "dynn_Kazarig" + "dynn_Kidar" + "dynn_Ghidatli" + "dynn_Gumbekh" + "dynn_Kharoda" + "dynn_Ghunib" + "dynn_Yandalal" + "dynn_Tsumadal" + "dynn_Tsuntab" + } + + male_names = { + Almish Alp Alzek Anzi Apskhih Araslan Asparukh Bagha Baghatur BalambA_r Barjik Bars Barsbek Bashtwa Bastu Bataul Batbayan Batoya Batulia Bayan Belkermak Bezmer Bihor Boyan Bugha Bughra Bulan Bulger BulC_an Busir Buzan Buzer BA_lgiC_i BO_ri + Chepa Chinialush Dengizikh Dizeng Dometa Dristar Drong Dukum Elemag Ellak Ernakh Eskhakh Goleda Gostun Guar Hudbad Iani Ilik IltA_bA_r Irnek Isbul Islivan Isperikh Ispor Itakh Kamaj Kano Karadakh Karan Karaton Kardam Kayghalagh Kharaton Khatir Khinialon + Khudbard Khuterkin Kibar Kisa Kordil Kormesiy Kormisosh Kotrag Krovat Krum Kuber Kubrat KundaC_ KundaC_iq Kurt Kutrigur KA_laC_ Labertam Magotin Malamir Mugel MA_nA_r MA_nA_s ME_nU_marO_t Odolgan Okhsi Okhsun Okors Omurtag Onegavon Organ Organa Ornag + Oshi Ostro Pagan Pakhtiyar PapaC_yz PavA_l Praksa Rassate Rugila Sabin Samsam Sandil Sandilkh Sarkhan SartA_C_ Savin Sevar Shilki Simsam Sondoke TabghaC_ Tarasiy Taridin Tarkhan TarmaC_ Tatra Telec Telerig Tervel TimE_r TimE_reC_ TimE_rpA_lat + Tingiz Tiradin Toghan ToghrI_l Tokhtaman Toktu Tsog Tsul Tuk Tuzniq TA_bA_r TA_htaman Umor Uturgur Vakrim Venda Vetam Vinekh Yabghu Yani Yavantey YenC_epi Yerneslu YeC_tirek Yilig Zabergan Zenti C_at C_at_n C_orpan O_temis + + } + female_names = { + Akgul Asli Ayasun Ayten BozC_in Dilek Esin Gulay GulC_iC_A_k Gundes Gunduz Gunes Ikalay Ilkay Ipek Ipekel Irge Karacik Khatun KA_tyarikka KE_lnissa KE_lyamal Lyukha LA_rkka Mala Maturkka Mutlu NaC_a Parsbit Patiyer PaykE_lti Peksen + Puyantay Samur Sarantay Sarica Sarikel SarA_ Sati SavaC_ka Savilay Savintik SavkE_lti Savtilek Shurkka Sibel Sirin Sirma Songul TekC_e Tura TA_htani Umay Usunbike Yartilek Yasar Yeldem Yildiz C_eC_eppi C_eC_ki + C_eC_tilet C_ilen C_iltanesi C_iC_A_k O_zgul O_zlem + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_karluk = { + + cadet_dynasty_names = { + { "dynn_Zhetysu" } + { "dynn_Hasanid" } + { "dynn_Geluolu" } + { "dynn_Khololo" } + { "dynn_Harluut" } + { "dynn_Uch_Oghuz" } + { "dynn_Tuhsi" } + { "dynn_Khalajes" } + { "dynn_TU_rgesh" } + { "dynn_Charuk" } + { "dynn_Barsqan" } + { "dynn_Qilibi" } + { "dynn_Moula" } + { "dynn_Bulaq" } + { "dynn_Chisi" } + { "dynn_Sebeg" } + { "dynn_Chisi" } + { "dynn_Tashlyk" } + { "dynn_Azes" } + { "dynn_Yagma" } + } + + dynasty_names = { + { "dynn_Zhetysu" } + { "dynn_Hasanid" } + { "dynn_Geluolu" } + { "dynn_Khololo" } + { "dynn_Harluut" } + { "dynn_Uch_Oghuz" } + { "dynn_Tuhsi" } + { "dynn_Khalajes" } + { "dynn_TU_rgesh" } + { "dynn_Charuk" } + { "dynn_Barsqan" } + { "dynn_Qilibi" } + { "dynn_Moula" } + { "dynn_Bulaq" } + { "dynn_Chisi" } + { "dynn_Sebeg" } + { "dynn_Chisi" } + { "dynn_Tashlyk" } + { "dynn_Azes" } + { "dynn_Yagma" } + } + + male_names = { + C_ilbu Aepak Asalup Asep Atrak BO_nek Bachman Begluk Blush Bonyak BorC_ EldeC_yuk Etrek Girgen Gzi Itlar Ituk KO_nC_ek Kobyak Kopti Kotyan Koza + Kozel Kubasar Kuntuvdi Kutan Muhmud Pulad Saru SevenC_ SirC_an Sokal Sotan Sugr TO_rtogul Togli Tolun Tugor Uzluk Uzur + } + female_names = { + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_ek Gulay Gunduz Gundes Gunes Ilkay Ipek Ipekel Irge + Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_kimek = { + + cadet_dynasty_names = { + { "dynn_Aslid" } + { "dynn_Manjan" } + { "dynn_U_yli_Boli" } + { "dynn_Khakanid" } + { "dynn_Tobol" } + { "dynn_Olberlik" } + { "dynn_Ayyub" } + { "dynn_El_Borili" } + { "dynn_Uran" } + { "dynn_Bayat" } + { "dynn_Azkish" } + { "dynn_Turgish" } + { "dynn_Gyurgesh" } + { "dynn_Chigil" } + { "dynn_Kaisalo" } + { "dynn_Turgai" } + { "dynn_Mugod" } + { "dynn_Sygnak" } + { "dynn_Altun_Oba" } + { "dynn_Arslan_Opa" } + { "dynn_Ay_Opa" } + { "dynn_Badach" } + { "dynn_Barat" } + { "dynn_Baraq" } + { "dynn_Bayawut" } + { "dynn_Burchogli" } + { "dynn_Buranli" } + { "dynn_Chagraq" } + { "dynn_Chenegrepa" } + { "dynn_Chitey" } + { "dynn_Chirtan" } + { "dynn_DO_rU_t" } + { "dynn_Ilanchugli" } + { "dynn_KU_cheba" } + { "dynn_KU_chet" } + { "dynn_Qol_Oba" } + { "dynn_Qumanlu" } + { "dynn_Qongurogli" } + { "dynn_MekrU_ti" } + { "dynn_BekrU_ti" } + { "dynn_MingU_zogli" } + { "dynn_Orunqut" } + { "dynn_O_lberlig" } + { "dynn_Yulibeili" } + { "dynn_Targil" } + { "dynn_Tag_Yshqut" } + { "dynn_Tag_Bashqurt" } + { "dynn_Ulashogli" } + { "dynn_Urus_Oba" } + { "dynn_Yemek" } + { "dynn_Yete_Oba" } + { "dynn_Anjogli" } + { "dynn_Elborili" } + { "dynn_Borcsol" } + { "dynn_Csertan" } + { "dynn_Olas" } + { "dynn_Kor" } + { "dynn_Iloncsuk" } + { "dynn_Koncsog" } + { "dynn_Imur" } + { "dynn_Bayundur" } + { "dynn_Nilkar" } + { "dynn_Ajlad" } + } + + dynasty_names = { + { "dynn_Aslid" } + { "dynn_Manjan" } + { "dynn_U_yli_Boli" } + { "dynn_Khakanid" } + { "dynn_Tobol" } + { "dynn_Olberlik" } + { "dynn_Ayyub" } + { "dynn_El_Borili" } + { "dynn_Uran" } + { "dynn_Bayat" } + { "dynn_Azkish" } + { "dynn_Turgish" } + { "dynn_Gyurgesh" } + { "dynn_Chigil" } + { "dynn_Kaisalo" } + { "dynn_Turgai" } + { "dynn_Mugod" } + { "dynn_Sygnak" } + { "dynn_Altun_Oba" } + { "dynn_Arslan_Opa" } + { "dynn_Ay_Opa" } + { "dynn_Badach" } + { "dynn_Barat" } + { "dynn_Baraq" } + { "dynn_Bayawut" } + { "dynn_Burchogli" } + { "dynn_Buranli" } + { "dynn_Chagraq" } + { "dynn_Chenegrepa" } + { "dynn_Chitey" } + { "dynn_Chirtan" } + { "dynn_DO_rU_t" } + { "dynn_Ilanchugli" } + { "dynn_KU_cheba" } + { "dynn_KU_chet" } + { "dynn_Qol_Oba" } + { "dynn_Qumanlu" } + { "dynn_Qongurogli" } + { "dynn_MekrU_ti" } + { "dynn_BekrU_ti" } + { "dynn_MingU_zogli" } + { "dynn_Orunqut" } + { "dynn_O_lberlig" } + { "dynn_Yulibeili" } + { "dynn_Targil" } + { "dynn_Tag_Yshqut" } + { "dynn_Tag_Bashqurt" } + { "dynn_Ulashogli" } + { "dynn_Urus_Oba" } + { "dynn_Yemek" } + { "dynn_Yete_Oba" } + { "dynn_Anjogli" } + { "dynn_Elborili" } + { "dynn_Borcsol" } + { "dynn_Csertan" } + { "dynn_Olas" } + { "dynn_Kor" } + { "dynn_Iloncsuk" } + { "dynn_Koncsog" } + { "dynn_Imur" } + { "dynn_Bayundur" } + { "dynn_Nilkar" } + { "dynn_Ajlad" } + } + + + + male_names = { + C_ilbu Aepak Aibak Alpra Altunopa Arbuz Asalup Asep Atrak Ayepa BO_nek Bachman Baytursun Begluk Beka Blush Bonyak BorC_ + Chemgura Chilbuk EldeC_yuk Ele Eltut Etrek Girgen Gzak Gzi Itlar Ituk + Kemenche Kitzes KO_nC_ek Kobyak Kolo Kopti Kopulch Kotyan Koza Kozel Kubasar Kuntuvdi Kutan Kutesk Kutlu Kza + Lavor Manj Menk Otrok Ovlur Pulad Saru Sharaga Sharukan SevenC_ Seyhan Sicgan SirC_an Sokal Sotan Sugr Suthoi + Tapar Taz Tetr TO_rtogul Togli Togortok Toks Tolun Tugor Vlur Uzluk Uzur Zeyhan + } + female_names = { + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_ek Gulay Gunduz Gundes Gunes Guranduk + Ilkay Ipek Ipekel Irge Jiajak Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul + TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_kipchak = { + + cadet_dynasty_names = { + { "dynn_Kentek" } + { "dynn_Olberlik" } + { "dynn_Ayyub" } + { "dynn_El_Borili" } + { "dynn_Uran" } + { "dynn_Bayat" } + { "dynn_Azkish" } + { "dynn_Turgish" } + { "dynn_Gyurgesh" } + { "dynn_Chigil" } + { "dynn_Kaisalo" } + { "dynn_Turgai" } + { "dynn_Mugod" } + { "dynn_Sygnak" } + { "dynn_Altun_Oba" } + { "dynn_Arslan_Opa" } + { "dynn_Ay_Opa" } + { "dynn_Badach" } + { "dynn_Barat" } + { "dynn_Baraq" } + { "dynn_Bayawut" } + { "dynn_Burchogli" } + { "dynn_Buranli" } + { "dynn_Chagraq" } + { "dynn_Chenegrepa" } + { "dynn_Chitey" } + { "dynn_Chirtan" } + { "dynn_DO_rU_t" } + { "dynn_Ilanchugli" } + { "dynn_KU_cheba" } + { "dynn_KU_chet" } + { "dynn_Qol_Oba" } + { "dynn_Qumanlu" } + { "dynn_Qongurogli" } + { "dynn_MekrU_ti" } + { "dynn_BekrU_ti" } + { "dynn_MingU_zogli" } + { "dynn_Orunqut" } + { "dynn_O_lberlig" } + { "dynn_Yulibeili" } + { "dynn_Targil" } + { "dynn_Tag_Yshqut" } + { "dynn_Tag_Bashqurt" } + { "dynn_Ulashogli" } + { "dynn_Urus_Oba" } + { "dynn_Yemek" } + { "dynn_Yete_Oba" } + { "dynn_Anjogli" } + { "dynn_Elborili" } + { "dynn_Borcsol" } + { "dynn_Csertan" } + { "dynn_Olas" } + { "dynn_Kor" } + { "dynn_Iloncsuk" } + { "dynn_Koncsog" } + { "dynn_Imur" } + { "dynn_Bayundur" } + { "dynn_Nilkar" } + { "dynn_Ajlad" } + } + + dynasty_names = { + { "dynn_Kentek" } + { "dynn_Olberlik" } + { "dynn_Ayyub" } + { "dynn_El_Borili" } + { "dynn_Uran" } + { "dynn_Bayat" } + { "dynn_Azkish" } + { "dynn_Turgish" } + { "dynn_Gyurgesh" } + { "dynn_Chigil" } + { "dynn_Kaisalo" } + { "dynn_Turgai" } + { "dynn_Mugod" } + { "dynn_Sygnak" } + { "dynn_Altun_Oba" } + { "dynn_Arslan_Opa" } + { "dynn_Ay_Opa" } + { "dynn_Badach" } + { "dynn_Barat" } + { "dynn_Baraq" } + { "dynn_Bayawut" } + { "dynn_Burchogli" } + { "dynn_Buranli" } + { "dynn_Chagraq" } + { "dynn_Chenegrepa" } + { "dynn_Chitey" } + { "dynn_Chirtan" } + { "dynn_DO_rU_t" } + { "dynn_Ilanchugli" } + { "dynn_KU_cheba" } + { "dynn_KU_chet" } + { "dynn_Qol_Oba" } + { "dynn_Qumanlu" } + { "dynn_Qongurogli" } + { "dynn_MekrU_ti" } + { "dynn_BekrU_ti" } + { "dynn_MingU_zogli" } + { "dynn_Orunqut" } + { "dynn_O_lberlig" } + { "dynn_Yulibeili" } + { "dynn_Targil" } + { "dynn_Tag_Yshqut" } + { "dynn_Tag_Bashqurt" } + { "dynn_Ulashogli" } + { "dynn_Urus_Oba" } + { "dynn_Yemek" } + { "dynn_Yete_Oba" } + { "dynn_Anjogli" } + { "dynn_Elborili" } + { "dynn_Borcsol" } + { "dynn_Csertan" } + { "dynn_Olas" } + { "dynn_Kor" } + { "dynn_Iloncsuk" } + { "dynn_Koncsog" } + { "dynn_Imur" } + { "dynn_Bayundur" } + { "dynn_Nilkar" } + { "dynn_Ajlad" } + } + + male_names = { + C_ilbu Aepak Aibak Alpra Altunopa Arbuz Asalup Asep Atrak Ayepa BO_nek Bachman Baytursun Begluk Beka Blush Bonyak BorC_ + Chemgura Chilbuk EldeC_yuk Ele Eltut Etrek Girgen Gzak Gzi Itlar Ituk + Kemenche Kitzes KO_nC_ek Kobyak Kolo Kopti Kopulch Kotyan Koza Kozel Kubasar Kuntuvdi Kutan Kutesk Kutlu Kza + Lavor Manj Menk Otrok Ovlur Pulad Saru Sharaga Sharukan SevenC_ Seyhan Sicgan SirC_an Sokal Sotan Sugr Suthoi + Tapar Taz Tetr TO_rtogul Togli Togortok Toks Tolun Tugor Vlur Uzluk Uzur Zeyhan + } + female_names = { + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_ek Gulay Gunduz Gundes Gunes Guranduk + Ilkay Ipek Ipekel Irge Jiajak Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul + TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_laktan = { + + cadet_dynasty_names = { + { "dynn_Ituk" } + { "dynn_Kubasar" } + { "dynn_Mutlu" } + { "dynn_Usunbikehid" } + { "dynn_Irgeid" } + { "dynn_Chany" } + { "dynn_Kozhur" } + { "dynn_Sartlan" } + { "dynn_Uryum" } + { "dynn_Kukley" } + { "dynn_Inder" } + { "dynn_Abushkan" } + { "dynn_Soleno" } + { "dynn_Metlik" } + { "dynn_Karasor" } + { "dynn_Jyngyld" } + { "dynn_Tuzdysor" } + { "dynn_Oynak" } + } + + dynasty_names = { + { "dynn_Ituk" } + { "dynn_Kubasar" } + { "dynn_Mutlu" } + { "dynn_Usunbikehid" } + { "dynn_Irgeid" } + { "dynn_Chany" } + { "dynn_Kozhur" } + { "dynn_Sartlan" } + { "dynn_Uryum" } + { "dynn_Kukley" } + { "dynn_Inder" } + { "dynn_Abushkan" } + { "dynn_Soleno" } + { "dynn_Metlik" } + { "dynn_Karasor" } + { "dynn_Jyngyld" } + { "dynn_Tuzdysor" } + { "dynn_Oynak" } + } + + male_names = { + C_ilbu Aepak Asalup Asep Atrak BO_nek Bachman Begluk Blush Bonyak BorC_ EldeC_yuk Etrek Girgen Gzi Itlar Ituk KO_nC_ek Kobyak Kopti Kotyan Koza + Kozel Kubasar Kuntuvdi Kutan Pulad Saru SevenC_ SirC_an Sokal Sotan Sugr TO_rtogul Togli Tolun Tugor Uzluk Uzur + } + female_names = { + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_ek Gulay Gunduz Gundes Gunes Ilkay Ipek Ipekel Irge + Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_kirghiz = { + + cadet_dynasty_names = { + { "dynn_SO_nmez" } + { "dynn_GU_naydin" } + { "dynn_KiliC_li" } + { "dynn_Tiele" } + { "dynn_Jiegu" } + { "dynn_Gekun" } + { "dynn_Kokun" } + { "dynn_Tutuq" } + { "dynn_Qasha" } + { "dynn_Achayi" } + { "dynn_Akish" } + { "dynn_O_o_k" } + { "dynn_Guneshkardeshim" } + { "dynn_Altinlioklugu" } + { "dynn_Tirig" } + { "dynn_U_chin" } + { "dynn_Ku_lu_g" } + { "dynn_Egu_k" } + { "dynn_Hakan" } + { "dynn_Tu_lberi" } + { "dynn_Kiygan" } + { "dynn_Urungu" } + { "dynn_Elegesh" } + { "dynn_Tarlak" } + { "dynn_Arjan" } + } + + dynasty_names = { + { "dynn_SO_nmez" } + { "dynn_GU_naydin" } + { "dynn_KiliC_li" } + { "dynn_Tiele" } + { "dynn_Jiegu" } + { "dynn_Gekun" } + { "dynn_Kokun" } + { "dynn_Tutuq" } + { "dynn_Qasha" } + { "dynn_Achayi" } + { "dynn_Akish" } + { "dynn_O_o_k" } + { "dynn_Guneshkardeshim" } + { "dynn_Altinlioklugu" } + { "dynn_Tirig" } + { "dynn_U_chin" } + { "dynn_Ku_lu_g" } + { "dynn_Egu_k" } + { "dynn_Hakan" } + { "dynn_Tu_lberi" } + { "dynn_Kiygan" } + { "dynn_Urungu" } + { "dynn_Elegesh" } + { "dynn_Tarlak" } + { "dynn_Arjan" } + } + + male_names = { + C_ilbu Adilet Aibek Aepak Asalup Asep Atrak BO_nek Bachman Barsbeg Begluk Blush Bonyak BorC_ EldeC_yuk Etrek Girgen Gzi Itlar Ituk Jaglaqar Jyrgal + KO_nC_ek Kobyak Kokotoy Kopti Kotyan Koza Kozel Kubasar Kuntuvdi Kutan Manas Pulad + Saru Seitek Semetei SevenC_ SirC_an Sokal Sotan Sugr Sukhrab TO_rtogul Taalay Tardush Togli Tolun Tugor Uzluk Uzur Zhyrgal + } + female_names = { + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Aigul Akgul Anara Asli Ayasun Ayten BozC_in Begayim Bermet Cholpon Dilek Esin + GulC_iC_ek Gulay Gulnara Gunduz Gundes Gunes Ilkay Ipek Ipekel Irge Jibek + Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes + + patronym_suffix_male = "dynnpat_suf_uulu" + patronym_suffix_female = "dynnpat_suf_kyzy" +} + +name_list_uyghur = { + + dynasty_name_first = yes + + cadet_dynasty_names = { + "dynn_MU_jde" + "dynn_Tapmish" + "dynn_Beshbalik" + "dynn_Qibi" + "dynn_Yaghlakar" + "dynn_Ediz" + "dynn_Uzur" + "dynn_Alptekin" + "dynn_Akhun" + "dynn_Ugurlu" + "dynn_U_zU_mcU_" + "dynn_Kulug" + "dynn_Hosa" + "dynn_Yughur" + "dynn_Idiqut" + } + + dynasty_names = { + "dynn_MU_jde" + "dynn_Tapmish" + "dynn_Beshbalik" + "dynn_Qibi" + "dynn_Yaghlakar" + "dynn_Ediz" + "dynn_Uzur" + "dynn_Alptekin" + "dynn_Akhun" + "dynn_Ugurlu" + "dynn_U_zU_mcU_" + "dynn_Kulug" + "dynn_Hosa" + "dynn_Yughur" + "dynn_Idiqut" + } + + male_names = { + Bilge C_or U_ge Barchuq TO_mU_r Bars Adigh Buqa MA_nglik O_zmish + C_ilbu Aepak Alp_Arslan Arslan Asalup Asep Atrak BO_nek Bachman Begluk Blush Bokut Bonyak BorC_ BU_gU_ EldeC_yuk Etrek + Girgen Gzi Ilig Itlar Ituk KO_nC_ek Kobyak Kopti Kotyan Koza Kozel Kubasar Kuntuvdi Kutan KU_l + Pangtele Pulad Qutlugh Saru SevenC_ SirC_an Sokal Sotan Sugr TO_rtogul Togli Tolun Tugor Uzluk Uzur Yur_Temur + } + female_names = { + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_ek Gulay Gunduz Gundes Gunes Ilkay Ipek Ipekel Irge + Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + #founder_named_dynasties = yes + + +} + +name_list_yughur = { + + dynasty_name_first = yes + + cadet_dynasty_names = { + "dynn_Yaghlakar" + "dynn_Yigur" + "dynn_S_era_Yogor" + "dynn_WE_iwU_r" + "dynn_MU_jde" + "dynn_Tapmish" + "dynn_Beshbalik" + "dynn_Qibi" + "dynn_Yaghlakar" + "dynn_Ediz" + "dynn_Uzur" + "dynn_Alptekin" + "dynn_Akhun" + "dynn_Ugurlu" + "dynn_U_zU_mcU_" + "dynn_Kulug" + "dynn_Hosa" + "dynn_Yughur" + "dynn_Idiqut" + } + + dynasty_names = { + "dynn_Yaghlakar" + "dynn_Yigur" + "dynn_S_era_Yogor" + "dynn_WE_iwU_r" + "dynn_MU_jde" + "dynn_Tapmish" + "dynn_Beshbalik" + "dynn_Qibi" + "dynn_Yaghlakar" + "dynn_Ediz" + "dynn_Uzur" + "dynn_Alptekin" + "dynn_Akhun" + "dynn_Ugurlu" + "dynn_U_zU_mcU_" + "dynn_Kulug" + "dynn_Hosa" + "dynn_Yughur" + "dynn_Idiqut" + } + + male_names = { + Ablajan Adigh Aduoyu Afaq Akhmad Arslan Art Bagha Bahaguli Baode Baoguo Baoshun Barchuq Bars Baurchuk Bayanchur Bazh Bilge Bogu BO_gU_ BO_ra + Boyla Buqa Buzurb Chawar Dost Diyin Elihan Elterish Eretna Erkin Gheni Guizhong Hala Hesmat Hoshur Hauijian Huaining Huseyincan Hushu Ilteber Ishana + Jakhangir Jingqiong Juluobo Kahar Kebek Kerman Koresh KU_l_Erkin Kulug Kurebir Kutlug Lusheng Lutpulla Makhmud Maqsud Mili_e Murat Nag Nurmuhemmet O_ge + Omerjan Orkesh OrmI_zt Palta PankU_l Peilo Pojuan Pusa Qaplan Qara Qasar Rabban Renmei Sabit Satuq Setiwaldi Sheto Shingqur Shokrat Shunhua SU_pU_rga Tardu + Tatatunga Tay Tegin Tekin Tiliwaldi Timur Toghril Tohti TO_mU_r Tuchiachi Tumitu Tun Tunga Turdi Turghan Turghun Tusun Tutuk Wuhe + Yabgu Yeluohe Yulbars Zhongshun Ziya Zordun + } + female_names = { + Akgul Altun Asli Aslihan Ayasun Aykhan Ayla Ayten Bahar BozC_in Canan Ceylan Chechak C_iC_ek C_ilen C_iltanesi Dunya Dilber + Dilnaz Durnyam Dilek Ghuncha GU_l GulC_iC_ek Gulay Gulbahar Gulfem Gumus Gunduz Gundes Gunes HawagU_l Hidligh + IbadatgU_l Ilbilge Ilkay Ilknur Iparhan Ipek Ipekel Irge Karacik Khanum Kunduz Lale Mutlu Nagihan Neslihan Ninguo O_zgul O_zlem + PatigU_l Po Yultuz Zuwida + + } + + dynasty_of_location_prefix = "dynnp_of" + #founder_named_dynasties = yes + + +} + +name_list_uriankhai = { + + cadet_dynasty_names = { + "dynn_Tuva" + "dynn_Karagas" + "dynn_Khakas" + "dynn_Shor" + "dynn_Yarin" #semi-fictional + "dynn_Soyon" #semi-fictional + "dynn_Tofa" #semi-fictional + "dynn_Ovyur" #semi-fictional + "dynn_Bii_Khem" #semi-fictional + "dynn_Todzhi" #semi-fictional + "dynn_Tsengel" #semi-fictional + "dynn_Dukha" #semi-fictional + "dynn_Duhalar" #semi-fictional + "dynn_Dubo" #semi-fictional + "dynn_Tupo" #semi-fictional + "dynn_Kemchik" + "dynn_Salchak" + "dynn_Tozhu" + "dynn_Monchoogo" #semi-fictional + "dynn_Urud" + "dynn_Ak_Irgit" + "dynn_Kizil_Soyon" + "dynn_Tannu" #fictional + "dynn_Togin" #fictional + "dynn_Kacha" + "dynn_Sagay" + "dynn_Beltir" + "dynn_Koybal" + "dynn_Kyzyl" + } + + dynasty_names = { + "dynn_Tuva" + "dynn_Karagas" + "dynn_Khakas" + "dynn_Shor" + "dynn_Yarin" #semi-fictional + "dynn_Soyon" #semi-fictional + "dynn_Tofa" #semi-fictional + "dynn_Ovyur" #semi-fictional + "dynn_Bii_Khem" #semi-fictional + "dynn_Todzhi" #semi-fictional + "dynn_Tsengel" #semi-fictional + "dynn_Dukha" #semi-fictional + "dynn_Duhalar" #semi-fictional + "dynn_Dubo" #semi-fictional + "dynn_Tupo" #semi-fictional + "dynn_Kemchik" + "dynn_Salchak" + "dynn_Tozhu" + "dynn_Monchoogo" #semi-fictional + "dynn_Urud" + "dynn_Ak_Irgit" + "dynn_Kizil_Soyon" + "dynn_Tannu" #fictional + "dynn_Togin" #fictional + "dynn_Kacha" + "dynn_Sagay" + "dynn_Beltir" + "dynn_Koybal" + "dynn_Kyzyl" + } + + male_names = { + Adiyiji Aldar Aldin_cha Anay_ool Artish Aydas Aydin Ayan Ay_dash Ayan_ool Ay_demir Bady_Drozhu Belek Bishtak Borbak_gU_ren Buyan Chayan Chechen Choyan_ool + Dalay_ool Dash_demir Dash_mir Donduk GU_ndU_s Kaadyr_ool Kaigal_ool Kann_ool Kejik Kizil_ool Kongar_ool KO_vey_maadir Kuchkach_ool KhU_zhU_get + Mannay_ool Mengi Mongun Mongush Omak Orlan O_rgeleer Salchak Sary_ool Sayan Soyan Sholban Sildis Tadar Tay_mir Tsaatan Turgun Tyulgyu Tyulyush + Uin_ool Uyanmas Xirlig_ool Xures_ool XU_ndU_s XU_ren + + } + female_names = { + Ak_kis Anay Aidysmaa Arjaana Aydin Belek_kis Borbak_kis Buyana Chakhayakh Chadzakh Chibek Choduraa Chokhyray Chudur Chyustyuk Dan_jayaa + Goptak Kara_kat Kara_kis Khertek Khozan KO_k_kis O_chkU__saar Sainkho Samdar Sayana Saylykmaa Taraa Urana Xoptak Yzyrga + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes + + patronym_suffix_male = "dynnpat_suf_uulu" + patronym_suffix_female = "dynnpat_suf_kyzy" +} + +name_list_chuvash = { + + cadet_dynasty_names = { + dynn_Abash + dynn_Agish + dynn_Baran + dynn_Karach + dynn_Karam + dynn_Kashkar + dynn_Kolu + dynn_Kurak + dynn_Mishaik + dynn_MiS_S_i + dynn_Mosol + dynn_Temir + dynn_Tenish + dynn_Vanyut + dynn_Yaku + } + + dynasty_names = { + dynn_Abash + dynn_Agish + dynn_Baran + dynn_Karach + dynn_Karam + dynn_Kashkar + dynn_Kolu + dynn_Kurak + dynn_Mishaik + dynn_MiS_S_i + dynn_Mosol + dynn_Temir + dynn_Tenish + dynn_Vanyut + dynn_Yaku + } + + male_names = { + Akhtiyar AkparA_s Almanch Atner Aytar AhtimE_r Ahtirek Alekhan + Balaq Barmaq + Iksak Illiger IlmuS_ Iprakhim Iskej Itris + Jurat + Kalep Kashkar Kerim Khalim Khassan KA_rtA_sh Kutilzis Karsak + MA_ssa Miliuk + Sakit Salikh SekhvE_ttin S_eS_pE_l Sherip ShA_nkA_rch Situlla + Upa UyA_p Ulput + VaC_tirek VaC_ush VaC_C_urkka Vakrim ValE_m ValiS_ Vaniher Vayulla Velit Vesulla VolkkA_m + Yakhkha Yakhvar Yakkup Yamal Yukhma Yuman Yisap Vatt_Uk + } + female_names = { + Arikhva Arikhve Ashapatman Atnapi Aybala AyA_mpi + Boareks + Chakak Chepchen ChE_keS_ + Elime Emine Erhime + Ilempi + Kakhvise Kalime Kamite KayA_kki Khamite Khapipe Khattime + Leyle + Maikka Markhva MemU_re MA_tine + Narspi + Pujan + Savatepi Sheleme Sherikhva SE_likhkha + Tarie Takhtaman Tunepi + Vaniher Varpikke Varpines Vartilet Vartuk Vastru Vasl_Uk Velime Velmuk Verik Veruhha + Zakhite + S_avraS_ + } + + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_shatuo = { + + dynasty_name_first = yes + + cadet_dynasty_names = { + "dynn_Li" + "dynn_Zhuye" + "dynn_Zhu" + "dynn_Shajin" + "dynn_Shi" + "dynn_Liu" + "dynn_Wang" + "dynn_Xie" + "dynn_Xue" + "dynn_Yantuo" + "dynn_Yilidie" + "dynn_Yiliduo" + "dynn_Yilitu" + "dynn_Yishi" + "dynn_Zhang" + "dynn_Wanggu" + "dynn_Shatuo" + "dynn_Xueyantuo" + } + + dynasty_names = { + "dynn_Li" + "dynn_Zhuye" + "dynn_Zhu" + "dynn_Shajin" + "dynn_Shi" + "dynn_Liu" + "dynn_Wang" + "dynn_Xie" + "dynn_Xue" + "dynn_Yantuo" + "dynn_Yilidie" + "dynn_Yiliduo" + "dynn_Yilitu" + "dynn_Yishi" + "dynn_Zhang" + "dynn_Wanggu" + "dynn_Shatuo" + "dynn_Xueyantuo" + } + + male_names = { + #Sinicized + Abo Asan Bazhuo Chengjun ChengxU_n ChengxU__n Chengyou Chengyun Chixin Chong Chonggao Chongguang Chonggui Chongji Chongjin Chongmei Chongrui Chongxin + Chongyi Chongying Chongzhe Congcan Conghou Congjing Congke Congmin Congrong Congshen Congwen Congyi Congzhang Cun Cunba Cunhao Cunji Cunjin Cunjing + Cunju Cunli Cunmei Cunque Cunru Cunshen Cunshi Cunwo Cunxian Cunxiao Cunxin Cunxu Cunyi Cunzhang Cunzhen Cunzhi Dan Dexing Dian Duomi Duomo Duomozhi + Ershisan Fei Gao Guduozhi Guochang Hao Hege Jichan Ji_en Jiji Jing Jingru Jingsi Jingtang Jinzhong Jisong Jitong Jiwen Jiyao Jiyuan Jun Kai Kegong + Kening Keyang Keyong Luoluo Miaojilie Min Mingzong Mo Ni Nieliji Po_er Pusanu Qi Shaoyong Shichunchi Siben Si_en Siyuan Tinluan Wenjing Wu Yanbao + Yanchao Yancheng Yanxu Yiedie Yi_nan Yinheng Yishibo Yitewushi Yun XI_ XI_v Xianzu Xiaoyuan Xun Zhaolie Zhenzhu Zhenzhupiqie Zhiyi Zhiyuan + #Turkic + C_ilbu Aepak Aibak Alpra Altunopa Arbuz Asalup Asep Atrak Ayepa BO_nek Bachman Baytursun Begluk Beka Bilge Blush Bonyak BorC_ + Chemgura Chilbuk C_ur EldeC_yuk Ele Eltut Etrek Girgen Gzak Gzi I_S_bara Itlar Ituk + Kemenche Kitzes KO_nC_ek Kobyak Kolo Kopti Kopulch Kotyan Koza Kozel Kubasar KU_li KU_li_C_ur Kuntuvdi Kutan Kutesk Kutlu Kza + Lavor Manj Menk Otrok Ovlur Pulad Saru Sharaga Sharukan SevenC_ Seyhan Sicgan SirC_an Sokal Sotan Sugr Suthoi + Tapar Taz Tetr TO_rtogul Togli Togortok Toks Tolun Tugor Vlur Uzluk Uzur Zeyhan + } + female_names = { + #Sinicized + Ai Fuqing Guangguo Huiming Jianfa Lu Pei Qin Qionghua Shou_an Wenjing Xingping Xiaoyuan Xuanxian Yiling Yining Yong_an Yongle Yongning Youcheng + Yuanhui Zhangyi Zhaolie Zhaosheng Zhenjian Zhiyuan + #Turkic + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_ek Gulay Gunduz Gundes Gunes Guranduk + Ilkay Ipek Ipekel Irge Jiajak Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul + TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes +} + +name_list_ongud = { + + cadet_dynasty_names = { + "dynn_O_ngU_d" + "dynn_Wanggu" + "dynn_Shatuo" + "dynn_Ordos" #fictional + "dynn_Olon_SU_me" #fictional + "dynn_Koshangid" #fictional + } + + dynasty_names = { + "dynn_O_ngU_d" + "dynn_Wanggu" + "dynn_Shatuo" + "dynn_Ordos" #fictional + "dynn_Olon_SU_me" #fictional + "dynn_Koshangid" #fictional + } + + male_names = { + #Mongolicized + Altan Arin_Taiz Bukha_Timur Buyimur Buyuruk Ciriac Daaritai Erke_kara Elkutur Gur Ilqa_Sangun Inanch Jagambu Jakha Jakha_Gambhu Jamuqa + Javanqad Kereyidei Ketbugha Kitbuqa Koksegu Korchi Kuchluk Kuchuguden Kulbur Kurchakus Marguz Oghuul Qatarqa Qorisubachi Qorisu_Dayir Quchar + Qurdjaquz Saryk Taibuka Tai_Timur Tayan Togrul Toqto_a Tooril Yula_Mangus + #Turkic + Boyaohe Jingue Negudei + C_auma C_ilbu Aepak Aibak Ala Alaqush Alpra Altunopa Arbuz Asalup Asep Atrak Ayepa BO_nek Bachman Baytursun Begluk Beka Bilge Blush Bonyak BorC_ + Chemgura Chilbuk C_ur EldeC_yuk Ele Eltut Etrek Girgen Gzak Gzi I_S_bara Itlar Ituk + Kemenche Kitzes KO_nC_ek Kobyak Kolo Kopti Kopulch Korgiz Korguz Kotyan Koza Kozel Kubasar KU_li KU_li_C_ur Kuntuvdi Kush Kutan Kutesk Kutlu Kza + Lavor Manj Menk Otrok Ovlur Pulad Saru Sharaga Sharukan SevenC_ Seyhan Sicgan SirC_an Sokal Sotan Sugr Suthoi + Tapar Taz Tegin Tetr TO_rtogul Togli Togortok Toks Tolun Tugor Vlur Uzluk Uzur Zeyhan + } + female_names = { + #Mongolicized + Alakhai Bekhi + Aigiarn Al-Alta Alan Altani Borte Botokhui Bulughan Chabi Chagur Chakha Chaur_Baqi Checheyigen Chotan Conchaka Dokez Doregene Doquz Ebegei Goland + Gurbesu Hogelun Holuikhan Ibakha Khadagan Khatun Khogaghchin Khojin Khorijin Khugurchin Khulan Khutulan Khutulun Kokachin Mandukhai Mongoljin + Nomolun Oghul Orbei Orqina Sokhatai Sorkhaghatani Tekine Temulun TO_regene Ussun_Kulan Yesugun Yesui Hoelun + #Turkic + C_iC_ek C_ilen C_iltanesi O_zgul O_zlem Akgul Asli Ayasun Ayten BozC_in Dilek Esin GulC_iC_ek Gulay Gunduz Gundes Gunes Guranduk + Ilkay Ipek Ipekel Irge Jiajak Karacik Mala Mutlu Peksen Samur Sarica Sati Sevilay Sevindik Sibel Sirin Sirma Songul + TekC_e Tura Umay Usunbike Yasar Yeldem Yildiz + } + + dynasty_of_location_prefix = "dynnp_of" + founder_named_dynasties = yes + house_based_map_names = yes +} diff --git a/common/culture/name_lists/00_west_germanic.txt b/common/culture/name_lists/00_west_germanic.txt new file mode 100644 index 00000000..66a08ad4 --- /dev/null +++ b/common/culture/name_lists/00_west_germanic.txt @@ -0,0 +1,546 @@ +name_list_english = { + + cadet_dynasty_names = { + { "dynnp_de" "dynn_Bohun" } + { "dynnp_de" "dynn_Vere" } + { "dynnp_de" "dynn_Gand" } + "dynn_Myall" + { "dynnp_de" "dynn_Turberville" } + { "dynnp_de" "dynn_Holland" } + "dynn_Butler" + { "dynnp_of" "dynn_Thornham" } + { "dynnp_de" "dynn_Camville" } + "dynn_Breakspear" + { "dynnp_of" "dynn_Itchington" } + { "dynnp_of" "dynn_Northall" } + { "dynnp_de" "dynn_Montagu" } + { "dynnp_de" "dynn_Umfraville" } + "dynn_FitzPeter" + "dynn_Belles-mains" + { "dynnp_of" "dynn_Warwick" } + "dynn_FitzAlan" + { "dynnp_de" "dynn_Beauchamp" } + { "dynnp_of" "dynn_Ilchester" } + { "dynnp_de" "dynn_Raleigh" } + { "dynnp_de" "dynn_Stratford" } + "dynn_Becket" + { "dynnp_de" "dynn_la_Pole" } + } + + dynasty_names = { + { "dynnp_de" "dynn_Bohun" } + { "dynnp_de" "dynn_Vere" } + { "dynnp_de" "dynn_Gand" } + "dynn_Myall" + { "dynnp_de" "dynn_Turberville" } + { "dynnp_de" "dynn_Holland" } + "dynn_Butler" + { "dynnp_of" "dynn_Thornham" } + { "dynnp_de" "dynn_Camville" } + "dynn_Breakspear" + { "dynnp_of" "dynn_Itchington" } + { "dynnp_of" "dynn_Northall" } + { "dynnp_de" "dynn_Montagu" } + { "dynnp_de" "dynn_Umfraville" } + "dynn_FitzPeter" + "dynn_Belles-mains" + { "dynnp_of" "dynn_Warwick" } + "dynn_FitzAlan" + { "dynnp_de" "dynn_Beauchamp" } + { "dynnp_of" "dynn_Ilchester" } + { "dynnp_de" "dynn_Raleigh" } + { "dynnp_de" "dynn_Stratford" } + "dynn_Becket" + { "dynnp_de" "dynn_la_Pole" } + } + + # Does not exist in 1066 - is the result of cultural amalgamation between Saxon and Norman through events + male_names = { + 14 = { # most common + William + } + 8 = { # second most common + John + } + 48 = { # other common names + Adam Geoffrey Henry Hugh Nicholas Peter Ralph Richard Robert Roger Simon Thomas Walter + } + 30 = { # everything else + Alan Albert Alexander Alfred Andrew Anselm Arnold Arthur Aubrey Baldrick Christopher David Edmund Edward Eric Eustace Fulk George Gerald Gilbert + Godfrey Gregory Guy Harold Humphrey Jocelyn Jordan Laurence Lionel Mark Martin Matthew Maurice Michael Paul Philip + Randolph Reginald Roderick Samuel Stephen Theobald Waleran + } + 0 = { # translated versions of other culture names + Blethin Duncan Douglas Fergus Findlay Griffith Kenneth Patrick Teague Howell Meredith Owen Tristan Cecil Sweeney Cedric Merlin Sebastian Zachary + } + + } + female_names = { + Adela Adelaide Alice Amice Anne Aveline Beatrice Blanche Catherine Cecilia Constance Edith Ela Eleanor Elizabeth Emma Hawise Isabel + Isabella Joan Joanna Juliana Mahaut Margaret Mary Matilda Maud Philippa Sybilla + } + dynasty_of_location_prefix = "dynnp_of" + bastard_dynasty_prefix = "dynnp_fitz" + + patronym_suffix_male = "dynnpat_suf_s" + patronym_suffix_female = "dynnpat_suf_s" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 25 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_white_company" coat_of_arms = "mc_white_company" } + { name = "mercenary_company_hawkwoods_band" } + } +} +name_list_anglo_saxon = { + + cadet_dynasty_names = { + "dynn_Hayles" + { "dynnp_of" "dynn_Norfolk" } + "dynn_Rose" + "dynn_Dodington" + "dynn_Stawell" + "dynn_Huntingdon" + "dynn_Lockhart" + "dynn_Wuffing" + "dynn_Henry" + "dynn_Hastings" + "dynn_Puttoc" + { "dynnp_of" "dynn_Anglo-Saxony" } + { "dynnp_of" "dynn_Northampton" } + "dynn_A_theling" + "dynn_Moore" + "dynn_Fysche" + "dynn_Dall" + "dynn_Slee" + "dynn_Kiil" + "dynn_Mel" + "dynn_Holter" + "dynn_Randolph" + "dynn_Percy" + "dynn_Despencer" + "dynn_Bacon" + "dynn_Reresby" + "dynn_Cornwallis" + "dynn_Clifford" + "dynn_Carew" + "dynn_Maddock" + "dynn_Fortescue" + { "dynnp_de" "dynn_Ros" } + "dynn_Howard" + "dynn_Maudit" + "dynn_Berkeley" + "dynn_Barton" + "dynn_Colvile" + "dynn_Grey" + "dynn_Darcy" + { "dynnp_de" "dynn_Garlande" } + "dynn_Perry" + "dynn_Bethell" + "dynn_Perry" + "dynn_Borthwick" + { "dynnp_de" "dynn_London" } + { "dynnp_of" "dynn_Hereford" } + { "dynnp_of" "dynn_Gloucester" } + { "dynnp_of" "dynn_Oxford" } + { "dynnp_of" "dynn_Salisbury" } + { "dynnp_of" "dynn_Surrey" } + { "dynnp_of" "dynn_Sussex" } + { "dynnp_of" "dynn_Hampshire" } + { "dynnp_of" "dynn_Dorset" } + { "dynnp_of" "dynn_Somerset" } + { "dynnp_of" "dynn_Devon" } + { "dynnp_of" "dynn_Exeter" } + { "dynnp_of" "dynn_Cumberland" } + { "dynnp_of" "dynn_York" } + { "dynnp_of" "dynn_Lancaster" } + { "dynnp_of" "dynn_Chester" } + { "dynnp_of" "dynn_Lincoln" } + { "dynnp_of" "dynn_Leicester" } + { "dynnp_of" "dynn_Derby" } + { "dynnp_of" "dynn_Shrewsbury" } + { "dynnp_of" "dynn_Northampton" } + { "dynnp_of" "dynn_Bedford" } + { "dynnp_of" "dynn_Norfolk" } + { "dynnp_of" "dynn_Suffolk" } + "dynn_Crawford" + "dynn_Tynedale" + "dynn_Pudsey" + "dynn_Marshal" + "dynn_Rowe" + { "dynnp_de" "dynn_Criel" } + "dynn_Ciesla" + "dynn_Ross" + "dynn_Wuffing" + "dynn_Beorming" + "dynn_Eorling" + "dynn_A_bbing" + "dynn_A_lling" + "dynn_Wintaling" + } + + dynasty_names = { + "dynn_Hayles" + { "dynnp_of" "dynn_Norfolk" } + "dynn_Rose" + "dynn_Dodington" + "dynn_Stawell" + "dynn_Huntingdon" + "dynn_Lockhart" + "dynn_Wuffing" + "dynn_Henry" + "dynn_Hastings" + "dynn_Puttoc" + { "dynnp_of" "dynn_Anglo-Saxony" } + { "dynnp_of" "dynn_Northampton" } + "dynn_A_theling" + "dynn_Moore" + "dynn_Fysche" + "dynn_Dall" + "dynn_Slee" + "dynn_Kiil" + "dynn_Mel" + "dynn_Holter" + "dynn_Randolph" + "dynn_Percy" + "dynn_Despencer" + "dynn_Bacon" + "dynn_Reresby" + "dynn_Cornwallis" + "dynn_Clifford" + "dynn_Carew" + "dynn_Maddock" + "dynn_Fortescue" + { "dynnp_de" "dynn_Ros" } + "dynn_Howard" + "dynn_Maudit" + "dynn_Berkeley" + "dynn_Barton" + "dynn_Colvile" + "dynn_Grey" + "dynn_Darcy" + { "dynnp_de" "dynn_Garlande" } + "dynn_Perry" + "dynn_Bethell" + "dynn_Perry" + "dynn_Borthwick" + { "dynnp_de" "dynn_London" } + { "dynnp_of" "dynn_Hereford" } + { "dynnp_of" "dynn_Gloucester" } + { "dynnp_of" "dynn_Oxford" } + { "dynnp_of" "dynn_Salisbury" } + { "dynnp_of" "dynn_Surrey" } + { "dynnp_of" "dynn_Sussex" } + { "dynnp_of" "dynn_Hampshire" } + { "dynnp_of" "dynn_Dorset" } + { "dynnp_of" "dynn_Somerset" } + { "dynnp_of" "dynn_Devon" } + { "dynnp_of" "dynn_Exeter" } + { "dynnp_of" "dynn_Cumberland" } + { "dynnp_of" "dynn_York" } + { "dynnp_of" "dynn_Lancaster" } + { "dynnp_of" "dynn_Chester" } + { "dynnp_of" "dynn_Lincoln" } + { "dynnp_of" "dynn_Leicester" } + { "dynnp_of" "dynn_Derby" } + { "dynnp_of" "dynn_Shrewsbury" } + { "dynnp_of" "dynn_Northampton" } + { "dynnp_of" "dynn_Bedford" } + { "dynnp_of" "dynn_Norfolk" } + { "dynnp_of" "dynn_Suffolk" } + "dynn_Crawford" + "dynn_Tynedale" + "dynn_Pudsey" + "dynn_Marshal" + "dynn_Rowe" + { "dynnp_de" "dynn_Criel" } + "dynn_Ciesla" + "dynn_Ross" + "dynn_Wuffing" + "dynn_Beorming" + "dynn_Eorling" + "dynn_A_bbing" + "dynn_A_lling" + "dynn_Wintaling" + } + + male_names = { + Arncytel Balthere Beorhtfrith Beorhthelm BeorhtmE_r Beorhtnoth Beorhtric Beorhtsige Beorhtwine Beorn BeornrE_d Beornwulf + Burgheard Byrhtnoth Cearl Cenfus CenrE_d Cenwulf Ceolwulf Cerdic Copsige + Cuthberht CuthrE_d Cynehelm Cynewulf Cytelbearn Eadberht Eadfrith Eadgar Eadmund EadmE_r Eadric + EadrE_d Eadsige Eadulf Eadweald Eadweard Eadwig Eadwine Eadwulf Ealdhun Ealdmund EaldrE_d Ealdwine + Ealdwulf Eanberht Eanfrith Eanhere Eardwulf Eastmund Ecgberht Ecgfrith Gamall Godwine Gospatric Guthfrith Guthmund + Gyrth Hacon Harold Heahberht Hereberht Hereweald Hereweard Hlothere Hrodberht InwE_r Leofheah Leofhelm + Leofric Leofweald Leofwine Maccus Morcar ME_rleswegn Offa Onlaf Ordgar + Oscytel Oshere Osmund Osric OsrE_d Osulf Osweald Oswine Oswulf Petre RE_dwulf RE_genweald Scule + Sigeberht Sigehelm Sigeric SigerE_d Sighere Siweard Stigand Swegn Swithelm SwithrE_d SwE_frE_d SE_bert SE_lrE_d SE_weald + SE_xbald SE_xrE_d ThorE_d Thurcytel Thurfrith Tostig UhtrE_d Ulf Ulfcytel Waltheof Werestan Wiglaf WihtrE_d + Wistan Wulf Wulfgar Wulfgeat Wulfhelm Wulfhere WulfmE_r Wulfnoth Wulfstan E_lfgar E_lfmE_r E_lfnoth E_lfric E_lfrE_d E_lfsige + E_lfstan E_lfwald E_lfweard E_lfwig E_lfwine E_lle E_thelbald E_thelberht E_thelfrith E_thelhere E_thelmE_r + E_thelric E_thelrE_d E_thelsige E_thelstan E_thelweald E_thelweard E_thelwine E_thelwold E_thelwulf + Eormenred Eorcenberht Eormenric Eadbald RE_dwald + } + female_names = { + Agatha Balthild BeorhtflE_d Beorhtgifu Beorhtgyth Beorhtwaru Beorhtwynn BeornflE_d Beorngyth BlE_ja BurgflE_d CeolflE_d Cristina + Cuthburg Cwenburg Cyneburg Cynegyth Cynehild Cyneswith Cynethryth Eadburg EadflE_d Eadgifu Eadgyth Eadhburh Eadhild Ealdgyth + EalhflE_d Ealhswith Eanswith Ecgfrida Ecgwyn Godgifu Gunhilda Gytha Helga Heregyth Hereswith Hextilda Hungifu Judith + LeofflE_d Leofgifu Leofrun Leofwaru Leofwynn Margaret Maud Mildrith Octreda SifflE_d Sigrid SE_thryth WulfflE_d Wulfgifu + Wulfgyth Wulfhild Wulfrun Wulfthryth Wulfwaru Wulfwynn WynnflE_d WE_rburg E_bba E_lfflE_d E_lfgifu E_lfgyth E_lflE_da E_lfrida + E_lfswith E_lfthryth E_lfwynn E_thelburg E_thelflE_d E_thelgifu E_thelhild E_thelrE_da E_thelswith E_thelthryth + E_thelburh Seaxburh Wihtburh + } + + dynasty_of_location_prefix = "dynnp_of" + + patronym_suffix_male = "dynnpat_suf_son" + patronym_suffix_female = "dynnpat_suf_sdohtor" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 5 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_hengist_retinue" coat_of_arms = "mc_hengist_retinue" } + { name = "mercenary_company_wakes_guard" coat_of_arms = "mc_wakes_guard" } + { name = "mercenary_company_horsas_band" coat_of_arms = "mc_horsas_band" } + } +} + +name_list_old_saxon = { + dynasty_names = { + dynn_Pattensen + dynn_Schneider + dynn_Theodericing + dynn_Richfriding + dynn_Abonid + dynn_Smeldiging + dynn_Unwanid + dynn_Hessing + } + + male_names = { + Abo Adalbero Adalbert Adalbrand Adaldag Adalgar Adalgod Adolf Aelle Albrecht Alebrand + Altfrid Ansgar Arnd Arnold Asig Balduin Balthasar Banzleib Beneke Benno Bernd + Bernhard Bertold Bertram Boddic Brun Bruno Burchard Cissa Claus Cobbo Cord + Cyprian Dago Dedo Dethard Detleff Detmar Diederik Donar Eggerd Egilmar Ekbert Engelbert + Engelhard Erik Erp Esiko Everd Ewald Floribert Freawine Frederik Gehrke Gelder Gero Gerold Gevert + Ghert Giselher Giselmar Gosschalk Goswin Gunzelin GO_dke GU_nther Hans Harthgate Hartwig Heideke + Hengest Henneke Herberd Hermann Hinrik Hoger Hulderic Humfried Immed Isidor Jacob Jaspar Jochim + Johann Juries Kersten KO_pke Laurentz Lembert Leuderic Liawizo Liemar Liudger Luder-Udo + Luder Ludolf Ludwig Magnus Marbold Marquard Mathias Meinwerk Merten Michael + Norbert Odo Ordulf Peter Philipp Radke Reginbern Reinbern Reineke Reinmar Rudigar + Rudolf Sigbert Sigfrid Sigward Simon Steffen Thankmar Theoderic Theodoric + Theodwin Thimo Thomas Tobe Tymmeke Udo Unwan Viric Volkwin Volrad Walbert Waldemar Waldered Waltard + Warin Warinechin Wecta Wenzel Werneke Weybrecht Wichbert Wichmann Wicho Widukind Wigebert Wilbrand + Willichin Withgils Witikind Witta Wlencing Wolter Wulff + } + female_names = { + Addila Adelheid Alof Agnes Anna Athela Beatrix Bertha Bertrada Bia Bisina Bithild + Brigida Christina Diedke Eilika Elisabeth Enda Frederuna Geilana Gerberga Gertrud Gisela + Glismod Hadwig Hasala Heilwig Helene Hildegard Hrothwina Ida Imma Irmgard Irminburg + Jutta Katharina Kunigunde Luitgard Margarete Mathilde Mechthild Oda + Othelindis Radegund Reginlint Richardis Rodelinda Sophia Suanhilde Theodrada Thiedburga Wienke Wiltrud Wulfhild + } + + dynasty_of_location_prefix = "dynnp_of" + + patronym_suffix_male = "dynnpat_suf_sunu" + patronym_suffix_female = "dynnpat_suf_sdohtar" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 30 + mat_grf_name_chance = 10 + father_name_chance = 5 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 20 + mat_grm_name_chance = 40 + mother_name_chance = 5 +} + +name_list_scottish = { + cadet_dynasty_names = { + { "dynnp_de" "dynn_Kald" } + { "dynnp_de" "dynn_la_Haya" } + { "dynnp_de" "dynn_Lindsay" } + { "dynnp_de" "dynn_Loudoun" } + { "dynnp_de" "dynn_Ramsay" } + { "dynnp_of" "dynn_Angus" } + { "dynnp_of" "dynn_Carrick" } + { "dynnp_of" "dynn_Galloway" } + { "dynnp_of" "dynn_Galloway" } + { "dynnp_of" "dynn_Scotland" } + { "dynnp_of" "dynn_Strathearn" } + { "dynnp_of" "dynn_Tullibardine" } + dynn_Abernethy + dynn_Arbuthnot + dynn_Archil + dynn_Armstrong + dynn_Ballantyne + dynn_Bannock + dynn_Barclay + dynn_Blackadder + dynn_Borthwick + dynn_Bradnigh + dynn_Branain + dynn_Bruce + dynn_Buchan + dynn_Cameron + dynn_Campbell + dynn_Camshron + dynn_Carrun + dynn_Cockburn + dynn_Cosmungho + dynn_Craigies + dynn_Dean + dynn_Douglas + dynn_Errol + dynn_Forbes + dynn_Fothriff + dynn_Fraser + dynn_Friseal + dynn_Gillespie + dynn_Glenklochar + dynn_Gordon + dynn_Graham + dynn_Grant + dynn_Johnston + dynn_Kennoway + dynn_Kyle + dynn_Lochore + dynn_Lowden + dynn_Menteith + dynn_Murray + dynn_Olifard + dynn_Rannaire + dynn_Saint-Clair + dynn_Scoine + dynn_Strathearn + dynn_Turnbull + dynn_Wallace + } + + dynasty_names = { + { "dynnp_de" "dynn_Kald" } + { "dynnp_de" "dynn_la_Haya" } + { "dynnp_de" "dynn_Lindsay" } + { "dynnp_de" "dynn_Loudoun" } + { "dynnp_de" "dynn_Ramsay" } + { "dynnp_of" "dynn_Angus" } + { "dynnp_of" "dynn_Carrick" } + { "dynnp_of" "dynn_Galloway" } + { "dynnp_of" "dynn_Galloway" } + { "dynnp_of" "dynn_Scotland" } + { "dynnp_of" "dynn_Strathearn" } + { "dynnp_of" "dynn_Tullibardine" } + dynn_Abernethy + dynn_Arbuthnot + dynn_Archil + dynn_Armstrong + dynn_Ballantyne + dynn_Bannock + dynn_Barclay + dynn_Blackadder + dynn_Borthwick + dynn_Bradnigh + dynn_Branain + dynn_Bruce + dynn_Buchan + dynn_Cameron + dynn_Campbell + dynn_Camshron + dynn_Carrun + dynn_Cockburn + dynn_Cosmungho + dynn_Craigies + dynn_Dean + dynn_Douglas + dynn_Errol + dynn_Forbes + dynn_Fothriff + dynn_Fraser + dynn_Friseal + dynn_Gillespie + dynn_Glenklochar + dynn_Gordon + dynn_Graham + dynn_Grant + dynn_Johnston + dynn_Kennoway + dynn_Kyle + dynn_Lochore + dynn_Lowden + dynn_Menteith + dynn_Murray + dynn_Olifard + dynn_Rannaire + dynn_Saint-Clair + dynn_Scoine + dynn_Strathearn + dynn_Turnbull + dynn_Wallace + } + + male_names = { + Adam Alpin Alan Alastair Alexander Andrew + Angus Archibald Arthur Arran Aulay Beathan Brian Brice Cailean Calum Carbrey Colban + Colin Conall Conan Constantine David Dermid Donald Douglas Duff Dugald + Duncan Edgar Edward Edwin Eric Evander Ewan Farquhar Fergus Fingal Findlay Frang + Gavin Gilbert Gilbride Gilchrist Gillespie Gilpatrick Gilroy Giric Glenn Godfrey Gregor + Hamish Hector Henry Hugh Iain Indulf James John Kenneth Kentigern Lachlan Laurence Lennon + Lulach Macbeth Magnus Malcolm Maldoven Maldred Malise Malmure Maoilios Marcas Malsnectan + Matad Matthew Michael Morgan Muir Mungo Murdoch Murray Neil Ninian Oscar + Patrick Paul Peter Philip Radulf Ranald Richard Robert Roderick Ronald Rory Ross Roy + Shaw Sholto Simon Somerled Stephan Sweeny Taig Talore Thomas Torquil Uhtred Uisdean Walan + Waldeve Walter William + } + female_names = { + Ada Affraic Agnes Aileen Alice Anna Annabella Aufrica Barabal Beileag Beitris Beathoc Bride + Catriona Cecilia Christina Deirdre Derilla Dervorgilla Donada Donella + Edith Edna Effie Eilionoir Eimhir Eithne Ela Eleanor Elspeth Euna Eva Fenella Fingola Flora + Forflissa Galiena Glenna Gormelia Gruoch Helen Innes Iona Isabel Isla Isobel Jean Julia + Kenna Kentigerna Kirstin Lillias Lorna Malmure Maisie Malina Margaret Mariota Marjory Mary + Martha Marthoc Maud Maura Mirren Mor Morag Morna Moyna Muriel + Murron Nuala Orabilia Peigi Rhonda Rodina Ronalda Ros Saundra Sheena Shona Slaine Sorcha Steacy Una + } + + dynasty_of_location_prefix = "dynnp_de" + + patronym_prefix_male = "dynnpat_pre_Mc" + patronym_prefix_female = "dynnpat_pre_Mc" + + + pat_grf_name_chance = 30 + mat_grf_name_chance = 15 + father_name_chance = 5 + + pat_grm_name_chance = 30 + mat_grm_name_chance = 15 + mother_name_chance = 10 + + mercenary_names = { + { name = mercenary_company_border_reivers } + { name = mercenary_company_warband_of_the_great_hall } + { name = mercenary_company_company_of_the_kings_son } + } +} diff --git a/common/culture/name_lists/00_west_slavic.txt b/common/culture/name_lists/00_west_slavic.txt new file mode 100644 index 00000000..c0f4a3b7 --- /dev/null +++ b/common/culture/name_lists/00_west_slavic.txt @@ -0,0 +1,742 @@ +name_list_pommeranian = { + + cadet_dynasty_names = { + "dynn_Obroditen" + "dynn_Gryfita" + { "dynnp_z" "dynn_Liubic" } + "dynn_S_wiE_ca" + "dynn_GrzymaL_a" + "dynn_JastrzE_biec" + "dynn_L_odzia" + "dynn_Lubicz" + "dynn_NaL_E_cz" + "dynn_Gniewosz" + { "dynnp_z" "dynn_Roztoki" } + { "dynnp_ze" "dynn_SL_upska" } + } + + dynasty_names = { + "dynn_Obroditen" + "dynn_Gryfita" + { "dynnp_z" "dynn_Liubic" } + "dynn_S_wiE_ca" + "dynn_GrzymaL_a" + "dynn_JastrzE_biec" + "dynn_L_odzia" + "dynn_Lubicz" + "dynn_NaL_E_cz" + "dynn_Gniewosz" + { "dynnp_z" "dynn_Roztoki" } + { "dynnp_ze" "dynn_SL_upska" } + } + + male_names = { + Aleksander Andrzej Antoni Aron Barnim Bartosz BedR_ich Bezprzym BL_aZ_ej BogisL_aw Bohdan BohumI_r BolesL_aw Borzywoj BoZ_ydar Branimir Branislav + BR_etislav Casimir Ctibor DobiesL_aw Dobromil Drosuk Dytryk FrantiS_ek GaweL_ Grzegorz Havel Jacenty Jakub Jakusz Janusz Jaromar + Jaromil JaromI_r Jaroslav JE_drzej JindR_ich JiR_I_ Jozef Juliusz Kajetan Kamil Karel Kasper Kazimierz Kliment Kolman Kornel KreS_imir KrzesL_aw + Krzysztof Lech Leszek Lubomir Lucjan LudvI_k Marek Marian Martin Mateusz Mieszko MikolA_S_ MilosL_aw MiL_osz MirosL_aw MS_cisL_aw MS_ciwO_j + OldR_ich OndR_ej Otokar Patryk PaweL_ Piotr Prendota PrzemysL_ PrzybysL_aw Radomil Radomir Radoslav Rostislav Ryszard Sambor Sobieslav StanisL_aw + Strasz S_wiE_topeL_k S_wiE_tosL_aw Szczepan SzczE_sny Szymon Tadeusz Tomasz Udalrich Urjasz VojtE_ch WacL_aw Walenty WratysL_aw Wawrzyniec VA_clav + Wincenty WisL_aw WL_adysL_aw WL_odek WL_odzimierz WL_odzisL_aw Zbigniew ZdenE_k Zdislav Zygmunt + } + female_names = { + Agnieszka AlZ_bE_ta AndE_la Anna Berta Bohuslava BoZ_ena Branislava Dagmar Danuta Dobrava Dobroniega Dorota Dragomira Edyta Ewa Geira Gertruda + Gracja Halina Hanna Irena Izabela Jadwiga Jarka Jarmila Jolanta Judyta Kamila Katarina Kenna Kornelia Krystyna Ksenia Lidia + Ludmila Magda Magdalena MaL_gorzata Marcelina Maria MarkE_ta Martyna Mateja Matylda Milena Miroslava Pechna RO_za Radomila Radomira Radoslava + Raina Regelinda Rycheza Salomea S_miechna Stanislava Stefana SvE_tlana Urszula VA_clava Vladislava Wera WojsL_awa ZdeN_ka Zofia ZwinisL_awa + } + + dynasty_of_location_prefix = "dynnp_of" + + + + mercenary_names = { + { name = "mercenary_company_oder_band" } + { name = "mercenary_company_company_of_the_dog" } + } +} + +name_list_czech = { + + cadet_dynasty_names = { + "dynn_HrabiS_id" + "dynn_Markvartid" + "dynn_VI_tkid" + "dynn_VrS_ovid" + "dynn_Vratislavid" + "dynn_Bavorid" + "dynn_Harrach" + "dynn_Drslavid" + "dynn_Hroznatid" + "dynn_Z_erotI_nid" + "dynn_Czernin" + "dynn_BeneS_id" + "dynn_OpavskY__PR_emyslid" + { "dynnp_z" "dynn_Ronova" } + { "dynnp_ze" "dynn_Z_erotI_na" } + { "dynnp_z" "dynn_Kouic" } + { "dynnp_ze" "dynn_PS_ova" } + { "dynnp_z" "dynn_Buzic" } + { "dynnp_z" "dynn_LipE_" } + { "dynnp_z" "dynn_Lichtenburka" } + { "dynnp_z" "dynn_Michalovic" } + { "dynnp_z" "dynn_Lemberka" } + { "dynnp_ze" "dynn_ZvI_R_etic" } + { "dynnp_z" "dynn_Vartmberka" } + { "dynnp_z" "dynn_ValdS_tejna" } + { "dynnp_z" "dynn_BR_ezna" } + { "dynnp_z" "dynn_RoZ_mberka" } + { "dynnp_z" "dynn_Hradce" } + { "dynnp_z" "dynn_Krumlova" } + { "dynnp_z" "dynn_U_stI_" } + { "dynnp_z" "dynn_DubE_" } + { "dynnp_z" "dynn_FalknS_tejna" } + { "dynnp_z" "dynn_LandS_tejna" } + { "dynnp_ze" "dynn_StrA_Z_e" } + { "dynnp_z" "dynn_Lomnice" } + { "dynnp_z" "dynn_Tasova" } + { "dynnp_z" "dynn_KR_iZ_anova" } + { "dynnp_z" "dynn_BeneS_ova" } + { "dynnp_z" "dynn_CvilI_na" } + { "dynnp_z" "dynn_BechyN_e" } + { "dynnp_z" "dynn_Tvorkova" } + { "dynnp_z" "dynn_DE_dic" } + { "dynnp_z" "dynn_KravaR_" } + { "dynnp_z" "dynn_DiviS_ova" } + { "dynnp_z" "dynn_KunS_tA_tu" } + { "dynnp_ze" "dynn_Zbraslavi" } + { "dynnp_z" "dynn_ObR_an" } + { "dynnp_z" "dynn_PernS_tejna" } + "dynn_Benedid" + "dynn_LichovskY_" + { "dynnp_z" "dynn_Boskovic" } + { "dynnp_ze" "dynn_Sovince" } + { "dynnp_ze" "dynn_SS_vA_benic" } + { "dynnp_z" "dynn_Ojnic" } + { "dynnp_z" "dynn_Hodic" } + { "dynnp_z" "dynn_Drnovic" } + { "dynnp_z" "dynn_VI_ckova" } + { "dynnp_z" "dynn_NeC_tin" } + { "dynnp_z" "dynn_Cimburka" } + { "dynnp_z" "dynn_Homberka" } + { "dynnp_z" "dynn_DonI_na" } + { "dynnp_von" "dynn_Sternberg" } + "dynn_Bavor_ze_Strakonic" + { "dynnp_von" "dynn_Harrach" } + } + + dynasty_names = { + "dynn_HrabiS_id" + "dynn_Markvartid" + "dynn_VI_tkid" + "dynn_VrS_ovid" + "dynn_Vratislavid" + "dynn_Bavorid" + "dynn_Harrach" + "dynn_Drslavid" + "dynn_Hroznatid" + "dynn_Z_erotI_nid" + "dynn_Czernin" + "dynn_BeneS_id" + "dynn_OpavskY__PR_emyslid" + { "dynnp_z" "dynn_Ronova" } + { "dynnp_ze" "dynn_Z_erotI_na" } + { "dynnp_z" "dynn_Kouic" } + { "dynnp_ze" "dynn_PS_ova" } + { "dynnp_z" "dynn_Buzic" } + { "dynnp_z" "dynn_LipE_" } + { "dynnp_z" "dynn_Lichtenburka" } + { "dynnp_z" "dynn_Michalovic" } + { "dynnp_z" "dynn_Lemberka" } + { "dynnp_ze" "dynn_ZvI_R_etic" } + { "dynnp_z" "dynn_Vartmberka" } + { "dynnp_z" "dynn_ValdS_tejna" } + { "dynnp_z" "dynn_BR_ezna" } + { "dynnp_z" "dynn_RoZ_mberka" } + { "dynnp_z" "dynn_Hradce" } + { "dynnp_z" "dynn_Krumlova" } + { "dynnp_z" "dynn_U_stI_" } + { "dynnp_z" "dynn_DubE_" } + { "dynnp_z" "dynn_FalknS_tejna" } + { "dynnp_z" "dynn_LandS_tejna" } + { "dynnp_ze" "dynn_StrA_Z_e" } + { "dynnp_z" "dynn_Lomnice" } + { "dynnp_z" "dynn_Tasova" } + { "dynnp_z" "dynn_KR_iZ_anova" } + { "dynnp_z" "dynn_BeneS_ova" } + { "dynnp_z" "dynn_CvilI_na" } + { "dynnp_z" "dynn_BechyN_e" } + { "dynnp_z" "dynn_Tvorkova" } + { "dynnp_z" "dynn_DE_dic" } + { "dynnp_z" "dynn_KravaR_" } + { "dynnp_z" "dynn_DiviS_ova" } + { "dynnp_z" "dynn_KunS_tA_tu" } + { "dynnp_ze" "dynn_Zbraslavi" } + { "dynnp_z" "dynn_ObR_an" } + { "dynnp_z" "dynn_PernS_tejna" } + "dynn_Benedid" + "dynn_LichovskY_" + { "dynnp_z" "dynn_Boskovic" } + { "dynnp_ze" "dynn_Sovince" } + { "dynnp_ze" "dynn_SS_vA_benic" } + { "dynnp_z" "dynn_Ojnic" } + { "dynnp_z" "dynn_Hodic" } + { "dynnp_z" "dynn_Drnovic" } + { "dynnp_z" "dynn_VI_ckova" } + { "dynnp_z" "dynn_NeC_tin" } + { "dynnp_z" "dynn_Cimburka" } + { "dynnp_z" "dynn_Homberka" } + { "dynnp_z" "dynn_DonI_na" } + { "dynnp_von" "dynn_Sternberg" } + "dynn_Bavor_ze_Strakonic" + { "dynnp_von" "dynn_Harrach" } + } + + male_names = { + Albrecht ArnoS_t Beneda BeneS_ BedR_ich Bernard BoC_ek Bohuslav BohuS_e Boleslav BoreS_ BoR_ek BoR_ivoj Borut BoZ_ej BoZ_epor + BR_etislav Budislav CzernI_n CC_aslav CC_astolov CC_enEE_k CC_esta Chval DamaS_a Dalibor Dalimil DEE_polt DEE_tR_ich DiviS_ DobeS_ Dobromil Domaslav Drslav + DrZ_islav Fridrich HaS_ek Havel HenI_k Heralt Heriman HrabiS_e Hroznata Hruta Hynek Jakub Jan JarohnEE_v JaromI_r Jaroslav JaroS_ Jenec JeS_ek JetR_ich + Jimram JindR_ich JiR_I_ JiR_I_k JoS_t Karel Kochan Kojata KonrA_d Kuna KunrA_t Letoslav Litolt Lupold Markvart Martin MatouS_ MEE_S_ek + Mikul MikulA_S_ Milota Mstidruh Mutina NaC_erat Nadej Nemoj NeuS_a Odolen OjI_R_ OldR_ich OndR_ej Ota Otakar PelhR_im Petr Prech PR_emysl + PR_ibyslav Prokop Radosta Rajmund Robert Sezema SlA_vek Slavibor Smil SobEE_slav SpytihnEE_v Strachkvas Svatobor Svatopluk SvEE_tlI_k + Tas Tista TobiA_S_ VA_clav Velen VeliS_ VilE_m VI_tek VladimI_r Vladislav VlachnI_k Vnislav VojtEE_ch Vok Vratislav VS_ebor Vznata + ZA_viS_ ZA_S_tita ZbynEE_k Zbyslav ZdI_k Zdislav Zikmund + } + female_names = { + AdlE_ta AlZ_bEE_ta AneZ_ka Anna Barbora BedR_iS_ka Berta BlahomI_ra BlaZ_ena Bohdana Bohumila Bohunka Bohuslava BoZ_ena BoZ_islava BR_etislava + CC_astava CecI_lie Ctislava Dobrava Dobromila Dobroslava Domaslava Dorota Doubravka DrahomI_ra Drahoslava EliS_ka Eufemie Gertruda Guta + Hedvika Helena Hodka Jana Jaroslava Jitka Johanka Judita Justina KateR_ina KlA_ra Konstancie KristY_na Kunhuta + LibuS_e Ludmila Marie MarkE_ta Mlada Olga Perchta PR_ibyslava Radka Rejna Richeza Richsa SS_A_rka Skonka Stanislava Svatava + VilemI_na Viola Vladislava Vlasta Vojslava Zdislava Zdenka ZZ_ofie + } + + dynasty_of_location_prefix = "dynnp_of" + + + + mercenary_names = { + { name = "mercenary_company_freelances_of_brandys" } + { name = "mercenary_company_army_of_the_ore" } + { name = "mercenary_company_company_of_the_cruel_hand" } + } +} + +name_list_polish = { + + cadet_dynasty_names = { + "dynn_S_widnicki" + "dynn_Branicki" + "dynn_Borkowic" + "dynn_GL_ogowski" + "dynn_Bogorski" + "dynn_Lisy" + "dynn_Lewicki" + "dynn_Wielkopolski" + "dynn_Opolski" + "dynn_Czartoryski" + "dynn_Opawski" + "dynn_Halicki" + "dynn_Zahumski" + "dynn_Kujawski" + "dynn_SubisL_awowic" + "dynn_Wolin" + "dynn_Koter" + "dynn_Woewodskij" + "dynn_Maciejewski" + "dynn_Urban" + "dynn_Starosz" + "dynn_SzczepaN_czyk" + "dynn_Jankowski" + "dynn_Nowak" + "dynn_Rudolf" + "dynn_Majek" + "dynn_PowaL_a" + "dynn_Kujawski" + "dynn_Chodkiewicz" + "dynn_JabL_onowski" + "dynn_Korecki" + "dynn_Lubomirski" + "dynn_MaL_achowski" + "dynn_Olelkowicz" + "dynn_Ostrogski" + "dynn_Poniatowski" + "dynn_Potocki" + "dynn_RadziwiL_L_" + "dynn_Rzewuski" + "dynn_Sanguszko" + "dynn_Sapieha" + "dynn_Sobieski" + "dynn_WiS_niowiecki" + "dynn_Zamojski" + "dynn_Zbaraski" + "dynn_Awdaniec" + "dynn_CzetwertyN_ski" + "dynn_Skarbek" + "dynn_Brochwicz" + "dynn_DA_browa" + "dynn_DoL_E_ga" + "dynn_Doliwa" + "dynn_Godziemba" + "dynn_Gryf" + "dynn_Leliwa" + "dynn_Nowina" + "dynn_OdrowA_Z_" + "dynn_OgoN_czyk" + "dynn_PO_L_kozic" + "dynn_Pomian" + "dynn_Radwan" + "dynn_Rawicz" + "dynn_Rogala" + "dynn_Sulima" + "dynn_Szeliga" + "dynn_TrA_ba" + "dynn_DL_ugosz" + "dynn_Kmita" + "dynn_S_winka" + { "dynnp_z" "dynn_WiS_licy" } + { "dynnp_z" "dynn_Garbowa" } + { "dynnp_z" "dynn_OleS_nicy" } + { "dynnp_z" "dynn_Melsztyna" } + { "dynnp_z" "dynn_TE_czyna" } + "dynn_Sypniewski" + "dynn_OdrowA_Z_" + "dynn_LanckoroN_ski" + "dynn_Taczanowski" + "dynn_LubraN_ski" + "dynn_Tarnowski" + "dynn_Giese" + "dynn_Kolanka" + "dynn_Gamrat" + "dynn_MielZ_yN_ski" + "dynn_OgiN_ski" + "dynn_Dmowski" + } + + dynasty_names = { + "dynn_S_widnicki" + "dynn_Branicki" + "dynn_Borkowic" + "dynn_GL_ogowski" + "dynn_Bogorski" + "dynn_Lisy" + "dynn_Lewicki" + "dynn_Wielkopolski" + "dynn_Opolski" + "dynn_Czartoryski" + "dynn_Opawski" + "dynn_Halicki" + "dynn_Zahumski" + "dynn_Kujawski" + "dynn_SubisL_awowic" + "dynn_Wolin" + "dynn_Koter" + "dynn_Woewodskij" + "dynn_Maciejewski" + "dynn_Urban" + "dynn_Starosz" + "dynn_SzczepaN_czyk" + "dynn_Jankowski" + "dynn_Nowak" + "dynn_Rudolf" + "dynn_Majek" + "dynn_PowaL_a" + "dynn_Kujawski" + "dynn_Chodkiewicz" + "dynn_JabL_onowski" + "dynn_Korecki" + "dynn_Lubomirski" + "dynn_MaL_achowski" + "dynn_Olelkowicz" + "dynn_Ostrogski" + "dynn_Poniatowski" + "dynn_Potocki" + "dynn_RadziwiL_L_" + "dynn_Rzewuski" + "dynn_Sanguszko" + "dynn_Sapieha" + "dynn_Sobieski" + "dynn_WiS_niowiecki" + "dynn_Zamojski" + "dynn_Zbaraski" + "dynn_Awdaniec" + "dynn_CzetwertyN_ski" + "dynn_Skarbek" + "dynn_Brochwicz" + "dynn_DA_browa" + "dynn_DoL_E_ga" + "dynn_Doliwa" + "dynn_Godziemba" + "dynn_Gryf" + "dynn_Leliwa" + "dynn_Nowina" + "dynn_OdrowA_Z_" + "dynn_OgoN_czyk" + "dynn_PO_L_kozic" + "dynn_Pomian" + "dynn_Radwan" + "dynn_Rawicz" + "dynn_Rogala" + "dynn_Sulima" + "dynn_Szeliga" + "dynn_TrA_ba" + "dynn_DL_ugosz" + "dynn_Kmita" + "dynn_S_winka" + { "dynnp_z" "dynn_WiS_licy" } + { "dynnp_z" "dynn_Garbowa" } + { "dynnp_z" "dynn_OleS_nicy" } + { "dynnp_z" "dynn_Melsztyna" } + { "dynnp_z" "dynn_TE_czyna" } + "dynn_Sypniewski" + "dynn_OdrowA_Z_" + "dynn_LanckoroN_ski" + "dynn_Taczanowski" + "dynn_LubraN_ski" + "dynn_Tarnowski" + "dynn_Giese" + "dynn_Kolanka" + "dynn_Gamrat" + "dynn_MielZ_yN_ski" + "dynn_OgiN_ski" + "dynn_Dmowski" + } + + male_names = { + Aleksander Andrzej Bartosz Bezprym BoguchwaL_ BogumiL_ BolesL_aw BoN_cza BorzysL_aw BoZ_ydar Borzywoj Budziwuj CzcibO_r Czyrzniech + Dalimir Daniel DobiesL_aw Dobrogost Dobromir Doman Domawuj Dytryk Eustachy Gaudenty Gierolt Gniewomir Gniewosz GoS_ciwuj Goszczon Henryk Imran + Izbor JO_zef Jacek Jaksa Jakub Jakusz Jan JanisL_aw Janko Janusz JarosL_aw Jerzy Karol Kazimierz Konrad Krystyn KrzesL_aw Lambert Leszek + Maciej MaC_ko MaL_owuj Marcin MasL_aw Mateusz Mieszko MikoL_aj MiL_obrat MiL_osz MirosL_aw MS_ciwO_j Mszczuj Nadbor NiezamysL_ Odon PaweL_ PeL_ka + Piotr Piskla Prendota PrzemysL_aw PrzybO_r Sambor SE_dziej SE_dzimir Sieciech SiemomysL_ Siemowit Skarbimir Snowid Spytko StanisL_aw + Stefan Stoigniew Strasz SulisL_aw Sulistryj S_wiE_topeL_k S_wiE_tosL_aw SzczE_sny Tomasz Trojden Twardomir US_ciech WacL_aw WaN_ko Wawrzyniec + WielisL_aw WiesL_aw Wincenty Wit Witosz WL_adysL_aw Wojciech Wojuta WszebO_r Zbigniew Zbyszko Z_egota Z_elibrat + Zygmunt + } + female_names = { + Adelajda Adleta Agnieszka Aldona Alicja Anastazja Anna Barbara Beata BoZZena Danuta Diana Dobrawa Dobroniega ElZ_bieta Eufemia Eufrozyna Eugenia Gabriela Gertruda GrzymisL_awa + Helena Jadwiga Jolanta Judyta Katarzyna Kazimiera Kenna Kinga Konstancja Krystyna Kunegunda L_ucja LudmiL_a Magdalena MaL_gorzata Maria + Matylda Milena Nadzieja Nawoja Pechna Rycheza Ryksa Salomea Samboja Scholastyka S_miechna StanisL_awa S_wiE_tosL_awa WisL_awa WojsL_awa + WolisL_awa Wszebora WszemiL_a Zofia ZwinisL_awa + } + + dynasty_of_location_prefix = "dynnp_of" + + #patronym_suffix_male = "dynnpat_suf_owski" + #patronym_suffix_female = "dynnpat_suf_owska" + + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 40 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 40 + mother_name_chance = 5 + + + + mercenary_names = { + { name = "mercenary_company_druzynan_host" } + { name = "mercenary_company_free_company_of_the_pospolite" } + } +} + +name_list_polabian = { + + cadet_dynasty_names = { + # Currently shared with Pommeranian + "dynn_Obroditen" + "dynn_Gryfita" + { "dynnp_z" "dynn_Liubic" } + "dynn_S_wiE_ca" + "dynn_GrzymaL_a" + "dynn_JastrzE_biec" + "dynn_L_odzia" + "dynn_Lubicz" + "dynn_NaL_E_cz" + "dynn_Gniewosz" + { "dynnp_z" "dynn_Roztoki" } + { "dynnp_ze" "dynn_SL_upska" } + } + + dynasty_names = { + # Currently shared with Pommeranian + "dynn_Obroditen" + "dynn_Gryfita" + { "dynnp_z" "dynn_Liubic" } + "dynn_S_wiE_ca" + "dynn_GrzymaL_a" + "dynn_JastrzE_biec" + "dynn_L_odzia" + "dynn_Lubicz" + "dynn_NaL_E_cz" + "dynn_Gniewosz" + { "dynnp_z" "dynn_Roztoki" } + { "dynnp_ze" "dynn_SL_upska" } + } + + male_names = { + Aleksander Andrzej Antoni Aron Barnim BedR_ich BL_aZ_ej Blus Bogislav Bohdan BohumI_r BolesL_aw BoR_ivoj BoZ_ydar BranimI_r Branislav + BR_etislav Budivoj BuR_islav CzcibO_r Czimislav Dervan Dobieslav Dobromil Drosuk Dytryk FrantiS_ek GaweL_ Grzegorz Havel Henry Jacenty Jakub Jakusz Janusz Jaromar + Jaromil Jaromir Jaroslav JE_drzej JindR_ich Jozef Juliusz Kajetan Kamil Karel Kasimir Kasper Kliment Kolman Kornel KreS_imir KrzesL_aw + Kruto Krzysztof Lech Leszek Lubomir Lucjan LudvI_k Marek Marian Martin Mateusz Mieszko Miliduch Miloslav MiL_osz Miroslav ML_cisL_aw Mstivoj + Niklot Nikolaus OldR_ich OndR_ej Otokar Patryk PaweL_ Petrus Piotr Prendota Pribignev Pribislav PrzemysL_ Przybyslaw Radomil Radomir Radoslav RatiboR_ Rostislav Ryszard Sambor Sobieslav Stanislav + Strasz S_wiE_topeL_k Svietoslav Szczepan SzczE_sny Szymon Tadeusz Tetzlav Tomasz Udalrich Urjasz VojtE_ch VA_clav Vratislav Vitslav Walenty Wertislav Wawrzyniec VE_nceslav + Wincenty Wizlaw WL_adysL_aw WL_odek WL_odzimierz WL_odzisL_aw Vratislav Zbigniew ZdenE_k Zdislav Zygmunt + } + female_names = { + Agnieszka AlZ_bE_ta AndE_la Anna Berta Bohuslava BoZ_ena Branislava Dagmar Danuta Dobrava Dobroniega Dobroslava Dorota Dragomira Edyta Eva Geira Gertruda + Gracja Halina Hanna Irena Izabela Jadwiga Jarka Jarmila Jolanta Judyta Kamila Katarina Kenna Kornelia Krystyna Ksenia Lidia + Ludmila Magda Magdalena Marcelina Maria Martyna Mateja Matylda Milena Miroslava Pechna RO_za Radomila Radomira Radoslava + Raina Regelinda Rycheza Salomea S_miechna Stanislava Stefana SvE_tlana UrS_ula VA_clava VE_ra Vladislava Woislava ZdeN_ka Zofia Zvinislava + } + + dynasty_of_location_prefix = "dynnp_of" + + + + mercenary_names = { + { name = "mercenary_company_band_of_the_fallen_knez" } + { name = "mercenary_company_company_of_the_stout_horse" } + } +} + +name_list_slovien = { + + cadet_dynasty_names = { + "dynn_KopC_iansky" + "dynn_Jasenovsky" + "dynn_Detvansky" + "dynn_Majcichovsky" + "dynn_Tekovsky" + "dynn_KubInsky" + "dynn_MikulC_icky" + "dynn_Pohansky" + "dynn_Ducovsky" + "dynn_DevI_nsky" + "dynn_Ostrihomsky" + "dynn_Kocelid" + { "dynnp_z" "dynn_ModrE_" } + { "dynnp_z" "dynn_HradiS_tEE_" } + "dynn_Velehradsky" + "dynn_Veligradsky" + "dynn_Vidensky" + "dynn_Rastislavid" + "dynn_Braslavid" + "dynn_Blatnohradsky" + "dynn_Beckovsky" + "dynn_ZemplI_nsky" + "dynn_TematI_nsky" + "dynn_Kostolansky" + "dynn_Bratislavsky" + "dynn_Tunavsky" + "dynn_BudI_nsky" + } + + dynasty_names = { + "dynn_KopC_iansky" + "dynn_Jasenovsky" + "dynn_Detvansky" + "dynn_Majcichovsky" + "dynn_Tekovsky" + "dynn_KubInsky" + "dynn_MikulC_icky" + "dynn_Pohansky" + "dynn_Ducovsky" + "dynn_DevI_nsky" + "dynn_Ostrihomsky" + "dynn_Kocelid" + { "dynnp_z" "dynn_ModrE_" } + { "dynnp_z" "dynn_HradiS_tEE_" } + "dynn_Velehradsky" + "dynn_Veligradsky" + "dynn_Vidensky" + "dynn_Rastislavid" + "dynn_Braslavid" + "dynn_Blatnohradsky" + "dynn_Beckovsky" + "dynn_ZemplI_nsky" + "dynn_TematI_nsky" + "dynn_Kostolansky" + "dynn_Bratislavsky" + "dynn_Tunavsky" + "dynn_BudI_nsky" + } + + male_names = { + Bohodar Boleslav BlahomI_r Blahoslav Bohumil BoZ_idar BoromI_r Bohuslav BudimI_r BohuS_ Bratislav Budivoj BystrI_k + Ctiboh Ctibor C_estmI_r Dalibor Dobromil Dobroslav DrahomI_r Drahoslav DuS_an Gorazd Horislav Hrdoslav Hromislav Hviezdoslav + ChrabroS_ ChvalimI_r Igor Ivan Jaromil JaromI_r Jaropluk Jaroslav KazimI_r Kocel Krasomil Ladislav LadomI_r Levoslav LubomI_r LuboS_ Ludomil LudovI_t Krasislav + Milan Miloslav Miroslav MiloS_ Miloboj MojmI_r Mstislav MU_droslav Nitrabor Oleg OstromI_r Ostrivoj Polan Pravoslav Predslav PrelimI_r Pribina Prisnec Prokop + Radislav RadomI_r Radoslav Radovan Raslav Rastislav Ruslav SiloS_ Slavoj SlavomI_r Sokol Spitihnev Stanislav Svatoboj Svatopluk Svatoslav SvetozA_r Svorad Stastko + Tichomil TichomI_r Tvrdomil Vavrinec VelemI_r Viacslav Vieroslav Vitemir Vladan Vladimil VladimI_r Vlastibor Vlastislav Vojmil Vojtech Vratislav Vratko VyS_ebor + Zdravoslav Zdravomil Zemislav Zobor Zubrivoj ZvonimI_r ZelimI_r + } + female_names = { + BlahomI_ra BlaZ_ena Bohdana Bohumila BoZZena Bratromila Ctislava Dobrohneva Dobromila Drzislava DuS_ana Horislava Jarmila JaromI_ra Jaroslava + Kostislava Kveta Kvetoslava KrA_snoroda Lada Ladina Lesana Lubica MilomI_ra Miloslava Mislava Miroslava Pravomila Pravdomila + Rodana SlA_vka Slavena SlavomI_ra Svatoslava SvetluS_a Svietlana Viera Vlasta Vlastimila VolimI_ra Vratislava VyS_emI_ra Zbislava Zlata Zivana Z_ivoslava + } + + dynasty_of_location_prefix = "dynnp_of" + + + + mercenary_names = { + { name = "mercenary_company_freelances_of_velehrad" } + { name = "mercenary_company_army_of_morava_bend" } + { name = "mercenary_company_company_of_the_faithbearers" } + } +} + +name_list_carantanian = { + + cadet_dynasty_names = { + "dynn_Furlan" + "dynn_Golob" + "dynn_Korosec" + "dynn_Kos" + "dynn_Krajnc" + "dynn_Kirzman" + "dynn_Medved" + "dynn_Mlakar" + "dynn_Potocnik" + "dynn_Jelen" + "dynn_Kragel" + "dynn_Orel" + "dynn_Vran" + "dynn_Senica" + "dynn_Grabec" + "dynn_Cuk" + "dynn_Sova" + "dynn_Volk" + "dynn_Volcic" + "dynn_Lisjak" + "dynn_Jazbec" + "dynn_Zajc" + "dynn_Kosuta" + "dynn_Petelin" + "dynn_Macek" + "dynn_Phorjec" + "dynn_Bohorec" + "dynn_Karavankec" + "dynn_Gorjancic" + "dynn_Rogic" + "dynn_Prekmurjec" + "dynn_Goricko" + "dynn_Halozec" + "dynn_Kozjakec" + "dynn_Kozjansko" + "dynn_Dravec" + "dynn_Mura" + "dynn_Raba" + "dynn_Dravinja" + "dynn_Krka" + "dynn_Sava" + "dynn_Idrija" + "dynn_Bohinjec" + "dynn_Soca" + "dynn_Vipavec" + "dynn_Planinec" + "dynn_Hribovec" + "dynn_Panterec" + "dynn_Creniv" + "dynn_Rdeciv" + "dynn_Modriv" + "dynn_Beliv" + "dynn_Rumeniv" + "dynn_Zeleniv" + } + + dynasty_names = { + "dynn_Furlan" + "dynn_Golob" + "dynn_Korosec" + "dynn_Kos" + "dynn_Krajnc" + "dynn_Kirzman" + "dynn_Medved" + "dynn_Mlakar" + "dynn_Potocnik" + "dynn_Jelen" + "dynn_Kragel" + "dynn_Orel" + "dynn_Vran" + "dynn_Senica" + "dynn_Grabec" + "dynn_Cuk" + "dynn_Sova" + "dynn_Volk" + "dynn_Volcic" + "dynn_Lisjak" + "dynn_Jazbec" + "dynn_Zajc" + "dynn_Kosuta" + "dynn_Petelin" + "dynn_Macek" + "dynn_Phorjec" + "dynn_Bohorec" + "dynn_Karavankec" + "dynn_Gorjancic" + "dynn_Rogic" + "dynn_Prekmurjec" + "dynn_Goricko" + "dynn_Halozec" + "dynn_Kozjakec" + "dynn_Kozjansko" + "dynn_Dravec" + "dynn_Mura" + "dynn_Raba" + "dynn_Dravinja" + "dynn_Krka" + "dynn_Sava" + "dynn_Idrija" + "dynn_Bohinjec" + "dynn_Soca" + "dynn_Vipavec" + "dynn_Planinec" + "dynn_Hribovec" + "dynn_Panterec" + "dynn_Creniv" + "dynn_Rdeciv" + "dynn_Modriv" + "dynn_Beliv" + "dynn_Rumeniv" + "dynn_Zeleniv" + } + + male_names = { + Bedoslav Bogdan Bogomir Borislav Borut Branimir Budislav Ceh Cerno Cestimir Cheitmar Chezil Cholo Cuk Dalibor Dobroslav Domicjan Domislav Drago Dragomir Dragoslav + Etgar Gojimir Gojmir Golob Golomir Gorazd Grabec Hoten Hotimir Hraber Hrvat Inko Ivko Izeslav Izbor Jans Jaroslav Jazbec Jelen Jurk + Kadalhoh Kajtimar Kazimir Kos Kosuta Kragel Kuono Lastigoj Lenart Lisjak Liuzo Ljuban Ljubotin Ljudevit Lupa + Macek Majoran Malej Maligoj Medved Mesko Milan Milislav Milivoj Milobrat Miran Miroslav Mojmir Mistislav + Nadovid Negomir Nezko Nikola Obren Omisl Orel Petanko Petelin Plas Plasl Predoslav Pribic Pribimir Pribislav Prodan Radan Radigoj Radomir Radovan Ratzo Ruodo + Samo Sebimir Semil Semislav Senica Sigo Sizo Slavko Sobodin Sova Srecan Stanislav Stanko Stojan Stojko Stojmir Svetko Svetomir Svetoslav Svobodin + Tihomir Tomislav Trebin Trebimir Uncat Unislav + Vecerin Venceslav Venko Vetko Vladan Valhun Valtunk Valuk Vidojko Vitan Vitomir Vladimir Vladislav Vladko Vojnomir Volcic Vran Vratislav + Walto Wezil Zajc Zdebor Zdeslav Zlatko Zlatoslav Ztoimar Zverko + } + female_names = { + Alena Anna Antonia Barbora Belica Berta Blagica Bogdana Bogumila Boguslava Bojana Brajna Bratrica Bratina Ctislava + Danica Darja Deva Dejana Dobrava Dobromila Dobroslava Domaslava Dominika Dorota Doubravka Draga Dragica Dragoslava Eva + Gertruda Godeslava Gostinja Govica Gradislava Granislava Guta Hana Hedvika Helena Hodka Irena Iva Ivana + Jagoda Jana Janja Jaroslava Jasna Jelena Jelenka Jitka Johanka Judita Justina Kazimira Kalina Kosana + Ladana Lazica Lepa Lilijana Ljubica Ljubonega Ljuboslava Ljubota Ljuta Ljutica Ludmila + Magdalena Maja Malina Malinka Manidraga Maria Mica Mila Milena Miljana Mira Mirjana Mislena Neda Nedeljka Negota Novica + Odola Olga Pacemira Pavica Pavla Perchta Petra Petrissa Predobra Pribina Pribislava Pribislavka Prodana + Rada Radana Radka Radojka Rajka Radonja Rejna Richeza Richsa Romana + Sava Semika Skonka Slava Smiljana Sobemisla Stana Stanila Stanislava Stanka Stislava Stojana Stojna Svatava Svetoslava + Tunca Tunza Vilana Viola Vladislava Vlasta Vojslava Zdenka Zlatkoka Zleslava Zorana Zorka Zverinja Zverica Zverka Zvezdana + } + + dynasty_of_location_prefix = "dynnp_of" + + + + mercenary_names = { + { name = "mercenary_company_band_of_the_panther" } + { name = "mercenary_company_hammerbearers" } + { name = "mercenary_company_carantanian_white_cloaks" } + } +} diff --git a/common/culture/name_lists/NEOW_basque.txt b/common/culture/name_lists/NEOW_basque.txt index a7287bcf..7efa52cd 100644 --- a/common/culture/name_lists/NEOW_basque.txt +++ b/common/culture/name_lists/NEOW_basque.txt @@ -351,6 +351,10 @@ } } dynasty_of_location_prefix = "dynnp_de" + + patronym_suffix_male = "dynnpat_suf_itz" + patronym_suffix_female = "dynnpat_suf_itz" + always_use_patronym = yes # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. pat_grf_name_chance = 60 diff --git a/common/culture/name_lists/NEOW_beur.txt b/common/culture/name_lists/NEOW_beur.txt index 57c4068e..9e288511 100644 --- a/common/culture/name_lists/NEOW_beur.txt +++ b/common/culture/name_lists/NEOW_beur.txt @@ -230,7 +230,7 @@ Abdelaziz Abdelghafour Abdelhafid Abdelhakim Abdelkader Abdelkarim Abdelkrim Abdellatif Abdelmona_i_uml_m Abdelwahab Abderrahman Abderrahmane Aboubakeur Adam Adel Ahmad Ahmed Ali Amadou Amar Amine Amir Anouar Anziz Assa_a_hat_d Aymen Aziz Azzedine B_e_act_chir Badroudine Bassem Belkacem Bilal Borhene Boualem Boubaker Boumedienne Brahim Camel Chahir Cheikh Chems-Eddine - Daby Dalil Daysam Dehmaine Diallo Djamel Djeidi Driss + Daby Dalil Daysam Dehmaine Diallo Djamel Djeidi Djibril Driss Elamine Faouzi Far_e_grv_s Farid Fatsah Faudel Ferrid Fethi Foued Fu_pst_ad Ghaleb diff --git a/common/culture/name_lists/NEOW_brandenburger.txt b/common/culture/name_lists/NEOW_brandenburger.txt index 689ce65a..7bf2f5a8 100644 --- a/common/culture/name_lists/NEOW_brandenburger.txt +++ b/common/culture/name_lists/NEOW_brandenburger.txt @@ -238,7 +238,7 @@ Dagobert Daniel Danny Denis Detlev Eberhardt Eckehard Edgar Edmund Eduard Edwin Egbert Egon Emil Enrico Eric Erik Eugen Fabian Falk Falko Felix Florian Frank-Michael Franz Friedel Friedemann Frieder Friedrich-Wilhelm - G_o_uml_tz Gerald Gerhart Gernot Gerold Gordon Gotthard Guido Gunnar Gunther Gustav + G_o_uml_tz Gerald Gerhart Gernot Gerold Gordon Gotthard Gregor Guido Gunnar Gunther Gustav Hagen Hannes Hans-Christian Hans-Dietrich Hans-J_o_uml_rg Hans-Martin Hans-Peter Hardy Hartwig Heiner Heinrich Henry Heinz-Dieter Helge Helmuth Hendrik Henning Henryk Hubert Hugo J_o_uml_rn Jan Jens-Uwe Jochen Johann Johannes John Josef Julius Karl-Friedrich Karlheinz Kersten Kevin Knut Konrad diff --git a/common/culture/name_lists/NEOW_brittannic.txt b/common/culture/name_lists/NEOW_brittannic.txt index 8d747821..ee1523a6 100644 --- a/common/culture/name_lists/NEOW_brittannic.txt +++ b/common/culture/name_lists/NEOW_brittannic.txt @@ -31,17 +31,93 @@ { "dynn_Lymyllyygh" } { "dynn_Korhnoallyngton" } { "dynn_Pythgomyrhy" } + { "dynn_Ddovyr" } + { "dynn_Kantyrbury" } + { "dynn_Roshystyr" } + { "dynn_Hastyngs" } + { "dynn_Lywys" } + { "dynn_Takahashy" } + { "dynn_Suzwky" } + { "dynn_Watanaby" } + { "dynn_Brombyksddon" } + { "dynn_Londdon" } + { "dynn_Soufwark" } + { "dynn_Wystmynstyr } + { "dynn_Ealyng } + { "dynn_Hyllyngddon } + { "dynn_Arun } + { "dynn_Shyshystyr } + { "dynn_Guylddffordd } + { "dynn_Wokyng } + { "dynn_Soufyndd_on_Sya } + { "dynn_Kolshystyr } + { "dynn_Saffron_Walddyn } + { "dynn_Hyrtffordd } + { "dynn_Styfynagy } + { "dynn_Watffordd } + { "dynn_Lwton } + { "dynn_Byddffordd } + { "dynn_Ampthyll } + { "dynn_Norfampton } + { "dynn_Braklyy } + { "dynn_Kyttyryng } + { "dynn_Covyntrhy } + { "dynn_Warhwyc } + { "dynn_Byrhmyngham } + { "dynn_Brhomsgrhofy } + { "dynn_Worhcystyrh } + { "dynn_Cyddyrhmynstyrh } + { "dynn_Strhowdd } + { "dynn_Gloucystyrh } + { "dynn_Lyddburhy } + { "dynn_Hyrhyfforhdd } + { "dynn_Lyomynstyrh } + { "dynn_Nywporht } + { "dynn_Abyrhgafynny } + { "dynn_Luddlow } + { "dynn_Wystburhy } + { "dynn_Tylfforhdd } + { "dynn_Shrhywsburhy } + { "dynn_Wrycsham } + { "dynn_Ddynbygh } + { "dynn_Conwy } + { "dynn_Swaddlynkoty } + { "dynn_Dyrby } + { "dynn_Glossop" } + { "dynn_Stafforhdd" } + { "dynn_Gnosall" } + { "dynn_Stocy_on_Trhynt" } + { "dynn_Maccllysffyylldd" } + { "dynn_Chystyr" } + { "dynn_Llyfyrpwll" } + { "dynn_Llancastyrh" } + { "dynn_Kenddail" } + { "dynn_Whitehaiven" } + { "dynn_Wigton" } + { "dynn_Cairlisle" } + { "dynn_Ainnain" } + { "dynn_Ddumfries" } + { "dynn_Bigair" } + { "dynn_Lainairk" } + { "dynn_Sainquhair" } + { "dynn_Girvain" } + { "dynn_Maibole" } + { "dynn_Air" } + { "dynn_Irvine" } + { "dynn_Ddumbairton" } + { "dynn_Glaisgow" } + } dynasty_names = { - { "dynn_Grhysllyy" } - { "dynn_Kharhdd" } - { "dynn_Ddurhnforhdd" } - { "dynn_Shyps" } - { "dynn_Byrhgamot" } - { "dynn_Toynyng" } - { "dynn_Iddlly" } - { "dynn_Pallyn" } + { "dynn_Grhysllyy" } + { "dynn_Kharhdd" } + { "dynn_Ddurhnforhdd" } + { "dynn_Shypston" } + { "dynn_Byrhgamot" } + { "dynn_Toynyng" } + { "dynn_Iddlly" } + { "dynn_Pallyn" } { "dynn_Jonsyrhrhy" } { "dynn_Watyrhhousy" } { "dynn_Shaftoy" } @@ -64,28 +140,103 @@ { "dynn_Lymyllyygh" } { "dynn_Korhnoallyngton" } { "dynn_Pythgomyrhy" } + { "dynn_Ddovyr" } + { "dynn_Kantyrbury" } + { "dynn_Roshystyr" } + { "dynn_Hastyngs" } + { "dynn_Lywys" } + { "dynn_Takahashy" } + { "dynn_Suzwky" } + { "dynn_Watanaby" } + { "dynn_Brombyksddon" } + { "dynn_Londdon" } + { "dynn_Soufwark" } + { "dynn_Wystmynstyr } + { "dynn_Ealyng } + { "dynn_Hyllyngddon } + { "dynn_Arun } + { "dynn_Shyshystyr } + { "dynn_Guylddffordd } + { "dynn_Wokyng } + { "dynn_Soufyndd_on_Sya } + { "dynn_Kolshystyr } + { "dynn_Saffron_Walddyn } + { "dynn_Hyrtffordd } + { "dynn_Styfynagy } + { "dynn_Watffordd } + { "dynn_Lwton } + { "dynn_Byddffordd } + { "dynn_Ampthyll } + { "dynn_Norfampton } + { "dynn_Braklyy } + { "dynn_Kyttyryng } + { "dynn_Covyntrhy } + { "dynn_Warhwyc } + { "dynn_Byrhmyngham } + { "dynn_Brhomsgrhofy } + { "dynn_Worhcystyrh } + { "dynn_Cyddyrhmynstyrh } + { "dynn_Strhowdd } + { "dynn_Gloucystyrh } + { "dynn_Lyddburhy } + { "dynn_Hyrhyfforhdd } + { "dynn_Lyomynstyrh } + { "dynn_Nywporht } + { "dynn_Abyrhgafynny } + { "dynn_Luddlow } + { "dynn_Wystburhy } + { "dynn_Tylfforhdd } + { "dynn_Shrhywsburhy } + { "dynn_Wrycsham } + { "dynn_Ddynbygh } + { "dynn_Conwy } + { "dynn_Swaddlynkoty } + { "dynn_Dyrby } + { "dynn_Glossop" } + { "dynn_Stafforhdd" } + { "dynn_Gnosall" } + { "dynn_Stocy_on_Trhynt" } + { "dynn_Maccllysffyylldd" } + { "dynn_Chystyr" } + { "dynn_Llyfyrpwll" } + { "dynn_Llancastyrh" } + { "dynn_Kenddail" } + { "dynn_Whitehaiven" } + { "dynn_Wigton" } + { "dynn_Cairlisle" } + { "dynn_Ainnain" } + { "dynn_Ddumfries" } + { "dynn_Bigair" } + { "dynn_Lainairk" } + { "dynn_Sainquhair" } + { "dynn_Girvain" } + { "dynn_Maibole" } + { "dynn_Air" } + { "dynn_Irvine" } + { "dynn_Ddumbairton" } + { "dynn_Glaisgow" } } male_names = { - Aarav Aaron Abnyr Addam Addvyf Alan Albyrt Alffrydd Algyrnon Aly Alyks Alyksanddyr Ambrosyws Anddryw Anfony Arfur Arkyballdd Arnolldd Awgustws + Aarav Aaron Abnyr Addam Addvyf Akhynatyn Alan Albyrt Alffrydd Algyrnon Aly Alyks Alyksanddyr Ambrosyws Amynhotyp Anddryw Anfony Arfur Arkyballdd Arnolldd Awgustws Bahyr Balddwyn Basynzhabu Branddon Bryan Byddywyyry Bykyt Bynjamyn Byntlyy Ddanyyl Ddaryus Ddawyydd Ddhrwvan Ddwmynyk Ddyvansh Eaddrydd Eaddwyg Eddgar Eddmundd Eddwardd Efan Elyan Elywt Eryk - Ffaddyl Fflambardd Fflytshyr Ffransys Ffryddyryk Ffulk Ffylyp Ffynnlay + Ffaddyl Fflambardd Fflytshyr Ffransys Ffryddyryk Ffulk Ffylyp Ffynnlay Fwtmosy Fyoddory Galahadd Garyf Gawayn Gorddon Grygory Guy Gylbyrt Gylddas Gyoffryy Gyorgy Gyraldd Gyraynt - Haoyw Haroan Haroldd Haryf Hasan Hayddyn Hugh Humffryy Hyktor Hynry Hyrbyrt - Ibrahym Iddrys Iddwallwn Isaak Ishmayl Isylmo + Hamlyt Haoyw Haroan Haroldd Haryf Hasan Hayddyn Horatyo Hugh Humffryy Hyktor Hynry Hyrbyrt + Ibrahym Iddrys Iddwallwn Ifanhoy Isaak Ishmayl Isylmo Jabyr Jak Jakob Jaky Jalyl Jamys Jamyy John Johnafan Jorddan Josh Joshua Josyff Justyn Jwy Jykyll Kallwm Kalwyyn Kamyron Kaska Kay Klymynt Konnor Koryy Kynfyn Kywyyn Lansylot Lawrynsy Loydd Luky Lwsyus Lyam Lylouk Lyonyl Lywys Lyy - Malyk Mark Martyn Matfyw Maurysy Muhamydd Myrlyn Myshayl + Makbef Malyk Mark Martyn Matfyw Maurysy Muhamydd Myrlyn Myshayl Nafanayl Nasyr Nathan Normyn Nyddardd Nyk Nynnyus Nysholas Nyvylly Palamyddys Patryk Patyl Paul Pyrsyval Pytyr Pyyrs - Rahyym Ralff Ramsay Robyrt Rogyr Ryan Rygynaldd Rykardd Ryofamus Ryshabh Rywal - Samuyl Samyr Sashary Sayn Shakrabarty Sharlys Shawrya Shrystoffyr Shyrlok Spynsyr Stanlyy Stuart Styffyn Symon Symraf_o_hat_n Syngh - Talyb Talyysyn Tony Trystan Tylyr + Rahyym Ralff Ramsay Ramyssys Robyrt Rogyr Ryan Rygynaldd Rykardd Ryofamus Ryshabh Rywal + Saladdyn Samuyl Samyr Sashary Sayn Shakrabarty Sharlys Shawrya Shrystoffyr Shyops Shyrlok Spynsyr Stanlyy Stuart Styffyn Symon Symraf_o_hat_n Syngh + Talyb Talyysyn Tony Trystan Twtankhamun Tylyr Ufyr Umar Uryyn Uways - Waltyr Wayn Wbyron Wktawyyus Wlywyyr Wrlanddo Wyalyryan Wyllyam Wynston + Waltyr Wayn Wbyron Wktawyyus Wlywyyr Wrlanddo Wyalyryan Wyllyam Wynston Wzymanddyas Yun_spc_Hyy Yya_spc_Wyy } female_names = { @@ -95,17 +246,17 @@ Eddyf Ela Elayny Elyanor Elyzabyf Emma Emyly Enya Enydd Fanvy Ffang Ffarrah Guynyvyry Gymma - Hannah Hawysy Haylyy Hazyl Holly Hyafyr + Hannah Hatshypswt Hawysy Haylyy Hazyl Holly Hyafyr Igrayny Isabyl Isabylla Iswlddy Jady Jany Jasmyn Jwan Jwdy Jwlyana Jyssyka Jyssyy - Kafyryny Karlotty Karyn Kasyy Katy Kaytlyn Kloy Konstanse Krystal Krystylyygh Ksyang Ksyn_spc_Yan Kyanna Kylly Kylsya Kylsyy Kymbyrly Kyryl Kyrys Kyryssy + Kafyryny Karlotty Karyn Kasyy Katy Kaytlyn Kloy Klyopatra Konstanse Krystal Krystylyygh Ksyang Ksyn_spc_Yan Kyanna Kylly Kylsya Kylsyy Kymbyrly Kyryl Kyrys Kyryssy Laura Lauryn Lowysy Lunyty Lusy Lusya Lyddya Lyzzyy Maddylyyny Maddyy Mahaut Malyka Margaryt Mary Matyldda Maudd Molly Mwrgyn Mygan Myllyy Mylyssa Myn Myng_spc_Yao Myrandda - Naomy Natasha Nazanyn Nymuy + Naomy Natasha Nazanyn Nyffyrtyty Nymuy Pytra Rashyl Rybykka Samanfa Sarah Shannon Shun Shyryyn Soffronya Soffy Styffanyy Summyr Susanna Sybylla Syryna Sysylya Sywan - Tamara Tylly + Tamara Tylly Tytanya Wynnyffrydd Wyyktorya Yasmyn Ysbayl } diff --git a/common/culture/name_lists/NEOW_danish.txt b/common/culture/name_lists/NEOW_danish.txt index c34be2e8..b0c74d25 100644 --- a/common/culture/name_lists/NEOW_danish.txt +++ b/common/culture/name_lists/NEOW_danish.txt @@ -328,6 +328,7 @@ patronym_suffix_male = "dynnpat_suf_sen" patronym_suffix_female = "dynnpat_suf_sdatter" + always_use_patronym = yes # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. pat_grf_name_chance = 60 diff --git a/common/culture/name_lists/NEOW_english.txt b/common/culture/name_lists/NEOW_english.txt index a75c0067..a90e4c74 100644 --- a/common/culture/name_lists/NEOW_english.txt +++ b/common/culture/name_lists/NEOW_english.txt @@ -209,19 +209,19 @@ name_list_NEOW_english = { male_names = { 10 = { Adam Adrian Alan Alex Alexander Andrew Anthony Arthur - Barry Benjamin Brian + Barry Bedivere Benjamin Brian Carl Charles Chris Christopher Colin Craig Daniel Darren David Dean Dennis Derek Edward Eric Ernest Frank Frederick - Gary Geoffrey George Gordon Graham + Galahad Gary Geoffrey George Gordon Graham Ian Jack James Jamie Jason John Jonathan Joseph Keith Kenneth Kevin - Luke + Lancelot Luke Malcolm Mark Martin Matthew Michael Mohammed Neil Nicholas Nick Nigel Norman - Patrick Paul Peter Philip + Palamedes Patrick Paul Percival Peter Philip Raymond Richard Robert Roger Ronald Roy Sam Samuel Scott Sean Shaun Simon Stephen Steven Stuart Terence Terry Thomas Tim Timothy Tony Trevor @@ -261,13 +261,13 @@ name_list_NEOW_english = { Hall Hamish Hamo Hamzah Harrison Hayden Hector Hercules Heywood Horatio Hubert Humphrey Jayden Jesse Jocelin Jonah Jonas Julien Karim Keir Kirpal - Lancelot Leopold Linvoy + Leopold Linvoy Malachi Merlin Milo Moray Morris Myles Nevil Noah Oluwatosin Oswald - Patteson Percival Piers + Patteson Piers Randolph Raphael Reece Reuben Rocky Rudyard - Sacha Segar Seth Sholto Simeon + Sacha Saladin Segar Seth Sholto Simeon Tavis Theodore Tiarnan Tyler Tyri Tyrone Tyrrell Valentine Viddal Whitney Wilfrid Wyndham diff --git a/common/culture/name_lists/NEOW_french.txt b/common/culture/name_lists/NEOW_french.txt index 8e77e4e2..c011e8de 100644 --- a/common/culture/name_lists/NEOW_french.txt +++ b/common/culture/name_lists/NEOW_french.txt @@ -230,20 +230,20 @@ Jeanvaljean J-T-Maston Jules-C_e_act_sar K_i_act_li Legolas Lidenbrock - Mablung Maedhros Meriadoc Minastir Moli_e_grv_re Montaigne Montesquieu Morrel Myriel + Mablung Maedhros Meriadoc Meursault Minastir Moli_e_grv_re Montaigne Montesquieu Morrel Myriel N_e_act_mo Ned-Land Nicholl Nivacrin Num_e_act_robis Ob_e_act_lix Ocatarinetabellatchitchix Ol_o_act_rin Orodreth Orophin Ostoher Paladin Pallando Panoramix Passepartout Pencroff Peregr_i_uml_n Phileas-Fogg Phoebus Pontmercy Porthos Quasimodo Radagast Robur Roheryn Samsagace Spirou Sylvebarbe - T_u_act_rin Th_e_act_oden Th_e_act_odred Thengel Thingol Thorgal Thorin Thorondor Thr_a_act_in Thr_o_act_r Thranduil Tintin Tom-Bombadil Tr_e_act_ville Tuor Turgon + T_u_act_rin Tarrou Th_e_act_oden Th_e_act_odred Thengel Thingol Thorgal Thorin Thorondor Thr_a_act_in Thr_o_act_r Thranduil Tintin Tom-Bombadil Tr_e_act_ville Tuor Turgon Valacar Voltaire Zola ### Normal names _E_act_douard _E_act_mile _E_act_ric _E_act_tienne - Adrien Aimery Alain Albert Alexandre Alexis Alphonse Am_e_act_d_e_act_e Amaury Andr_e_act_ Anthony Antoine Antonin Arnaud Arthur Axel + Adrien Aimery Alain Albert Alexandre Alexis Alphonse Am_e_act_d_e_act_e Amaury Andr_e_act_ Anthony Antoine Antonin Armand Arnaud Arthur Axel B_e_act_renger Barth_e_act_l_e_act_my Baudouin Benjamin Beno_i_hat_t Bernard Bertrand Blaise Bruno C_e_act_dric C_e_act_sar Camille Charles Christian Christophe Cl_e_act_ment Claude_male Clotaire Clovis Damien Daniel David Denis Didier Dimitri Dominique_male @@ -252,7 +252,7 @@ G_e_act_rald G_e_act_rard Gabriel Gaspard Gaston Gauthier Geoffroy Georges Gilbert Gilles Godefroy Guillaume Guy Hector Henri Herbert Herv_e_act_ Hugo J_e_act_r_e_act_my J_e_act_r_o_hat_me Jacques Jacques-Yves Jean Jean-Baptiste Jean-Claude Jean-Luc Jean-Paul Jean-Pierre Jo_e_uml_l Joseph Jules Julien - K_e_act_vin + K_e_act_vin Kl_e_act_ber L_e_act_o L_e_act_on L_e_act_onard Laurent Lilian Louis Luc Lucas Lucien Ludovic Marc Marcel Marius Mathieu Mathis Maurice Maxime Michel Mohamed Mohammed Napol_e_act_on Nathan Nicolas Norbert Norman @@ -262,6 +262,7 @@ Raoul Rapha_e_uml_l Raymond Ren_e_act_ Renaud Richard Roland Robert Robin Roger Romain S_e_act_bastien Saladin Salomon Serge Simon St_e_act_phane Swann Sylvain Tanguy Th_e_act_o Thez Thibault Thierry Thomas Timoth_e_act_e Tristan + Ulysse Vercing_e_act_torix Victor Vincent Xavier Yves @@ -293,22 +294,22 @@ _E_grv_ve Ad_e_act_la_i_uml_de Ad_e_grv_le Adeline Agathe Agn_e_grv_s Albertine Ali_e_act_nor Alice Alix Am_e_act_lie Ana_i_uml_s Anastasie Andr_e_act_e Anne Anne-Laure Anne-Marie Anne-Sophie Annick Annie Antoinette Ariane Audrey Aur_e_act_lie Aurore B_e_act_reng_e_grv_re Beno_i_hat_te Bernadette Blanche Brigitte - C_e_act_cile C_e_act_line Camille_female Carole Caroline Catherine Chantal Charl_e_grv_ne Charlotte Chlo_e_act_ Christelle Christiane Christine Claire Claudette Claudine Clorinde Clotilde Colette Constance Corinne + C_e_act_cile C_e_act_line Camille_female Carole Caroline Catherine Chantal Charl_e_grv_ne Charlotte Chlo_e_act_ Christelle Christiane Christine Claire Clarisse Claudette Claudine Clorinde Clotilde Colette Constance Corinne Danielle Delphine Denise Diane Dominique_female Emma Emmanuelle Estelle Eug_e_act_nie Fanny Fatima Fiona Florence Fran_c_ced_oise Gabrielle Georgette Germaine Ginette Gis_e_grv_le Gwendoline H_e_act_l_e_grv_ne H_e_act_lo_i_uml_se Henriette Hermine Isabelle - Jacqueline Jade Jeanette Jeanne Jeanne-d_pst_Arc Jeannine Jos_e_act_phine Josette Josiane Judith Julie Julienne Juliette Justine + Jacqueline Jade Jeanette Jeanne Jeanne-d_pst_Arc Jeannine Jocelyne Jos_e_act_phine Josette Josiane Judith Julie Julienne Juliette Justine Karine L_ae_titia L_e_act_a Laetitia Laura Laure Laurence Louise Lucie Lucienne M_e_act_gane M_e_act_lanie Madeleine Manon Marcelle Margaux Margot Marguerite Maria Marie Marie-Antoinette Marie-Claire Marie-France Marie-Louise Marie-Th_e_act_r_e_grv_se Marine Marion Martine Mathilde Mich_e_grv_le Mireille Monique Nadia Nadine Nathalie Nicole - Odette + Odette Oph_e_act_lie Patricia Paulette Pauline R_i_act_an Raymonde Ren_e_act_e Rose Roselyne - S_e_act_gol_e_grv_ne Sandrine Sarah Simone Sol_e_grv_ne Sonia Sophie St_e_act_phanie Suzanne Sybille Sylvie + S_e_act_gol_e_grv_ne Sandrine Sarah Simone Sol_e_grv_ne Solange Sonia Sophie St_e_act_phanie Suzanne Sybille Sylvie Th_e_act_r_e_grv_se V_e_act_ronique Val_e_act_rie Virginie Yseult Yvette Yvonne diff --git a/common/culture/name_lists/NEOW_goidelic.txt b/common/culture/name_lists/NEOW_goidelic.txt index e1500eba..ca9be065 100644 --- a/common/culture/name_lists/NEOW_goidelic.txt +++ b/common/culture/name_lists/NEOW_goidelic.txt @@ -1,103 +1,103 @@ name_list_neow_goidelic = { cadet_dynasty_names = { - { "dynnp_o" "dynn_Sullivan" } - { "dynn_Murphy" } - { "dynn_Kelly" } - { "dynn_Walsh" } - { "dynn_Smith" } - { "dynnp_o" "dynn_Brien" } + { "dynn_Brennan" } { "dynn_Byrne" } - { "dynn_Ryan" } - { "dynnp_o" "dynn_Connor" } - { "dynnp_o" "dynn_Neill" } - { "dynnp_o" "dynn_Reilly" } - { "dynn_Doyle" } - { "dynn_Gallagher" } - { "dynnp_o" "dynn_Doherty" } - { "dynn_Kennedy" } - { "dynn_Lynch" } - { "dynn_Murray" } - { "dynn_Quinn" } - { "dynnp_o" "dynn_Moore" } - { "dynnp_mac" "dynn_Loughlin" } - { "dynnp_o" "dynn_Carroll" } + { "dynn_Collins" } { "dynn_Connolly" } { "dynn_Daly" } - { "dynnp_o" "dynn_Connell" } + { "dynn_Doyle" } { "dynn_Dunne" } - { "dynn_Brennan" } - { "dynn_Collins" } - { "dynnp_o" "dynn_Farrell" } - { "dynnp_o" "dynn_Callaghan" } - { "dynnp_o" "dynn_Donnell" } - { "dynnp_o" "dynn_Shea" } - { "dynn_Fitzgerald" } { "dynn_Fitzbutler" } + { "dynn_Fitzgerald" } { "dynn_Fitzgibbon" } { "dynn_Fitzgilbert" } { "dynn_Fitzharris" } { "dynn_Fitzpatrick" } { "dynn_Fitzwilliams" } - { "dynnp_mac" "dynn_Carthy" } - { "dynnp_mac" "dynn_William" } - { "dynnp_mac" "dynn_Queen" } - { "dynnp_mac" "dynn_Thaoig" } - { "dynnp_mac" "dynn_Ruaraidh" } - { "dynnp_mac" "dynn_Leod" } - { "dynnp_mac" "dynn_Lean" } - { "dynnp_mac" "dynn_Gillmore" } + { "dynn_Gallagher" } + { "dynn_Kelly" } + { "dynn_Kennedy" } + { "dynn_Lynch" } + { "dynn_Murphy" } + { "dynn_Murray" } + { "dynn_Quinn" } + { "dynn_Ryan" } { "dynn_Sinclair" } + { "dynn_Smith" } + { "dynn_Walsh" } + { "dynnp_Mac" "dynn_Carthy" } + { "dynnp_Mac" "dynn_Gillmore" } + { "dynnp_Mac" "dynn_Lean" } + { "dynnp_Mac" "dynn_Leod" } + { "dynnp_Mac" "dynn_Loughlin" } + { "dynnp_Mac" "dynn_Queen" } + { "dynnp_Mac" "dynn_Ruaraidh" } + { "dynnp_Mac" "dynn_Thaoig" } + { "dynnp_Mac" "dynn_William" } + { "dynnp_O_pst_" "dynn_Brien" } + { "dynnp_O_pst_" "dynn_Callaghan" } + { "dynnp_O_pst_" "dynn_Carroll" } + { "dynnp_O_pst_" "dynn_Connell" } + { "dynnp_O_pst_" "dynn_Connor" } + { "dynnp_O_pst_" "dynn_Doherty" } + { "dynnp_O_pst_" "dynn_Donnell" } + { "dynnp_O_pst_" "dynn_Farrell" } + { "dynnp_O_pst_" "dynn_Moore" } + { "dynnp_O_pst_" "dynn_Neill" } + { "dynnp_O_pst_" "dynn_Reilly" } + { "dynnp_O_pst_" "dynn_Shea" } + { "dynnp_O_pst_" "dynn_Sullivan" } } dynasty_names = { - { "dynnp_o" "dynn_Sullivan" } - { "dynn_Murphy" } - { "dynn_Kelly" } - { "dynn_Walsh" } - { "dynn_Smith" } - { "dynnp_o" "dynn_Brien" } + { "dynn_Brennan" } { "dynn_Byrne" } - { "dynn_Ryan" } - { "dynnp_o" "dynn_Connor" } - { "dynnp_o" "dynn_Neill" } - { "dynnp_o" "dynn_Reilly" } - { "dynn_Doyle" } - { "dynn_Gallagher" } - { "dynnp_o" "dynn_Doherty" } - { "dynn_Kennedy" } - { "dynn_Lynch" } - { "dynn_Murray" } - { "dynn_Quinn" } - { "dynnp_o" "dynn_Moore" } - { "dynnp_mac" "dynn_Loughlin" } - { "dynnp_o" "dynn_Carroll" } + { "dynn_Collins" } { "dynn_Connolly" } { "dynn_Daly" } - { "dynnp_o" "dynn_Connell" } + { "dynn_Doyle" } { "dynn_Dunne" } - { "dynn_Brennan" } - { "dynn_Collins" } - { "dynnp_o" "dynn_Farrell" } - { "dynnp_o" "dynn_Callaghan" } - { "dynnp_o" "dynn_Donnell" } - { "dynnp_o" "dynn_Shea" } - { "dynn_Fitzgerald" } { "dynn_Fitzbutler" } + { "dynn_Fitzgerald" } { "dynn_Fitzgibbon" } { "dynn_Fitzgilbert" } { "dynn_Fitzharris" } { "dynn_Fitzpatrick" } { "dynn_Fitzwilliams" } - { "dynnp_mac" "dynn_Carthy" } - { "dynnp_mac" "dynn_William" } - { "dynnp_mac" "dynn_Queen" } - { "dynnp_mac" "dynn_Thaoig" } - { "dynnp_mac" "dynn_Ruaraidh" } - { "dynnp_mac" "dynn_Leod" } - { "dynnp_mac" "dynn_Lean" } - { "dynnp_mac" "dynn_Gillmore" } + { "dynn_Gallagher" } + { "dynn_Kelly" } + { "dynn_Kennedy" } + { "dynn_Lynch" } + { "dynn_Murphy" } + { "dynn_Murray" } + { "dynn_Quinn" } + { "dynn_Ryan" } { "dynn_Sinclair" } + { "dynn_Smith" } + { "dynn_Walsh" } + { "dynnp_Mac" "dynn_Carthy" } + { "dynnp_Mac" "dynn_Gillmore" } + { "dynnp_Mac" "dynn_Lean" } + { "dynnp_Mac" "dynn_Leod" } + { "dynnp_Mac" "dynn_Loughlin" } + { "dynnp_Mac" "dynn_Queen" } + { "dynnp_Mac" "dynn_Ruaraidh" } + { "dynnp_Mac" "dynn_Thaoig" } + { "dynnp_Mac" "dynn_William" } + { "dynnp_O_pst_" "dynn_Brien" } + { "dynnp_O_pst_" "dynn_Callaghan" } + { "dynnp_O_pst_" "dynn_Carroll" } + { "dynnp_O_pst_" "dynn_Connell" } + { "dynnp_O_pst_" "dynn_Connor" } + { "dynnp_O_pst_" "dynn_Doherty" } + { "dynnp_O_pst_" "dynn_Donnell" } + { "dynnp_O_pst_" "dynn_Farrell" } + { "dynnp_O_pst_" "dynn_Moore" } + { "dynnp_O_pst_" "dynn_Neill" } + { "dynnp_O_pst_" "dynn_Reilly" } + { "dynnp_O_pst_" "dynn_Shea" } + { "dynnp_O_pst_" "dynn_Sullivan" } } male_names = { #add name equivalencies to this later | also need to add some british asian names later @@ -112,14 +112,14 @@ Ian Jack Jacob James Seán Jonathan Joseph Julian Keegan Kevin Kean - Laurence Liam Lugh_Lugus Lochlan Lorchan Lucas - Magnus Malachi Maol Mark Murphy Martin Matthew Maurice Michael + Laurence Liam Lugh Lochlan Lorchan Lucas + Macbeth Magnus Malachi Maol Mark Murphy Martin Matthew Maurice Michael Niall Nicolas Norman Oliver Owen Oscar Patrick Paul Peter Pearse Quentin - Robert Ronan Ross_Ross Raymond Roderick Rory_Roderick - Samuel Sebastian_Sebastian Simon Stuart Stephen + Robert Ronan Ross Raymond Roderick Rory + Samuel Sebastian Simon Stuart Stephen Teague Tiarnan Thomas Turlough Walter William Zachary @@ -134,12 +134,12 @@ Gloria Grace Gráinne Granuaile Jennifer Jessica Joanne Josephine Katie Kelly - Lisa Laura_Laura - Macha Maebh Mary_Mary Margaret Maureen Monica + Lisa Laura + Macha Maebh Mary Margaret Maureen Monica Niamh Nora Olivia Oonagh Oona Orla Rachel Rebecca Regina Rosa Rosaleen - Sadhbh Saoirse Sarah Shannon Sinead Siobhán Stephanie Susan_Susan + Sadhbh Saoirse Sarah Shannon Sinead Siobhán Stephanie Susan Tara Una Vera Veronica Victoria @@ -172,103 +172,103 @@ name_list_NEOW_scottish = { cadet_dynasty_names = { - { "dynn_Dunbar" } - { "dynn_Soderland" } - { "dynn_Ferguson" } + { "dynn_Baird" } + { "dynn_Boyd" } { "dynn_Brodie" } + { "dynn_Bruce" } + { "dynn_Callaghan" } + { "dynn_Campbell" } + { "dynn_Carnegie" } + { "dynn_Carroll" } + { "dynn_Cumming" } + { "dynn_Cunningham" } + { "dynn_Doherty" } + { "dynn_Donnell" } + { "dynn_Drummond" } + { "dynn_Dunbar" } { "dynn_Erskine" } - { "dynn_Grant" } - { "dynn_Gordon" } - { "dynnp_mac" "dynn_Kintosh" } + { "dynn_Ferguson" } + { "dynn_Forbes" } { "dynn_Fraser" } + { "dynn_Gordon" } + { "dynn_Graham" } + { "dynn_Grant" } + { "dynn_Hay" } + { "dynn_Johnson" } + { "dynn_Keith" } + { "dynn_Kennedy" } + { "dynn_Kerr" } + { "dynn_Leslie" } + { "dynn_Lindsay" } + { "dynn_Loughlin" } + { "dynn_Montgomery" } + { "dynn_Moore" } + { "dynn_Murray" } { "dynn_Neill" } { "dynn_Reilly" } - { "dynn_Hay" } - { "dynn_Keith" } - { "dynn_Doherty" } - { "dynn_Leslie" } - { "dynn_Forbes" } - { "dynn_Swinton" } - { "dynn_Lindsay" } - { "dynn_Moore" } - { "dynn_Loughlin" } - { "dynn_Carroll" } - { "dynn_Carnegie" } - { "dynnp_mac" "dynn_Thomas" } - { "dynnp_mac" "dynn_Duff" } - { "dynn_Campbell" } { "dynn_Ruthven" } - { "dynn_Kennedy" } - { "dynn_Murray" } - { "dynn_Callaghan" } - { "dynn_Donnell" } { "dynn_Shea" } - { "dynn_Drummond" } - { "dynnp_mac" "dynn_Laren" } - { "dynn_Spalding" } - { "dynn_Graham" } - { "dynn_Bruce" } - { "dynn_Cumming" } - { "dynn_Baird" } - { "dynn_Montgomery" } - { "dynn_Cunningham" } - { "dynn_Boyd" } - { "dynn_Johnson" } - { "dynn_Kerr" } - { "dynnp_mac" "dynn_Leod" } - { "dynnp_mac" "dynn_Lean" } - { "dynnp_mac" "dynn_Gillmore" } { "dynn_Sinclair" } + { "dynn_Soderland" } + { "dynn_Spalding" } + { "dynn_Swinton" } + { "dynnp_mac" "dynn_Duff" } + { "dynnp_mac" "dynn_Gillmore" } + { "dynnp_mac" "dynn_Kintosh" } + { "dynnp_mac" "dynn_Laren" } + { "dynnp_mac" "dynn_Lean" } + { "dynnp_mac" "dynn_Leod" } + { "dynnp_mac" "dynn_Thomas" } } dynasty_names = { - { "dynn_Dunbar" } - { "dynn_Soderland" } - { "dynn_Ferguson" } + { "dynn_Baird" } + { "dynn_Boyd" } { "dynn_Brodie" } + { "dynn_Bruce" } + { "dynn_Callaghan" } + { "dynn_Campbell" } + { "dynn_Carnegie" } + { "dynn_Carroll" } + { "dynn_Cumming" } + { "dynn_Cunningham" } + { "dynn_Doherty" } + { "dynn_Donnell" } + { "dynn_Drummond" } + { "dynn_Dunbar" } { "dynn_Erskine" } - { "dynn_Grant" } - { "dynn_Gordon" } - { "dynnp_mac" "dynn_Kintosh" } + { "dynn_Ferguson" } + { "dynn_Forbes" } { "dynn_Fraser" } + { "dynn_Gordon" } + { "dynn_Graham" } + { "dynn_Grant" } + { "dynn_Hay" } + { "dynn_Johnson" } + { "dynn_Keith" } + { "dynn_Kennedy" } + { "dynn_Kerr" } + { "dynn_Leslie" } + { "dynn_Lindsay" } + { "dynn_Loughlin" } + { "dynn_Montgomery" } + { "dynn_Moore" } + { "dynn_Murray" } { "dynn_Neill" } { "dynn_Reilly" } - { "dynn_Hay" } - { "dynn_Keith" } - { "dynn_Doherty" } - { "dynn_Leslie" } - { "dynn_Forbes" } - { "dynn_Swinton" } - { "dynn_Lindsay" } - { "dynn_Moore" } - { "dynn_Loughlin" } - { "dynn_Carroll" } - { "dynn_Carnegie" } - { "dynnp_mac" "dynn_Thomas" } - { "dynnp_mac" "dynn_Duff" } - { "dynn_Campbell" } { "dynn_Ruthven" } - { "dynn_Kennedy" } - { "dynn_Murray" } - { "dynn_Callaghan" } - { "dynn_Donnell" } { "dynn_Shea" } - { "dynn_Drummond" } - { "dynnp_mac" "dynn_Laren" } - { "dynn_Spalding" } - { "dynn_Graham" } - { "dynn_Bruce" } - { "dynn_Cumming" } - { "dynn_Baird" } - { "dynn_Montgomery" } - { "dynn_Cunningham" } - { "dynn_Boyd" } - { "dynn_Johnson" } - { "dynn_Kerr" } - { "dynnp_mac" "dynn_Leod" } - { "dynnp_mac" "dynn_Lean" } - { "dynnp_mac" "dynn_Gillmore" } { "dynn_Sinclair" } + { "dynn_Soderland" } + { "dynn_Spalding" } + { "dynn_Swinton" } + { "dynnp_mac" "dynn_Duff" } + { "dynnp_mac" "dynn_Gillmore" } + { "dynnp_mac" "dynn_Kintosh" } + { "dynnp_mac" "dynn_Laren" } + { "dynnp_mac" "dynn_Lean" } + { "dynnp_mac" "dynn_Leod" } + { "dynnp_mac" "dynn_Thomas" } } male_names = { #add name equivalencies to this later | also need to add some british asian names later @@ -364,6 +364,7 @@ name_list_NEOW_scottish = { Louis Luke + Macbeth Malcolm Mark Martin diff --git a/common/culture/name_lists/NEOW_kurdish.txt b/common/culture/name_lists/NEOW_kurdish.txt new file mode 100644 index 00000000..73934625 --- /dev/null +++ b/common/culture/name_lists/NEOW_kurdish.txt @@ -0,0 +1,25 @@ +name_list_NEOW_kurdish_wip = { + + cadet_dynasty_names = { + } + + dynasty_names = { + } + + male_names = { + Deng_i_hat_r + } + female_names = { + Berf_i_hat_n + } + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 60 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 60 + mother_name_chance = 10 +} diff --git a/common/culture/name_lists/NEOW_normaund.txt b/common/culture/name_lists/NEOW_normaund.txt index 71c49557..0793c8d1 100644 --- a/common/culture/name_lists/NEOW_normaund.txt +++ b/common/culture/name_lists/NEOW_normaund.txt @@ -282,20 +282,20 @@ Jeanvaljean J-T-Maston Jules-C_e_act_sar K_i_act_li Legolas Lidenbrock - Mablung Maedhros Meriadoc Minastir Moli_e_grv_re Montaigne Montesquieu Morrel Myriel + Mablung Maedhros Meriadoc Meursault Minastir Moli_e_grv_re Montaigne Montesquieu Morrel Myriel N_e_act_mo Ned-Land Nicholl Nivacrin Num_e_act_robis Ob_e_act_lix Ocatarinetabellatchitchix Ol_o_act_rin Orodreth Orophin Ostoher Paladin Pallando Panoramix Passepartout Pencroff Peregr_i_uml_n Phileas-Fogg Phoebus Pontmercy Porthos Quasimodo Radagast Robur Roheryn Samsagace Spirou Sylvebarbe - T_u_act_rin Th_e_act_oden Th_e_act_odred Thengel Thingol Thorgal Thorin Thorondor Thr_a_act_in Thr_o_act_r Thranduil Tintin Tom-Bombadil Tr_e_act_ville Tuor Turgon + T_u_act_rin Tarrou Th_e_act_oden Th_e_act_odred Thengel Thingol Thorgal Thorin Thorondor Thr_a_act_in Thr_o_act_r Thranduil Tintin Tom-Bombadil Tr_e_act_ville Tuor Turgon Valacar Voltaire Zola ### Normal names _E_act_douard _E_act_mile _E_act_ric _E_act_tienne - Adrien Aimery Alain Albert Alexandre Alexis Alphonse Am_e_act_d_e_act_e Amaury Andr_e_act_ Anthony Antoine Antonin Arnaud Arthur Axel + Adrien Aimery Alain Albert Alexandre Alexis Alphonse Am_e_act_d_e_act_e Amaury Andr_e_act_ Anthony Antoine Antonin Armand Arnaud Arthur Axel B_e_act_renger Barth_e_act_l_e_act_my Baudouin Benjamin Beno_i_hat_t Bernard Bertrand Blaise Bruno C_e_act_dric C_e_act_sar Camille Charles Christian Christophe Cl_e_act_ment Claude_male Clotaire Clovis Damien Daniel David Denis Didier Dimitri Dominique_male @@ -304,7 +304,7 @@ G_e_act_rald G_e_act_rard Gabriel Gaspard Gaston Gauthier Geoffroy Georges Gilbert Gilles Godefroy Guillaume Guy Hector Henri Herbert Herv_e_act_ Hugo J_e_act_r_e_act_my J_e_act_r_o_hat_me Jacques Jacques-Yves Jean Jean-Baptiste Jean-Claude Jean-Luc Jean-Paul Jean-Pierre Jo_e_uml_l Joseph Jules Julien - K_e_act_vin + K_e_act_vin Kl_e_act_ber L_e_act_o Laurent L_e_act_on L_e_act_onard Lilian Louis Luc Lucas Lucien Ludovic Marc Marcel Marius Mathieu Mathis Maurice Maxime Michel Mohamed Mohammed Napol_e_act_on Nathan Nicolas Norbert Norman @@ -314,6 +314,7 @@ Raoul Rapha_e_uml_l Raymond Ren_e_act_ Renaud Richard Roland Robert Robin Roger Romain S_e_act_bastien Saladin Salomon Sam Serge Simon St_e_act_phane Swann Sylvain Tanguy Th_e_act_o Thez Thibault Thierry Thomas Timoth_e_act_e Tristan + Ulysse Vercing_e_act_torix Victor Vincent Xavier Yves @@ -345,22 +346,22 @@ _E_grv_ve Ad_e_act_la_i_uml_de Ad_e_grv_le Adeline Agathe Agn_e_grv_s Albertine Ali_e_act_nor Alice Alix Am_e_act_lie Ana_i_uml_s Anastasie Andr_e_act_e Anne Anne-Laure Anne-Marie Anne-Sophie Annick Annie Antoinette Ariane Audrey Aur_e_act_lie Aurore B_e_act_reng_e_grv_re Beno_i_hat_te Bernadette Blanche Brigitte - C_e_act_cile C_e_act_line Camille_female Carole Caroline Catherine Chantal Charl_e_grv_ne Charlotte Chlo_e_act_ Christelle Christiane Christine Claire Claudette Claudine Clorinde Clotilde Colette Constance Corinne + C_e_act_cile C_e_act_line Camille_female Carole Caroline Catherine Chantal Charl_e_grv_ne Charlotte Chlo_e_act_ Christelle Christiane Christine Claire Clarisse Claudette Claudine Clorinde Clotilde Colette Constance Corinne Danielle Delphine Denise Diane Dominique_female Emma Emmanuelle Estelle Eug_e_act_nie Fanny Fatima Fiona Florence Fran_c_ced_oise Gabrielle Georgette Germaine Ginette Gis_e_grv_le Gwendoline H_e_act_l_e_grv_ne H_e_act_lo_i_uml_se Henriette Hermine Isabelle - Jacqueline Jade Jeanette Jeanne Jeanne-d_pst_Arc Jeannine Jos_e_act_phine Josette Josiane Judith Julie Julienne Juliette Justine + Jacqueline Jade Jeanette Jeanne Jeanne-d_pst_Arc Jeannine Jocelyne Jos_e_act_phine Josette Josiane Judith Julie Julienne Juliette Justine Karine L_ae_titia L_e_act_a Laetitia Laura Laure Laurence Louise Lucie Lucienne M_e_act_gane M_e_act_lanie Madeleine Manon Marcelle Margaux Margot Marguerite Maria Marie Marie-Antoinette Marie-Claire Marie-France Marie-Louise Marie-Th_e_act_r_e_grv_se Marine Marion Martine Mathilde Mich_e_grv_le Mireille Monique Nadia Nadine Nathalie Nicole - Odette + Odette Oph_e_act_lie Patricia Paulette Pauline R_i_act_an Raymonde Ren_e_act_e Rose Roselyne - S_e_act_gol_e_grv_ne Sandrine Sarah Simone Sol_e_grv_ne Sonia Sophie St_e_act_phanie Suzanne Sybille Sylvie + S_e_act_gol_e_grv_ne Sandrine Sarah Simone Sol_e_grv_ne Solange Sonia Sophie St_e_act_phanie Suzanne Sybille Sylvie Th_e_act_r_e_grv_se V_e_act_ronique Val_e_act_rie Virginie Yseult Yvette Yvonne diff --git a/common/culture/name_lists/NEOW_norwegian.txt b/common/culture/name_lists/NEOW_norwegian.txt index f332adcc..416998e6 100644 --- a/common/culture/name_lists/NEOW_norwegian.txt +++ b/common/culture/name_lists/NEOW_norwegian.txt @@ -331,6 +331,7 @@ patronym_suffix_male = "dynnpat_suf_sen" patronym_suffix_female = "dynnpat_suf_sdatter" + always_use_patronym = yes # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. pat_grf_name_chance = 60 diff --git a/common/culture/name_lists/NEOW_palatine.txt b/common/culture/name_lists/NEOW_palatine.txt new file mode 100644 index 00000000..0c6f3b05 --- /dev/null +++ b/common/culture/name_lists/NEOW_palatine.txt @@ -0,0 +1,240 @@ +name_list_palatine = { + + cadet_dynasty_names = { + "dynn_Schmitz" + "dynn_Becker" + "dynn_Schneider" + "dynn_Schmidt" + "dynn_Klein" + "dynn_Meyer" + "dynn_Weber" + "dynn_Schulte" + "dynn_Fischer" + "dynn_Peters" + "dynn_Eiermann" + "dynn_Ohlinger" + "dynn_Franck" + "dynn_Wander" + "dynn_Endesfelder" + "dynn_Riehm" + "dynn_Scharping" + "dynn_Saftig" + "dynn_Klasen" + "dynn_Bengsch" + "dynn_Grillmeier" + { "dynnp_von" "dynn_Preysing" } + "dynn_Hergenr_o_ther" + "dynn_Schade" + "dynn_P_u_tz" + "dynn_Dockweiler" + "dynn_Kohler" + { "dynnp_von" "dynn_Kleve" } + "dynn_Gross" + "dynn_Rupp" + "dynn_Wagner" + "dynn_Sch_a_uml_fer" + "dynn_Schwarz" + "dynn_Scherer" + "dynn_Braun" + "dynn_Backes" + "dynn_Kr_a_mer" + "dynn_Koch" + "dynn_Herrmann" + "dynn_Ziegler" + "dynn_Recktenwald" + "dynn_Hofmann" + "dynn_Kaiser" + "dynn_Schulz" + "dynn_Fuchs" + "dynn_Baumann" + "dynn_Haas" + "dynn_Jahn" + "dynn_Bonzel" + } + + dynasty_names = { + "dynn_Schmitz" + "dynn_Becker" + "dynn_Schneider" + "dynn_Schmidt" + "dynn_Klein" + "dynn_Meyer" + "dynn_Weber" + "dynn_Schulte" + "dynn_Fischer" + "dynn_Peters" + "dynn_Eiermann" + "dynn_Ohlinger" + "dynn_Franck" + "dynn_Wander" + "dynn_Endesfelder" + "dynn_Riehm" + "dynn_Scharping" + "dynn_Saftig" + "dynn_Klasen" + "dynn_Bengsch" + "dynn_Grillmeier" + { "dynnp_von" "dynn_Preysing" } + "dynn_Hergenr_o_ther" + "dynn_Schade" + "dynn_P_u_tz" + "dynn_Dockweiler" + "dynn_Kohler" + { "dynnp_von" "dynn_Kleve" } + "dynn_Gross" + "dynn_Rupp" + "dynn_Wagner" + "dynn_Sch_a_uml_fer" + "dynn_Schwarz" + "dynn_Scherer" + "dynn_Braun" + "dynn_Backes" + "dynn_Kr_a_mer" + "dynn_Koch" + "dynn_Herrmann" + "dynn_Ziegler" + "dynn_Recktenwald" + "dynn_Hofmann" + "dynn_Kaiser" + "dynn_Schulz" + "dynn_Fuchs" + "dynn_Baumann" + "dynn_Haas" + "dynn_Jahn" + "dynn_Bonzel" + } + + male_names = { + 3 = { + Andreas Anselmo Albrecht Artur + Bernd-Dieter Bruno Benno Bodo + Carl + Detlef Dieter Dietrich + El_i_as Erwin Erhard Eduard + Franziskus Friedrich Fritz Ferdinand + G_u_uml_nter Georg-Ludwig Gottschalk Gerhard G_o_uml_tz + Hans-Werner Helmut Hans-Heinrich Holger Hartmut Hans-G_u_nter Hans-J_o_uml_rg + Karl-Heinz Klaus-Dieter + Matthias Marcus + Norbert Nikolaus + Tobias Theodor Timo + Otmar Oskar + Ulrich Uwe + R_u_uml_diger Raimund Raphael + Lutz Lutwin Leonhard Lukas + Jochen + Willibald Wolfram + } + 2 = { + Amand Achim Armin Anton + Bertolt Burkhard + Christfried + Darrell Dagmar + Eugen Erich Edwin Eberhard + Franz-Josef Franz-Rudolf + Gottfried Gisbert Guntram + Herbert Hans-Josef Heinz Hermann Hans-Peter Hugo Karl-Ludwig Hans-Otto + Karl-Hans Kurt-Julius Konrad-Graf + Siegmund + } + 1 = { + Adalbert Alois Alfons Arnold + Benedikt Bernard + Dominic + Engelbert + Gotthilf Gottlieb + Hans-Georg Herward Hans-J_u_uml_rgen Hans-Joachim Hans-Walter Heiko + Klaus Kurt + Rudolf Reinhold + Lowell Lorenz Lothar Leo + Johann-Baptist J_u_uml_rgen Julius + Paulus + Rainer Roman + Sebastian Siegbert + Valentin + Wilfried Wendelin + } + } + female_names = { + 3 = { + Adele Anneliese Anne Anette + B_a_uml_rbel Beate Bianca + Christa Christiane Charlotte Corinna + Daniela + Elke Elfriede Eva Elena Eleonore Emil Eveline + Friedel Frieda Friederike + Gisela Gretel Gabriela + Hildegard Hilde Heidemarie Heiderose + Irmgard Ilse Irma Irina + Jutta Johanna Janine Josefa + Katharina Klaudia Kristina + Margit Marlene Mathilde Magdalena Marie-Luise Marie-Theresa + Waltraud Wilma + Rita Rose-Marie Regina + Liselotte Lydia Liane + Sandra Stefanie Silke Sieglinde + Theresa Tina Thea + Vera Vanessa Veronika + Patricia + } + 2 = { + Anja Anita Alexandra Antonia Annegret + Brunhilde Beatrix Bernadette + Carmen Cornelia Christina Caroline + Diana Dorothea + Erika Edith Ellen Evelin Edeltraut Ella + Frida + Gabriele Gabi Gerda Gertraud + Hannelore Helene Heide Henriette + Irene Iris Ina + Josefine Juliane Jeanette + K_a_uml_the Karoline Kornelia + Natalie + Mechthild Marcel Margrit Marie-Magdalena + Wiebke + Ottilie + Ulrike Ursula + Michaela Marliese Marita + Verena Viktoria + Pia Pauline + Renate Ruth Ramona + Liesel Laura Lisa Lina Lotte + Silvia Sonja Sibylle Sofie + Zita + } + 1 = { + Angelika Annemarie Anne-Rose Angelika + Babette Britta + Carina Carol-Ann Constanze + Doris + Erna Else Edeltraud Eva-Maria Edelgard Evelyn + Heidrun Herta Hanna Hilda + Ilona Isolde Ilka + Martina Margareta Magda Manuela + Rosi Rosina + Luise Lieselotte Lucia Linda + Nicole Nadine + Marta Marie Margarethe + Tanja + Judith Jessica + Katja Karola + Ute Uschi Ulla + Yvonne + } + } + dynasty_of_location_prefix = "dynnp_von" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 60 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 60 + mother_name_chance = 10 + + + mercenary_names = { + } +} diff --git a/common/culture/name_lists/NEOW_portuguese.txt b/common/culture/name_lists/NEOW_portuguese.txt index b67e427f..249da29f 100644 --- a/common/culture/name_lists/NEOW_portuguese.txt +++ b/common/culture/name_lists/NEOW_portuguese.txt @@ -1,50 +1,342 @@ -name_list_portuguese_wip = { +name_list_portuguese = { cadet_dynasty_names = { + "dynn_Abranches" + "dynn_Alves" + "dynn_Antunes" + "dynn_Ara_u_act_jo" + "dynn_Barbosa" + "dynn_Barradas" + "dynn_Cabral" + "dynn_Cardoso" + "dynn_Castro" + "dynn_Coelho" + "dynn_Correia" + "dynn_Cruz" + { "dynnp_da" "dynn_Costa" } + { "dynnp_da" "dynn_Cunha" } + { "dynnp_da" "dynn_Mota" } + { "dynnp_da" "dynn_Palma" } + { "dynnp_da" "dynn_Silva" } + { "dynnp_de" "dynn_Abreu" } + { "dynnp_de" "dynn_Almeida" } + { "dynnp_de" "dynn_Azevedo" } + { "dynnp_de" "dynn_Bettencourt" } + { "dynnp_de" "dynn_Carvalho" } + { "dynnp_de" "dynn_Faria" } + { "dynnp_de" "dynn_Figueiredo" } + { "dynnp_de" "dynn_Freitas" } + { "dynnp_de" "dynn_Jesus" } + { "dynnp_de" "dynn_Lencastre" } + { "dynnp_de" "dynn_Matos" } + { "dynnp_de" "dynn_Melo" } + { "dynnp_de" "dynn_Morais" } + { "dynnp_de" "dynn_Oliveira" } + { "dynnp_de" "dynn_Santana" } + { "dynnp_de" "dynn_Sousa" } + { "dynnp_de" "dynn_Vasconcelos" } + { "dynnp_do" "dynn_Ros_a_act_rio" } + { "dynnp_do" "dynn_Sacramento" } + "dynn_Domingues" + "dynn_Dourado" + "dynn_Esteves" + "dynn_Fernandes" + "dynn_Ferr_a_tld_o" + "dynn_Ferreira" + "dynn_Fonseca" + "dynn_Freire" + "dynn_Galv_a_tld_o" + "dynn_Godinho" + "dynn_Gomes" + "dynn_Gon_c_ced_alves" + "dynn_Gorj_a_tld_o" + "dynn_Goulart" + "dynn_Gra_c_ced_a" + "dynn_Guerreiro" + "dynn_Leal" + "dynn_Lopes" + "dynn_Louren_c_ced_o" + "dynn_Lowndes" + "dynn_Machado" + "dynn_Magro" + "dynn_Maia" + "dynn_Marques" + "dynn_Martins" + "dynn_Meireles" + "dynn_Mendes" + "dynn_Monteiro" + "dynn_Moreira" + "dynn_Neto" + "dynn_Neves" + "dynn_Nobre" + "dynn_Nunes" + "dynn_P_e_hat_go" + "dynn_Pacheco" + "dynn_Pato" + "dynn_Pedroso" + "dynn_Pereira" + "dynn_Pinto" + "dynn_Pires" + "dynn_Piteira" + "dynn_Queiroz" + "dynn_Quintanilha" + "dynn_Ramos" + "dynn_Raposo" + "dynn_Rebelo" + "dynn_Reis" + "dynn_Ribeiro" + "dynn_Rocha" + "dynn_Rodrigues" + "dynn_Sabino" + "dynn_Salvador" + "dynn_Santos" + "dynn_Sequeira" + "dynn_Sim_o_tld_es" + "dynn_Soares" + "dynn_Tavares" + "dynn_Teixeira" + "dynn_Teles" + "dynn_Valverde" + "dynn_Varela" + "dynn_Vieira" + "dynn_Viseu" + "dynn_Vitoriano" } dynasty_names = { + "dynn_Abranches" + "dynn_Alves" + "dynn_Antunes" + "dynn_Ara_u_act_jo" + "dynn_Barbosa" + "dynn_Barradas" + "dynn_Cabral" + "dynn_Cardoso" + "dynn_Castro" + "dynn_Coelho" + "dynn_Correia" + "dynn_Cruz" + { "dynnp_da" "dynn_Costa" } + { "dynnp_da" "dynn_Cunha" } + { "dynnp_da" "dynn_Mota" } + { "dynnp_da" "dynn_Palma" } { "dynnp_da" "dynn_Silva" } + { "dynnp_de" "dynn_Abreu" } + { "dynnp_de" "dynn_Almeida" } + { "dynnp_de" "dynn_Azevedo" } + { "dynnp_de" "dynn_Bettencourt" } + { "dynnp_de" "dynn_Carvalho" } + { "dynnp_de" "dynn_Faria" } + { "dynnp_de" "dynn_Figueiredo" } + { "dynnp_de" "dynn_Freitas" } + { "dynnp_de" "dynn_Jesus" } + { "dynnp_de" "dynn_Lencastre" } + { "dynnp_de" "dynn_Matos" } + { "dynnp_de" "dynn_Melo" } + { "dynnp_de" "dynn_Morais" } + { "dynnp_de" "dynn_Oliveira" } + { "dynnp_de" "dynn_Santana" } + { "dynnp_de" "dynn_Sousa" } + { "dynnp_de" "dynn_Vasconcelos" } + { "dynnp_do" "dynn_Ros_a_act_rio" } + { "dynnp_do" "dynn_Sacramento" } + "dynn_Domingues" + "dynn_Dourado" + "dynn_Esteves" + "dynn_Fernandes" + "dynn_Ferr_a_tld_o" "dynn_Ferreira" + "dynn_Fonseca" + "dynn_Freire" + "dynn_Galv_a_tld_o" + "dynn_Godinho" + "dynn_Gomes" + "dynn_Gon_c_ced_alves" + "dynn_Gorj_a_tld_o" + "dynn_Goulart" + "dynn_Gra_c_ced_a" + "dynn_Guerreiro" + "dynn_Leal" + "dynn_Lopes" + "dynn_Louren_c_ced_o" + "dynn_Lowndes" + "dynn_Machado" + "dynn_Magro" + "dynn_Maia" + "dynn_Marques" + "dynn_Martins" + "dynn_Meireles" + "dynn_Mendes" + "dynn_Monteiro" + "dynn_Moreira" + "dynn_Neto" + "dynn_Neves" + "dynn_Nobre" + "dynn_Nunes" + "dynn_P_e_hat_go" + "dynn_Pacheco" + "dynn_Pato" + "dynn_Pedroso" "dynn_Pereira" + "dynn_Pinto" + "dynn_Pires" + "dynn_Piteira" + "dynn_Queiroz" + "dynn_Quintanilha" + "dynn_Ramos" + "dynn_Raposo" + "dynn_Rebelo" + "dynn_Reis" + "dynn_Ribeiro" + "dynn_Rocha" + "dynn_Rodrigues" + "dynn_Sabino" + "dynn_Salvador" "dynn_Santos" + "dynn_Sequeira" + "dynn_Sim_o_tld_es" + "dynn_Soares" + "dynn_Tavares" + "dynn_Teixeira" + "dynn_Teles" + "dynn_Valverde" + "dynn_Varela" + "dynn_Vieira" + "dynn_Viseu" + "dynn_Vitoriano" } male_names = { 10 = { - Alberto Ant_o_act_nio + Alberto Alexandre Andr_e_act_ Ant_o_act_nio Armando Artur + Bruno Carlos - Duarte - Filipe Francisco - Jo_a_tld_o Jos_e_act_ + Daniel David Diogo Duarte + Eduardo + Fernando Filipe Francisco + Gon_c_ced_alo + H_e_act_lder Henrique Hugo + Jo_a_tld_o Joaquim Jorge Jos_e_act_ Lu_i_act_s - M_a_act_rio Manuel - Pedro - Rui + M_a_act_rio Manuel Marco Miguel + N_e_act_lson Nuno + Paulo Pedro + Ricardo Rui + S_e_act_rgio + Tiago + Vasco Victor } 5 = { _A_act_lvaro - Amadeu + _A_hat_ngelo + _O_act_scar + Ab_i_act_lio Abel Adelino Adriano Afonso Agostinho Albino Alfredo Am_e_act_rico Am_i_act_lcar Amadeu An_i_act_bal Arlindo Armindo Arnaldo Ascenso Augusto Avelino + Bernardo + C_e_act_sar Celso Cl_a_act_udio Cristiano + Dinis Domingos + Edgar Emanuel Ernesto Eurico + F_a_act_bio Frederico + Gil Gilberto Guilherme Gustavo + Hor_a_act_cio Humberto + Jaime Joel Juli_a_tld_o + Leandro Leonel Lino + Marcelo Marcos Marcus Mauro + Oct_a_act_vio Orlando + R_u_act_ben Ra_u_act_l Rafael Raul Renato Roberto Rodolfo Rodrigo Rog_e_act_rio + Sandro Sim_a_tld_o + Telmo Tom_a_act_s + V_i_act_tor Valdemar Valter Virg_i_act_lio } 1 = { + _E_act_lio + Ac_a_act_cio Ac_i_act_lio Ad_a_tld_o Ad_e_act_rito Adalberto Ademar Aires Al_i_act_pio Albano Alcides Alcino Ald_o_act_nio Alexandrino Almerindo Alo_i_act_sio Altino Am_a_hat_ndio Amadeo Amantino Amarino Amaro Anacleto Anast_a_act_cio Anat_o_act_lio Anselmo Ant_i_act_dio Antero Antonino Aquilino Aquino Arcanjo Aristides Arm_e_act_nio Armelim Ars_e_act_lio At_i_act_lio Aur_e_act_lio Aureo + B_a_act_rtolo Bas_i_act_lio Belarmino Belchior Belmiro Benjamim Bento Bernardino Berto + C_a_hat_ndido Caetano Camilo Casimiro Cipriano Cirilo Cris_o_act_stomo Crist_o_act_v_a_tld_o Cust_o_act_dio + D_e_act_nis Defensor Delfim Delmar Delmiro Diamantino Dimas Dion_i_act_sio Dorilo Dulcineo Durval + Edmundo El_i_act_sio El_o_act_i Eleut_e_act_rio Elton Em_i_act_dio Em_i_act_lio Est_e_hat_v_a_tld_o Eug_e_act_nio Eus_e_act_bio Evaristo + Fabian Fausto Feliciano Ferdinando Fidelino Firmino Fl_o_act_rido Flausino Flor_e_hat_ncio Florival + Garcia Germano Gaspar Gerv_a_act_sio Gilianes Gualter Guido + H_e_act_lio Heitor Heliodoro Herberto Herculano Herl_a_hat_nder Herm_i_act_nio Hermenegildo Hern_a_hat_ni Hil_a_act_rio Hip_o_act_lito Hon_o_act_rio + Idalino Idilberto Igor Il_i_act_dio Inoc_e_hat_ncio Isa_i_act_as Isidoro Isidro Ismael Ivan Ivo + J_u_act_lio Jacinto Janu_a_act_rio Jer_o_act_nimo Jesualdo Josu_e_act_ Justino Juvenal + L_u_act_cio Ladislau Laurentino Leonardo Liberal Lic_i_act_nio Lit_e_act_rio Louren_c_ced_o Luciano Ludgero Luiz + Manoel Marcelino Marcello Mariano Marino Martim Mateus Maur_i_act_cio Maximiano Melchior Milit_a_tld_o Mois_e_act_s + N_e_act_lio Nicolau Noah Norberto + Octaviano Ol_i_act_vio Olavo Olinto On_e_act_simo Orlandino Osvaldo Otelo Ov_i_act_dio + Parc_i_act_dio Pel_a_act_gio Pompeu Porf_i_act_rio + Raimundo Ramiro Reinaldo Rolando Romeu Ronaldo Ruy + S_i_act_lvio Sa_u_act_l Salvador Sebasti_a_tld_o Serafim Severiano Sid_o_act_nio Silv_e_act_rio Silvino Soeiro + Te_o_act_filo Teot_o_act_nio Tom_e_act_ Trist_a_tld_o + Ulisses Umberto Urbano + Valdemiro Valentim Verg_i_act_lio Vicente Vin_i_act_cius Viriato Vital Vitalino Vitorino } } female_names = { 10 = { - Alexandra + _A_hat_ngela + Alexandra Ana Anabela Andreia + C_a_act_tia C_e_act_lia Carla Carolina Catarina Cl_a_act_udia Clara Cristina + Daniela Diana + Elisabete Elsa + F_a_act_tima Fernanda Filipa Filomena + Helena + In_e_hat_s Isabel Joana - Maria - Sofia - Vanessa + Lu_i_act_sa Lurdes + M_o_act_nica Mafalda Manuela Margarida Maria Maria_spc_de_spc_F_a_act_tima Maria_spc_de_spc_Lurdes Mariana Marisa Marta + Patr_i_act_cia Paula + Raquel Rosa + S_i_act_lvia S_o_act_nia Sara Sofia Susana + Teresa + V_a_hat_nia Vanessa Vera + } 5 = { - Maria_spc_do_spc_Carmo + Adelaide Adriana Aida Alda Alice Am_e_act_lia Andrea Aurora + B_a_act_rbara Beatriz + C_a_hat_ndida Carina Carmen Carmo Cec_i_act_lia Celeste Concei_c_ced__a_tld_o + Deolinda Dora + Edite Eduarda Em_i_act_lia Ema Eug_e_act_nia + Gabriela Gl_o_act_ria Gra_c_ced_a + Ilda Irene Ivone + J_u_act_lia Judite + L_u_act_cia Lara Laura Leonor Lina + Madalena Magda Maria_spc_da_spc_Concei_c_ced__a_tld_o Maria_spc_da_spc_Gl_o_act_ria Maria_spc_da_spc_Gra_c_ced_a Maria_spc_do_spc_Carmo Maria_spc_do_spc_Ros_a_act_rio + N_a_act_dia Nat_a_act_lia + Odete Olga + Rafaela Regina Ros_a_act_rio + Soraia + Telma + Virg_i_act_nia } 1 = { - Carin + _U_act_rsula + Albina Alc_i_act_dia Aldemira Alexandrina Alma Am_a_act_lia Ang_e_act_lica Antonieta Apol_o_act_nia Assun_c_ced__a_tld_o Aur_e_act_lia + Bebiana Benvinda Bernardina Berta Branca + Carin Carlota Carmelina Carmelinda Carole Celestina Clarisse Cust_o_act_dia + D_a_act_lia Dinah + Elisa Elvira Elza Erc_i_act_lia Ermelinda Esmeralda Etelvina Eul_a_act_lia Eur_i_act_dice Evelina + Fab_i_act_ola + Georgette Gertrudes + H_e_act_lia Helga Helo_i_act_sa Herm_i_act_nia Hermenegildo + Id_a_act_lia Idalina Il_i_act_dia Isabela Isaura Isilda Ism_e_act_nia Ivete + Jamila Joacine Joaquina Joceline Josefa Josefina Jovita Judith Julieta + L_i_act_lia Laurinda Lourdes Lourdina Lu_i_act_za Ludovina + M_a_act_rcia Mar_i_act_lia Mara Maria_spc_da_spc_Luz Maria_spc_da_spc_Purifica_c_ced__a_tld_o Maria_spc_das_spc_Merc_e_hat_s Maria_spc_de_spc_Assun_c_ced__a_tld_o Maria_spc_de_spc_Bel_e_act_m Maria_spc_do_spc_C_e_act_u Maria_spc_do_spc_Pilar Maria_spc_Goreti Maria_spc_Jos_e_act_ Maria_spc_Salete Marina Martina Mary Matilda Merc_e_hat_s Mercedes Miquelina + N_i_act_vea Natalina Neuza Nilza + Of_e_act_lia Ol_i_act_mpia Olinda Or_i_act_sia Ot_i_act_lia + Palmira Patricia Pilar + Rita Romana Romualda Rosalina Rosette Rubina + Sandra Sarah Simone Sita Solange Stella + Violante + Wanda + Zita Zulmira } } - dynasty_of_location_prefix = "dynnp_of" + dynasty_of_location_prefix = "dynnp_de" + patronym_suffix_male = "dynnpat_suf_es" + patronym_suffix_female = "dynnpat_suf_es" + always_use_patronym = yes # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. pat_grf_name_chance = 50 diff --git a/common/culture/name_lists/NEOW_provencal.txt b/common/culture/name_lists/NEOW_provencal.txt index e947bec8..e802e6d6 100644 --- a/common/culture/name_lists/NEOW_provencal.txt +++ b/common/culture/name_lists/NEOW_provencal.txt @@ -352,7 +352,7 @@ } 5 = { _E_act_ug_e_grv_nio _E_grv_vo - Adriano Agato Agn_e_grv_s Albertino_female Alessio_female Alino Alis Am_e_grv_li Ana_i_uml_s Andriveto Aneto Ang_e_grv_lo_female Ano-Claro Ano-Lauro Ano-Liso Ano-Souf_i_grv_o Antouneto Arleto Aude Auroro + Adriano_female Agato Agn_e_grv_s Albertino_female Alessio_female Alino Alis Am_e_grv_li Ana_i_uml_s Andriveto Aneto Ang_e_grv_lo_female Ano-Claro Ano-Lauro Ano-Liso Ano-Souf_i_grv_o Antouneto Arleto Aude Auroro Beatris Benedito_female Berto_female Blanco_female Carleno_female Carmen Celi_a_grv_ Charloto Chichoueso Cindy Clarisso Clem_e_grv_nci Clementino_female Clou_e_grv_ Clourindo Cloutido Coural_i_grv_o Coustan_c_ced_o Cynthia Debora Diano Dourout_e_grv_io diff --git a/common/culture/name_lists/NEOW_prytoneg.txt b/common/culture/name_lists/NEOW_prytoneg.txt index e4d19368..7d0ce817 100644 --- a/common/culture/name_lists/NEOW_prytoneg.txt +++ b/common/culture/name_lists/NEOW_prytoneg.txt @@ -67,44 +67,44 @@ name_list_prytoneg = { } male_names = { #add name equivalencies to this later | heavily welshified english, add asian names - Aarhav Aarhon Aarhwsh Accolon Addam Addgarh Adrhyan Aeddan Agrhafyayn Ahmadd Ajaks Akhynaton Aksel Alan Alastayrh Albanactus Albus Albyrht Alddarhyon Alddorh_Aldroenus Alfrhyd Alyksandyrh Amanddyl Anarhyon Anddwcal Andrhyw Angus Ansylm Arhchgallo Arhfurh Arhnoldd Arhshyyr Arhthfoddo Arhthos Atanamyrh Atanatarh Aubrhyy - Baldrhyc Balyan Barhnabas Barhtly Blyyddwd Brhan Brhochfayl Brhunorh Brhwtus Brhyan Brhylan Brhynnyus Brhyog Byaufforht Bydyvyrhy Bylal - Caddcwal Caddwaladrh Caddwallon Caddwgan Calogrhynant Carhaddog Carhloman Caswallon Casym Caydd Charhlys Chrhystoffyrh Chylperhyc Colyn Conan Constantyny Corhyolanus Cydrhyc Cynddylw Cynddyyrhn Cynfarhch Cynffawr Cynffayl Cynffylyn Cyngarh Cyrhydyg Cywyn Cyyf + Aarhav Aarhon Aarhwsh Achynatyn Accolon Addam Addgarh Adrhyan Aeddan Agrhafyayn Ahmadd Ajaks Akhynaton Aksel Alan Alastayrh Albanactus Albus Albyrht Alddarhyon Alddorh_Aldroenus Alfrhyd Alyksandyrh Amanddyl Amynhotyp Anarhyon Anddwcal Andrhyw Angus Ansylm Arhchgallo Arhfurh Arhnoldd Arhshyyr Arhthfoddo Arhthos Atanamyrh Atanatarh Aubrhyy + Baldrhyc Balyan Barhnabas Barhtly Blyyddwd Brhan Brhochfayl Brhunorh Brhwtus Brhyan Brhylan Brhynnyus Brhyog Byaufforht Bydywyrhy Bylal + Caddcwal Caddwaladrh Caddwallon Caddwgan Calogrhynant Carhaddog Carhloman Caswallon Casym Caydd Charhlys Chrhystoffyrh Chylperhyc Chyops Colyn Conan Constantyny Corhyolanus Cydrhyc Cynddylw Cynddyyrhn Cynfarhch Cynffawr Cynffayl Cynffylyn Cyngarh Cyrhydyg Cywyn Cyyf Ddagobyrht Ddagonyt Ddarhyus Ddawyd Ddonaldd Ddorhyan Ddouglas Ddumnagual Ddylan Ddylrhoy Eaddsyg Eaddwald Eaddwarhd Ectorh Eddmundd Eddwyn Eddyrhn Efan Elrhos Elyan Emrhys Erhyc Eynyon - Ffrhagan Ffrhancys Ffrhobyshyrh Ffrhydyrhyc Ffrhyog Ffylyp Ffynyas Ffyrhgus Ffyrhmyn Ffyrhnffayl Ffyrhrhyks + Ffrhagan Ffrhancys Ffrhobyshyrh Ffrhydyrhyc Ffrhyog Ffylyp Ffynyas Ffyrhgus Ffyrhmyn Ffyrhnffayl Ffyrhrhyks Fwtmosy Fyoddorhy Gallahadd Gamon Gann Garhyf Godffrhyy Godwyn Gorhddon Grhyffyf Grhygorhy Grhyngolet Guy Gwrhyadd Gwyn Gylberht Gylddas Gylys Gyoffrhyy Gyorhgy Gyrhaldd Gyrhaynt - Hallatan Harholdd Harhpyrh Harhrhy Harhtnyll_Hartnell Hawylock Horhatyo Hugh Humfrhyy Hurhnddall Hyctorh Hyngyst Hyrham - Iddnyrhf Iddwal Inyrh Isaac Isambarhdd Ishmayl Isylmo + Hallatan Hamlyt Harholdd Harhpyrh Harhrhy Harhtnyll_Hartnell Hawylock Horhatyo Hugh Humfrhyy Hurhnddall Hyctorh Hyngyst Hyrham + Iddnyrhf Iddwal Ifanhoy Inyrh Isaac Isambarhdd Ishmayl Isylmo Jamys John Jonathan Jorhddan Josyff Julyan Julys Justyn Jycyll Lancylot Laurhyncy Locrhynus Lucan Lupus Lwcyus Lwddowyyc Lyonyl Lyu Lywarhch Lyyrh - Malcolm Malyc Mancsomy Marhc Marhmadduky Marhtyn Marhyus Matfyw Maurhycy Maylgwn Mohammydd Morhddrhydd Morhgan Mychayl Mylddrhyc Mymprhycyus Mynastyrh Myrhcurhy + Macbef Malcolm Malyc Mancsomy Marhc Marhmadduky Marhtyn Marhyus Matfyw Maurhycy Maylgwn Mohammydd Morhddrhydd Morhgan Mychayl Mylddrhyc Myrhlyn Mymprhycyus Mynastyrh Myrhcurhy Nafanyyl Narhmyrh Nasyrh Norhman Nycholas Nylson Nynnyaw Nynnyus Nyyptyon Padrhyg Palamyddys Palantyrh Paul Pellyas Pellynorhy Porhrhyks Pypyn Pyrh Pyrhcywyal Pytyrh - Rhalff Rhanddolff Rhobyn Rhobyrht Rhogyrh Rholandd Rhoman Rhonaldd Rhubyus Rhuddygorhy Rhudyarhdd Rhycharhdd Rhygby Rhygynaldd Rhyngo Rhywyallo - Sagrhamorhy Sahyd Samuyl Sayn Scafylock Scott Shyrhlock Sorhonto Spyky Styffyn Stynyan Sullywyan Surhyon Sylwystyrh Symon Symrhathon Sywyrhus - Tarhrhant Tegwyd Thaddyus Thyobaldd Thyoffylus Trhystan Tybyrhyus Tyygnmouf + Rhalff Rhamyssys Rhanddolff Rhobyn Rhobyrht Rhogyrh Rholandd Rhoman Rhonaldd Rhubyus Rhuddygorhy Rhudyarhdd Rhycharhdd Rhygby Rhygynaldd Rhyngo Rhywyallo + Sagrhamorhy Sahyd Saladdyn Samuyl Sayn Scafylock Scott Shyrhloc Sorhonto Spyky Styffyn Stynyan Sullywyan Surhyon Sylwystyrh Symon Symrhathon Sywyrhus + Tarhrhant Tegwyd Thaddyus Thyobaldd Thyoffylus Trhystan Twtanchamun Tybyrhyus Tyygnmouf Ufrh Urhyyn - Waltyrh Wayn Wbyrhon Wlywyyrh Wutgrhaby Wyalyrhyan Wyarhddamyrh Wyladd Wylbyrht Wyllyam Wynston Wyyctorh Wyyncynt Wyyysyy + Waltyrh Wayn Wbyrhon Wlywyyrh Wutgrhaby Wyalyrhyan Wyarhddamyrh Wyladd Wylbyrht Wyllyam Wynston Wyyctorh Wyyncynt Wyyysyy Wzymanddyas } female_names = { #add name equivalencies to this later | also need to add some british asian names later Abygayl Adda Addyla Addylayddy Affrhodyty Agnys Almarhyan Almyrha Alycy Amyce Ancalymy Angyla Anny Antoynytty Awylyny Blodwyn Boudyca Brhonwyn Byanca Byatrhyks - Carhon Cathyrhyny Catyy Charhytyy Chloy Clarha Clymyntyny Constancy Corhddylya Crhyyrhwy Cycylya Cynfya Cyyndrhych + Carhon Cathyrhyny Catyy Charhytyy Chloy Clarha Clymyntyny Clyopatrha Constancy Corhddylya Crhyyrhwy Cycylya Cynfya Cyyndrhych Ddahlya Ddorhofyy Ddyana Ddynysy Edyf Ela Elayny Elwyrha Elyanorh Elysabyf Emma Emylyy Enydd Esfyrh Euddorha Ewya Ffatymah Ffayy Fflyurh Ffoyby Ffrhancys_female Ffydylya Ffyllys Ffylomyna Ffylyppa Ffylyssa Ffyon Glorhyana Guynywyrhy Gwladdys Gwyffrhywy Gwyn Gwynddolyn Gwynhwyffar Gwynllyan Gyorhgya Gyrhalddyny - Hannah Hasyl Hawysy Hollyy Honorhya Horhtynsy Hylyna Hyrhmyony Hystyrh + Hannah Hasyl Hatshypswt Hawysy Hollyy Honorhya Horhtynsy Hylyna Hyrhmyony Hystyrh Iddrhyl Inddya Iorhyf Irhyny Isabyl Isabylla Isabylly Isyult Jany Joan Joanna Joanny Johanny Josyffyny Judyf Julyana Julyyt Jyssamyny Laurhyn Lorhrhayny Lowrhy Lucya Lunyty Lyah Lynorh Lyttycy Mahaut Marhgarhyt Marhoynna Marhya Marhyy Matyldda Mauddy Morhgana Mylddrhydd Myllycynt Myrhandda - Nya Nycoly Nygfyngaly Nymuy Nysta + Nya Nycoly Nyffyrhtyty Nygfyngaly Nymuy Nysta Patrhycya Prhuddyncy Pytrha Pytrhonya Rhachyl Rhonwyn Rhosyn Rhyan Rhyannon Rhygyna Samanfa Sarha Soffrhonya Susanny Sybyl Sylmarhyyn Sylwya Sylyna - Tangwystl Thyoddosya Tylpyrhyyn Tyrhysa + Tangwystl Thyoddosya Tylpyrhyyn Tyrhysa Tytanya Wlywyy Wyanymylddy Wyctorhya Wyna Wynnyffrhydd Wynus Wyrhtylyny Wywyana } dynasty_of_location_prefix = "dynnp_wff" diff --git a/common/culture/name_lists/NEOW_scouseg.txt b/common/culture/name_lists/NEOW_scouseg.txt index 61b69efc..1639aa76 100644 --- a/common/culture/name_lists/NEOW_scouseg.txt +++ b/common/culture/name_lists/NEOW_scouseg.txt @@ -67,45 +67,45 @@ name_list_scouseg = { } male_names = { #add name equivalencies to this later | northwestern brit, add indian names - Aarav Aaron Addam Addryan Addvyf Allan Allbyrt Allfrydd Allyksanddyr Allyystyr Anddryw Anfwny Archyballdd Archyr Arfur Arnolldd - Balldduyn Borys Branddon Bryan Byddyvyry Byllall Bynjamyn - Callum Callwyn Camyron Chacrabarty Charllys Chrystoffyr Cllymynt Cllywyy Collyn Cornyllyus Crayg Cyryll + Aarav Aaron Achynatyn Addam Addryan Addvyf Allan Allbyrt Allfrydd Allyksanddyr Allyystyr Amynhotyp Anddryw Anfwny Archyballdd Archyr Arfur Arnolldd + Balldduyn Borys Branddon Bryan Byddyfyry Byllall Bynjamyn + Callum Callwyn Camyron Chacrabarty Charllys Chrystoffyr Chyops Cllymynt Cllywyy Collyn Cornyllyus Crayg Cyryll Ddanyyll Ddavydd Ddhrwvan Ddomynyc Ddoryan Ddougllas Ddyan Ddynnys Ddyryk Ddyvansh Eddgar Eddmundd Eddwardd Ellton Ellyngton Ellyot Ernyst Erscyny Eryc Ewgyny - Ffabyan Ffllytchyr Ffordd Ffrancys Ffryddyryc Fyllyp + Ffabyan Ffllytchyr Ffordd Ffrancys Ffryddyryc Fwtmosy Fyllyp Fyoddory Gabryyll Garyf Gawyyn Gorddon Gryffyf Grygory Gylbyrt Gyoffryy Gyorgy Gyralldd Gyraynt - Haoyw Haroan Harolldd Haryf Hollddyn Hwgh Hwmffryy Hyctor Hynry Hyrbyrt - Ian Iddwall Isaac + Hamllyt Haoyw Haroan Harolldd Haryf Hollddyn Horatyo Hwgh Hwmffryy Hyctor Hynry Hyrbyrt + Ian Iddwall Ifanhoy Isaac Jac Jacob Jamys Jamyy Jarydd Jason John Jonafan Jorddan Joshua Josyff Jullys Justyn Jycyll Jyrymyah - Llauryncy Lloydd Llwcyus Llwky Llyam Llyllouch Llyon Llyonyll Llywys Llyy Llyyghton - Makswyll Mallyc Marc Martyn Matfyu Maurycy Mwradd Mychayll Mytchyll + Llancyllot Llauryncy Lloydd Llwcyus Llwky Llyam Llyllouch Llyon Llyonyll Llywys Llyy Llyyghton + Macbef Makswyll Mallyc Marc Martyn Matfyu Maurycy Mwradd Mychayll Myrllyn Mytchyll Nafan Nafanayll Nwrman Nyckwllas Nyddardd Nygyll Nyll Pallamyddys Patryc Patyll Paull Pyrcywyall Pyt Pytyr - Rahyym Rallff Ramsay Randdollff Raymwndd Robyrt Rogyr Roy Russyll Ryan Rychardd Rygynalldd Ryks Ryngo Ryshabh - Sachary Samuyll Shaun Shawrya Shyrlock Spyncyr Stanllyy Stuart Styffyn Symon Syngh - Tallory Tomas Trynt Tyllyr Tymofy Tyrry Tyryq + Rahyym Rallff Ramsay Ramyssys Randdollff Raymwndd Robyrt Rogyr Rollandd Roy Russyll Ryan Rychardd Rygynalldd Ryks Ryngo Ryshabh + Sachary Salladdyn Samuyll Shaun Shawrya Shyrlloc Spyncyr Stanllyy Stuart Styffyn Symon Syngh + Tallory Tomas Trynt Twtanchamun Tyllyr Tymofy Tyrry Tyryq Ufyr Umar Uryn - Walltyr Wayn Wctawyyus Wllywyyr Wyllyam Wynston Wyyncynt + Walltyr Wayn Wctawyyus Wbyron Wllywyyr Wyllyam Wynston Wyyncynt Wzymanddyas Yun_spc_Hyy Yya_spc_Wyy } female_names = { #add name equivalencies to this later | also need to add some british asian names later Abby Abygayll Addylla Addyllayddy Agnys Allycy Allyksanddra Ambyr Amy Anahyta Anny Arya Ashlly Awyllyny Bllanchy Bryddgyt Byafany Byatrycy - Cafyryny Caytllyn Charllotty Chlloy Chun Chyllsya Chyryll Chyryssy Constancy Crystall Cycyllya Cyjay + Cafyryny Caytllyn Charllotty Chlloy Chun Chyllsya Chyryll Chyryssy Cllyopatra Constancy Crystall Cycyllya Cyjay Ddanny Ddanylly Ddyya Eddyf Ela Ellayny Ellyanor Ellyzabyf Emma Emylly Enydd Ewya Fanvy Fayf Ffang Ffarrah Fyllypa Gracy Guynyvyry Gymma - Hannah Hayllyy Holly Hyafyr + Hannah Hatshypswt Hayllyy Holly Hyafyr Ioasmyn Ioryny Iosabyll Iosabylla Iosabylly Ioswlldy Jady Jany Jasmyn Jasmyny Joan Joanna Jullyana Jullyt Jwdy Jyan Jyssyca Jyssyy Ksyang Ksyn_spc_Yan Llaura Llauryn Llucy Llunyty Llyddya Llyzzyy Lwuysy Maddy Maddyllyny Mahaut Mallyca Margaryt Mary Matylldda Maudd Molly Mygan Myllyssa Myllyy Myn Myng_spc_Yao - Naomy Natasha Nazanyn Nymuy + Naomy Natasha Nazanyn Nyffyrtyty Nymuy Rachyll Rybycca Samanfa Sarah Shyryyn Soffy Styffanyy Summyr Susanna Sybylla Syryna - Tamara Tylly + Tamara Tylly Tytanya Wllywyya Wynnyfryd Wyyctwrya } dynasty_of_location_prefix = "dynnp_wff" diff --git a/common/culture/name_lists/NEOW_strafclideg.txt b/common/culture/name_lists/NEOW_strafclideg.txt index 8cdec457..8adbeb18 100644 --- a/common/culture/name_lists/NEOW_strafclideg.txt +++ b/common/culture/name_lists/NEOW_strafclideg.txt @@ -67,46 +67,46 @@ name_list_strafclideg = { } male_names = { #add name equivalencies to this later | scot brit - Aiddam Ailain Ailaistair Ailbert Ailfredd Ainddrew Ainslei Aintoni Airchibaildd Airnoldd Airron Airtur + Aiddam Aikenhaiten Ailain Ailaistair Ailbert Ailfredd Aimenhotep Ainddrew Ainslei Aintoni Airchibaildd Airnoldd Airron Airtur Benjaimin Boidd Brainddon Bruce - Cailgairi Caillum Cairlisle Cairrick Chairles Christopher Colin Craig + Cailgairi Caillum Cairlisle Cairrick Chairles Cheops Christopher Colin Craig Ddainiel Ddairius Ddaivid Ddennis Ddominic Ddonaild Ddouglais Dduncain Eddgair Eddmund Eddwaird Elliot Elphinstone Erik Eugene Fergus Forbes Fraincis Fraiser Fredderick - Gaivin Geoffrei George Geraildd Gilbert Glenn Gorddon Gregor - Hairoldd Henddri Herbert Hugh Humphrei - Iain Isaiaic Ishmaiel + Gailaihaidd Gaivin Geoffrei George Geraildd Gilbert Glenn Gorddon Gregor + Haimlet Hairoldd Henddri Herbert Horaito Hugh Humphrei + Iain Isaiaic Ishmaiel Ivainhoe Jaicob Jaimes John Jonaitain Jorddain Joseph Joshuai Juliain Kaileb Kaimeron Kaisim Keit Kelvin Kennet Kerr - Laiwrence Lennox Lewis Luke - Mailcolm Mairk Mairtin Maittew Michaiel Moier Monroe Morris + Laincelot Laiwrence Lennox Lewis Luke + Maicbet Mailcolm Mairk Mairtin Maittew Merlin Michaiel Moier Monroe Morris Naitainiel Neil Nicholais - Oliver Oscair - Paitrick Paiul Peter Philip - Railph Raimsai Reginaildd Reidd Richairdd Robert Rodderick Ross Roy - Saimuel Scott Simon Stainlei Stephen Stewairt Suterlaindd - Timoti Tomais Tristain + Oberon Oliver Oscair Ozimaiddiais + Pailaimeddes Paitrick Paiul Percivail Peter Philip + Railph Raimesses Raimsai Reginaildd Reidd Richairdd Robert Rodderick Ross Roy + Sailaiddin Saimuel Scott Simon Stainlei Stephen Stewairt Suterlaindd + Timoti Tomais Tristain Tutainkhaimun Tutmose Wailter Williaim Zaichairi } female_names = { #add name equivalencies to this later Aibbie Aibigail Aiddelai Aiddelaide Ailexsaindrai Ailice Aimber Ainne Aishlei Beaitani Beaitrice Biainca - Caiterine Caitlin Ceciliai Chairlotte Chelseai Cheril Cherisse Chloe Constaince Cristail + Caiterine Caitlin Ceciliai Chairlotte Chelseai Cheril Cherisse Chloe Cleopaitrai Constaince Cristail Ddainielle Ddainni Eddit Elai Eleainor Elizaibet Elspet Emili_female Emmai Gemmai - Haiilei Hainnaih Heaiter Holli + Haiilei Hainnaih Haitshepsut Heaiter Holli Isaibel Isaibellai Isaibelle Islai Jaidde Jaine Jaismin Jessicai Jessie Joain Joainnai Juddit Juliainai Kaisei Kaiterine Kaitrin Kelli Kelsei Kenzie Kimberli Laiurai Laiuren Liddiai Louise Luci Maiddeleine Mairgairet Mairi Maitildai Maiudd Megain Melissai Moirai Molli - Naiomi Naitailie + Naiomi Naitailie Nefertiti Paiulai Petrai Philippai Raichel Rebeccai Saimaintai Sairai Sairaih Serenai Sibillai Sophiai Stephainie - Taimairai + Taimairai Titainiai Veronicai Victoriai } dynasty_of_location_prefix = "dynnp_o" diff --git a/common/culture/name_lists/NEOW_swedish.txt b/common/culture/name_lists/NEOW_swedish.txt index c8395cba..56145e1f 100644 --- a/common/culture/name_lists/NEOW_swedish.txt +++ b/common/culture/name_lists/NEOW_swedish.txt @@ -343,6 +343,7 @@ patronym_suffix_male = "dynnpat_suf_sson" patronym_suffix_female = "dynnpat_suf_sdotter" + always_use_patronym = yes # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. pat_grf_name_chance = 60 diff --git a/common/culture/name_lists/NEOW_turkish.txt b/common/culture/name_lists/NEOW_turkish.txt new file mode 100644 index 00000000..8e29e20a --- /dev/null +++ b/common/culture/name_lists/NEOW_turkish.txt @@ -0,0 +1,372 @@ +name_list_NEOW_turkish = { + + cadet_dynasty_names = { + "dynn__C_ced__i_od_tnar" + "dynn__C_ced_akir" + "dynn__C_ced_elik" + "dynn__C_ced_etin" + "dynn__C_ced_ilingiro_g_brv_lu" + "dynn__O_uml_zbek" + "dynn__O_uml_zcan" + "dynn__O_uml_zdemir" + "dynn__O_uml_zden" + "dynn__O_uml_zer" + "dynn__O_uml_zkan" + "dynn__O_uml_zmen_c_ced_" + "dynn__O_uml_zt_u_uml_rk" + "dynn__S_ced_ahin" + "dynn__S_ced_ahiner" + "dynn__S_ced_en" + "dynn__S_ced_im_s_ced_ek" + "dynn__S_ced_im_s_ced_ir" + "dynn__U_uml_nal" + "dynn_Acar" + "dynn_Aksoy" + "dynn_Akta_s_ced_" + "dynn_Alpan" + "dynn_Ar_i_dot_c_i_dot_" + "dynn_Aran" + "dynn_Arslan" + "dynn_Aslan" + "dynn_At_i_dot_c_i_dot_" + "dynn_Atalay" + "dynn_Ate_s_ced_" + "dynn_Avc_i_dot_" + "dynn_Ay" + "dynn_Ayd_i_dot_n" + "dynn_Ayg_u_uml_n" + "dynn_Ayhan" + "dynn_B_u_uml_lb_u_uml_l" + "dynn_Bayg_i_dot_n" + "dynn_Bozkurt" + "dynn_Bulut" + "dynn_Can" + "dynn_Co_s_ced_an" + "dynn_Demir" + "dynn_Dervi_s_ced_" + "dynn_Dilek" + "dynn_Do_g_brv_an" + "dynn_Erdo_g_brv_an" + "dynn_G_o_uml_kdere" + "dynn_G_u_uml_l" + "dynn_G_u_uml_ler" + "dynn_G_u_uml_ne_s_ced_" + "dynn_G_u_uml_neren" + "dynn_G_u_uml_rb_u_uml_z" + "dynn_G_u_uml_rler" + "dynn_G_u_uml_rp_u_uml_z" + "dynn_I_s_ced__i_dot_k" + "dynn_K_i_dot_l_i_dot__c_ced_" + "dynn_K_o_uml_se" + "dynn_Kabay" + "dynn_Kaplan" + "dynn_Kara" + "dynn_Karaal" + "dynn_Karaca" + "dynn_Karacada_g_brv_" + "dynn_Karag_o_uml_z" + "dynn_Karamut" + "dynn_Kaya" + "dynn_Kayal_i_dot_" + "dynn_Keskin" + "dynn_Ko_c_ced_" + "dynn_Kocaman" + "dynn_Kolda_s_ced_" + "dynn_Korkmaz" + "dynn_Kurt" + "dynn_Malko_c_ced_o_g_brv_lu" + "dynn_Melen" + "dynn_Musao_g_brv_lu" + "dynn_Oduncu" + "dynn_Olgundeniz" + "dynn_Polat" + "dynn_S_o_uml_nmez" + "dynn_Sabanc_i_dot_" + "dynn_Sar_i_dot_" + "dynn_Ta_s_ced_" + "dynn_Tekin" + "dynn_Terzi" + "dynn_Tosuncuk" + "dynn_Turan" + "dynn_Tut" + "dynn_U_g_brv_urlu" + "dynn_Uzunali" + "dynn_Y_i_dot_ld_i_dot_r_i_dot_m" + "dynn_Y_i_dot_ld_i_dot_z" + "dynn_Y_i_act_lmaz" + "dynn_Y_u_uml_ksel" + "dynn_Ya_s_ced_ar" + "dynn_Ya_s_ced_argil" + "dynn_Yal_c_ced__i_dot_n" + "dynn_Yard_i_dot_mc_i_dot_" + "dynn_Yavuz" + "dynn_Zarakol" + } + + dynasty_names = { + "dynn__C_ced__i_od_tnar" + "dynn__C_ced_akir" + "dynn__C_ced_elik" + "dynn__C_ced_etin" + "dynn__C_ced_ilingiro_g_brv_lu" + "dynn__O_uml_zbek" + "dynn__O_uml_zcan" + "dynn__O_uml_zdemir" + "dynn__O_uml_zden" + "dynn__O_uml_zer" + "dynn__O_uml_zkan" + "dynn__O_uml_zmen_c_ced_" + "dynn__O_uml_zt_u_uml_rk" + "dynn__S_ced_ahin" + "dynn__S_ced_ahiner" + "dynn__S_ced_en" + "dynn__S_ced_im_s_ced_ek" + "dynn__S_ced_im_s_ced_ir" + "dynn__U_uml_nal" + "dynn_Acar" + "dynn_Aksoy" + "dynn_Akta_s_ced_" + "dynn_Alpan" + "dynn_Ar_i_dot_c_i_dot_" + "dynn_Aran" + "dynn_Arslan" + "dynn_Aslan" + "dynn_At_i_dot_c_i_dot_" + "dynn_Atalay" + "dynn_Ate_s_ced_" + "dynn_Avc_i_dot_" + "dynn_Ay" + "dynn_Ayd_i_dot_n" + "dynn_Ayg_u_uml_n" + "dynn_Ayhan" + "dynn_B_u_uml_lb_u_uml_l" + "dynn_Bayg_i_dot_n" + "dynn_Bozkurt" + "dynn_Bulut" + "dynn_Can" + "dynn_Co_s_ced_an" + "dynn_Demir" + "dynn_Dervi_s_ced_" + "dynn_Dilek" + "dynn_Do_g_brv_an" + "dynn_Erdo_g_brv_an" + "dynn_G_o_uml_kdere" + "dynn_G_u_uml_l" + "dynn_G_u_uml_ler" + "dynn_G_u_uml_ne_s_ced_" + "dynn_G_u_uml_neren" + "dynn_G_u_uml_rb_u_uml_z" + "dynn_G_u_uml_rler" + "dynn_G_u_uml_rp_u_uml_z" + "dynn_I_s_ced__i_dot_k" + "dynn_K_i_dot_l_i_dot__c_ced_" + "dynn_K_o_uml_se" + "dynn_Kabay" + "dynn_Kaplan" + "dynn_Kara" + "dynn_Karaal" + "dynn_Karaca" + "dynn_Karacada_g_brv_" + "dynn_Karag_o_uml_z" + "dynn_Karamut" + "dynn_Kaya" + "dynn_Kayal_i_dot_" + "dynn_Keskin" + "dynn_Ko_c_ced_" + "dynn_Kocaman" + "dynn_Kolda_s_ced_" + "dynn_Korkmaz" + "dynn_Kurt" + "dynn_Malko_c_ced_o_g_brv_lu" + "dynn_Melen" + "dynn_Musao_g_brv_lu" + "dynn_Oduncu" + "dynn_Olgundeniz" + "dynn_Polat" + "dynn_S_o_uml_nmez" + "dynn_Sabanc_i_dot_" + "dynn_Sar_i_dot_" + "dynn_Ta_s_ced_" + "dynn_Tekin" + "dynn_Terzi" + "dynn_Tosuncuk" + "dynn_Turan" + "dynn_Tut" + "dynn_U_g_brv_urlu" + "dynn_Uzunali" + "dynn_Y_i_dot_ld_i_dot_r_i_dot_m" + "dynn_Y_i_dot_ld_i_dot_z" + "dynn_Y_i_act_lmaz" + "dynn_Y_u_uml_ksel" + "dynn_Ya_s_ced_ar" + "dynn_Ya_s_ced_argil" + "dynn_Yal_c_ced__i_dot_n" + "dynn_Yard_i_dot_mc_i_dot_" + "dynn_Yavuz" + "dynn_Zarakol" + } + + male_names = { + 3 = { + _I_dot_brahim _I_dot_hsan _I_dot_lhan _I_dot_rfan _I_dot_smail _I_dot_smet + _O_uml_mer _O_uml_zg_u_uml_r + _S_ced__u_uml_kr_u_uml_ _S_ced_aban + _U_uml_mit + Abd_u_uml_lkadir Abdulkadir Abdullah Abdurrahman Adnan Ahmet Ali Arif Ayd_i_dot_n Ayhan + B_u_uml_lent Bayram Bekir Bilal Burak + Celal Cemal Cemil Cengiz + Deniz + Ekrem Emin Emre Engin Erdal Erhan Erkan Erol + Faruk Fatih + G_o_uml_khan + H_u_dot_seyin Hac_i_dot_ Hakan Halil Harun Hasan Hikmet + Kadir Kemal Kenan + Mahmut Mehmet Mesut Metin Mevl_u_uml_t Muhammed Muhammet Muharrem Murat Musa Mustafa Muzaffer + Nihat Nurettin + Onur Orhan Osman + Ramazan Recep + S_u_act_leyman Salih Sedat Serdar Serkan Sinan + U_g_brv_ur + Y_i_dot_lmaz Y_u_uml_ksel Ya_s_ced_ar Yakup Yasin Yunus Yusuf + Zeki + } + 2 = { + _C_ced_a_g_brv_da_s_ced_ _C_ced_etin + _I_dot_lhami _I_dot_lyas _I_dot_skender _I_dot_zzet + _O_uml_zcan _O_uml_zer _O_uml_zkan + _S_ced_ahin _S_ced_enel _S_ced_eref _S_ced_evket _S_ced_evki _S_ced_eyhmus _S_ced_uayip + _U_uml_nal + A_s_ced_k_i_dot_n Abbas Abdulbaki Abdulhamit Adil Ak_i_dot_n Akif Alaattin Ali_spc_R_i_dot_za Alican Alpaslan Alper Altan An_i_dot_l Arda Arslan Aslan Atakan Atilla Avni Aykut Aytekin Aziz + Bahad_i_dot_r Bahattin Bahri Baki Bar_i_dot__s_ced_ Basri Bedri Berat Batuhan Beyhan Birkan Birol Burhan Burhanettin + Cafer Cahit Can Caner Cavit Cem Cenk Cevat Cevdet Cihan Cihat Cumali Cumhur + Do_g_brv_an Durmu_s_ced_ + E_s_ced_ref Edip Efe Emir Emrullah Ender Enes Enis Eray Erdem Erdo_g_brv_an Erg_u_uml_n Erkan Ersin Ertan Ertu_g_brv_rul Esat Eser Ethem Evren Ey_u_uml_p Eyy_u_uml_p + F_i_dot_rat Fahrettin Fahri Faik Fehmi Ferdi Feridun Ferit Fethi Fevzi Feyzi Fikret Fuat Furkan + G_u_uml_ne_s_ced_ G_u_uml_ltekin G_u_uml_rsel G_u_uml_ven Gazi + H_u_uml_samettin H_u_uml_sn_u_uml_ Ha_s_ced_im Habib Habip Halis Halit Haluk Hamdi Hanifi Hayati Haydar Hayrettin Hayri Hidayet Hilmi Hulusi + K_a_hat_muran K_u_uml_r_s_ced_at Kaan Kadri Kamer Kamil Kas_i_dot_m Kaya Kaz_i_dot_m Kerem Kerim Koray Kubilay + L_u_uml_tf_u_uml_ L_u_uml_tfi Latif Levent + M_u_uml_cahit M_u_uml_kerrem M_u_uml_rsel M_u_uml_sl_u_uml_m Mahir Mehmet_spc_Ali Melih Mert Mithat Muhittin Muhlis Mukadder Mustafa_spc_Kemal + Naci Nail Nam_i_dot_k Naz_i_dot_m Nazif Necdet Necmi Nezir Necati Necip Necmettin Nedim Nevzat Nihan Niyazi Nizamettin Numan Nural Nurhan Nuri Nurullah + O_g_brv_uz O_g_brv_uzhan Okan Oktay Olcay + R_i_dot_dvan R_i_dot_za R_u_uml_stem Rafet Rahmi Rasim Recai Re_s_ced_at Re_s_ced_it Refik Remzi Rifat + S_i_dot_tk_i_dot_ S_u_uml_reyya Sabahattin Sabri Sad_i_dot_k Sadettin Sadi Saffet Sait Salim Sami Sava_s_ced_ Sebahattin Sefa Sefer Sel_c_ced_uk Selami Selim Semih Serhat Servet Seydi Seyit Sezai Sezer Sezgin Soner Suat + Tahir Tahsin Tamer Tanju Tar_i_dot_k Tayfun Tekin Temel Tevfik Tolga Tu_g_brv_rul Tufan Tuncer Turan Turgay Turgut Turhan + Ufuk Ula_s_ced_ + Vahit Vedat Vehbi Veli Veysel Veysi Volkan + Y_i_dot_ld_i_dot_r_i_dot_m Y_u_uml_cel Yahya Yal_c_ced__i_dot_n Yavuz Yener Yi_g_brv_it Yunus_spc_Emre + Zafer Zeynel Ziya + } + 1 = { + _C_ced_a_g_brv_an _C_ced_a_g_brv_atay + _I_dot_lkan _I_dot_nan _I_dot_nan_c_ced_ _I_dot_stemihan + _O_uml_zt_u_uml_rk + _S_ced_adan _S_ced_ahabettin _S_ced_ahap _S_ced_amil _S_ced_efkat + Abd_u_uml_llatif Abdulahat Abdulhaluk Abdulsamet Agah Alparslan Alpay Alperen Aral Arma_g_brv_an Ataullah Atay Ayberk Ayetullah Ayvaz Azmi + Ba_s_ced_ar Baha Bedirhan Behi_c_ced_ Bozkurt + Cezmi Cihangir + Danyal Demir Devlet Devrim Do_g_brv_a Do_g_brv_uhan Do_g_brv_ukan + Ediz Efkan Ege El_c_ced_in Emirhan Emrecan Emrehan Enez Ensar Erc_u_uml_ment Erdin Erkin Ersoy Ertun_c_ced_ Evliya + Fadl_i_dot_ Faris Fatin Faz_i_dot_l Fedon Fehim Ferhan Fetani Fethullah Firuz + G_o_uml_kan G_o_uml_kdeniz G_o_uml_ktan Gaffar Giray + H_u_uml_rrem H_u_uml_srev Hakk_i_dot_ Hasari Hasip Hur_s_ced_it Husret + I_s_ced__i_dot_n + K_i_dot_l_i_dot__c_ced_arslan K_i_dot_van_c_ced_ K_i_dot_yasettin Kadim Kayhan Kayra Kutalm_i_dot__s_ced_ + L_u_uml_tfullah + M_u_uml_jdat M_u_uml_kremin M_u_uml_mtaz Macit Mahfuz Mahmud Maliki Mansur Masum Medeni Mensur Mertcan Metehan Mihrali Mira_c_ced_ Muhtar + Nabi Naz_i_dot_r Nejat Nidai Nimetullah Nureddin Nusrettin + Og_u_uml_n Onursal + Pamuk Polat Poyraz + R_i_dot_zacan R_u_uml__s_ced_t_u_uml_ Refet Renan Rizgin + S_i_dot_d_i_dot_k S_u_uml_heyl S_u_uml_mer Sacit Sadir Sak_i_dot_p Seb_g_brv_atullah Sermet Seyyit Subutay Suha + Taha Takiddin Talha Tayip Taylan Teoman Tevhit Timu_c_ced_in Timur Tuluyhan Tuna Tunay Tunca Turabi + Ulu_c_ced_ Utku + Vecdi + Yal_i_dot_n Yaman Yasir Yekta Yi_g_brv_itcan + Z_u_uml_lf_u_uml_ Z_u_uml_lf_u_uml_kar Ziver + } + } + female_names = { + 3 = { + _C_ced_i_g_brv_dem + _I_dot_lknur + _O_uml_zlem + _S_ced_erife + Arzu Ayfer Ayten Ay_s_ced_e + B_u_uml__s_ced_ra Bahar Burcu + Canan + Derya Dilek + Ebru Elif Emine Esma Esra + Fadime Fatma Feride Filiz + G_o_uml_n_u_uml_l G_u_uml_ler Gamze + H_u_uml_lya Hatice + K_u_uml_bra Kadriye + Leyla + Melek Meliha Meral Merve Meryem + Neslihan + Perihan + Rahime Remziye + Saliha Seda Sema Semra Serap Sevgi Sevim Sibel Sultan + T_u_uml_lay T_u_uml_rkan Tu_g_brv_ba + Ya_g_brv_mur Yasemin + Zehra Zeynep + } + 2 = { + _C_ced_a_g_brv_la + _I_dot_pek _I_dot_rem + _O_uml_zge + _S_ced_ebnem _S_ced_enay _S_ced_enol _S_ced_irin + Arife Alev Asl_i_dot_ Asl_i_dot_han Asuman Aylin + Bahriye Bedia Belgin Bet_u_uml_l Beyza Birsen Bur_c_ced_in + Cansu Ceren Cevahir + Ebubekir Elmas Eren Ezgi + Fazilet Funda + G_u_uml_l G_u_uml_l_u_uml_stan G_u_uml_lizar G_u_uml_ner G_u_uml_ng_o_uml_r G_u_uml_rsel Gizem + Hande Hasret Hazal + Jale + L_u_uml_tfiye Lale Latife + M_u_uml__s_ced_erref M_u_uml_r_u_uml_vvet Melike Melis Mine Muazzez Mutlu + Nahide Nalan Nazan Nazire Nazl_i_dot_ Nejla Nesrin Nevin Nilg_u_uml_n Nimet Nur Nurdan Nurhayat + Olcay Oya + Pakize Pelin Penbe Pervin + R_u_uml_meysa Refika Reyhan + Sabahat Salihe Sare Sebahat Selin Semiha Sena Senem Sermin Seyhan Suzan + Tansu Tu_g_brv__c_ced_e Tuba + Vildan + } + 1 = { + _I_dot_ffet _I_dot_lkyaz + _S_ced_evin + Asena Aysu + Bengisu Berra Berrak Beyzanur + Candan Cans_i_dot_n + El_c_ced_in Esvet + Feleknas + G_u_uml_lden G_u_uml_zin + H_u_uml_da + I_s_ced__i_dot_lay + J_u_uml_lide + Karsu + M_u_uml_zeyyen Melda Melisa Meliz Mihrimah + N_u_uml_khet Naz + Ravza Renan + S_i_dot_la Selen Semiramis Sera Sertab Simge Sulhiye + Tayyibe Tulu_g_brv_ Tuna + Ya_s_ced_am Yelda + Zemzem + } + } + patronym_suffix_male = "dynnpat_suf_o_g_brv_lu" + patronym_suffix_female = "dynnpat_suf_k_i_dot_z_i_dot_" + always_use_patronym = yes + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 60 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 60 + mother_name_chance = 10 +} diff --git a/common/culture/name_lists/NEOW_welsh.txt b/common/culture/name_lists/NEOW_welsh.txt index 49bbcb5d..bd70a3fb 100644 --- a/common/culture/name_lists/NEOW_welsh.txt +++ b/common/culture/name_lists/NEOW_welsh.txt @@ -106,7 +106,7 @@ Ofydd Oliver Oscar Oswallt Owain Owen Padarn Padrig Pawl Pedr Philip Pryce Pryderi Pyr Rheinallt Rhisiart Rhiwallon Rhobert Rhodri Rhufon Rhun Rhydderch Rhydian Rhys Roderick Ryan - Sawyl Seferus Seisyll Selyf Serigi Si_o_hat_n Si_o_hat_r Sieffre Siorus Steffan Sulien + Saladin Sawyl Seferus Seisyll Selyf Serigi Si_o_hat_n Si_o_hat_r Sieffre Siorus Steffan Sulien Talfryn Taliesin Taron Tegid Tegwyd Teilo Tewdos Tewdrig Tomos Trahaearn Trevor Tristan Tudor Tysilio Urien Uthyr Vaughan diff --git a/common/culture/pillars/00_language.txt b/common/culture/pillars/00_language.txt index 700a2007..b9159a02 100644 --- a/common/culture/pillars/00_language.txt +++ b/common/culture/pillars/00_language.txt @@ -5,6 +5,9 @@ LANGUAGE = language_anglic } } + parameters = { + anglic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -182,6 +185,9 @@ language_brythonic = { multiply = 10 } } + parameters = { + brythonic_group_language_param = yes + } color = { 127 63 127 } } @@ -439,6 +445,9 @@ language_goidelic = { } } + parameters = { + goidelic_group_language_param = yes + } color = { 32 216 109 } } diff --git a/common/culture/pillars/NEOW_heritage.txt b/common/culture/pillars/NEOW_heritage.txt index f671b5a7..3915be6a 100644 --- a/common/culture/pillars/NEOW_heritage.txt +++ b/common/culture/pillars/NEOW_heritage.txt @@ -118,4 +118,22 @@ heritage_anglo_american = { } } audio_parameter = european +} +heritage_brazilian = { + type = heritage + is_shown = { + heritage_is_shown_trigger = { + HERITAGE = heritage_indo_aryan + } + } + audio_parameter = european +} +heritage_indo_aryan = { + type = heritage + is_shown = { + heritage_is_shown_trigger = { + HERITAGE = heritage_indo_aryan + } + } + audio_parameter = indian } \ No newline at end of file diff --git a/common/culture/pillars/NEOW_language.txt b/common/culture/pillars/NEOW_language.txt index aaa3ac4a..8efc88a7 100644 --- a/common/culture/pillars/NEOW_language.txt +++ b/common/culture/pillars/NEOW_language.txt @@ -51,6 +51,1723 @@ language_sarphatique = { color = sephardi } +NEOW_language_irish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_irish + } + } + parameters = { + goidelic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_irish } + multiply = 10 + } + } + + color = { 64 105 65 } +} +NEOW_language_manx = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_manx + } + } + parameters = { + goidelic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_manx } + multiply = 10 + } + } + + color = { 60 125 55 } +} +NEOW_language_scottish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_scottish + } + } + parameters = { + goidelic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_scottish } + multiply = 10 + } + } + + color = { 68 160 226 } +} +NEOW_language_north_brittannic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_north_brittannic + } + } + parameters = { + brythonic_group_language_param = yes + anglic_group_language_param = yes + goidelic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_north_brittannic } + multiply = 10 + } + } + + color = { 102 15 65 } +} +NEOW_language_cornish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_cornish + } + } + parameters = { + brythonic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_cornish } + multiply = 10 + } + } + + color = { 127 38 114 } +} +NEOW_language_welsh = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_welsh + } + } + parameters = { + brythonic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_welsh } + multiply = 10 + } + } + + color = { 94 34 114 } +} +NEOW_language_south_french = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_south_french + } + } + parameters = { + french_group_language_param = yes + occitanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_south_french } + multiply = 10 + } + } + + color = { 22 68 153 } +} +NEOW_language_north_french = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_north_french + } + } + parameters = { + french_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_north_french } + multiply = 10 + } + } + + color = { 13 13 137 } +} +NEOW_language_griko = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_griko + } + } + parameters = { + greek_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_griko } + multiply = 10 + } + } + + color = {0.01 0.21 0.58} +} +NEOW_language_swedish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_swedish + } + } + parameters = { + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_swedish } + multiply = 10 + } + } + + color = { 45 107 229 } +} +NEOW_language_norweigian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_norweigian + } + } + parameters = { + west_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_norweigian } + multiply = 10 + } + } + + color = { 30 112 153 } +} +NEOW_language_danish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_danish + } + } + parameters = { + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_danish } + multiply = 10 + } + } + + color = { 86 153 216 } +} +NEOW_language_jaamtlandic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_jaamtlandic + } + } + parameters = { + west_north_germanic_group_language_param = yes + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_jaamtlandic } + multiply = 10 + } + } + + color = { 30 30 117 } +} +NEOW_language_icelandic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_icelandic + } + } + parameters = { + west_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_icelandic } + multiply = 10 + } + } + + color = { 25 42 127 } +} +NEOW_language_gutnish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_gutnish + } + } + parameters = { + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_gutnish } + multiply = 10 + } + } + + color = { 26 89 178 } +} +NEOW_language_faroese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_faroese + } + } + parameters = { + west_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_faroese } + multiply = 10 + } + } + + color = { 32 47 216 } +} +NEOW_language_doggerlandish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_doggerlandish + } + } + parameters = { + low_franconian_group_language_param = yes + anglic_group_language_param = yes + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_doggerlandish } + multiply = 10 + } + } + + color = { 45 168 229 } +} +NEOW_language_east_danish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_east_danish + } + } + parameters = { + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_east_danish } + multiply = 10 + } + } + + color = { 86 162 216 } +} +NEOW_language_dutch = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_dutch + } + } + parameters = { + low_franconian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_dutch } + multiply = 10 + } + } + + color = { 216 86 32 } +} +NEOW_language_frisian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_frisian + } + } + parameters = { + frisian_language_param = yes + low_franconian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_frisian } + multiply = 10 + } + } + + color = { 226 141 56 } +} +NEOW_language_limburgish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_limburgish + } + } + parameters = { + low_franconian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_limburgish } + multiply = 10 + } + } + + color = { 214 126 74 } +} +NEOW_language_west_south_slavic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_west_south_slavic + } + } + parameters = { + south_slavic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_west_south_slavic } + multiply = 10 + } + } + + color = { 0.4 0.65 0.4 } +} +NEOW_language_east_south_slavic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_east_south_slavic + } + } + parameters = { + south_slavic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_east_south_slavic } + multiply = 10 + } + } + + color = { 0.4 0.65 0.4 } +} +NEOW_language_sorbian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_sorbian + } + } + parameters = { + west_slavic_group_language_param = yes + low_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_sorbian } + multiply = 10 + } + } + + color = { 0.35 0.7 0.8 } +} +NEOW_language_czech = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_czech + } + } + parameters = { + west_slavic_group_language_param = yes + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_czech } + multiply = 10 + } + } + + color = { 0.35 0.8 0.8 } +} +NEOW_language_polish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_polish + } + } + parameters = { + west_slavic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_polish } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_slovene = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_slovene + } + } + parameters = { + south_slavic_group_language_param = yes + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_slovene } + multiply = 10 + } + } + + color = { 0.5 0.1 0.08 } +} +NEOW_language_north_helvetic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_north_helvetic + } + } + parameters = { + rhaeto_romance_group_language_param = yes + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_north_helvetic } + multiply = 10 + } + } + + color = { 153 45 117 } +} +NEOW_language_south_helvetic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_south_helvetic + } + } + parameters = { + rhaeto_romance_group_language_param = yes + french_group_language_param = yes + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_south_helvetic } + multiply = 10 + } + } + + color = { 229 91 114 } +} +NEOW_language_romansch = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_romansch + } + } + parameters = { + high_german_group_language_param = yes + rhaeto_romance_group_language_param = yes + gallo_italian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_romansch } + multiply = 10 + } + } + + color = { 178 89 178 } +} +NEOW_language_sarphatique = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_sarphatique + } + } + parameters = { + hewbrew_group_language_param = yes + french_group_language_param = yes + anglic_group_language_param = yes + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_sarphatique } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_new_yiddish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_new_yiddish + } + } + parameters = { + hewbrew_group_language_param = yes + french_group_language_param = yes + anglic_group_language_param = yes + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_new_yiddish } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_new_hebrew = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_new_hebrew + } + } + parameters = { + hewbrew_group_language_param = yes + arabic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_new_hebrew } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_ladin = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_ladin + } + } + parameters = { + italo_dalmatian_group_language_param = yes + rhaeto_romance_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_ladin } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_maltese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_maltese + } + } + parameters = { + anglic_group_language_param = yes + italo_dalmatian_group_language_param = yes + arabic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_maltese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_north_mosellic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_north_mosellic + } + } + parameters = { + french_group_language_param = yes + low_franconian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_north_mosellic } + multiply = 10 + } + } + + color = { 209 209 31 } +} +NEOW_language_south_mosellic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_south_mosellic + } + } + parameters = { + french_group_language_param = yes + middle_german_group_language_param = yes + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_south_mosellic } + multiply = 10 + } + } + + color = { 204 168 61 } +} +NEOW_language_friulian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_friulian + } + } + parameters = { + rhaeto_romance_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_friulian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_ligurian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_ligurian + } + } + parameters = { + gallo_italian_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_ligurian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_venetian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_venetian + } + } + parameters = { + gallo_italian_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_venetian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_tusco_corsican = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_tusco_corsican + } + } + parameters = { + italo_dalmatian_group_language_param = yes + sardic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_tusco_corsican } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_sicilian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_sicilian + } + } + parameters = { + italo_dalmatian_group_language_param = yes + arabic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_sicilian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_emilo_romagnol = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_emilo_romagnol + } + } + parameters = { + italo_dalmatian_group_language_param = yes + gallo_italian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_emilo_romagnol } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_neapolitan = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_neapolitan + } + } + parameters = { + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_neapolitan } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_lombard_piedmontese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_lombard_piedmontese + } + } + parameters = { + gallo_italian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_lombard_piedmontese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_median = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_median + } + } + parameters = { + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_median } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_east_french = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_east_french + } + } + parameters = { + french_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_east_french } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_breton = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_breton + } + } + parameters = { + brythonic_group_language_param = yes + french_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_breton } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_catalan = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_catalan + } + } + parameters = { + east_hispanic_group_language_param = yes + occitanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_catalan } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_occitan = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_occitan + } + } + parameters = { + french_group_language_param = yes + occitanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_occitan } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_aragonese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_aragonese + } + } + parameters = { + east_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_aragonese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_asturleonese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_asturleonese + } + } + parameters = { + lausatian_group_language_param = yes + west_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_asturleonese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_balearic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_balearic + } + } + parameters = { + occitanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_balearic } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_basque = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_basque + } + } + parameters = { + basque_group_language_param = yes + east_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_basque } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_castillian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_castillian + } + } + parameters = { + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_castillian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_valencian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_valencian + } + } + parameters = { + occitanic_group_language_param = yes + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_valencian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_portuguese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_portuguese + } + } + parameters = { + lausatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_portuguese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_canarian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_canarian + } + } + parameters = { + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_canarian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_andalusian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_andalusian + } + } + parameters = { + arabic_group_language_param = yes + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_andalusian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_llanito = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_llanito + } + } + parameters = { + middle_hispanic_group_language_param = yes + anglic_group_language_param = yes + arabic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_llanito } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_galician = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_galician + } + } + parameters = { + lausatian_group_language_param = yes + west_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_galician } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_extremeno = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_extremeno + } + } + parameters = { + lausatian_group_language_param = yes + west_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_extremeno } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_weslander = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_weslander + } + } + parameters = { + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_weslander } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_souflander = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_souflander + } + } + parameters = { + brythonic_group_language_param = yes + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_souflander } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_norner = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_norner + } + } + parameters = { + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_norner } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_norflander = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_norflander + } + } + parameters = { + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_norflander } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_easlander = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_easlander + } + } + parameters = { + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_easlander } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_arbereshe = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_arbereshe + } + } + parameters = { + albanian_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_arbereshe } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_albanian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_albanian + } + } + parameters = { + albanian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_albanian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_german_turk = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_german_turk + } + } + parameters = { + low_german_group_language_param = yes + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_german_turk } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_swabian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_swabian + } + } + parameters = { + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_swabian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_saxon = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_saxon + } + } + parameters = { + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_saxon } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_rottish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_rottish + } + } + parameters = { + high_german_group_language_param = yes + french_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_rottish } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_rhinelandic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_rhinelandic + } + } + parameters = { + high_german_group_language_param = yes + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_rhinelandic } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_palatine = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_palatine + } + } + parameters = { + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_palatine } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_pomeranian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_pomeranian + } + } + parameters = { + low_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_pomeranian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_westphalian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_westphalian + } + } + parameters = { + low_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_westphalian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_ramsteiner = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_ramsteiner + } + } + parameters = { + anglic_group_language_param = yes + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_ramsteiner } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_hessian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_hessian + } + } + parameters = { + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_hessian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_franconian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_franconian + } + } + parameters = { + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_franconian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_margravian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_margravian + } + } + parameters = { + low_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_margravian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_bavarian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_bavarian + } + } + parameters = { + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_bavarian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_alpine_bavarian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_alpine_bavarian + } + } + parameters = { + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_alpine_bavarian } + multiply = 10 + } + } + + color = { 204 54 40 } +} + + + + + language_english = { type = language @@ -59,6 +1776,9 @@ language_english = { LANGUAGE = language_english } } + parameters = { + anglic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -94,6 +1814,10 @@ language_brittannic = { LANGUAGE = language_brittannic } } + parameters = { + anglic_group_language_param = yes + brythonic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -102,7 +1826,7 @@ language_brittannic = { } } - color = { 127 12 41 } + color = { 114 17 41 } } language_scots = { @@ -112,6 +1836,10 @@ language_scots = { LANGUAGE = language_scots } } + parameters = { + anglic_group_language_param = yes + goidelic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -120,7 +1848,7 @@ language_scots = { } } - color = { 22 136 229 } + color = { 45 81 153 } } language_anglo_irish = { @@ -130,6 +1858,10 @@ language_anglo_irish = { LANGUAGE = language_anglo_irish } } + parameters = { + anglic_group_language_param = yes + goidelic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -138,7 +1870,7 @@ language_anglo_irish = { } } - color = { 47 191 150 } + color = { 237 85 35 } } language_mosellic = { @@ -184,6 +1916,10 @@ language_sardinian = { LANGUAGE = language_sardinian } } + + parameters = { + sardic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -307,6 +2043,12 @@ language_calo = { LANGUAGE = language_calo } } + + parameters = { + arabic_group_language_param = yes + middle_hispanic_group_language_param = yes + far_west_indo_aryan_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -367,4 +2109,21 @@ language_sorbian = { } color = { 0.35 0.7 0.8 } +} +language_punjabi = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = language_punjabi + } + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = language_sorbian } + multiply = 10 + } + } + + color = punjabi } \ No newline at end of file diff --git a/common/culture/traditions/00_realm_traditions.txt b/common/culture/traditions/00_realm_traditions.txt index d64f35a2..dc28cf7e 100644 --- a/common/culture/traditions/00_realm_traditions.txt +++ b/common/culture/traditions/00_realm_traditions.txt @@ -222,12 +222,6 @@ tradition_republican_legacy = { } is_shown = { - OR ={ - this = culture:roman - any_parent_culture_or_above = { - this = culture:roman - } - } NOT = { has_cultural_tradition = tradition_parochialism } } can_pick = { diff --git a/common/culture/traditions/00_societal_traditions.txt b/common/culture/traditions/00_societal_traditions.txt new file mode 100644 index 00000000..1bef6091 --- /dev/null +++ b/common/culture/traditions/00_societal_traditions.txt @@ -0,0 +1,3112 @@ +################################ +# SOCIETAL CULTURAL TRADITIONS # +################################ + +tradition_xenophilic = { + category = societal + + layers = { + 0 = learning + 1 = mena + 4 = conversation.dds + } + + can_pick = { + custom_tooltip = { + text = culture_acceptance_trigger_desc + any_culture_global = { + count >= xenophilic_nr_of_cultures_value + this != prev + cultural_acceptance = { target = prev value >= xenophilic_acceptance_value } + } + } + } + + culture_modifier = { + cultural_acceptance_gain_mult = 0.25 + } + character_modifier = { + different_culture_opinion = 10 + ignore_negative_opinion_of_culture = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + #culture_pillar:ethos_bureaucratic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_or_egalitarian_desc + } + } + if = { + limit = { + NOT = { + any_culture_global = { + count >= xenophilic_nr_of_cultures_cost_value + this != prev + cultural_acceptance = { target = prev value >= xenophilic_acceptance_cost_value } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_acceptance_cost_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_xenophilic_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_xenophilic } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { # Avoid stacking similar traditions + culture_tradition:tradition_culture_blending = { is_in_list = traits } + culture_tradition:tradition_tgp_religious_hospitality = { is_in_list = traits } + } + multiply = 0.25 + } + if = { + limit = { # If you like to invade people, don't pick this tradition + culture_tradition:tradition_malleable_invaders = { is_in_list = traits } + } + multiply = 0 + } + + } +} + +tradition_chivalry = { + category = societal + + layers = { + 0 = diplo + 1 = western + 4 = knight.dds + } + + is_shown = { + OR = { + has_cultural_pillar = heritage_brythonic + has_cultural_pillar = heritage_central_germanic + has_cultural_pillar = heritage_frankish + has_cultural_pillar = heritage_goidelic + has_cultural_pillar = heritage_iberian + has_cultural_pillar = heritage_latin + has_cultural_pillar = heritage_west_germanic + } + } + + parameters = { + can_use_sparring_duel = yes + romance_scheme_bonuses = yes + romance_scheme_penalty = yes + ai_romance_scheme_increase = yes + poet_trait_romance_bonuses = yes + can_host_joust_contests = yes + knight_errant_trait_bonuses = yes + } + + character_modifier = { + tyranny_gain_mult = 0.5 + accolade_glory_gain_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_egalitarian_or_courtly_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_knight = { + count >= 6 + prowess >= 12 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = knights_with_prowess_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_chivalry_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_chivalry_tournament_discount + } + + } + + add = { + value = tradition_tournament_discount + desc = tradition_tournament_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_chivalry } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + } +} + +tradition_hard_working = { + category = societal + + layers = { + 0 = diplo + 1 = indian + 4 = tools.dds + } + + can_pick = { + custom_tooltip = { + text = cultrad_not_nomadic_government_type + scope:character = { + NOT = { + government_has_flag = government_is_nomadic + } + } + } + } + + parameters = { + development_gain_on_building_complete = yes + next_level_w_mills = yes + } + character_modifier = { + build_speed = -0.15 + stress_gain_mult = 0.15 + build_gold_cost = 0.15 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = diligent + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_diligent_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_hard_working_travel_discount + } + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_hard_working } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOR = { + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + multiply = 0.5 + } + else_if = { + limit = { + scope:character ?= { + ai_has_economical_boom_personality = yes + } + } + multiply = 4 + } + } +} + +tradition_loyal_soldiers = { + category = societal + + layers = { + 0 = diplo + 1 = mena + 4 = hostages.dds + } + + parameters = { + doesnt_care_about_culture_faith_in_factions = yes + wants_to_learn_liege_language = yes + extra_learn_language_success_chance_vs_liege = yes + loyal_trait_more_common = yes + more_hostage_acceptance_for_vassals = yes + nomadic_loyal_soldiers_obedience = yes + loyal_soldiers_internal_yurt_unlock = yes + } + character_modifier = { + opinion_of_liege = 10 + } + county_modifier = { + county_opinion_add = 5 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + top_liege != this + culture != liege.culture + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_under_another_culture_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_loyal_soldiers_travel_discount + } + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_loyal_soldiers } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + is_divergent_culture = no + } + multiply = 0 + } + } +} + +tradition_pacifism = { + category = societal + + layers = { + 0 = learning + 1 = indian + 4 = diplomacy.dds + } + + can_pick = { + custom_description = { + text = culture_not_bellicose + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + culture_not_warlike_trigger = yes + } + + parameters = { + reduced_cost_for_conversion_to_pacifist_faith = yes + } + + county_modifier = { + development_growth_factor = 0.15 + county_opinion_add = 10 + } + character_modifier = { + martial = -1 + monthly_martial_lifestyle_xp_gain_mult = -0.2 + + ai_war_chance = -0.75 + ai_war_cooldown = 10 + ai_boldness = -25 + ai_compassion = 25 + } + province_modifier = { + travel_danger = -5 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_or_egalitarian_desc + } + } + if = { + limit = { + scope:character = { + is_at_war = yes + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = is_at_war_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_pacifism_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_pacifism } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 0 + if = { + limit = { + scope:character = { religion = { is_in_family = rf_eastern } } + is_divergent_culture = yes + } + add = 100 + } + } +} + +tradition_spartan = { + category = societal + + layers = { + 0 = steward + 1 = indian + 4 = council.dds + } + + is_shown = { + NOT = { + scope:character = { + government_has_flag = government_is_tribal + } + } + } + + character_modifier = { + monthly_prestige_gain_mult = -0.35 + monthly_court_grandeur_change_mult = -0.2 + castle_holding_build_gold_cost = -0.15 + castle_holding_holding_build_gold_cost = -0.15 + courtly_opinion = -20 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_communal_desc + } + } + if = { + limit = { + scope:character.prestige_level >= 3 + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = prestige_level_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_spartan_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_spartan } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + limit = { + is_divergent_culture = no + } + multiply = 0 + } + } +} + +tradition_diasporic = { + category = societal + + layers = { + 0 = learning + 1 = mediterranean + 4 = noble.dds + } + + # Disaporic peoples are marginalized people who have lost their traditional homeland and been forced to live elsewhere. Any hybrid or divergent culture will, by definition, have a new homeland. As a result, new cultures can never pick this tradition, and only historical cultures may start with it. + is_shown = { always = no } + + parameters = { + wanderers_learn_languages = yes + extra_language_cap = yes + unlock_voluntary_laampdom = yes + unlock_minority_community = yes + cannot_convert_diasporia = yes + } + + character_modifier = { + stewardship = 1 + learning = 1 + ignore_negative_opinion_of_culture = yes + diplomatic_range_mult = 0.2 + } + + cost = { prestige = 400 } + ai_will_do = { value = 0 } +} + +tradition_hunters = { + category = societal + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = hunter.dds + } + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_tooltip = { + text = cannot_have_tradition_vegetarianism + NOT = { culture_tradition:tradition_vegetarianism = { is_in_list = traits } } + } + } + + parameters = { + more_frequent_hunts = yes + hunting_traits_more_valued = yes + hunting_traits_more_common = yes + always_unlock_legendary_hunting_lodge = yes + } + + character_modifier = { + character_travel_speed_mult = 0.15 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_spiritual_or_stoic_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_hunter + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_hunter_lifestyle_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_hunters_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_hunters } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + scope:character = { + government_has_flag = government_is_tribal + } + } + multiply = 0 + } + } +} + +tradition_vegetarianism = { + category = societal + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = food.dds + } + + is_shown = { + OR = { + has_cultural_pillar = heritage_indo_aryan + has_cultural_pillar = heritage_dravidian + } + } + can_pick = { + OR = { + has_cultural_pillar = heritage_indo_aryan + has_cultural_pillar = heritage_dravidian + } + custom_tooltip = { + text = cannot_have_tradition_sacred_hunts + NOT = { culture_tradition:tradition_sacred_hunts = { is_in_list = traits } } + } + custom_tooltip = { + text = cannot_have_tradition_hunters + NOT = { culture_tradition:tradition_hunters = { is_in_list = traits } } + } + } + can_pick_for_hybridization = { + custom_tooltip = { + text = cannot_have_vegetarianism_and_sacred_hunts + NOT = { culture_tradition:tradition_sacred_hunts = { is_in_list = traits } } + } + custom_tooltip = { + text = cannot_have_vegetarianism_and_hunters + NOT = { culture_tradition:tradition_hunters = { is_in_list = traits } } + } + } + + parameters = { + cannot_hunt = yes + vegetarian_building_ban = yes + vegetarian_fruit_orchard_allowed = yes + vegetarian_next_level_cereal_fields = yes + } + character_modifier = { + health = 0.25 + } + county_modifier = { + plains_development_growth_factor = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_spiritual_or_stoic_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_vegetarianism_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_vegetarianism } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 800 + if = { + limit = { + NOT = { + scope:character.faith = { + has_doctrine = tenet_dharmic_pacifism + } + } + } + multiply = 0 + } + } +} + +tradition_seafaring = { + category = societal + + layers = { + 0 = martial + 1 = western + 4 = ship.dds + } + + can_pick = { + custom_description = { + text = percentage_of_culture_on_coast_desc + any_culture_county = { + percent >= 0.5 + has_coastal_province = yes + } + } + # Shouldn't be combined with the following traditions: + custom_tooltip = { + text = cannot_have_tradition_fp1_coastal_warriors + NOT = { culture_tradition:tradition_fp1_coastal_warriors = { is_in_list = traits } } + } + custom_tooltip = { + text = cannot_have_tradition_maritime_way_of_life + NOT = { culture_tradition:tradition_maritime_way_of_life = { is_in_list = traits } } + } + custom_tooltip = { + text = cultrad_not_nomadic_government_type + scope:character = { + NOT = { + government_has_flag = government_is_nomadic + } + } + } + custom_tooltip = { + text = cultrad_not_nomadic_government_type + scope:character = { + NOT = { + government_has_flag = government_is_nomadic + } + } + } + } + + parameters = { + trade_ports_give_control_growth = yes + trade_ports_give_levies = yes + can_travel_along_rivers = yes + trade_ports_enabled_for_tribals = yes + } + character_modifier = { + embarkation_cost_mult = -0.85 + sea_travel_danger = medium_sea_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_bureaucratic_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.7 + has_coastal_province = yes + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = high_coastal_percentage_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_seafaring_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_seafaring } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { # Make stacking more less common + limit = { + OR = { + culture_tradition:tradition_maritime_mercantilism = { is_in_list = traits } + culture_tradition:tradition_fishermen = { is_in_list = traits } + } + } + multiply = 2 + } + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + has_coastal_province = yes + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + has_coastal_province = yes + } + } + multiply = 8 + } + } +} + +tradition_storytellers = { + category = societal + + layers = { + 0 = learning + 1 = mena + 4 = ceremony.dds + } + + can_pick = { + custom_tooltip = { + text = cannot_have_tradition_fp1_northern_stories + NOT = { culture_tradition:tradition_fp1_northern_stories = { is_in_list = traits } } + } + } + + character_modifier = { + owned_scheme_secrecy_add = -15 + owned_legend_spread_mult = 0.05 + } + parameters = { + better_ward_education = yes + tells_stories = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_stoic_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_poet + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_poet_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_storytellers_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_storytellers } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + limit = { # Less likely to adopt this tradition for non-tribals, unless any parent culture already has it + NOR = { + scope:character = { + government_has_flag = government_is_tribal + } + any_parent_culture_or_above = { + has_cultural_tradition = tradition_storytellers + } + } + } + multiply = 0.5 + } + else_if = { + limit = { + scope:character ?= { + OR = { + num_personal_legend_seeds >= 1 + num_triggered_legend_seeds >= 1 + } + } + } + multiply = 8 + } + } +} + +tradition_music_theory = { + category = societal + + layers = { + 0 = intrigue + 1 = western + 4 = musician.dds + } + + is_shown = { + has_ep1_court_positions_dlc_trigger = yes + } + + parameters = { + gregarious_trait_gives_bonuses = yes + characters_are_better_court_musicians = yes # Also hooked in to increase the Feast opinion bonus + better_court_musicians = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_poet + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_poet_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_music_theory_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_music_theory } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + limit = { # AI should avoid stacking traditions for court positions + OR = { + culture_tradition:tradition_poetry = { is_in_list = traits } + culture_tradition:tradition_tgp_ephemeral_grace = { is_in_list = traits } + } + } + multiply = 0.25 + } + } +} + +tradition_poetry = { + category = societal + + layers = { + 0 = diplo + 1 = western + 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 + NOT = { culture_tradition:tradition_fp1_northern_stories = { is_in_list = traits } } + } + NOT = { culture_tradition:tradition_tgp_ephemeral_grace = { is_in_list = traits } } + } + + parameters = { + poet_trait_gives_bonuses = yes + poet_trait_more_common = yes + characters_are_better_court_poets = yes + better_court_poets = yes + } + + character_modifier = { + owned_legend_spread_mult = 0.05 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_poet + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_poet_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_poetry_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_poetry } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + limit = { # AI should avoid stacking traditions for courtly court positions + culture_tradition:tradition_music_theory = { is_in_list = traits } + } + multiply = 0.25 + } + } +} + +tradition_fishermen = { + category = societal + + layers = { + 0 = steward + 1 = mediterranean + 4 = ship.dds + } + + can_pick = { + custom_description = { + text = culture_on_coast_desc + any_culture_county = { + has_coastal_province = yes + } + } + custom_tooltip = { + text = cultrad_not_nomadic_government_type + scope:character = { + NOT = { + government_has_flag = government_is_nomadic + } + } + } + } + + parameters = { + coastal_holdings_give_defensive_bonus = yes + trade_ports_stationed_maa_bonus = yes + } + + character_modifier = { + coastal_advantage = 5 + supply_capacity_mult = 0.5 + coastal_sea_travel_danger = low_sea_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = culture_not_bellicose + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + has_coastal_province = yes + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = coastal_percentage_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_fishermen_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fishermen } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { # Make stacking a bit more common + limit = { + OR = { + culture_tradition:tradition_maritime_mercantilism = { is_in_list = traits } + culture_tradition:tradition_seafaring = { is_in_list = traits } + } + } + multiply = 2 + } + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + has_coastal_province = yes + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + has_coastal_province = yes + } + } + multiply = 2 + } + } +} + +tradition_mendicant_mystics = { + category = societal + + layers = { + 0 = learning + 1 = indian + 4 = speech.dds + } + + parameters = { + mystic_trait_gives_bonuses = yes + mystic_trait_more_common = yes + mendicant_mystics_may_appear = yes + } + + character_modifier = { + character_travel_speed_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_mystic + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_mystic_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_mendicant_mystics_travel_discount + } + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mendicant_mystics } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + multiply = 0.7 + } + } +} + +tradition_warrior_culture = { + category = societal + + layers = { + 0 = martial + 1 = western + 4 = soldiers.dds + } + + is_shown = { + NOT = { has_cultural_tradition = tradition_hird } + } + can_pick = { + culture_not_pacifistic_trigger = yes + custom_tooltip = { + text = government_is_tribal_tt + scope:character = { + government_has_flag = government_is_tribal + } + } + custom_tooltip = { + text = cannot_have_tradition_fp1_coastal_warriors + NOT = { culture_tradition:tradition_fp1_coastal_warriors = { is_in_list = traits } } + } + } + + parameters = { + strong_traits_more_valued = yes + strong_traits_more_common = yes + weak_traits_looked_down_upon = yes + rowdy_trait_more_common = yes + pensive_trait_less_common = yes + } + character_modifier = { + cultural_head_fascination_mult = -0.25 + ai_boldness = 25 + accolade_glory_gain_mult = 0.1 + monthly_martial_lifestyle_xp_gain_mult = 0.15 + men_at_arms_limit = 1 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + OR = { + has_trait = strong + has_trait = physique_good + } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = strong_rulers_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_warrior_culture_travel_discount + } + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + if = { + limit = { + has_variable = aggressive_traditionalist_discount + } + add = { + value = traditionalist_discount + desc = traditionalist_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_warrior_culture } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + multiply = 0 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 4 + } + } +} + +tradition_martial_admiration = { + category = societal + + layers = { + 0 = martial + 1 = indian + 4 = knight.dds + } + + is_shown = { + NOR = { #Replaced by Futuwaa and Druzhina + has_cultural_pillar = heritage_iranian + has_cultural_pillar = heritage_frankish + has_cultural_pillar = heritage_east_slavic + has_cultural_tradition = tradition_futuwaa + has_cultural_tradition = tradition_druzhina + has_cultural_tradition = tradition_chanson_de_geste + } + } + + can_pick = { + culture_not_pacifistic_trigger = yes + NOR = { #Replaced by Futuwaa and Druzhina + has_cultural_pillar = heritage_iranian + has_cultural_pillar = heritage_frankish + has_cultural_pillar = heritage_east_slavic + has_cultural_tradition = tradition_futuwaa + has_cultural_tradition = tradition_druzhina + has_cultural_tradition = tradition_chanson_de_geste + } + } + + parameters = { + martial_education_more_valued = yes + prowess_traits_more_valued = yes + blademaster_trait_bonuses = yes + craven_and_content_traits_looked_down_upon = yes + knights_slightly_more_prone_to_injury = yes + can_duel_rivals = yes + } + + character_modifier = { + knight_limit = 2 + negate_prowess_penalty_add = 5 # Wounded knights fight better! + accolade_glory_gain_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_stoic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_knight = { + count >= 6 + prowess >= 12 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = knights_with_prowess_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_martial_admiration_travel_discount + } + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_martial_admiration } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 4 + } + } +} + +tradition_philosopher_culture = { + category = societal + + layers = { + 0 = learning + 1 = indian + 4 = philosopher.dds + } + + is_shown = { + NOT = { has_cultural_tradition = tradition_fp3_beacon_of_learning } + } + + can_pick = { + custom_description = { + text = culture_not_bellicose + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + NOT = { has_cultural_tradition = tradition_warrior_culture } + } + + parameters = { + pensive_trait_more_common = yes + rowdy_trait_less_common = yes + innovation_from_learning_traits = yes + } + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.2 + learning_per_prestige_level = 1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = scholar + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_scholar_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_philosopher_culture_travel_discount + } + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_philosopher_culture } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + +tradition_welcoming = { + category = societal + + layers = { + 0 = diplo + 1 = mena + 4 = diplomat.dds + } + + parameters = { + diplomacy_education_better_outcomes = yes + charming_trait_more_common = yes + } + character_modifier = { + monthly_court_grandeur_change_mult = 0.15 + owned_personal_scheme_success_chance_add = 10 + enemy_hostile_scheme_success_chance_add = 10 + character_travel_safety_mult = 0.1 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_egalitarian_or_stoic_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + OR = { + has_trait = education_diplomacy_4 + has_trait = education_diplomacy_5 + } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_diplomacy_edu_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_welcoming } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_eye_for_an_eye = { is_in_list = traits } + culture_tradition:tradition_zealous_people = { is_in_list = traits } + culture_tradition:tradition_forbearing = { is_in_list = traits } + culture_tradition:tradition_equitable = { is_in_list = traits } + culture_tradition:tradition_charitable = { is_in_list = traits } + culture_tradition:tradition_modest = { is_in_list = traits } + } + } + multiply = 0.1 + } + } +} + +tradition_eye_for_an_eye = { + category = societal + + layers = { + 0 = martial + 1 = mena + 4 = king.dds + } + + parameters = { + vengeful_trait_more_common = yes + vengeful_positive_forgiving_negative = yes + rivalries_more_common = yes + hostile_action_vs_rival_bonuses = yes + } + character_modifier = { + dread_baseline_add = 10 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_communal_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = vengeful + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_vengeful_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_eye_for_an_eye } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_welcoming = { is_in_list = traits } + culture_tradition:tradition_zealous_people = { is_in_list = traits } + culture_tradition:tradition_forbearing = { is_in_list = traits } + culture_tradition:tradition_equitable = { is_in_list = traits } + culture_tradition:tradition_charitable = { is_in_list = traits } + culture_tradition:tradition_modest = { is_in_list = traits } + } + } + multiply = 0.1 + } + } +} + +tradition_zealous_people = { + category = societal + + layers = { + 0 = learning + 1 = mediterranean + 4 = speech.dds + } + + parameters = { + zealous_trait_more_common = yes + humble_trait_more_common = yes + harder_to_convert_character_faith = yes + harder_to_convert_county_faith = yes + zealous_people_internal_yurt_unlock = yes + } + character_modifier = { + opinion_of_different_faith = -15 + ai_zeal = 25 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_or_communal_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = zealous + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_zealous_desc + } + } + if = { + limit = { + OR = { + has_variable = defensive_traditionalist_discount + has_variable = aggressive_traditionalist_discount + } + } + add = { + value = traditionalist_discount + desc = traditionalist_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_zealous_people } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_welcoming = { is_in_list = traits } + culture_tradition:tradition_eye_for_an_eye = { is_in_list = traits } + culture_tradition:tradition_forbearing = { is_in_list = traits } + culture_tradition:tradition_equitable = { is_in_list = traits } + culture_tradition:tradition_charitable = { is_in_list = traits } + culture_tradition:tradition_modest = { is_in_list = traits } + } + } + multiply = 0.1 + } + } +} + +tradition_forbearing = { + category = societal + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = philosopher.dds + } + + parameters = { + patient_trait_more_common = yes + calm_trait_more_common = yes + forbearing_internal_yurt_unlock = yes + } + character_modifier = { + stress_gain_mult = -0.1 + dread_baseline_add = -5 + + ai_war_cooldown = 3 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = patient + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_patient_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_forbearing } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_welcoming = { is_in_list = traits } + culture_tradition:tradition_eye_for_an_eye = { is_in_list = traits } + culture_tradition:tradition_zealous_people = { is_in_list = traits } + culture_tradition:tradition_equitable = { is_in_list = traits } + culture_tradition:tradition_charitable = { is_in_list = traits } + culture_tradition:tradition_modest = { is_in_list = traits } + } + } + multiply = 0.1 + } + } +} + +tradition_equitable = { + category = societal + + layers = { + 0 = diplo + 1 = mediterranean + 4 = hostages.dds + } + + parameters = { + just_trait_more_common = yes + honest_trait_more_common = yes + more_hostage_acceptance = yes + } + character_modifier = { + hostile_scheme_phase_duration_add = medium_scheme_phase_duration_malus_value + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_egalitarian_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = just + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_just_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_equitable } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_welcoming = { is_in_list = traits } + culture_tradition:tradition_eye_for_an_eye = { is_in_list = traits } + culture_tradition:tradition_zealous_people = { is_in_list = traits } + culture_tradition:tradition_forbearing = { is_in_list = traits } + culture_tradition:tradition_charitable = { is_in_list = traits } + culture_tradition:tradition_modest = { is_in_list = traits } + } + } + multiply = 0.1 + } + } +} + +tradition_charitable = { + category = societal + + layers = { + 0 = diplo + 1 = mena + 4 = ceremony.dds + } + + parameters = { + generous_trait_more_common = yes + compassionate_trait_more_common = yes + more_gift_opinion = yes + gives_more_gifts = yes + } + character_modifier = { + general_opinion = 5 + monthly_income_mult = -0.03 + ai_greed = -25 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_or_communal_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = generous + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_generous_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_charitable } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_welcoming = { is_in_list = traits } + culture_tradition:tradition_eye_for_an_eye = { is_in_list = traits } + culture_tradition:tradition_zealous_people = { is_in_list = traits } + culture_tradition:tradition_forbearing = { is_in_list = traits } + culture_tradition:tradition_equitable = { is_in_list = traits } + culture_tradition:tradition_modest = { is_in_list = traits } + } + } + multiply = 0.1 + } + } +} + +tradition_modest = { + category = societal + + layers = { + 0 = learning + 1 = indian + 4 = artisan.dds + } + + parameters = { + temperate_trait_more_common = yes + introverted_trait_bonuses = yes + ambitious_trait_penalty = yes + } + character_modifier = { + monthly_prestige_gain_mult = -0.1 + ai_boldness = -25 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = temperate + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_temperate_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_modest } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_welcoming = { is_in_list = traits } + culture_tradition:tradition_eye_for_an_eye = { is_in_list = traits } + culture_tradition:tradition_zealous_people = { is_in_list = traits } + culture_tradition:tradition_forbearing = { is_in_list = traits } + culture_tradition:tradition_equitable = { is_in_list = traits } + culture_tradition:tradition_charitable = { is_in_list = traits } + } + } + multiply = 0.1 + } + } +} + +tradition_practiced_pirates = { + category = societal + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = battle.dds + } + + can_pick = { + custom_description = { + text = percentage_of_culture_on_coast_desc + any_culture_county = { + percent >= 0.5 + has_coastal_province = yes + } + } + custom_tooltip = { + text = cultrad_not_nomadic_government_type + scope:character = { + NOT = { + government_has_flag = government_is_nomadic + } + } + } + } + + parameters = { + culture_can_raid_at_sea_even_if_feudal = yes + not_tribal_raiding_malus = yes + } + + character_modifier = { + max_loot_mult = 0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_desc + } + } + # Coastal requirement. + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.7 + has_coastal_province = yes + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = high_coastal_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_practiced_pirates } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { # Should be fairly rare for cultures outside of a Berber heritage + has_cultural_pillar = heritage_berber + } + multiply = 5 + } + } +} + +tradition_life_is_just_a_joke = { + category = societal + + layers = { + 0 = intrigue + 1 = western + 4 = noble.dds + } + + parameters = { + # Gregarious, Content, Cynical, & Fickle all gain +5 same-culture opinion. + life_is_a_joke_trait_same_culture_opinion = yes + #lose stress on war declaration + war_stress_loss = yes + #AI boldness increased + added_character_boldness = yes + cultrad_unlocks_t3_arbitrary_arrests = yes + } + + character_modifier = { + ai_boldness = high_positive_ai_value + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_communal_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = cynical + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_cynical_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_life_is_just_a_joke } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 0 } # The AI never pick this +} + +tradition_artisans = { + category = societal + + layers = { + 0 = steward + 1 = mena + 4 = artisan.dds + } + + is_shown = { + has_dlc_feature = royal_court + } + + parameters = { + improved_artisan_inspiration = yes + improved_weaver_inspiration = yes + } + county_modifier = { + build_gold_cost = -0.05 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + OR = { + has_completed_inspiration = yes + any_courtier_or_guest = { + OR = { + has_completed_inspiration = yes + exists = inspiration + } + } + } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = has_courtier_or_guest_with_inspiration_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_artisans } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + } +} + +tradition_noble_adoption = { + category = societal + + layers = { + 0 = diplo + 1 = mena + 4 = diplomat.dds + } + + is_shown = { + NOT = { + has_game_rule = no_adoption + } + } + + parameters = { + allows_adoption = yes + free_adoption = yes + better_ward_education = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_noble_adoption } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + } +} diff --git a/common/culture/traditions/03_fp3_traditions.txt b/common/culture/traditions/03_fp3_traditions.txt new file mode 100644 index 00000000..4f45ce91 --- /dev/null +++ b/common/culture/traditions/03_fp3_traditions.txt @@ -0,0 +1,854 @@ +########################### +# FP3 CULTURAL TRADITIONS +########################### + +####################### +# Central Asian Specific +####################### + +tradition_fp3_frontier_warriors = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = dismounted_warrior.dds + } + + is_shown = { + # DLC check. + has_fp3_dlc_trigger = yes + + # Any culture present in the given area can pick this + any_culture_county = { + any_county_province = { + OR = { + geographical_region = world_transoxiana + geographical_region = world_khorasan + geographical_region = world_steppe_tarim + } + } + } + } + + can_pick = { + culture_not_pacifistic_trigger = yes + # Must have a significant cultural presence in the general Turanian area, i.e. the "frontier" + custom_tooltip = { + text = culture_on_eastern_frontier_desc + any_culture_county = { + percent >= 0.2 + any_county_province = { + OR = { + geographical_region = world_transoxiana + geographical_region = world_khorasan + geographical_region = world_steppe_tarim + } + } + } + } + } + + parameters = { + unlock_maa_tarkhan = yes + faith_warrior_traits_more_valued = yes + } + province_modifier = { + hostile_raid_time = 0.5 + } + character_modifier = { + mercenary_hire_cost_mult = -0.10 + movement_speed = 0.05 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_stoic_desc + } + } + # Gotta be a steppe-heavy culture not to get a surcharge. + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = steppe + terrain = desert + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = steppe_or_desert_percentage_desc + } + } + #Turko-Mongol-Iranians get it cheaper! + if = { + limit = { + NOR = { + has_cultural_pillar = heritage_iranian + has_cultural_pillar = heritage_turkic + has_cultural_pillar = heritage_mongolic + has_cultural_pillar = heritage_tocharian + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = not_of_central_asian_heritage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_frontier_warriors } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = steppe + } + } + } + } + } + multiply = 0 + } + } +} + +####################### +# Persian Specific +####################### + +tradition_fp3_irrigation_experts = { + category = realm + + layers = { + 0 = steward + 1 = mena + 4 = water_technology.dds + } + + is_shown = { + # DLC check. + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + NOT = { has_cultural_tradition = tradition_dryland_dwellers } + } + + can_pick = { + custom_description = { + text = culture_in_dryland_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + terrain = desert_mountains + } + } + } + # Shouldn't be combined with the following traditions: + custom_tooltip = { + text = cannot_have_tradition_dryland_dwellers + NOT = { culture_tradition:tradition_dryland_dwellers = { is_in_list = traits } } #this is another approach to drylands dwelling + } + } + + parameters = { + innovative_traits_more_valued = yes + unlocks_qanat_building = yes + plantations_building_bonuses = yes + drylands_hunt_success_chance = yes + } + character_modifier = { + negate_health_penalty_add = 0.1 + desert_travel_danger = desert_medium_danger_reduction + drylands_travel_danger = drylands_medium_danger_reduction + desert_mountains_travel_danger = desert_mountains_medium_danger_reduction + } + county_modifier = { + desert_development_growth_factor = 0.35 + drylands_development_growth_factor = 0.15 + } + province_modifier = { + desert_construction_gold_cost = -0.1 + drylands_construction_gold_cost = -0.1 + desert_holding_construction_gold_cost = -0.1 + drylands_holding_construction_gold_cost = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_egalitarian_or_courtly_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = dry_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_irrigation_experts } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { #if the realm isn't very dry, the AI won't pick this + scope:character = { + any_sub_realm_county = { + percent >= 0.4 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + multiply = 4 + } + } +} + +tradition_fp3_beacon_of_learning = { # Offshoot of tradition_philosopher_culture + category = societal + + layers = { + 0 = learning + 1 = mena + 4 = beacon_of_learning.dds + } + + is_shown = { + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + NOT = { has_cultural_tradition = tradition_philosopher_culture } # Replaces Philosopher Culture + } + + can_pick = { + custom_description = { + text = culture_not_bellicose + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + NOT = { has_cultural_tradition = tradition_warrior_culture } + NOT = { has_cultural_tradition = tradition_philosopher_culture } + } + can_pick_for_hybridization = { + custom_tooltip = { + text = no_warrior_culture + NOT = { # Only blocks polygamous to avoid duplicate warnings, but is blocked by concubines + culture_tradition:tradition_warrior_culture = { is_in_list = traits } + } + } + custom_tooltip = { + text = no_philosopher_culture + NOT = { # Only blocks polygamous to avoid duplicate warnings, but is blocked by concubines + culture_tradition:tradition_philosopher_culture = { is_in_list = traits } + } + } + } + + parameters = { + pensive_trait_more_common = yes + rowdy_trait_less_common = yes + innovation_from_learning_traits = yes + can_appoint_court_scholar = yes + guardian_education_better_outcomes = yes + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.2 + learning_per_piety_level = 1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = scholar + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_scholar_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_beacon_of_learning } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + +# Replaces Refined Poetry +tradition_fp3_enlightened_magnates = { + category = societal + + layers = { + 0 = diplo + 1 = mena + 4 = jirga.dds + } + + is_shown = { + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + NOT = { has_cultural_parameter = poet_trait_gives_bonuses } + } + + parameters = { + poet_trait_gives_bonuses = yes + poet_trait_more_common = yes + characters_are_better_court_poets = yes + characters_are_better_tax_collector = yes + unlock_tax_obligation_deqhan = yes + } + + character_modifier = { + clan_tax_slot_add = 1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_poet + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_poet_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_poetry_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_enlightened_magnates } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 125 + if = { + limit = { # AI should avoid stacking traditions for courtly court positions + culture_tradition:tradition_music_theory = { is_in_list = traits } + } + multiply = 0.25 + } + } +} + +####################### +# Afghanistan/Baluchistan Specific +####################### + +tradition_fp3_jirga = { + category = regional + + layers = { + 0 = learning + 1 = indian + 4 = jirga.dds + } + + is_shown = { + # DLC check. + has_fp3_dlc_trigger = yes + OR = { + has_cultural_pillar = heritage_iranian + has_cultural_pillar = heritage_indo_aryan + } + } + + can_pick = { + scope:character = { + government_has_flag = government_is_tribal #This tradition is really a holdover from tribal culture, and though the Afghanis might have it despite having changed government forms, others cannot pick it now. + } + } + + parameters = { + tribal_elective_enabled = yes + just_trait_gives_bonuses = yes + pardoning_gives_prestige = yes + } + character_modifier = { + owned_personal_scheme_success_chance_add = 10 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + county_opinion < 0 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = counties_with_low_county_opinion_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_jirga } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_things = { is_in_list = traits } + culture_tradition:tradition_the_witenagemot = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + +tradition_fp3_pragmatic_creed = { + category = regional + + layers = { + 0 = diplo + 1 = mena + 4 = pragmatic_creed.dds + } + + is_shown = { + # DLC check. + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + } + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_description = { + text = culture_in_mountains_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + + parameters = { + unlock_maa_zupin_warrior = yes + diligent_trait_more_common = yes + pragmatic_traits_county_opinion_modifiers = yes + commanders_likelier_to_gain_commander_traits = yes + } + character_modifier = { + skirmishers_toughness_mult = 0.10 + skirmishers_maintenance_mult = -0.15 + heavy_cavalry_maintenance_mult = 0.15 + light_cavalry_maintenance_mult = 0.15 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bureaucratic_courtly_or_spiritual_desc + } + } + # Gotta be a mountain-heavy culture not to get a surcharge. + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mountain_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_pragmatic_creed } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + OR = { # Don't pick this if the culture have Light Cavalry or Heavy Cavalry MaAs + culture_has_heavy_cavalry_maa = yes + culture_has_light_cavalry_maa = yes + } + } + multiply = 0 + } + if = { + limit = { + NOT = { # Less likely for cultures who doesn't descend from Daylamite + any_parent_culture_or_above = { + this = culture:daylamite + } + } + } + multiply = 0.75 + } + } +} + +####################### +# Kurdish Specific +####################### + +tradition_fp3_fierce_independence = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = fierce_independence.dds + } + + is_shown = { + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + } + + can_pick = { + NOT = { + has_cultural_tradition = tradition_staunch_traditionalists + } + } + + parameters = { + harder_to_hybridize = yes + harder_to_convert_county_culture = yes + } + + character_modifier = { + controlled_province_advantage = 5 + same_culture_opinion = 5 + opinion_of_liege = -10 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + scope:character = { + any_sub_realm_county = { + culture != scope:character.culture + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = has_other_cultures_in_realm_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_fierce_independence } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOR = { + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + multiply = 0.5 + } + } +} diff --git a/common/culture/traditions/NEOW_traditions.txt b/common/culture/traditions/NEOW_traditions.txt index 65d8d680..4912ca4a 100644 --- a/common/culture/traditions/NEOW_traditions.txt +++ b/common/culture/traditions/NEOW_traditions.txt @@ -425,6 +425,135 @@ tradition_defiant = { # defiant } } +tradition_farmer_republics = { + category = societal + + layers = { + 0 = steward + 1 = western + 4 = farmland.dds + } + + is_shown = { + NOT = { has_cultural_tradition = tradition_republican_legacy } + } + can_pick = { + NOT = { has_cultural_tradition = tradition_republican_legacy } + custom_tooltip = { + text = cultrad_not_nomadic_government_type + scope:character = { + NOT = { + government_has_flag = government_is_nomadic + } + } + } + } + + parameters = { + use_farmer_republics = yes + unlock_innovation_pike_columns = yes + city_buildings_more_powerful = yes + city_buildings_less_control = yes + trait_county_opinion_modifiers = yes + } + character_modifier = { + city_holding_build_gold_cost = -0.05 + city_holding_holding_build_gold_cost = -0.05 + farmlands_development_growth_factor = 0.3 + farmlands_construction_gold_cost = -0.1 + farmlands_levy_size = 0.1 + tyranny_gain_mult = 0.25 + tyranny_loss_mult = -0.5 + dread_decay_mult = 0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.9 + culture = scope:character.culture + any_county_province = { + has_holding_type = city_holding + } + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = 90_percent_cities_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_farmer_republics } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.15 + culture = scope:character.culture + any_county_province = { + has_holding_type = city_holding + } + } + } + } + } + multiply = 0 + } + if = { + limit = { + NOT = { + scope:character = { + any_vassal = { + primary_title.tier > tier_county + government_has_flag = government_is_special_republic + } + } + } + } + multiply = 0 + } + } +} tradition_creaght = { category = societal diff --git a/common/customizable_localization/00_government_custom_loc.txt b/common/customizable_localization/00_government_custom_loc.txt index 65c872db..739a60c7 100644 --- a/common/customizable_localization/00_government_custom_loc.txt +++ b/common/customizable_localization/00_government_custom_loc.txt @@ -1126,6 +1126,46 @@ GetGovernmentIcon = { } localization_key = republic_icon_concept } + text = { # Republic + trigger = { + trigger_if = { + limit = { + is_alive = no + } + has_government = peasantrepublic_government + } + trigger_else = { + trigger_if = { + limit = { is_ruler = yes } + government_has_flag = government_is_prepublic + } + trigger_else = { + liege ?= { government_has_flag = government_is_prepublic } + } + } + } + localization_key = peasantrepublic_icon_concept + } + text = { # Republic + trigger = { + trigger_if = { + limit = { + is_alive = no + } + has_government = urbanrepublic_government + } + trigger_else = { + trigger_if = { + limit = { is_ruler = yes } + government_has_flag = government_is_urepublic + } + trigger_else = { + liege ?= { government_has_flag = government_is_urepublic } + } + } + } + localization_key = urbanrepublic_icon_concept + } text = { # Theocracy trigger = { trigger_if = { diff --git a/common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt b/common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt index 0d3e8d86..6ea858e0 100644 --- a/common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt +++ b/common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt @@ -48,36 +48,44 @@ become_landless_adventurer_decision = { is_shown = { #DLC check. - has_ep3_dlc_trigger = yes OR = { - ai_can_valid_to_create_laamp_trigger = yes - is_ai = no - } - #Standard filter checks. - OR = { - is_landed = yes AND = { + has_ep3_dlc_trigger = yes is_ai = no - government_allows = administrative - top_liege = this - is_landed = no + } + AND = { + has_ep3_dlc_trigger = yes + OR = { + ai_can_valid_to_create_laamp_trigger = yes + is_ai = no + } + #Standard filter checks. + OR = { + is_landed = yes + AND = { + is_ai = no + government_allows = administrative + top_liege = this + is_landed = no + } + } + # Relevant cultures/faiths + OR = { + culture = { has_cultural_parameter = unlock_voluntary_laampdom } + faith = { has_doctrine_parameter = unlock_voluntary_laampdom_faith } + has_trait = nomadic_philosophy + has_character_modifier = tgp_gave_up_modifier + AND = { + is_ai = no + government_allows = administrative + top_liege = this + is_landed = no + } + } + save_temporary_scope_as = potential_laamp_temp + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:potential_laamp_temp } # Registered fighting license } } - # Relevant cultures/faiths - OR = { - culture = { has_cultural_parameter = unlock_voluntary_laampdom } - faith = { has_doctrine_parameter = unlock_voluntary_laampdom_faith } - has_trait = nomadic_philosophy - has_character_modifier = tgp_gave_up_modifier - AND = { - is_ai = no - government_allows = administrative - top_liege = this - is_landed = no - } - } - save_temporary_scope_as = potential_laamp_temp - can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:potential_laamp_temp } # Registered fighting license } is_valid = { @@ -88,10 +96,13 @@ become_landless_adventurer_decision = { faith.religious_head_title.holder != root } # Counts and dukes only - custom_tooltip = { - text = become_landless_adventurer_decision_tier_tt - highest_held_title_tier >= tier_county - highest_held_title_tier <= tier_duchy + OR = { + is_ai = no + custom_tooltip = { + text = become_landless_adventurer_decision_tier_tt + highest_held_title_tier >= tier_county + highest_held_title_tier <= tier_duchy + } } # Not too big custom_tooltip = { diff --git a/common/decisions/dlc_decisions/mpo/mpo_decisions.txt b/common/decisions/dlc_decisions/mpo/mpo_decisions.txt index 8bb054c2..75792d69 100644 --- a/common/decisions/dlc_decisions/mpo/mpo_decisions.txt +++ b/common/decisions/dlc_decisions/mpo/mpo_decisions.txt @@ -4763,6 +4763,7 @@ settle_people_decision = { } if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes } @@ -4859,6 +4860,7 @@ settle_people_decision = { if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes } @@ -4934,6 +4936,7 @@ settle_people_decision = { if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes } @@ -5009,6 +5012,7 @@ settle_people_decision = { } if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes } @@ -5651,6 +5655,7 @@ step_away_from_the_steppe_decision = { } if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes } @@ -5747,6 +5752,7 @@ step_away_from_the_steppe_decision = { if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes } @@ -5822,6 +5828,7 @@ step_away_from_the_steppe_decision = { if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes } @@ -5897,6 +5904,7 @@ step_away_from_the_steppe_decision = { } if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes } @@ -6945,7 +6953,6 @@ become_nomadic_decision = { capital_county = { any_county_situation = { OR = { - situation:the_great_steppe ?= this situation:game_rule_extra_nomads_arabs ?= this situation:game_rule_extra_nomads_sami ?= this situation:game_rule_extra_nomads_tibet ?= this diff --git a/common/decisions/dlc_decisions/tgp/tgp_steppe_decisions.txt b/common/decisions/dlc_decisions/tgp/tgp_steppe_decisions.txt new file mode 100644 index 00000000..9f5b98d0 --- /dev/null +++ b/common/decisions/dlc_decisions/tgp/tgp_steppe_decisions.txt @@ -0,0 +1,569 @@ +adopt_steppe_administration = { + picture = { + reference = "gfx/interface/illustrations/decisions/tgp_great_project.dds" + } + decision_group_type = nomad_major + + ai_check_interval_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 60 + empire = 60 + hegemony = 0 + } + + desc = adopt_steppe_administration_desc + selection_tooltip = adopt_steppe_administration_tooltip + + is_shown = { + has_mpo_dlc_trigger = yes + has_tgp_dlc_trigger = yes + government_has_flag = government_is_nomadic + OR = { + highest_held_title_tier = tier_kingdom + highest_held_title_tier = tier_empire + } + is_playable_character = yes + } + + is_valid = { + custom_tooltip = { + text = you_are_the_culture_head + culture = { + culture_head = root + } + } + OR = { # You need to already be on your way to imperial status, if not already there + has_realm_law = nomadic_authority_4 + has_realm_law = nomadic_authority_5 + } + custom_tooltip = { + text = steppe_admin_kingdom_requirement + any_realm_de_jure_kingdom = { + count >= 3 + root = { + completely_controls = prev + } + title_capital_county.title_province ?= { + OR = { + has_holding_type = castle_holding + has_holding_type = city_holding + has_holding_type = church_holding + has_holding_type = temple_citadel_holding + } + } + } + } + save_temporary_scope_value_as = { + name = temp_num_tributaries + value = sub_realm_with_tributaries_size + } + custom_tooltip = { # You need a total realm size big enough to impress + text = steppe_admin_tributary_req + sub_realm_with_tributaries_size >= 50 + } + custom_tooltip = { # You need somewhere to get the idea to adopt Merit and examinations from + text = steppe_admin_merit_req + OR = { + any_neighboring_top_liege_realm_owner = { + AND = { + government_has_flag = government_has_merit + highest_held_title_tier >= tier_kingdom + } + } + any_tributary = { + AND = { + government_has_flag = government_has_merit + highest_held_title_tier >= tier_kingdom + } + } + any_vassal_or_below = { + AND = { + government_has_flag = government_has_merit + highest_held_title_tier >= tier_kingdom + } + } + } + } + } + + is_valid_showing_failures_only = { + is_at_war = no + is_tributary = no + is_available_adult = yes + has_active_diarchy = no + } + + cost = { + gold = { + value = 0 + if = { + limit = { + has_treasury = no + } + add = massive_prestige_value # building an imperial palace isn't cheap, you know + } + } + + treasury = { + value = 0 + if = { + limit = { + has_treasury = yes + } + add = 500 + } + } + prestige = { + value = monumental_prestige_value + } + } + + effect = { + #GoK stops really being GoK + gok_government_change_story_end_effect = yes + if = { + limit = { + has_realm_law = nomadic_authority_4 + } + add_character_flag = realm_law_4 + } + else = { + add_character_flag = realm_law_5 + } + add_legitimacy_effect = { LEGITIMACY = massive_legitimacy_gain } + dynasty = { + add_dynasty_prestige = massive_dynasty_prestige_gain + } + save_scope_as = nomad_settling_down + save_scope_value_as = { + name = invading_herd_value + value = domicile.herd + } + nomad_domicile_refund_treasury_or_gold_effect = yes # we pay you back for your domicile investments + nomad_convert_herds_to_treasury_or_gold_special_troops_effect = yes # we pay you back for your herd investments + nomad_to_steppe_admin_new_capital_effect = yes # we arrange a new capital for you the same way we would any other settling nomad + change_government = steppe_admin_government + give_noble_family_title = { + name = noble_family_name + tier = county + article = DEFAULT_TITLE_NAME_ARTICLE + government = steppe_admin_government + save_scope_as = new_title + } + scope:new_title = { + set_coa = holder.house + } + hidden_effect = { + switch = { + trigger = has_character_flag + realm_law_4 = { + add_realm_law_skip_effects = meritocratic_bureaucracy_2 + remove_character_flag = realm_law_4 + } + realm_law_5 = { + add_realm_law_skip_effects = meritocratic_bureaucracy_3 + remove_character_flag = realm_law_5 + } + } + } + hidden_effect = { # We explain this in an earlier tooltip + add_treasury_or_gold = { + value = scope:domicile_refund_treasury_or_gold_value + add = scope:nomad_convert_herds_to_treasury_or_gold_value + } + } + if = { + limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } + any_held_title = { + is_nomad_title = yes + } + } + every_held_title = { + limit = { + is_nomad_title = yes + } + root = { + destroy_title = prev + } + } + } + custom_tooltip = { + text = merit_based_vassals_convert_to_steppe_admin + if = { + limit = { + any_vassal = { + government_has_flag = government_has_merit + NOT = { government_has_flag = government_is_steppe_admin } + } + } + every_vassal = { + limit = { + government_has_flag = government_has_merit + NOT = { government_has_flag = government_is_steppe_admin } + } + change_government = steppe_admin_government + } + } + } + hidden_effect = { + every_tributary = { + add_to_list = tributaries + } + every_in_list = { + list = tributaries + start_tributary_interaction_effect = { # to update their contract types for your new status + TRIBUTARY = this + SUZERAIN = root + } + } + } + hidden_effect = { + generate_new_steppe_admin_families_effect = yes # we populate your noble families so you have some starting non-nomadic administrators + } + } + + ai_potential = { + #AI greatest of khans shouldn't be doing this and ruining their GoKness + NOR = { + has_trait = greatest_of_khans + any_owned_story = { + OR = { + story_type = story_mongol_invasion + story_type = story_greatest_of_khans + } + } + } + } + + ai_will_do = { + base = 100 # the bar to doing this is high enoug that if the AI can do it, the AI should do it + } +} + +### Return to the Steppe ### +return_to_the_steppe_decision = { + picture = { + reference = "gfx/interface/illustrations/event_story/mpo_steppe_region.dds" + } + decision_group_type = nomad_major + + desc = return_to_the_steppe_decision_desc + selection_tooltip = return_to_the_steppe_decision_tooltip + + ai_check_interval_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 72 # just in case there's an orphaned steppe admin kingdom somewhere + empire = 72 + hegemony = 0 + } + + is_shown = { + has_mpo_dlc_trigger = yes + has_tgp_dlc_trigger = yes + government_has_flag = government_is_steppe_admin + is_independent_ruler = yes + is_playable_character = yes + NOT = { + any_vassal_or_below = { + is_ai = no # the gamestate could conceivably result in as situation where you could game over a player-vassal by doing this, so we just make sure it can't happen + } + } + } + + is_valid = { + has_trait = nomadic_philosophy # you need at least some connection to the steppe to want to go back to it + custom_tooltip = { + text = small_enough_realm_to_abandon + any_realm_county = { + count <= 10 + title_province = { + OR = { + has_holding_type = castle_holding + has_holding_type = church_holding + has_holding_type = city_holding + has_holding_type = temple_citadel_holding + } + } + } + } + } + + is_valid_showing_failures_only = { + is_at_war = no + is_available = yes + has_active_diarchy = no + } + + cost = { + prestige = { + value = massive_prestige_value # this is already a escape hatch, so we don't want it to be too punishing + } + } + + effect = { + custom_tooltip = { + text = treasury_emptying_effect_desc + empty_treasury_when_abandoning_landed_life_effect = yes # otherwise the treasury sticks around + } + refund_noble_family_domicile_buildings_effect = yes + custom_tooltip = { + text = nomadize_landless_noble_families + refund_vassal_noble_families_and_make_them_nomads_effect = yes # for those who share your cultural heritage + } + custom_tooltip = { + text = rehouse_landless_noble_families + rehome_noble_families_to_compatible_liege_effect = yes # we find a new home for those who don't share your cultural heritage + } + custom_tooltip = { + text = title_maa_regiments_will_be_destroyed + if = { + limit = { + any_maa_regiment = { + is_title_maa_regiment = yes + } + } + every_maa_regiment = { + limit = { + is_title_maa_regiment = yes + } + destroy_maa_regiment = yes + } + } + } + change_government = nomad_government + hidden_effect = { + if = { + limit = { + exists = scope:current_treasury # saved in empty_treasury_when_abandoning_landed_life_effect + } + add_gold = { + value = scope:current_treasury + } + } + } + custom_tooltip = { + text = convert_steppe_admin_to_meritocratic_tooltip + convert_steppe_admin_vassals_to_meritocratic_effect = yes + } + hidden_effect = { + every_tributary = { + add_to_list = tributaries + } + every_in_list = { + list = tributaries + start_tributary_interaction_effect = { # to update their contract types for your new status + TRIBUTARY = this + SUZERAIN = root + } + } + } + } + + ai_potential = { + capital_county.title_province = { + NOR = { + has_holding_type = castle_holding + has_holding_type = church_holding + has_holding_type = city_holding + has_holding_type = temple_citadel_holding + } + } + } + + ai_will_do = { + base = 100 # if the potential is met, the AI should do it + } +} + +### Adopt Meritocratic Government ### +convert_to_meritocratic_decision = { + picture = { + reference = "gfx/interface/illustrations/event_story/tgp_dynastic_cycle_stability.dds" + } + decision_group_type = major + + ai_check_interval_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 60 + empire = 60 + hegemony = 0 + } + + desc = convert_to_meritocratic_desc + selection_tooltip = convert_to_meritocratic_tooltip + + is_shown = { + has_tgp_dlc_trigger = yes + government_has_flag = government_is_steppe_admin + OR = { + highest_held_title_tier = tier_kingdom # this isn't standard, but will cover some edge cases for orphaned steppe admin kingdoms + highest_held_title_tier = tier_empire + } + any_sub_realm_county = { + count > 0 + title_province = { + OR = { + has_holding_type = castle_holding + has_holding_type = church_holding + has_holding_type = city_holding + has_holding_type = temple_citadel_holding + } + } + } + is_playable_character = yes + } + + is_valid = { + OR = { + has_realm_law = meritocratic_bureaucracy_2 + has_realm_law = meritocratic_bureaucracy_3 + } + save_temporary_scope_value_as = { + name = temp_num_qualifying_counties + value = temp_num_qualifying_counties_count + } + custom_tooltip = { + text = convert_to_meritocratic_county_count + any_sub_realm_county = { + count >= 30 + holder = { + is_governor_or_admin_count = yes + government_has_flag = government_has_merit + } + title_province = { + OR = { + has_holding_type = castle_holding + has_holding_type = church_holding + has_holding_type = city_holding + has_holding_type = temple_citadel_holding + } + } + } + } + } + + is_valid_showing_failures_only = { + is_at_war = no + is_available_adult = yes + has_active_diarchy = no + } + + cost = { + gold = { + value = 0 + if = { + limit = { + has_treasury = no + } + add = monumental_gold_value + } + } + treasury = { + value = 0 + if = { + limit = { + has_treasury = yes + } + add = monumental_gold_value + } + } + prestige = { + value = massive_prestige_value + } + influence = { + value = monumental_influence_value + } + } + + effect = { + add_legitimacy_effect = { LEGITIMACY = monumental_legitimacy_gain } + dynasty = { + add_dynasty_prestige = monumental_dynasty_prestige_gain + } + tgp_domicile_conversion_when_changing_government_type = { + NEW_DOMICILE_TYPE = east_asian_estate + NEW_GOVERNMENT_TYPE = meritocratic_government + } + change_government = meritocratic_government + hidden_effect = { + every_tributary = { + add_to_list = tributaries + } + every_in_list = { + list = tributaries + start_tributary_interaction_effect = { # to update their contract types for your new status + TRIBUTARY = this + SUZERAIN = root + } + } + } + custom_tooltip = { + text = steppe_admin_vassals_will_convert + convert_steppe_admin_vassals_to_meritocratic_effect = yes + } + custom_tooltip = { + text = non_merit_based_vassals_become_tributaries + if = { + limit = { + any_vassal = { + NOT = { + government_has_flag = government_has_merit + } + } + } + create_title_and_vassal_change = { + type = independency + save_scope_as = change + add_claim_on_loss = no + } + every_vassal = { + limit = { + NOT = { + government_has_flag = government_has_merit + } + } + add_to_list = soon_to_be_former_vassals + becomes_independent = { change = scope:change } + } + resolve_title_and_vassal_change = scope:change + every_in_list = { + list = soon_to_be_former_vassals + start_tributary_interaction_effect = { + TRIBUTARY = this + SUZERAIN = root + } + } + } + } + } + + ai_potential = { + } + + ai_will_do = { + base = 0 + modifier = { + add = 20 + NOT = { has_trait = nomadic_philosophy } + } + modifier = { + add = 30 + has_trait = education_learning + } + modifier = { + add = 50 + has_religion = religion:confucianism_religion + } + modifier = { + add = 30 + has_trait = confucian_education + } + } +} diff --git a/common/defines/00_defines.txt b/common/defines/00_defines.txt index deda2994..71f8675d 100644 --- a/common/defines/00_defines.txt +++ b/common/defines/00_defines.txt @@ -129,7 +129,7 @@ NCharacter = { MAX_PROVISIONS = 2500 # maximum provisions value a character can have PROVISIONS_LOW_WARNING = 500 # when travel planner should warn about provisions running low - BASE_HERD_CONVERSION_RATE = 0.15 # base herd conversion rate + BASE_HERD_CONVERSION_RATE = 0.08 # base herd conversion rate BASE_HERD_CAPACITY = { # base herd capacity for different title tiers 0 # Unlanded 500 # Barony @@ -552,6 +552,7 @@ NGovernment = { "landless_minority_government" "nomad_government" "herder_government" + "peasantrepublic_government" "celestial_government" "japan_administrative_government" "japan_feudal_government" @@ -965,7 +966,7 @@ NCounty = { COUNTY_FERTILITY_DECLINE_FACTOR = 0.125 # Makes all county fertility decline modifiers give out more adjusted growth. 1.1 = 10% stronger decline. Moves equilibriums COUNTY_FERTILITY_EQUILIBRIUM_FACTOR = 0.09 # 0.007 # Factor value for how sensitive the fertility equilibrium is towards small changes. Inverted in calculations: the lower the value the more sensitive the behavior. Set to 100 to have a clear curve. COUNTY_FERTILITY_MONTHLY_CHANGE_LEVELS = { -20 -0.01 0.01 20 } - COUNTY_FERTILITY_NON_NOMAD_HOLDING_MALUS = -0.75 # Negative mult malus applied to the amount of Herd gained from the county fertility in a county that does not have a Nomad or Herder Holding + COUNTY_FERTILITY_NON_NOMAD_HOLDING_MALUS = -0.001 # Negative mult malus applied to the amount of Herd gained from the county fertility in a county that does not have a Nomad or Herder Holding HERD_GAIN_FROM_COUNTY_MULTIPLIER = 0.5 # Direct multiplier on the base Herd gained from County ( Base Gain = CountyFertility * HERD_GAIN_FROM_COUNTY_MULTIPLIER ) } @@ -1398,7 +1399,7 @@ NBarter = { BASE_PROGRESS = 15 PROGRESS_PER_SOLDIER = 0.005 LOOT_PER_SOLDIER = 0.1 # How much loot can a single soldier carry? Minimum increment is 0.001 - BARTER_GOODS_TO_LOOT_MULT = 0.5 # Used to convert Barter Goods to Loot. A value of 0.5 means that 2 Barter Goods are worth 1 Loot + BARTER_GOODS_TO_LOOT_MULT = 1.5 # Used to convert Barter Goods to Loot. A value of 0.5 means that 2 Barter Goods are worth 1 Loot } NCharacterGlow = { diff --git a/common/domiciles/buildings/00_estate_buildings.txt b/common/domiciles/buildings/00_estate_buildings.txt index 9b57c94f..6c688959 100644 --- a/common/domiciles/buildings/00_estate_buildings.txt +++ b/common/domiciles/buildings/00_estate_buildings.txt @@ -339,7 +339,7 @@ estate_main_05 = { slot_type = main internal_slots = 10 construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } previous_building = estate_main_04 can_construct = { @@ -425,7 +425,7 @@ estate_main_05 = { ### Diplomacy Upgrade living_quarters_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -462,7 +462,7 @@ living_quarters_01 = { } living_quarters_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = living_quarters_01 @@ -501,7 +501,7 @@ living_quarters_02 = { } living_quarters_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = living_quarters_02 @@ -543,7 +543,7 @@ living_quarters_03 = { } living_quarters_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = living_quarters_03 @@ -588,7 +588,7 @@ living_quarters_04 = { ### Martial Upgrade trophy_room_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -620,7 +620,7 @@ trophy_room_01 = { } trophy_room_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = trophy_room_01 @@ -653,7 +653,7 @@ trophy_room_02 = { } trophy_room_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = trophy_room_02 @@ -694,7 +694,7 @@ trophy_room_03 = { } trophy_room_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = trophy_room_03 @@ -738,7 +738,7 @@ trophy_room_04 = { ### Stewardship Upgrade office_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -775,7 +775,7 @@ office_01 = { } office_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = office_01 @@ -813,7 +813,7 @@ office_02 = { } office_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = office_02 @@ -856,7 +856,7 @@ office_03 = { } office_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = office_03 @@ -902,7 +902,7 @@ office_04 = { ### Intrigue Upgrade servants_quarters_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -935,7 +935,7 @@ servants_quarters_01 = { } servants_quarters_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = servants_quarters_01 @@ -971,7 +971,7 @@ servants_quarters_02 = { } servants_quarters_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = servants_quarters_02 @@ -1012,7 +1012,7 @@ servants_quarters_03 = { } servants_quarters_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = servants_quarters_03 @@ -1057,7 +1057,7 @@ servants_quarters_04 = { ### Learning Upgrade library_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -1089,7 +1089,7 @@ library_01 = { } library_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = library_01 @@ -1127,7 +1127,7 @@ library_02 = { # Observatory sub-branch library_observatory_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = library_02 @@ -1168,7 +1168,7 @@ library_observatory_03 = { } library_observatory_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = library_observatory_03 @@ -1211,7 +1211,7 @@ library_observatory_04 = { # Education sub-branch library_education_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = library_02 @@ -1252,7 +1252,7 @@ library_education_03 = { } library_education_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = library_education_03 @@ -1297,7 +1297,7 @@ library_education_04 = { ### Bath bath_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -1334,7 +1334,7 @@ bath_01 = { } bath_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = bath_01 @@ -1372,7 +1372,7 @@ bath_02 = { } bath_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = bath_02 @@ -1414,7 +1414,7 @@ bath_03 = { } bath_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = bath_03 @@ -1458,7 +1458,7 @@ bath_04 = { ### Guest Room guest_room_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -1499,7 +1499,7 @@ guest_room_01 = { } guest_room_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = guest_room_01 @@ -1543,7 +1543,7 @@ guest_room_02 = { } guest_room_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = guest_room_02 @@ -1592,7 +1592,7 @@ guest_room_03 = { } guest_room_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = guest_room_03 @@ -1640,7 +1640,7 @@ guest_room_04 = { } guest_room_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = guest_room_04 @@ -1689,7 +1689,7 @@ guest_room_05 = { } guest_room_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = guest_room_05 @@ -1739,7 +1739,7 @@ guest_room_06 = { ### Wine Cellar wine_cellar_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -1781,7 +1781,7 @@ wine_cellar_01 = { } wine_cellar_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = wine_cellar_01 @@ -1823,7 +1823,7 @@ wine_cellar_02 = { } wine_cellar_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = wine_cellar_02 @@ -1867,7 +1867,7 @@ wine_cellar_03 = { ### Courtyard courtyard_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -1903,7 +1903,7 @@ courtyard_01 = { } courtyard_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = courtyard_01 @@ -1940,7 +1940,7 @@ courtyard_02 = { } courtyard_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = courtyard_02 @@ -1981,7 +1981,7 @@ courtyard_03 = { } courtyard_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = courtyard_03 @@ -2024,7 +2024,7 @@ courtyard_04 = { ### Prison prison_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -2069,7 +2069,7 @@ prison_01 = { } prison_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = prison_01 @@ -2118,7 +2118,7 @@ prison_02 = { } prison_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = prison_02 @@ -2172,7 +2172,7 @@ prison_03 = { } prison_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = prison_03 @@ -2228,7 +2228,7 @@ prison_04 = { ### Reception Hall reception_hall_01 = { construction_time = 1000 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -2270,7 +2270,7 @@ reception_hall_01 = { reception_hall_02 = { construction_time = 1000 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = reception_hall_01 @@ -2313,7 +2313,7 @@ reception_hall_02 = { reception_hall_03 = { construction_time = 1000 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = reception_hall_02 @@ -2357,7 +2357,7 @@ reception_hall_03 = { reception_hall_04 = { construction_time = 1000 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = reception_hall_03 @@ -2401,7 +2401,7 @@ reception_hall_04 = { reception_hall_05 = { construction_time = 1000 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = reception_hall_04 @@ -2446,7 +2446,7 @@ reception_hall_05 = { ### Cabinet of Curiosities cabinet_of_curiosities_01 = { construction_time = 1000 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -2490,7 +2490,7 @@ cabinet_of_curiosities_01 = { cabinet_of_curiosities_02 = { construction_time = 1000 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = cabinet_of_curiosities_01 @@ -2544,7 +2544,7 @@ cabinet_of_curiosities_02 = { cabinet_of_curiosities_03 = { construction_time = 1000 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = cabinet_of_curiosities_02 @@ -2601,7 +2601,7 @@ cabinet_of_curiosities_03 = { #Grand Solar grand_solar_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = estate_main_01 @@ -2642,7 +2642,7 @@ grand_solar_01 = { grand_solar_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = grand_solar_01 @@ -2683,7 +2683,7 @@ grand_solar_02 = { grand_solar_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = grand_solar_02 @@ -2726,7 +2726,7 @@ grand_solar_03 = { grand_solar_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate } slot_type = internal previous_building = grand_solar_03 @@ -2778,7 +2778,7 @@ grand_solar_04 = { ### Temple Building temple_small_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } can_construct = { NOT = { @@ -2918,7 +2918,7 @@ temple_small_01 = { } temple_small_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_small_01 cost = { @@ -3053,7 +3053,7 @@ temple_small_02 = { } temple_small_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_small_02 can_construct = { @@ -3194,7 +3194,7 @@ temple_small_03 = { # Crypt sub-branch temple_crypt_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_small_03 can_construct = { @@ -3348,7 +3348,7 @@ temple_crypt_04 = { } temple_crypt_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_crypt_04 can_construct = { @@ -3502,7 +3502,7 @@ temple_crypt_05 = { } temple_crypt_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_crypt_05 can_construct = { @@ -3659,7 +3659,7 @@ temple_crypt_06 = { # Temple sub-branch temple_large_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_small_03 can_construct = { @@ -3801,7 +3801,7 @@ temple_large_04 = { } temple_large_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_large_04 can_construct = { @@ -3943,7 +3943,7 @@ temple_large_05 = { } temple_large_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_large_05 can_construct = { @@ -4089,7 +4089,7 @@ temple_large_06 = { # Monastery sub-branch temple_monastery_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_small_03 can_construct = { @@ -4234,7 +4234,7 @@ temple_monastery_04 = { } temple_monastery_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_monastery_04 can_construct = { @@ -4379,7 +4379,7 @@ temple_monastery_05 = { } temple_monastery_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = temple_monastery_05 can_construct = { @@ -4526,7 +4526,7 @@ temple_monastery_06 = { ### Barracks barracks_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -4609,7 +4609,7 @@ barracks_01 = { } barracks_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = barracks_01 cost = { @@ -4697,7 +4697,7 @@ barracks_02 = { } barracks_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = barracks_02 can_construct = { @@ -4789,7 +4789,7 @@ barracks_03 = { } barracks_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = barracks_03 can_construct = { @@ -4881,7 +4881,7 @@ barracks_04 = { } barracks_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = barracks_04 can_construct = { @@ -4973,7 +4973,7 @@ barracks_05 = { } barracks_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = barracks_05 can_construct = { @@ -5067,7 +5067,7 @@ barracks_06 = { ### Watchtower watchtower_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -5148,7 +5148,7 @@ watchtower_01 = { } watchtower_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = watchtower_01 cost = { @@ -5232,7 +5232,7 @@ watchtower_02 = { } watchtower_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = watchtower_02 can_construct = { @@ -5320,7 +5320,7 @@ watchtower_03 = { } watchtower_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = watchtower_03 can_construct = { @@ -5409,7 +5409,7 @@ watchtower_04 = { } watchtower_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = watchtower_04 can_construct = { @@ -5498,7 +5498,7 @@ watchtower_05 = { } watchtower_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = watchtower_05 can_construct = { @@ -5590,7 +5590,7 @@ watchtower_06 = { ### Guardhouse guardhouse_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -5671,7 +5671,7 @@ guardhouse_01 = { } guardhouse_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = guardhouse_01 cost = { @@ -5754,7 +5754,7 @@ guardhouse_02 = { } guardhouse_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = guardhouse_02 can_construct = { @@ -5843,7 +5843,7 @@ guardhouse_03 = { } guardhouse_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = guardhouse_03 can_construct = { @@ -5934,7 +5934,7 @@ guardhouse_04 = { ### Garden garden_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -6054,7 +6054,7 @@ garden_01 = { } garden_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = garden_01 cost = { @@ -6175,7 +6175,7 @@ garden_02 = { } garden_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = garden_02 cost = { @@ -6298,7 +6298,7 @@ garden_03 = { # Leisure Garden sub-branch garden_leisure_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = garden_03 can_construct = { @@ -6425,7 +6425,7 @@ garden_leisure_04 = { } garden_leisure_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = garden_leisure_04 can_construct = { @@ -6552,7 +6552,7 @@ garden_leisure_05 = { } garden_leisure_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = garden_leisure_05 can_construct = { @@ -6681,7 +6681,7 @@ garden_leisure_06 = { # Fruit Garden sub-branch garden_fruit_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = garden_03 can_construct = { @@ -6807,7 +6807,7 @@ garden_fruit_04 = { } garden_fruit_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = garden_fruit_04 can_construct = { @@ -6933,7 +6933,7 @@ garden_fruit_05 = { } garden_fruit_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = garden_fruit_05 can_construct = { @@ -7060,7 +7060,7 @@ garden_fruit_06 = { ### Stable stable_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -7142,7 +7142,7 @@ stable_01 = { } stable_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_01 cost = { @@ -7229,7 +7229,7 @@ stable_02 = { } stable_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_02 cost = { @@ -7318,7 +7318,7 @@ stable_03 = { # Grand Stable sub-branch stable_grand_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_03 can_construct = { @@ -7403,7 +7403,7 @@ stable_grand_04 = { } stable_grand_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_grand_04 can_construct = { @@ -7489,7 +7489,7 @@ stable_grand_05 = { } stable_grand_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_grand_05 can_construct = { @@ -7577,7 +7577,7 @@ stable_grand_06 = { # Kennel sub-branch stable_kennel_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_03 can_construct = { @@ -7671,7 +7671,7 @@ stable_kennel_04 = { } stable_kennel_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_kennel_04 can_construct = { @@ -7766,7 +7766,7 @@ stable_kennel_05 = { } stable_kennel_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_kennel_05 can_construct = { @@ -7864,7 +7864,7 @@ stable_kennel_06 = { # Charioteer sub-branch (Byzantine unique upgrade) stable_chariot_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_03 can_construct_potential = { @@ -7948,7 +7948,7 @@ stable_chariot_04 = { } stable_chariot_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_chariot_04 can_construct = { @@ -8033,7 +8033,7 @@ stable_chariot_05 = { } stable_chariot_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = stable_chariot_05 can_construct = { @@ -8120,7 +8120,7 @@ stable_chariot_06 = { ### Workshop workshop_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -8195,7 +8195,7 @@ workshop_01 = { } workshop_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_01 cost = { @@ -8273,7 +8273,7 @@ workshop_02 = { # Carpenter sub-branch workshop_carpenter_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_02 can_construct = { @@ -8357,7 +8357,7 @@ workshop_carpenter_03 = { } workshop_carpenter_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_carpenter_03 can_construct = { @@ -8441,7 +8441,7 @@ workshop_carpenter_04 = { } workshop_carpenter_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_carpenter_04 can_construct = { @@ -8526,7 +8526,7 @@ workshop_carpenter_05 = { } workshop_carpenter_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_carpenter_05 can_construct = { @@ -8613,7 +8613,7 @@ workshop_carpenter_06 = { # Mason sub-branch workshop_mason_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_02 can_construct = { @@ -8695,7 +8695,7 @@ workshop_mason_03 = { } workshop_mason_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_mason_03 can_construct = { @@ -8777,7 +8777,7 @@ workshop_mason_04 = { } workshop_mason_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_mason_04 can_construct = { @@ -8861,7 +8861,7 @@ workshop_mason_05 = { } workshop_mason_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_mason_05 can_construct = { @@ -8947,7 +8947,7 @@ workshop_mason_06 = { # Textile sub-branch workshop_textile_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_02 can_construct = { @@ -9031,7 +9031,7 @@ workshop_textile_03 = { } workshop_textile_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_textile_03 can_construct = { @@ -9115,7 +9115,7 @@ workshop_textile_04 = { } workshop_textile_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_textile_04 can_construct = { @@ -9199,7 +9199,7 @@ workshop_textile_05 = { } workshop_textile_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = workshop_textile_05 can_construct = { @@ -9285,7 +9285,7 @@ workshop_textile_06 = { ### Storage storage_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -9369,7 +9369,7 @@ storage_01 = { } storage_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = storage_01 cost = { @@ -9456,7 +9456,7 @@ storage_02 = { # Warehouse sub-branch storage_warehouse_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = storage_02 can_construct = { @@ -9540,7 +9540,7 @@ storage_warehouse_03 = { } storage_warehouse_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = storage_warehouse_03 can_construct = { @@ -9626,7 +9626,7 @@ storage_warehouse_04 = { # Granary sub-branch storage_granary_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = storage_02 can_construct = { @@ -9713,7 +9713,7 @@ storage_granary_03 = { } storage_granary_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = storage_granary_03 can_construct = { @@ -9806,7 +9806,7 @@ storage_granary_04 = { ### Market market_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -9894,7 +9894,7 @@ market_01 = { } market_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = market_01 cost = { @@ -9974,7 +9974,7 @@ market_02 = { } market_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = market_02 can_construct = { @@ -10059,7 +10059,7 @@ market_03 = { } market_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = market_03 can_construct = { @@ -10144,7 +10144,7 @@ market_04 = { } market_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = market_04 can_construct = { @@ -10229,7 +10229,7 @@ market_05 = { } market_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = market_05 can_construct = { @@ -10316,7 +10316,7 @@ market_06 = { ### Grazing Lands grazing_land_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -10436,7 +10436,7 @@ grazing_land_01 = { } grazing_land_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grazing_land_01 cost = { @@ -10557,7 +10557,7 @@ grazing_land_02 = { } grazing_land_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grazing_land_02 cost = { @@ -10678,7 +10678,7 @@ grazing_land_03 = { } grazing_land_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grazing_land_03 can_construct = { @@ -10790,7 +10790,7 @@ grazing_land_04 = { } grazing_land_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grazing_land_04 can_construct = { @@ -10902,7 +10902,7 @@ grazing_land_05 = { } grazing_land_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grazing_land_05 can_construct = { @@ -11016,7 +11016,7 @@ grazing_land_06 = { # Horse Archer sub-branch horse_pasture_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grazing_land_03 can_construct = { @@ -11122,7 +11122,7 @@ horse_pasture_04 = { } horse_pasture_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = horse_pasture_04 can_construct = { @@ -11228,7 +11228,7 @@ horse_pasture_05 = { } horse_pasture_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = horse_pasture_05 can_construct = { @@ -11336,7 +11336,7 @@ horse_pasture_06 = { # Camel sub-branch camel_pasture_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grazing_land_03 can_construct = { @@ -11442,7 +11442,7 @@ camel_pasture_04 = { } camel_pasture_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = camel_pasture_04 can_construct = { @@ -11548,7 +11548,7 @@ camel_pasture_05 = { } camel_pasture_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = camel_pasture_05 can_construct = { @@ -11656,7 +11656,7 @@ camel_pasture_06 = { # Elephant sub-branch elephant_pasture_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grazing_land_03 can_construct = { @@ -11738,7 +11738,7 @@ elephant_pasture_04 = { } elephant_pasture_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = elephant_pasture_04 can_construct = { @@ -11820,7 +11820,7 @@ elephant_pasture_05 = { } elephant_pasture_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = elephant_pasture_05 can_construct = { @@ -11904,7 +11904,7 @@ elephant_pasture_06 = { ### Grain Fields grain_field_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -12037,7 +12037,7 @@ grain_field_01 = { } grain_field_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grain_field_01 cost = { @@ -12160,7 +12160,7 @@ grain_field_02 = { } grain_field_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grain_field_02 can_construct = { @@ -12288,7 +12288,7 @@ grain_field_03 = { } grain_field_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grain_field_03 can_construct = { @@ -12416,7 +12416,7 @@ grain_field_04 = { } grain_field_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grain_field_04 can_construct = { @@ -12544,7 +12544,7 @@ grain_field_05 = { } grain_field_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = grain_field_05 can_construct = { @@ -12674,7 +12674,7 @@ grain_field_06 = { ### Rice Fields rice_field_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } @@ -12748,7 +12748,7 @@ rice_field_01 = { rice_field_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = rice_field_01 cost = { @@ -12821,7 +12821,7 @@ rice_field_02 = { rice_field_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = rice_field_02 can_construct = { @@ -12898,7 +12898,7 @@ rice_field_03 = { rice_field_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = rice_field_03 can_construct = { @@ -12975,7 +12975,7 @@ rice_field_04 = { rice_field_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = rice_field_04 can_construct = { @@ -13052,7 +13052,7 @@ rice_field_05 = { rice_field_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = rice_field_05 can_construct = { @@ -13130,7 +13130,7 @@ rice_field_06 = { ### Vineyard vineyard_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -13242,7 +13242,7 @@ vineyard_01 = { } vineyard_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = vineyard_01 cost = { @@ -13345,7 +13345,7 @@ vineyard_02 = { } vineyard_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = vineyard_02 can_construct = { @@ -13451,7 +13451,7 @@ vineyard_03 = { } vineyard_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = vineyard_03 can_construct = { @@ -13557,7 +13557,7 @@ vineyard_04 = { } vineyard_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = vineyard_04 can_construct = { @@ -13663,7 +13663,7 @@ vineyard_05 = { } vineyard_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = vineyard_05 can_construct = { @@ -13771,7 +13771,7 @@ vineyard_06 = { ### Tea Plantation tea_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } can_construct_potential = { culture ?= { has_innovation = innovation_champa_rice } @@ -13853,7 +13853,7 @@ tea_01 = { } tea_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = tea_01 cost = { @@ -13929,7 +13929,7 @@ tea_02 = { } tea_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = tea_02 can_construct = { @@ -14008,7 +14008,7 @@ tea_03 = { } tea_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = tea_03 can_construct = { @@ -14083,7 +14083,7 @@ tea_04 = { } tea_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = tea_04 can_construct = { @@ -14158,7 +14158,7 @@ tea_05 = { } tea_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = tea_05 can_construct = { @@ -14235,7 +14235,7 @@ tea_06 = { ### Olive Plantation olive_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } cost = { gold = { @@ -14344,7 +14344,7 @@ olive_01 = { } olive_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = olive_01 cost = { @@ -14444,7 +14444,7 @@ olive_02 = { } olive_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = olive_02 can_construct = { @@ -14548,7 +14548,7 @@ olive_03 = { } olive_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = olive_03 can_construct = { @@ -14652,7 +14652,7 @@ olive_04 = { } olive_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = olive_04 can_construct = { @@ -14757,7 +14757,7 @@ olive_05 = { } olive_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = olive_05 can_construct = { @@ -14864,7 +14864,7 @@ olive_06 = { ### Silk Production - Byzantine exclusive silk_01 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } can_construct = { custom_tooltip = { @@ -14940,7 +14940,7 @@ silk_01 = { } silk_02 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = silk_01 can_construct = { @@ -15020,7 +15020,7 @@ silk_02 = { } silk_03 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = silk_02 can_construct = { @@ -15101,7 +15101,7 @@ silk_03 = { } silk_04 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = silk_03 can_construct = { @@ -15183,7 +15183,7 @@ silk_04 = { } silk_05 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = silk_04 can_construct = { @@ -15265,7 +15265,7 @@ silk_05 = { } silk_06 = { construction_time = 730 - allowed_domicile_types = { estate } + allowed_domicile_types = { estate palace } previous_building = silk_05 can_construct = { diff --git a/common/domiciles/buildings/NEOW_farm_buildings.txt b/common/domiciles/buildings/NEOW_farm_buildings.txt new file mode 100644 index 00000000..79a3ae37 --- /dev/null +++ b/common/domiciles/buildings/NEOW_farm_buildings.txt @@ -0,0 +1,433 @@ + +farmstead_main_01 = { + slot_type = main + construction_time = 1 + allowed_domicile_types = { farmstead } + + cost = { + gold = estate_external_building_high_cost_tier_2_value + } + + character_modifier = { + domicile_monthly_gold_add = 0.25 + health = 0.5 + domicile_external_slots_capacity_add = 2 + monthly_barter_goods = 1 + } + + + ai_value = { + value = 100 + } + + parameters = { + camp_unlocks_second_officer = yes + camp_unlocks_huntperson_officer = yes + camp_unlocks_chief_forager_officer = yes + } + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } +} + +farmstead_main_02 = { + slot_type = main + construction_time = 730 + allowed_domicile_types = { farmstead } + previous_building = farmstead_main_01 + + can_construct = { + culture ?= { has_innovation = innovation_city_planning } + } + + cost = { + gold = estate_external_building_high_cost_tier_3_value + } + + parameters = { + camp_unlocks_second_officer = yes + reduce_success_of_raid_estate = yes + estate_increase_house_member_investment_cap_1 = yes + monthly_barter_goods = 1.2 + } + + character_modifier = { + domicile_monthly_gold_add = 0.25 + domicile_external_slots_capacity_add = 1 + men_at_arms_cap = 1 + enemy_hostile_scheme_phase_duration_add = miniscule_scheme_phase_duration_malus_value + character_travel_safety_mult = 0.02 + } + + ai_value = { + value = 100 + } + + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } +} + +farmstead_main_03 = { + slot_type = main + construction_time = 730 + allowed_domicile_types = { farmstead } + previous_building = farmstead_main_02 + + can_construct = { + culture ?= { has_innovation = innovation_manorialism } + } + + cost = { + gold = estate_external_building_high_cost_tier_4_value + } + + parameters = { + camp_unlocks_second_officer = yes + reduce_success_of_raid_estate = yes + estate_increase_house_member_investment_cap_2 = yes + } + + character_modifier = { + domicile_monthly_gold_add = 0.5 + domicile_monthly_gold_mult = 0.02 + domicile_external_slots_capacity_add = 1 + maa_toughness_mult = 0.05 + enemy_hostile_scheme_phase_duration_add = minor_scheme_phase_duration_malus_value + character_travel_safety_mult = 0.02 + monthly_barter_goods = 1.4 + } + + ai_value = { + value = 100 + } + + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } +} + +farmstead_main_04 = { + slot_type = main + construction_time = 730 + allowed_domicile_types = { farmstead } + previous_building = farmstead_main_03 + + can_construct = { + culture ?= { has_innovation = innovation_development_03 } + } + + cost = { + gold = estate_external_building_high_cost_tier_5_value + } + + parameters = { + camp_unlocks_second_officer = yes + reduce_success_of_raid_estate = yes + estate_increase_house_member_investment_cap_3 = yes + } + + character_modifier = { + domicile_monthly_gold_add = 0.5 + domicile_monthly_gold_mult = 0.03 + domicile_external_slots_capacity_add = 1 + maa_toughness_mult = 0.05 + men_at_arms_cap = 1 + enemy_hostile_scheme_phase_duration_add = medium_scheme_phase_duration_malus_value + character_travel_safety_mult = 0.02 + monthly_barter_goods = 1.6 + } + + ai_value = { + value = 100 + } + + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } +} + +farmstead_main_05 = { + slot_type = main + construction_time = 730 + allowed_domicile_types = { farmstead } + previous_building = farmstead_main_04 + + can_construct = { + culture ?= { has_innovation = innovation_cranes } + } + + cost = { + gold = estate_external_building_high_cost_tier_6_value + } + + parameters = { + camp_unlocks_second_officer = yes + reduce_success_of_raid_estate = yes + estate_increase_house_member_investment_cap_4 = yes + } + + character_modifier = { + domicile_monthly_gold_add = 0.75 + domicile_monthly_gold_mult = 0.05 + domicile_external_slots_capacity_add = 1 + maa_toughness_mult = 0.1 + men_at_arms_cap = 1 + enemy_hostile_scheme_phase_duration_add = medium_scheme_phase_duration_malus_value + character_travel_safety_mult = 0.04 + monthly_barter_goods = 1.8 + } + + ai_value = { + value = 100 + } + + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/farmstead_main.dds" + texture = "gfx/interface/window_domiciles/farmstead_building_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/farmstead_building_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_estate_main_building" + } +} \ No newline at end of file diff --git a/common/domiciles/buildings/NEOW_minority_community_buildings.txt b/common/domiciles/buildings/NEOW_minority_community_buildings.txt index 4fe2d8b1..8fd4fff6 100644 --- a/common/domiciles/buildings/NEOW_minority_community_buildings.txt +++ b/common/domiciles/buildings/NEOW_minority_community_buildings.txt @@ -3796,7 +3796,7 @@ village_watch_06 = { ### Garden communal_gardens_01 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } cost = { gold = { @@ -3920,7 +3920,7 @@ communal_gardens_01 = { } communal_gardens_02 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_01 cost = { @@ -4045,7 +4045,7 @@ communal_gardens_02 = { } communal_gardens_03 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_02 cost = { @@ -4172,12 +4172,9 @@ communal_gardens_03 = { # Leisure Garden sub-branch communal_gardens_leisure_04 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_03 - can_construct = { - estate_can_construct_communal_gardens_leisure_04_trigger = yes - } cost = { gold = { @@ -4302,13 +4299,9 @@ communal_gardens_leisure_04 = { } communal_gardens_leisure_05 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_leisure_04 - can_construct = { - estate_can_construct_communal_gardens_leisure_05_trigger = yes - } - cost = { gold = { value = estate_external_building_normal_cost_tier_5_value @@ -4432,12 +4425,9 @@ communal_gardens_leisure_05 = { } communal_gardens_leisure_06 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_leisure_05 - can_construct = { - estate_can_construct_communal_gardens_leisure_06_trigger = yes - } cost = { gold = { @@ -4564,12 +4554,9 @@ communal_gardens_leisure_06 = { # Fruit Garden sub-branch communal_gardens_fruit_04 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_03 - can_construct = { - estate_can_construct_communal_gardens_fruit_04_trigger = yes - } cost = { gold = { @@ -4694,12 +4681,9 @@ communal_gardens_fruit_04 = { } communal_gardens_fruit_05 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_fruit_04 - can_construct = { - estate_can_construct_communal_gardens_fruit_05_trigger = yes - } cost = { gold = { @@ -4824,12 +4808,9 @@ communal_gardens_fruit_05 = { } communal_gardens_fruit_06 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_fruit_05 - can_construct = { - estate_can_construct_communal_gardens_fruit_06_trigger = yes - } cost = { gold = { @@ -6954,7 +6935,7 @@ village_workshop_textile_06 = { ### Storage village_storage_01 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } cost = { gold = { @@ -7037,8 +7018,8 @@ village_storage_01 = { } village_storage_02 = { construction_time = 730 - allowed_domicile_types = { minority_community } - previous_building = village_storage_01 + allowed_domicile_types = { minority_community farmstead } + previous_building = village_storage_01 cost = { gold = { @@ -7123,11 +7104,14 @@ village_storage_02 = { # Warehouse sub-branch village_storage_warehouse_03 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_storage_02 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_02 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_02 } + } } cost = { @@ -7209,11 +7193,14 @@ village_storage_warehouse_03 = { } village_storage_warehouse_04 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_storage_warehouse_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -7297,11 +7284,14 @@ village_storage_warehouse_04 = { # Granary sub-branch village_storage_granary_03 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_storage_02 can_construct = { - domicile ?= { has_domicile_building_or_higher = minority_community_main_02 } + OR = { + domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -7386,11 +7376,14 @@ village_storage_granary_03 = { } village_storage_granary_04 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_storage_granary_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -7973,7 +7966,7 @@ village_market_06 = { ### Grazing Lands village_grazing_land_01 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } cost = { gold = { @@ -8093,7 +8086,7 @@ village_grazing_land_01 = { } village_grazing_land_02 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_grazing_land_01 cost = { @@ -8215,7 +8208,7 @@ village_grazing_land_02 = { } village_grazing_land_03 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_grazing_land_02 cost = { @@ -8338,11 +8331,14 @@ village_grazing_land_03 = { } village_grazing_land_04 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_grazing_land_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -8452,11 +8448,14 @@ village_grazing_land_04 = { } grazing_land_05 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_grazing_land_04 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_04 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_04 } + } } cost = { @@ -8566,11 +8565,14 @@ grazing_land_05 = { } grazing_land_06 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = grazing_land_05 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_05 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_05 } + } } cost = { @@ -8683,7 +8685,7 @@ grazing_land_06 = { ### Grain Fields village_grain_fields_01 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } cost = { gold = { @@ -8820,7 +8822,7 @@ village_grain_fields_01 = { } village_grain_fields_02 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_grain_fields_01 cost = { @@ -8948,11 +8950,14 @@ village_grain_fields_02 = { } village_grain_fields_03 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_grain_fields_02 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_02 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_02 } + } } cost = { @@ -9081,11 +9086,14 @@ village_grain_fields_03 = { } village_grain_fields_04 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_grain_fields_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -9214,11 +9222,14 @@ village_grain_fields_04 = { } village_grain_fields_05 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_grain_fields_04 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_04 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_04 } + } } cost = { @@ -9347,11 +9358,14 @@ village_grain_fields_05 = { } village_grain_fields_06 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_grain_fields_05 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_05 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_05 } + } } cost = { @@ -9482,7 +9496,7 @@ village_grain_fields_06 = { ### Rice Fields village_rice_field_01 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } cost = { gold = { @@ -9559,7 +9573,7 @@ village_rice_field_01 = { village_rice_field_02 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_rice_field_01 cost = { @@ -9636,11 +9650,14 @@ village_rice_field_02 = { village_rice_field_03 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_rice_field_02 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_02 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_02 } + } } cost = { @@ -9718,11 +9735,14 @@ village_rice_field_03 = { village_rice_field_04 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_rice_field_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -9800,11 +9820,14 @@ village_rice_field_04 = { village_rice_field_05 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_rice_field_04 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_04 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_04 } + } } cost = { @@ -9882,11 +9905,14 @@ village_rice_field_05 = { village_rice_field_06 = { construction_time = 730 - allowed_domicile_types = { minority_community } + allowed_domicile_types = { minority_community farmstead } previous_building = village_rice_field_05 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_05 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_05 } + } } cost = { diff --git a/common/domiciles/buildings/NEOW_palace.txt b/common/domiciles/buildings/NEOW_palace.txt new file mode 100644 index 00000000..17ca41e5 --- /dev/null +++ b/common/domiciles/buildings/NEOW_palace.txt @@ -0,0 +1,2765 @@ +palace_main_01 = { + slot_type = main + internal_slots = 2 + construction_time = 730 + allowed_domicile_types = { palace } + + cost = { + gold = estate_external_building_high_cost_tier_2_value + } + + character_modifier = { + domicile_monthly_gold_add = 0.25 + domicile_monthly_influence_add = 1 + domicile_external_slots_capacity_add = 2 + } + + ai_value = { + value = 100 + } + + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } +} + +palace_main_02 = { + slot_type = main + internal_slots = 4 + construction_time = 730 + allowed_domicile_types = { palace } + previous_building = palace_main_01 + + can_construct = { + culture ?= { has_innovation = innovation_city_planning } + } + + cost = { + gold = estate_external_building_high_cost_tier_3_value + } + + parameters = { + reduce_success_of_raid_estate = yes + estate_increase_house_member_investment_cap_1 = yes + } + + character_modifier = { + domicile_monthly_gold_add = 0.25 + domicile_monthly_influence_add = 0.5 + domicile_external_slots_capacity_add = 1 + } + + ai_value = { + value = 100 + } + + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } +} + +palace_main_03 = { + slot_type = main + internal_slots = 6 + construction_time = 730 + allowed_domicile_types = { palace } + previous_building = palace_main_02 + + can_construct = { + culture ?= { has_innovation = innovation_manorialism } + } + + cost = { + gold = estate_external_building_high_cost_tier_4_value + } + + parameters = { + reduce_success_of_raid_estate = yes + estate_increase_house_member_investment_cap_2 = yes + } + + character_modifier = { + domicile_monthly_gold_add = 0.5 + domicile_monthly_gold_mult = 0.02 + domicile_monthly_influence_add = 0.5 + domicile_external_slots_capacity_add = 1 + } + + ai_value = { + value = 100 + } + + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_mansion_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_mansion_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_mansion_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_mansion_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_mansion_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_mansion_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_mansion_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_mansion_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } +} + +palace_main_04 = { + slot_type = main + internal_slots = 8 + construction_time = 730 + allowed_domicile_types = { palace } + previous_building = palace_main_03 + + can_construct = { + culture ?= { has_innovation = innovation_development_03 } + } + + cost = { + gold = estate_external_building_high_cost_tier_5_value + } + + parameters = { + reduce_success_of_raid_estate = yes + estate_increase_house_member_investment_cap_3 = yes + } + + character_modifier = { + domicile_monthly_gold_add = 0.5 + domicile_monthly_gold_mult = 0.03 + domicile_monthly_influence_add = 0.5 + domicile_external_slots_capacity_add = 1 + } + + ai_value = { + value = 100 + } + + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_estate_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_estate_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_estate_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_estate_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_estate_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_estate_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_estate_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_estate_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } +} + +palace_main_05 = { + slot_type = main + internal_slots = 10 + construction_time = 730 + allowed_domicile_types = { palace } + previous_building = palace_main_04 + + can_construct = { + culture ?= { has_innovation = innovation_cranes } + } + + cost = { + gold = estate_external_building_high_cost_tier_6_value + } + + parameters = { + reduce_success_of_raid_estate = yes + estate_increase_house_member_investment_cap_4 = yes + } + + character_modifier = { + domicile_monthly_gold_add = 0.75 + domicile_monthly_gold_mult = 0.05 + domicile_monthly_influence_add = 0.5 + domicile_external_slots_capacity_add = 1 + } + + ai_value = { + value = 100 + } + + asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_grand_estate_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grand_estate_chinese_mask.png" + soundeffect = "event:/DLC/EP4/SFX/UI/domicile_buildings/tgp_ui_domicile_building_chinese_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + has_graphical_india_culture_group_trigger = yes + has_graphical_iberian_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_grand_estate_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grand_estate_mena_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + trigger = { + domicile_location.culture = { + OR = { + has_graphical_western_culture_group_trigger = yes + has_graphical_norse_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_grand_estate_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grand_estate_western_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } + + asset = { + icon = "gfx/interface/icons/domicile_building/palace_main.dds" + texture = "gfx/interface/window_domiciles/estate_building_grand_estate_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grand_estate_byzantine_mask.png" + soundeffect = "event:/DLC/EP3/SFX/UI/domicile_buildings/ep3_ui_domicile_buildings_palace_main_building" + } +} + + + +#################### +##### VILLA UPGRADES +### Diplomacy Upgrade +living_quarters_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_living_quarters } + multiply = 0.75 + desc = raid_insight_quarters + } + } + } + + character_modifier = { + monthly_diplomacy_lifestyle_xp_gain_mult = 0.05 + personal_scheme_phase_duration_add = -10 + } + + parameters = { + estate_unlock_ingratiate_family_interaction = yes + } + + ai_value = { + value = 7 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_living_quarters.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +living_quarters_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = living_quarters_palace_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_living_quarters } + multiply = 0.75 + desc = raid_insight_quarters + } + } + } + + character_modifier = { + monthly_diplomacy_lifestyle_xp_gain_mult = 0.05 + dynasty_house_opinion = 5 + personal_scheme_phase_duration_add = -10 + owned_personal_scheme_success_chance_add = 5 + } + + parameters = { + estate_unlock_ingratiate_family_interaction = yes + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_living_quarters.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +living_quarters_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = living_quarters_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_living_quarters } + multiply = 0.75 + desc = raid_insight_quarters + } + } + } + + character_modifier = { + monthly_diplomacy_lifestyle_xp_gain_mult = 0.05 + personal_scheme_phase_duration_add = -10 + owned_personal_scheme_success_chance_add = 5 + } + + parameters = { + estate_unlock_ingratiate_family_interaction = yes + } + + ai_value = { + value = 5 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_living_quarters.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +living_quarters_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = living_quarters_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_living_quarters } + multiply = 0.75 + desc = raid_insight_quarters + } + } + } + + character_modifier = { + monthly_diplomacy_lifestyle_xp_gain_mult = 0.05 + dynasty_house_opinion = 5 + personal_scheme_phase_duration_add = -10 + owned_personal_scheme_success_chance_add = 5 + } + + parameters = { + estate_unlock_ingratiate_family_interaction = yes + } + + ai_value = { + value = 4 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_living_quarters.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Martial Upgrade +trophy_room_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_trophy_room } + multiply = 0.75 + desc = raid_insight_trophy_room + } + } + } + + character_modifier = { + monthly_martial_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 7 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_trophy.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +trophy_room_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = trophy_room_palace_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_trophy_room } + multiply = 0.75 + desc = raid_insight_trophy_room + } + } + } + + character_modifier = { + monthly_martial_lifestyle_xp_gain_mult = 0.05 + prowess = 1 + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_trophy.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +trophy_room_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = trophy_room_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_trophy_room } + multiply = 0.75 + desc = raid_insight_trophy_room + } + } + } + + character_modifier = { + monthly_martial_lifestyle_xp_gain_mult = 0.05 + advantage = 3 + } + + parameters = { + trophy_room_victory_influence = yes + } + + ai_value = { + value = 5 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_trophy.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +trophy_room_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = trophy_room_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_trophy_room } + multiply = 0.75 + desc = raid_insight_trophy_room + } + } + } + + character_modifier = { + monthly_martial_lifestyle_xp_gain_mult = 0.05 + advantage = 3 + prowess = 1 + } + + parameters = { + trophy_room_victory_influence = yes + } + + ai_value = { + value = 4 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_trophy.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Stewardship Upgrade +office_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_office } + multiply = 0.75 + desc = raid_insight_office + } + } + } + + parameters = { + estate_local_theme_cost_reduction = yes + estate_unlock_teach_governor_interaction = yes + } + + character_modifier = { + monthly_stewardship_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 7 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_office.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +office_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = office_palace_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_office } + multiply = 0.75 + desc = raid_insight_office + } + } + } + + parameters = { + estate_local_theme_cost_reduction = yes + estate_governor_efficiency_bonus = yes + estate_unlock_teach_governor_interaction = yes + } + + character_modifier = { + monthly_stewardship_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_office.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +office_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = office_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_office } + multiply = 0.75 + desc = raid_insight_office + } + } + } + + parameters = { + estate_local_theme_cost_reduction = yes + estate_governor_efficiency_bonus = yes + estate_governor_efficiency_bonus_for_house_members = yes + estate_unlock_teach_governor_interaction = yes + } + + character_modifier = { + monthly_stewardship_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 5 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_office.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +office_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = office_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_office } + multiply = 0.75 + desc = raid_insight_office + } + } + } + + parameters = { + estate_local_theme_cost_reduction = yes + estate_governor_efficiency_bonus = yes + estate_governor_efficiency_bonus_for_house_members = yes + estate_governor_trait_xp_bonus_for_contracts = yes + estate_unlock_teach_governor_interaction = yes + } + + character_modifier = { + monthly_stewardship_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 4 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_office.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Intrigue Upgrade +servants_quarters_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_servants_quarters } + multiply = 0.75 + desc = raid_insight_servants_quarters + } + } + } + + character_modifier = { + monthly_intrigue_lifestyle_xp_gain_mult = 0.05 + hostile_scheme_phase_duration_add = minor_scheme_phase_duration_bonus_value + } + + ai_value = { + value = 7 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_servant.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +servants_quarters_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = servants_quarters_palace_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_servants_quarters } + multiply = 0.75 + desc = raid_insight_servants_quarters + } + } + } + + parameters = { + estate_unlock_hire_agents_decision = yes + } + + character_modifier = { + monthly_intrigue_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_servant.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +servants_quarters_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = servants_quarters_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_servants_quarters } + multiply = 0.75 + desc = raid_insight_servants_quarters + } + } + } + + parameters = { + estate_unlock_hire_agents_decision = yes + } + + character_modifier = { + monthly_intrigue_lifestyle_xp_gain_mult = 0.05 + owned_hostile_scheme_success_chance_add = 5 + } + + ai_value = { + value = 5 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_servant.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +servants_quarters_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = servants_quarters_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_servants_quarters } + multiply = 0.75 + desc = raid_insight_servants_quarters + } + } + } + + parameters = { + estate_unlock_hire_agents_decision = yes + estate_improve_political_scheme_countermeasure = yes + } + + character_modifier = { + monthly_intrigue_lifestyle_xp_gain_mult = 0.05 + owned_hostile_scheme_success_chance_add = 5 + max_hostile_schemes_add = 1 + } + + ai_value = { + value = 4 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_servant.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Learning Upgrade +library_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_library } + multiply = 0.75 + desc = raid_insight_library + } + } + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 7 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_library.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +library_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = library_palace_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_library } + multiply = 0.75 + desc = raid_insight_library + } + } + } + + parameters = { + estate_increase_physician_aptitude = yes + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_library.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +# Observatory sub-branch +library_observatory_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = library_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_library } + multiply = 0.75 + desc = raid_insight_library + } + } + } + + parameters = { + estate_increase_physician_aptitude = yes + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.05 + owned_legend_spread_mult = 0.05 + } + + ai_value = { + value = 5 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_observatory.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +library_observatory_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = library_observatory_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_library } + multiply = 0.75 + desc = raid_insight_library + } + } + } + + parameters = { + estate_increase_physician_aptitude = yes + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.05 + owned_legend_spread_mult = 0.05 + } + + ai_value = { + value = 4 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_observatory.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +# Education sub-branch +library_education_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = library_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_library } + multiply = 0.75 + desc = raid_insight_library + } + } + } + + parameters = { + estate_increase_physician_aptitude = yes + estate_reduced_tutor_cost = yes + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 5 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_tutor.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +library_education_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = library_education_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_library } + multiply = 0.75 + desc = raid_insight_library + } + } + } + + parameters = { + estate_unlock_tier_5_education = yes + estate_increase_physician_aptitude = yes + estate_reduced_tutor_cost = yes + estate_increased_tutor_aptitude = yes + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.05 + } + + ai_value = { + value = 4 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_tutor.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Bath +bath_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_bath } + multiply = 0.75 + desc = raid_insight_bath + } + } + } + + character_modifier = { + negate_health_penalty_add = 0.05 + attraction_opinion = 3 + } + + parameters = { + estate_increase_safe_treatment_success_1 = yes + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_bath.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +bath_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = bath_palace_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_bath } + multiply = 0.75 + desc = raid_insight_bath + } + } + } + + character_modifier = { + negate_health_penalty_add = 0.05 + attraction_opinion = 3 + epidemic_resistance = 2 + } + + parameters = { + estate_increase_safe_treatment_success_1 = yes + } + + ai_value = { + value = 5 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_bath.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +bath_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = bath_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_bath } + multiply = 0.75 + desc = raid_insight_bath + } + } + } + + character_modifier = { + negate_health_penalty_add = 0.05 + attraction_opinion = 3 + epidemic_resistance = 3 + } + + parameters = { + estate_increase_safe_treatment_success_1 = yes + } + + ai_value = { + value = 4 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_bath.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +bath_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = bath_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_bath } + multiply = 0.75 + desc = raid_insight_bath + } + } + } + + character_modifier = { + negate_health_penalty_add = 0.05 + attraction_opinion = 3 + epidemic_resistance = 5 + } + + parameters = { + estate_increase_safe_treatment_success_2 = yes + } + + ai_value = { + value = 3 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_bath.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Guest Room +guest_room_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_guest_room } + multiply = 0.75 + desc = raid_insight_guest_room + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.02 + courtier_and_guest_opinion = 2 + } + + ai_value = { + value = 8 + if = { + limit = { + scope:owner.culture ?= { + has_cultural_tradition = tradition_esteemed_hospitality + } + } + add = 2 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_guest.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +guest_room_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = guest_room_palace_01 + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_guest_room } + multiply = 0.75 + desc = raid_insight_guest_room + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.02 + } + + parameters = { + increased_success_personal_schemes_1 = yes + } + + ai_value = { + value = 7 + if = { + limit = { + scope:owner.culture ?= { + has_cultural_tradition = tradition_esteemed_hospitality + } + } + add = 2 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_guest.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +guest_room_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = guest_room_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_guest_room } + multiply = 0.75 + desc = raid_insight_guest_room + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.02 + courtier_and_guest_opinion = 2 + } + + parameters = { + increased_success_personal_schemes_1 = yes + } + + ai_value = { + value = 6 + if = { + limit = { + scope:owner.culture ?= { + has_cultural_tradition = tradition_esteemed_hospitality + } + } + add = 2 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_guest.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +guest_room_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = guest_room_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_guest_room } + multiply = 0.75 + desc = raid_insight_guest_room + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.02 + } + + parameters = { + increased_success_personal_schemes_2 = yes + } + + ai_value = { + value = 5 + if = { + limit = { + scope:owner.culture ?= { + has_cultural_tradition = tradition_esteemed_hospitality + } + } + add = 2 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_guest.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +guest_room_palace_05 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = guest_room_palace_04 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_04 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_5_value + if = { + limit = { has_character_modifier = raid_insight_guest_room } + multiply = 0.75 + desc = raid_insight_guest_room + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.02 + courtier_and_guest_opinion = 2 + } + + parameters = { + increased_success_personal_schemes_2 = yes + } + + ai_value = { + value = 4 + if = { + limit = { + scope:owner.culture ?= { + has_cultural_tradition = tradition_esteemed_hospitality + } + } + add = 2 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_guest.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +guest_room_palace_06 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = guest_room_palace_05 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_05 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_6_value + if = { + limit = { has_character_modifier = raid_insight_guest_room } + multiply = 0.75 + desc = raid_insight_guest_room + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.02 + } + + parameters = { + increased_success_personal_schemes_3 = yes + } + + ai_value = { + value = 3 + if = { + limit = { + scope:owner.culture ?= { + has_cultural_tradition = tradition_esteemed_hospitality + } + } + add = 2 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_guest.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Wine Cellar +wine_cellar_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_wine_cellar } + multiply = 0.75 + } + } + } + + parameters = { + estate_unlock_feast_influence_option_1 = yes + } + + ai_value = { + value = 8 + if = { + limit = { + scope:owner.culture ?= { + OR = { + has_cultural_pillar = heritage_byzantine + has_cultural_tradition = tradition_culinary_art + } + } + } + add = 3 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_cellar.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +wine_cellar_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = wine_cellar_palace_01 + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_wine_cellar } + multiply = 0.75 + } + } + } + + parameters = { + estate_unlock_feast_influence_option_2 = yes + } + + ai_value = { + value = 6 + if = { + limit = { + scope:owner.culture ?= { + OR = { + has_cultural_pillar = heritage_byzantine + has_cultural_tradition = tradition_culinary_art + } + } + } + add = 3 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_cellar.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +wine_cellar_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = wine_cellar_palace_02 + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_wine_cellar } + multiply = 0.75 + } + } + } + + parameters = { + estate_unlock_feast_influence_option_3 = yes + } + + ai_value = { + value = 4 + if = { + limit = { + scope:owner.culture ?= { + OR = { + has_cultural_pillar = heritage_byzantine + has_cultural_tradition = tradition_culinary_art + } + } + } + add = 3 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_cellar.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Courtyard +courtyard_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_courtyard } + multiply = 0.75 + desc = raid_insight_courtyard + } + } + } + + parameters = { + estate_improved_feast_opinion = yes + } + + character_modifier = { + political_scheme_phase_duration_add = -3 + } + + ai_value = { + value = 8 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_courtyard.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +courtyard_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = courtyard_palace_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_courtyard } + multiply = 0.75 + desc = raid_insight_courtyard + } + } + } + + parameters = { + estate_improved_feast_opinion = yes + estate_cheaper_feast_cost = yes + } + + character_modifier = { + political_scheme_phase_duration_add = -3 + } + + ai_value = { + value = 7 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_courtyard.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +courtyard_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = courtyard_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_courtyard } + multiply = 0.75 + desc = raid_insight_courtyard + } + } + } + + parameters = { + estate_improved_feast_opinion = yes + estate_cheaper_feast_cost = yes + } + + character_modifier = { + political_scheme_phase_duration_add = -3 + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_courtyard.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +courtyard_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = courtyard_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_courtyard } + multiply = 0.75 + desc = raid_insight_courtyard + } + } + } + + parameters = { + estate_improved_feast_opinion = yes + estate_cheaper_feast_cost = yes + } + + character_modifier = { + political_scheme_phase_duration_add = -3 + } + + ai_value = { + value = 5 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_courtyard.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Prison +prison_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_prison } + multiply = 0.75 + desc = raid_insight_prison + } + } + } + + character_modifier = { + dread_gain_mult = 0.05 + hostage_income_mult = 0.05 + } + + ai_value = { + value = 7 + if = { + limit = { + scope:owner = { + OR = { + has_trait = vengeful + has_trait = callous + has_trait = sadistic + } + } + } + add = 5 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_prison.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +prison_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = prison_palace_01 + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_prison } + multiply = 0.75 + desc = raid_insight_prison + } + } + } + + parameters = { + estate_torture_grants_influence = yes + } + + character_modifier = { + dread_gain_mult = 0.05 + hostage_income_mult = 0.05 + } + + ai_value = { + value = 6 + if = { + limit = { + scope:owner = { + OR = { + has_trait = vengeful + has_trait = callous + has_trait = sadistic + } + } + } + add = 5 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_prison.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +prison_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = prison_palace_02 + + can_construct = { + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_prison } + multiply = 0.75 + desc = raid_insight_prison + } + } + } + + parameters = { + estate_torture_grants_influence = yes + } + + character_modifier = { + dread_gain_mult = 0.05 + hostage_income_mult = 0.05 + hostage_renown_mult = 0.05 + } + + ai_value = { + value = 5 + if = { + limit = { + scope:owner = { + OR = { + has_trait = vengeful + has_trait = callous + has_trait = sadistic + } + } + } + add = 5 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_prison.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} +prison_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = prison_palace_03 + + can_construct = { + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_normal_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_prison } + multiply = 0.75 + desc = raid_insight_prison + } + } + } + + parameters = { + estate_torture_grants_influence = yes + } + + character_modifier = { + dread_gain_mult = 0.05 + hostage_income_mult = 0.05 + hostage_renown_mult = 0.05 + } + + ai_value = { + value = 4 + if = { + limit = { + scope:owner = { + OR = { + has_trait = vengeful + has_trait = callous + has_trait = sadistic + } + } + } + add = 5 + } + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_building_prison.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Reception Hall +reception_hall_palace_01 = { + construction_time = 1000 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + can_construct = { + dynasty ?= { has_dynasty_perk = ep3_administrative_legacy_3 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_reception_hall } + multiply = 0.75 + desc = raid_insight_reception_hall + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.02 + } + + parameters = { + legitimacy_counter = yes + reception_hall_legitimacy_loss_palace_01 = yes + } + + ai_value = { + value = 8 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_reception_hall.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +reception_hall_palace_02 = { + construction_time = 1000 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = reception_hall_palace_01 + + can_construct = { + dynasty ?= { has_dynasty_perk = ep3_administrative_legacy_3 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_reception_hall } + multiply = 0.75 + desc = raid_insight_reception_hall + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.04 + } + + parameters = { + legitimacy_counter = yes + reception_hall_legitimacy_loss_palace_02 = yes + estate_increase_house_member_investment_cap_1 = yes + } + + ai_value = { + value = 7 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_reception_hall.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +reception_hall_palace_03 = { + construction_time = 1000 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = reception_hall_palace_02 + + can_construct = { + dynasty ?= { has_dynasty_perk = ep3_administrative_legacy_3 } + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_reception_hall } + multiply = 0.75 + desc = raid_insight_reception_hall + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.06 + } + + parameters = { + legitimacy_counter = yes + reception_hall_legitimacy_loss_palace_03 = yes + estate_increase_house_member_investment_cap_2 = yes + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_reception_hall.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +reception_hall_palace_04 = { + construction_time = 1000 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = reception_hall_palace_03 + + can_construct = { + dynasty ?= { has_dynasty_perk = ep3_administrative_legacy_3 } + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_reception_hall } + multiply = 0.75 + desc = raid_insight_reception_hall + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.08 + } + + parameters = { + legitimacy_counter = yes + reception_hall_legitimacy_loss_palace_04 = yes + estate_increase_house_member_investment_cap_3 = yes + } + + ai_value = { + value = 5 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_reception_hall.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +reception_hall_palace_05 = { + construction_time = 1000 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = reception_hall_palace_04 + + can_construct = { + dynasty ?= { has_dynasty_perk = ep3_administrative_legacy_3 } + domicile ?= { has_domicile_building_or_higher = palace_main_04 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_5_value + if = { + limit = { has_character_modifier = raid_insight_reception_hall } + multiply = 0.75 + desc = raid_insight_reception_hall + } + } + } + + character_modifier = { + domicile_monthly_influence_mult = 0.1 + } + + parameters = { + legitimacy_counter = yes + reception_hall_legitimacy_loss_palace_05 = yes + estate_increase_house_member_investment_cap_4 = yes + } + + ai_value = { + value = 4 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_reception_hall.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +### Cabinet of Curiosities +cabinet_of_curiosities_palace_01 = { + construction_time = 1000 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + can_construct = { + dynasty ?= { has_dynasty_perk = ep3_administrative_legacy_4 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_cabinet_of_curiosities } + multiply = 0.75 + desc = raid_insight_cabinet_of_curiosities + } + } + } + + character_modifier = { + learning_per_influence_level = 1 + domicile_monthly_influence_add = 0.1 + } + + parameters = { + can_receive_artifacts = yes + estate_improved_inspirations_1 = yes + house_head_can_ask_for_artifacts = yes + } + + ai_value = { + value = 8 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_cabinet_of_curiosities.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +cabinet_of_curiosities_palace_02 = { + construction_time = 1000 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = cabinet_of_curiosities_palace_01 + + can_construct = { + dynasty ?= { + has_dynasty_perk = ep3_administrative_legacy_4 + custom_description = { + text = cabinet_of_curiosities_upgrade_trigger_2 + dynast.house ?= { cabinet_of_curiosities_artifact_score >= 15 } + } + } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_cabinet_of_curiosities } + multiply = 0.75 + desc = raid_insight_cabinet_of_curiosities + } + } + } + + character_modifier = { + stewardship_per_influence_level = 1 + monthly_dynasty_prestige = 0.5 + domicile_monthly_influence_add = 0.2 + monthly_court_grandeur_change_add = 0.2 + } + + parameters = { + can_receive_artifacts = yes + estate_improved_inspirations_2 = yes + estate_reduce_commission_artifact_cost = yes + estate_increase_antiquarian_aptitude = yes + house_head_can_ask_for_artifacts = yes + } + + ai_value = { + value = 7 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_cabinet_of_curiosities.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +cabinet_of_curiosities_palace_03 = { + construction_time = 1000 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = cabinet_of_curiosities_palace_02 + + can_construct = { + dynasty ?= { + has_dynasty_perk = ep3_administrative_legacy_4 + custom_description = { + text = cabinet_of_curiosities_upgrade_trigger_3 + dynast.house ?= { cabinet_of_curiosities_artifact_score >= 35 } + } + } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_cabinet_of_curiosities } + multiply = 0.75 + desc = raid_insight_cabinet_of_curiosities + } + } + } + + character_modifier = { + learning_per_influence_level = 1 + stewardship_per_influence_level = 1 + monthly_dynasty_prestige = 0.5 + domicile_monthly_influence_add = 0.3 + monthly_court_grandeur_change_add = 0.3 + general_opinion = 10 + } + + parameters = { + can_receive_artifacts = yes + estate_improved_inspirations_2 = yes + estate_reduce_commission_artifact_cost = yes + estate_increase_antiquarian_aptitude = yes + house_head_can_ask_for_artifacts = yes + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_cabinet_of_curiosities.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +#Grand Solar +grand_solar_palace_01 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = palace_main_01 + + can_construct = { + custom_tooltip = { + text = unlocked_via_event + house.house_head = { has_character_flag = ep3_construct_grand_solar } + } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_1_value + if = { + limit = { has_character_modifier = raid_insight_grand_solar } + multiply = 0.75 + desc = raid_insight_grand_solar + } + } + } + + character_modifier = { + dynasty_opinion = 5 + stress_gain_mult = -0.05 + } + + ai_value = { + value = 10 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_solar.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +grand_solar_palace_02 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = grand_solar_palace_01 + + can_construct = { + custom_tooltip = { + text = unlocked_via_event + house.house_head = { has_character_flag = ep3_construct_grand_solar } + } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_2_value + if = { + limit = { has_character_modifier = raid_insight_grand_solar } + multiply = 0.75 + desc = raid_insight_grand_solar + } + } + } + + character_modifier = { + dynasty_opinion = 5 + stress_gain_mult = -0.05 + } + + ai_value = { + value = 8 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_solar.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +grand_solar_palace_03 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = grand_solar_palace_02 + + can_construct = { + custom_tooltip = { + text = unlocked_via_event + house.house_head = { has_character_flag = ep3_construct_grand_solar } + } + domicile ?= { has_domicile_building_or_higher = palace_main_02 } + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_3_value + if = { + limit = { has_character_modifier = raid_insight_grand_solar } + multiply = 0.75 + desc = raid_insight_grand_solar + } + } + } + + character_modifier = { + monthly_dynasty_prestige = 0.1 + dynasty_opinion = 5 + stress_gain_mult = -0.1 + } + + ai_value = { + value = 6 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_solar.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} + +grand_solar_palace_04 = { + construction_time = 730 + allowed_domicile_types = { palace } + slot_type = internal + previous_building = grand_solar_palace_03 + + can_construct = { + custom_tooltip = { + text = unlocked_via_event + house.house_head = { has_character_flag = ep3_construct_grand_solar } + } + domicile ?= { OR = { has_domicile_building_or_higher = palace_main_03 has_domicile_building_or_higher = palace_main_03 } } + } + + parameters = { + solar_white_peace_stress_loss = yes + } + + cost = { + gold = { + value = estate_internal_building_high_cost_tier_4_value + if = { + limit = { has_character_modifier = raid_insight_grand_solar } + multiply = 0.75 + desc = raid_insight_grand_solar + } + } + } + + character_modifier = { + monthly_dynasty_prestige = 0.1 + dynasty_opinion = 5 + stress_gain_mult = -0.1 + } + + ai_value = { + value = 4 + add = estate_building_ai_modifier_value + } + + asset = { + icon = "gfx/interface/icons/domicile_building/domicile_solar.dds" + texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_villa_byzantine_mask.dds" + } +} \ No newline at end of file diff --git a/common/domiciles/types/NEOW_domicile_types.txt b/common/domiciles/types/NEOW_domicile_types.txt index 0bea98f2..4f1a9cdb 100644 --- a/common/domiciles/types/NEOW_domicile_types.txt +++ b/common/domiciles/types/NEOW_domicile_types.txt @@ -1,4 +1,922 @@ +palace = { + + rename_window = house + + illustration = "gfx/interface/illustrations/event_scenes/ep3_medi_estate.dds" + icon = "gfx/interface/icons/flat_icons/urbaner.dds" + map_pin_texture = "gfx/interface/icons/map_icons/map_icon_urban.dds" + map_pin_anchor = up + map_pin_lobby = yes + + move_with_realm_capital = yes + can_move_manually = no + move_cost = { + gold = { + value = { + value = 20 + format = "BASE_VALUE_FORMAT" + desc = "BASE_VALUE" + } + if = { + limit = { + domicile ?= { has_domicile_building_or_higher = estate_main_05 } + } + add = 80 + } + else_if = { + limit = { + domicile ?= { has_domicile_building_or_higher = estate_main_04 } + } + add = 60 + } + else_if = { + limit = { + domicile ?= { has_domicile_building_or_higher = estate_main_03 } + } + add = 40 + } + else_if = { + limit = { + domicile ?= { has_domicile_building_or_higher = estate_main_02 } + } + add = 20 + } + } + } + + base_external_slots = 2 + + domicile_building_slots = { + external_slot_1 = { + position = { 19.7% 5.5% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_01.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_01_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_02_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty_05.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_05_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + external_slot_4 = { + position = { 49.0% 2.5% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_04_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty_05.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_05_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_03_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_03_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_03_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + main_slot = { + slot_type = main + position = { 28.2% 13.2% } + size = { 28% 34.5% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_01.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_01_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grain_fields_byzantine_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grain_fields_byzantine_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = hills + terrain = mountains + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grain_fields_byzantine_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grain_fields_byzantine_mask.png" + } + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_construction_byzantine_mask.png" + } + } + + external_slot_2 = { + position = { 4% 20% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_02_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_06_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_06_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_06_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_06_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + external_slot_3 = { + position = { 14% 46% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_03_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_04_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_04_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_04_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_04_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + external_slot_5 = { + position = { 64% 29% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_05.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_05_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_03_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty_05.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_05_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_02_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_02_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + external_slot_6 = { + position = { 43% 52% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_06_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_02_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty_05.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_05_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + } + + # Backgrounds + domicile_asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + background = "gfx/interface/window_domiciles/estate_background_steppe_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_steppe_terrain_foreground.dds" + ambience = "event:/DLC/CE2/Ambience/2D/Domicile/ce2_amb_2d_domicile_yurt" + } + + domicile_asset = { + trigger = { + domicile_location = { + this = root.owner.top_liege.capital_province + } + } + background = "gfx/interface/window_domiciles/estate_background_urban_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_urban_terrain_foreground.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_byzantine_urban" + } + + domicile_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + background = "gfx/interface/window_domiciles/estate_background_jungle_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_jungle_terrain_foreground.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_wetlands" + } + + domicile_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + background = "gfx/interface/window_domiciles/estate_background_dry_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_dry_terrain_foreground.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_dry_lands" + } + + domicile_asset = { + trigger = { + domicile_location = { + OR = { + terrain = tells + terrain = hills + terrain = mountains + terrain = terraced_hills + } + } + } + background = "gfx/interface/window_domiciles/estate_background_rough_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_rough_terrain_foreground.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_rough_lands" + } + + domicile_asset = { + background = "gfx/interface/window_domiciles/estate_background_green_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_green_terrain_foreground.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_green_lands" + } +} minority_community = { rename_window = primary_title @@ -1169,3 +2087,1140 @@ minority_community = { ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_green_lands" } } + +farmstead = { + rename_window = house + + illustration = "gfx/interface/illustrations/event_scenes/ep3_medi_estate.dds" + icon = "gfx/interface/icons/flat_icons/farmer.dds" + map_pin_texture = "gfx/interface/icons/map_icons/map_icon_farmer.dds" + map_pin_anchor = up + map_pin_lobby = yes + + herd = yes + travel = yes + culture_and_faith = yes + + move_with_realm_capital = yes + can_move_manually = no + + base_external_slots = 2 + + map_entity = { + trigger = { + owner ?= { is_alive = yes } + owner.culture = { + OR = { + has_graphical_iranian_culture_group_trigger = yes + has_graphical_mena_culture_group_trigger = yes + has_graphical_steppe_culture_group_trigger = yes + has_graphical_african_culture_group_trigger = yes + } + } + } + reference = "building_mena_city_01_entity" + } + map_entity = { + trigger = { + owner ?= { is_alive = yes } + owner.culture = { + has_graphical_india_culture_group_trigger = yes + } + } + reference = "building_india_city_01_entity" + } + map_entity = { + trigger = { + owner ?= { is_alive = yes } + } + reference = "western_city_01_a_entity" + } + + domicile_temperament_low_modifier = { + name = domicile_temperament_low + army_damage_mult = -0.2 + contract_scheme_phase_duration_add = 10 + domicile_monthly_gold_mult = -0.25 + domicile_monthly_piety_gain_mult = -0.25 + domicile_monthly_prestige_gain_mult = -0.25 + monthly_piety_gain = -0.3 + monthly_prestige_gain = -0.3 + army_maintenance_mult = 0.2 + scale = { + add = default_temperament_low_value_scale + min = 1 + } + } + domicile_temperament_high_modifier = { + name = domicile_temperament_high + domicile_monthly_gold_mult = 0.25 + domicile_monthly_piety_gain_mult = 0.25 + domicile_monthly_prestige_gain_mult = 0.25 + monthly_piety_gain = 0.3 + monthly_prestige_gain = 0.3 + army_maintenance_mult = 0.2 + scale = { + add = default_temperament_high_value_scale + min = 1 + } + } + domicile_temperament_high_modifier = { + name = domicile_temperament_high + army_toughness_mult = 0.05 + owned_contract_scheme_success_chance_growth_add = 0.4 + scale = { + add = default_temperament_high_value_scale + min = 1 + } + } + + domicile_temperament_high_modifier = { + name = domicile_temperament_high + tolerance_advantage_mod = 1 + scale = { + add = default_temperament_high_value_scale + min = 1 + max = 10 + if = { + limit = { + NOT = { has_perk = faithful_perk } + } + multiply = 0 + } + } + } + + domicile_temperament_high_modifier = { + name = domicile_temperament_high + knight_effectiveness_mult = 0.1 + scale = { + add = default_temperament_high_value_scale + min = 1 + if = { + limit = { + NOT = { has_perk = absolute_control_perk } + } + multiply = 0 + } + } + } + + + domicile_temperament_high_modifier = { + name = domicile_temperament_high + personal_scheme_phase_duration_add = -25 + scale = { + add = default_temperament_high_value_scale + min = 1 + if = { + limit = { + NOT = { has_perk = writing_history_perk } + } + multiply = 0 + } + } + } + + domicile_temperament_high_modifier = { + name = domicile_temperament_high + monthly_piety = 0.4 + scale = { + add = { + every_courtier = { + limit = { + faith = root.faith + } + add = 1 + } + } + if = { + limit = { + NOT = { has_perk = religious_icon_perk } + } + multiply = 0 + } + } + } + + domicile_temperament_high_modifier = { + name = domicile_temperament_high + diplomacy = 0.34 + intrigue = 0.34 + martial = 0.34 + stewardship = 0.34 + learning = 0.34 + scale = { + add = { + every_courtier = { + limit = { + is_imprisoned = no + } + faith = { + if = { + limit = { + NOT = { is_in_list = unique_faiths } + add_to_temporary_list = unique_faiths + } + } + } + } + every_in_list = { + list = unique_faiths + add = 1 + } + max = 15 + } + if = { + limit = { + NOT = { has_perk = apostate_perk } + } + multiply = 0 + } + } + } + domicile_building_slots = { + external_slot_1 = { + position = { 19.7% 5.5% } + size = { 15% 30% } + + ### EMPTY SLOT GREEN TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = tells + terrain = hills + terrain = plains + terrain = forest + terrain = farmlands + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_mask.png" + } + + ### EMPTY SLOT ROUGH TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = taiga + terrain = steppe + terrain = drylands + terrain = mountains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_rough.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_rough_mask.png" + } + + ### EMPTY SLOT WETLANDS TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_mask.png" + } + + ### EMPTY SLOT JUNGLE TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + terrain = jungle + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_wetlands.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_wetlands_mask.png" + } + + ### EMPTY SLOT SNOW TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_wetlands.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_wetlands_mask.png" + } + + ### EMPTY SLOT DESERT TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = desert + terrain = desert_mountains + terrain = oasis + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_drylands.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_drylands_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + external_slot_4 = { + position = { 49.0% 2.5% } + size = { 15% 30% } + + ### EMPTY SLOT ASIAN + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/asian_empty_slot_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_04_mask.png" + } + + ### EMPTY SLOT SNOW MOUNTAIN TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + terrain = mountains + + OR = { + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_snow_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_snow_02_mask.png" + } + + ### EMPTY SLOT SNOW TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + has_province_modifier = winter_normal_modifier + has_province_modifier = winter_harsh_modifier + + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_snow_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_snow_02_mask.png" + } + + ### EMPTY SLOT GREEN TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = tells + terrain = hills + terrain = plains + terrain = forest + terrain = farmlands + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_02_mask.png" + } + + ### EMPTY SLOT ROUGH TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = taiga + terrain = steppe + terrain = drylands + terrain = mountains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_rough_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_rough_02_mask.png" + } + + ### EMPTY SLOT WETLANDS TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_green_02_mask.png" + } + + ### EMPTY SLOT JUNGLE TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + terrain = jungle + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_jungle_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_jungle_03_mask.png" + } + + ### EMPTY SLOT DESERT TERRAIN + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = desert + terrain = desert_mountains + terrain = oasis + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_drylands_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/laamp_building_empty_slot_drylands_03_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + main_slot = { + slot_type = main + position = { 28.2% 13.2% } + size = { 28% 34.5% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_01.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_01_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grain_fields_byzantine_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grain_fields_byzantine_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = hills + terrain = mountains + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grain_fields_byzantine_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_grain_fields_byzantine_mask.png" + } + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_manor_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_manor_construction_byzantine_mask.png" + } + } + + external_slot_2 = { + position = { 4% 20% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_02_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_06_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_06_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_06_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_06_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + external_slot_3 = { + position = { 14% 46% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_03_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_04_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_04_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_04_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty_04.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_04_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + external_slot_5 = { + position = { 64% 29% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_05.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_05_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty_03.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_03_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty_05.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_05_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_02_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_02_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + + external_slot_6 = { + position = { 43% 52% } + size = { 15% 30% } + + empty_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/yurt_empty_slot_06.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/yurt_empty_slot_06_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_jungle_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_jungle_empty_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_drylands_empty_02.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_drylands_empty_02_mask.png" + } + + empty_slot_asset = { + trigger = { + domicile_location = { + OR = { + terrain = mountains + terrain = hills + terrain = terraced_hills + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_rough_empty_05.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_rough_empty_05_mask.png" + } + + empty_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_grassland_empty.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_grassland_empty_mask.png" + } + + + # Under Construction + construction_slot_asset = { + trigger = { + owner.culture = { + OR = { + has_graphical_chinese_culture_group_trigger = yes + has_graphical_japanese_culture_group_trigger = yes + } + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_chinese.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_chinese_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_mena_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_mena.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_mena_mask.png" + } + construction_slot_asset = { + trigger = { + domicile_location.culture = { + has_graphical_western_culture_group_trigger = yes + } + } + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_western.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_western_mask.png" + } + construction_slot_asset = { + icon = "gfx/interface/icons/flat_icons/plus.dds" + texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine.dds" + intersectionmask_texture = "gfx/interface/window_domiciles/estate_building_construction_byzantine_mask.png" + } + } + } + + domicile_asset = { + trigger = { + domicile_location.culture = { + has_graphical_east_asia_culture_group_trigger = yes + } + } + background = "gfx/interface/window_domiciles/estate_background_steppe_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_steppe_terrain_foreground.dds" + ambience = "event:/DLC/CE2/Ambience/2D/Domicile/ce2_amb_2d_domicile_yurt" + } + + + domicile_asset = { + trigger = { + domicile_location = { + OR = { + terrain = jungle + terrain = wetlands + terrain = floodplains + } + } + } + background = "gfx/interface/window_domiciles/estate_background_jungle_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_jungle_terrain_foreground.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_wetlands" + } + + domicile_asset = { + trigger = { + domicile_location = { + OR = { + terrain = drylands + terrain = desert + terrain = desert_mountains + terrain = oasis + terrain = steppe + } + } + } + background = "gfx/interface/window_domiciles/estate_background_dry_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_dry_terrain_foreground.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_dry_lands" + } + + domicile_asset = { + trigger = { + domicile_location = { + OR = { + terrain = tells + terrain = hills + terrain = mountains + terrain = terraced_hills + } + } + } + background = "gfx/interface/window_domiciles/estate_background_rough_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_rough_terrain_foreground.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_rough_lands" + } + + domicile_asset = { + background = "gfx/interface/window_domiciles/estate_background_green_terrain.dds" + foreground = "gfx/interface/window_domiciles/estate_background_green_terrain_foreground.dds" + ambience = "event:/DLC/EP3/SFX/Ambience/2D/Domicile/ep3_amb_2d_domicile_green_lands" + } +} \ No newline at end of file diff --git a/common/dynasties/NEOW_dynasties.txt b/common/dynasties/NEOW_dynasties.txt index d8f1029f..774d0134 100644 --- a/common/dynasties/NEOW_dynasties.txt +++ b/common/dynasties/NEOW_dynasties.txt @@ -31,6 +31,12 @@ kohn_dynasty = { name = dynn_britannia_kohn culture = ashkenazi } + +schonfield_dynasty = { + name = dynn_Schonfield + culture = ashkenazi +} + giry_dynasty = { name = dynn_giry culture = bourguignon @@ -61,9 +67,9 @@ delunsch_dynasty = { culture = lorin } -millardet_dynasty = { - name = dynn_millardet - culture = normaund +drif_dynasty = { + name = dynn_Drif + culture = beur } beuamont_dynasty = { @@ -377,8 +383,8 @@ dynn_britannia_primrose = { } dynn_britannia_byrne = { - name = dynn_byrne - prefix = "dynnp_o" + name = dynn_Byrne + prefix = "dynnp_O_pst_" culture = high_irish } @@ -415,7 +421,7 @@ dynn_britannia_dev = { dynn_britannia_farrell = { name = dynn_farrell - prefix = "dynnp_o" + prefix = "dynnp_O_pst_" culture = high_irish } @@ -426,13 +432,13 @@ dynn_britannia_duff = { dynn_britannia_malley = { name = dynn_malley - prefix = "dynnp_o" + prefix = "dynnp_O_pst_" culture = high_irish } dynn_britannia_lennon = { name = dynn_lennon - prefix = "dynnp_o" + prefix = "dynnp_O_pst_" culture = high_irish } @@ -1058,8 +1064,8 @@ borbon_dynasty = { motto = dynn_bourbon_motto } -cortes_dynasty = { - name = dynn_cortes +calderon_dynasty = { + name = dynn_Calder_o_act_n culture = extremeno } @@ -1194,18 +1200,19 @@ ourense_dynasty = { culture = asturleonese } -coimbra_dynasty = { - name = dynn_coimbra +lourenco_dynasty = { + name = dynn_Louren_c_ced_o culture = portuguese } -fogaca_dynasty = { - name = dynn_fogaca +leal_dynasty = { + name = dynn_Leal culture = portuguese } alvarenga_dynasty = { - name = dynn_alvarenga + prefix = dynnp_de + name = dynn_Alvarenga culture = portuguese } @@ -1214,8 +1221,8 @@ aboim_dynasty = { culture = portuguese } -tavora_dynasty = { - name = dynn_tavora +martins_dynasty = { + name = dynn_Martins culture = portuguese } @@ -1744,3 +1751,72 @@ templemont_dynasty = { name = dynn_Templemont culture = metropolitain } + +plata_dynasty = { + prefix = "dynnp_de" + name = dynn_Plata + culture = cale +} +ayouch_dynasty = { + name = dynn_Ayouch + culture = beur +} +murphy_dynasty = { + name = dynn_Murphy + culture = traveller +} + +baio_dynasty = { + name = dynn_Baio + culture = brazilian +} + +vidal_dynasty = { + name = dynn_Vidal + culture = romansch +} + +avci_dynasty = { + name = dynn_Avc_i_dot_ + culture = turkisch +} + +johannessen_dynasty = { + name = dynn_Johannessen + culture = icelander +} + +kleppe_dynasty = { + name = dynn_Kleppe + culture = icelander +} + +martinsen_dynasty = { + name = dynn_Martinsen + culture = icelander +} + +mikkelsen_dynasty = { + name = dynn_Mikkelsen + culture = icelander +} + +olofsson_dynasty = { + name = dynn_Olofsson + culture = gutnsk +} + +martinez_dynasty = { + name = dynn_MartI_nez_de_Oviedo + culture = icelander +} + +kennedy_dynasty = { + name = dynn_Kennedy + culture = atlantannach +} + +gibson_dynasty = { + name = dynn_Gibson + culture = angler +} diff --git a/common/flavorization/00_flavorization.txt b/common/flavorization/00_flavorization.txt index d38d081f..5eafe40f 100644 --- a/common/flavorization/00_flavorization.txt +++ b/common/flavorization/00_flavorization.txt @@ -407,6 +407,16 @@ duchy_administrative = { ignore_top_liege_government = yes #In an administrative realm all governors vassals will use the titles of the top liege - this ensures it is only the governors that do, and not also feudal vassals, republican vassals, etc. } } +county_administrative = { + type = title + tier = duchy + priority = 50 + governments = { administrative_government } + flavourization_rules = { + top_liege = yes + ignore_top_liege_government = yes #In an administrative realm all governors vassals will use the titles of the top liege - this ensures it is only the governors that do, and not also feudal vassals, republican vassals, etc. + } +} #duchy_administrative_byzantine_group = { # type = title # tier = duchy @@ -429,6 +439,16 @@ kingdom_administrative = { only_vassals = yes } } +kingdom_peasantrepublic = { + type = title + tier = kingdom + priority = 73 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = yes + ignore_top_liege_government = yes #In an administrative realm all governors vassals will use the titles of the top liege - this ensures it is only the governors that do, and not also feudal vassals, republican vassals, etc. + } +} #kingdom_administrative_byzantine_group = { # type = title # tier = kingdom diff --git a/common/flavorization/00_title_holders.txt b/common/flavorization/00_title_holders.txt index 3949e008..1f180623 100644 --- a/common/flavorization/00_title_holders.txt +++ b/common/flavorization/00_title_holders.txt @@ -93,6 +93,7 @@ title_prince = { special = holder priority = 60 titles = { k_switzerland k_saxony k_wales d_monaco d_lictenstein } + governments = { feudal_government tribal_government administrative_government } flavourization_rules = { top_liege = no } @@ -103,6 +104,7 @@ title_princess = { special = holder priority = 60 titles = { k_switzerland k_saxony k_wales d_monaco d_lictenstein } + governments = { feudal_government tribal_government administrative_government } flavourization_rules = { top_liege = no } @@ -111,6 +113,7 @@ title_principality = { type = title titles = { k_saxony k_wales d_monaco d_lictenstein d_andorra } priority = 60 + governments = { feudal_government tribal_government administrative_government } flavourization_rules = { top_liege = no } @@ -120,6 +123,7 @@ swiss_confederation = { type = title titles = { k_switzerland } priority = 60 + governments = { feudal_government tribal_government administrative_government } flavourization_rules = { top_liege = no } @@ -131,6 +135,7 @@ archduke = { special = holder priority = 47 titles = { k_austria } + governments = { feudal_government tribal_government administrative_government } flavourization_rules = { top_liege = no } @@ -141,6 +146,7 @@ archduchess = { special = holder priority = 47 titles = { k_austria } + governments = { feudal_government tribal_government administrative_government } flavourization_rules = { top_liege = no } @@ -149,6 +155,7 @@ archduchy = { type = title tier = kingdom titles = { k_austria } + governments = { feudal_government tribal_government administrative_government } priority = 47 flavourization_rules = { top_liege = no @@ -161,6 +168,7 @@ title_high_king = { special = holder priority = 102 titles = { k_ireland } + governments = { feudal_government tribal_government administrative_government } } title_high_queen = { type = character @@ -168,10 +176,12 @@ title_high_queen = { special = holder priority = 102 titles = { k_ireland } + governments = { feudal_government tribal_government administrative_government } } title_high_kingdom = { type = title titles = { k_ireland } + governments = { feudal_government tribal_government administrative_government } priority = 102 } @@ -3996,6 +4006,7 @@ barony_feudal_sardinian = { # Curadoria tier = barony priority = 7 governments = { feudal_government administrative_government } + heritages = { heritage_sardic } name_lists = { name_list_sardinian } flavourization_rules = { top_liege = no @@ -4008,6 +4019,7 @@ baron_feudal_male_sardinian = { # Curadore tier = barony priority = 7 governments = { feudal_government administrative_government } + heritages = { heritage_sardic } name_lists = { name_list_sardinian } flavourization_rules = { top_liege = no @@ -4020,6 +4032,7 @@ baron_feudal_female_sardinian = { # Curadora tier = barony priority = 7 governments = { feudal_government administrative_government } + heritages = { heritage_sardic } name_lists = { name_list_sardinian } flavourization_rules = { top_liege = no @@ -4031,6 +4044,7 @@ county_feudal_sardinian = { # Judicadu tier = county priority = 18 governments = { feudal_government administrative_government } + heritages = { heritage_sardic } name_lists = { name_list_sardinian } flavourization_rules = { top_liege = no @@ -4043,6 +4057,7 @@ count_feudal_male_sardinian = { # Judike tier = county priority = 18 governments = { feudal_government administrative_government } + heritages = { heritage_sardic } name_lists = { name_list_sardinian } flavourization_rules = { top_liege = no @@ -4055,6 +4070,7 @@ count_feudal_female_sardinian = { # Judesa tier = county priority = 18 governments = { feudal_government administrative_government } + heritages = { heritage_sardic } name_lists = { name_list_sardinian } flavourization_rules = { top_liege = no @@ -4066,6 +4082,7 @@ duchy_feudal_sardinian = { # Archonate tier = duchy priority = 28 governments = { feudal_government administrative_government } + heritages = { heritage_sardic } name_lists = { name_list_sardinian } flavourization_rules = { top_liege = no @@ -4078,6 +4095,7 @@ duke_feudal_male_sardinian = { # Archon tier = duchy priority = 28 governments = { feudal_government administrative_government } + heritages = { heritage_sardic } name_lists = { name_list_sardinian } flavourization_rules = { top_liege = no @@ -4090,6 +4108,7 @@ duke_feudal_female_sardinian = { # Archonesa tier = duchy priority = 28 governments = { feudal_government administrative_government } + heritages = { heritage_sardic } name_lists = { name_list_sardinian } flavourization_rules = { top_liege = no diff --git a/common/flavorization/NEOW_title_holders.txt b/common/flavorization/NEOW_title_holders.txt index 29b84950..fe30d061 100644 --- a/common/flavorization/NEOW_title_holders.txt +++ b/common/flavorization/NEOW_title_holders.txt @@ -131,6 +131,7 @@ county_sardinian = { # judiacate type = title tier = county priority = 28 + heritages = { heritage_sardic } governments = { administrative_government } name_lists = { name_list_sardinian } } @@ -140,6 +141,7 @@ county_male_sardinian = { # Judex special = holder tier = county priority = 28 + heritages = { heritage_sardic } governments = { administrative_government } name_lists = { name_list_sardinian } } @@ -149,6 +151,7 @@ county_female_sardinian = { # Judex special = holder tier = county priority = 28 + heritages = { heritage_sardic } governments = { administrative_government } name_lists = { name_list_sardinian } @@ -157,6 +160,7 @@ duchy_sardinian = { # judiacate type = title tier = duchy priority = 28 + heritages = { heritage_sardic } governments = { administrative_government } name_lists = { name_list_sardinian } } @@ -166,6 +170,7 @@ duke_male_sardinian = { # Judex special = holder tier = duchy priority = 28 + heritages = { heritage_sardic } governments = { administrative_government } name_lists = { name_list_sardinian } } @@ -175,6 +180,7 @@ duke_female_sardinian = { # Judex special = holder tier = duchy priority = 28 + heritages = { heritage_sardic } governments = { administrative_government } name_lists = { name_list_sardinian } } @@ -183,6 +189,7 @@ king_administrative_sardinian = { # Archonesa type = title tier = kingdom priority = 106 + heritages = { heritage_sardic } governments = { administrative_government } name_lists = { name_list_sardinian } } @@ -193,6 +200,7 @@ king_male_sardinian = { # Judex special = holder tier = kingdom priority = 106 + heritages = { heritage_sardic } governments = { administrative_government } name_lists = { name_list_sardinian } } @@ -203,6 +211,7 @@ king_female_sardinian = { # Judex special = holder tier = kingdom priority = 106 + heritages = { heritage_sardic } governments = { administrative_government } } @@ -264,4 +273,329 @@ druid_king_female = { # Bandruí-Queen flavourization_rules = { top_liege = no } -} \ No newline at end of file +} + +baron_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = barony + priority = 7 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} +baron_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = barony + priority = 7 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} +barony_peasantrepublic = { + type = title + tier = barony + priority = 7 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} +count_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = county + priority = 28 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} +count_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = county + priority = 28 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} +county_peasantrepublic = { + type = title + tier = county + priority = 51 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} +duke_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = duchy + priority = 29 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} +duke_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = duchy + priority = 29 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} +duchy_peasantrepublic = { + type = title + tier = duchy + priority = 60 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +king_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = kingdom + priority = 75 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +king_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = kingdom + priority = 75 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +kingdom_peasantrepublic = { + type = title + tier = kingdom + priority = 75 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} + +emperor_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = empire + priority = 102 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +emperor_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = empire + priority = 102 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +empire_peasantrepublic = { + type = title + tier = empire + priority = 102 + governments = { peasantrepublic_government } + flavourization_rules = { + top_liege = no + } +} + + +baron_urbanrepublic_male = { + type = character + gender = male + special = holder + tier = barony + priority = 7 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} +baron_urbanrepublic_female = { + type = character + gender = female + special = holder + tier = barony + priority = 7 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} +barony_urbanrepublic = { + type = title + tier = barony + priority = 7 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} +count_urbanrepublic_male = { + type = character + gender = male + special = holder + tier = county + priority = 28 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} +count_urbanrepublic_female = { + type = character + gender = female + special = holder + tier = county + priority = 28 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} +county_urbanrepublic = { + type = title + tier = county + priority = 51 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} +duke_urbanrepublic_male = { + type = character + gender = male + special = holder + tier = duchy + priority = 29 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} +duke_urbanrepublic_female = { + type = character + gender = female + special = holder + tier = duchy + priority = 29 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} +duchy_urbanrepublic = { + type = title + tier = duchy + priority = 60 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +king_urbanrepublic_male = { + type = character + gender = male + special = holder + tier = kingdom + priority = 75 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +king_urbanrepublic_female = { + type = character + gender = female + special = holder + tier = kingdom + priority = 75 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +kingdom_urbanrepublic = { + type = title + tier = kingdom + priority = 75 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} + +emperor_urbanrepublic_male = { + type = character + gender = male + special = holder + tier = empire + priority = 102 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +emperor_urbanrepublic_female = { + type = character + gender = female + special = holder + tier = empire + priority = 102 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } + +} +empire_urbanrepublic = { + type = title + tier = empire + priority = 102 + governments = { urbanrepublic_government } + flavourization_rules = { + top_liege = no + } +} diff --git a/common/game_concepts/neow_game_concepts.txt b/common/game_concepts/neow_game_concepts.txt index bbf1dffc..ff136535 100644 --- a/common/game_concepts/neow_game_concepts.txt +++ b/common/game_concepts/neow_game_concepts.txt @@ -24,5 +24,30 @@ minority_community = { } minority_government = { texture = "gfx/interface/icons/government_types/landless_minority_government.dds" + parent = government +} +farmstead = { + texture = "gfx/interface/icons/government_types/peasantrepublic_government.dds" + alias = { farmstead farmstead_i } parent = domicile +} +peasantrepublic_government = { + texture = "gfx/interface/icons/government_types/peasantrepublic_government.dds" + alias = { peasantrepublic_government peasantrepublic_i } + parent = government +} +palace = { + texture = "gfx/interface/icons/map_icons/map_icon_urban.dds" + alias = { palace palace_i } + parent = domicile +} +urbanrepublic_government = { + texture = "gfx/interface/icons/government_types/urbanrepublic_government.dds" + alias = { urbanrepublic_government urbanrepublic_i } + parent = government +} +monotown_holding = { + texture = "gfx/interface/icons/map_icons/onmap_holding_icon.dds" + parent = domicile + alias = { monotown_holdings } } \ No newline at end of file diff --git a/common/game_rules/NEOW_game_rules.txt b/common/game_rules/NEOW_game_rules.txt new file mode 100644 index 00000000..ae500847 --- /dev/null +++ b/common/game_rules/NEOW_game_rules.txt @@ -0,0 +1,10 @@ +disable_achievements = { + categories = { + game_modes + } + + default = achievements_disabled + + achievements_enabled = {} + achievements_disabled = { flag = blocks_achievements } +} \ No newline at end of file diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index 9f1651bb..ca05baac 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -23,7 +23,10 @@ feudal_government = { ai = { use_legends = yes } - + character_modifier = { + ai_war_cooldown = 2 + ai_war_chance = -0.15 + } # Use flags instead of has_government for moddability if possible (i.e., wherever not visible to the player). flags = { government_is_feudal @@ -49,6 +52,43 @@ republic_government = { inherit_from_dynastic_government = no } + can_get_government = { + + NOR = { + culture = { + has_cultural_tradition = tradition_farmer_republics + } + faith = { + has_doctrine = tenet_egalite + } + any_liege_or_above = { + has_government = peasantrepublic_government + } + primary_title = { + is_target_in_global_variable_list = { + name = prepublic_list + target = prev + } + } + } + NOR = { + culture = { + has_cultural_tradition = tradition_republican_legacy + } + faith = { + has_doctrine = tenet_egalite + } + any_liege_or_above = { + has_government = urbanrepublic_government + } + primary_title = { + is_target_in_global_variable_list = { + name = urepublic_list + target = prev + } + } + } + } ai = { arrange_marriage = no use_goals = no @@ -64,6 +104,8 @@ republic_government = { government_is_republic government_is_settled government_uses_domain_limit + gov_uses_non_crown_coa + government_locked_to_elective } color = hsv{ 0.00 1.00 0.98 } @@ -175,6 +217,10 @@ clan_government = { } } + character_modifier = { + ai_war_cooldown = 2 + ai_war_chance = -0.15 + } # Use flags instead of has_government for moddability if possible (i.e., wherever not visible to the player). flags = { government_is_clan @@ -227,8 +273,9 @@ tribal_government = { character_travel_safety = 10 - ai_war_chance = 0.25 monthly_prestige = 0.2 + ai_war_cooldown = 2 + ai_war_chance = -0.05 } # Use flags instead of has_government for moddability if possible (i.e., wherever not visible to the player). @@ -289,6 +336,8 @@ wanua_government = { # "Wanua" domain_limit_max = 2 vassal_limit_max = 2 + ai_war_cooldown = 2 + ai_war_chance = -0.55 } can_get_government = { @@ -336,6 +385,7 @@ mercenary_government = { government_uses_crown_authority cannot_be_vassal_or_liege government_is_mercenary + gov_uses_non_crown_coa } mechanic_type = mercenary @@ -441,6 +491,8 @@ administrative_government = { # Vassals get Treasury income that is this percentage less than their taxes to their liege monthly_treasury_from_liege_mult = -0.15 + ai_war_cooldown = 2 + ai_war_chance = -0.15 } top_liege_character_modifier = { @@ -533,6 +585,7 @@ landless_adventurer_government = { cannot_be_vassal_or_liege government_is_landless_adventurer has_unique_government_perks + gov_uses_non_crown_coa } mechanic_type = landless_adventurer @@ -599,6 +652,7 @@ landless_minority_government = { landless_can_be_vassalised government_is_landless_minority government_devassalises + gov_uses_non_crown_coa } mechanic_type = landless_adventurer @@ -607,6 +661,194 @@ landless_minority_government = { realm_mask_offset = { 0.0 0.0 } realm_mask_scale = { 1 1 } } + +peasantrepublic_government = { + primary_holding = city_holding + valid_holdings = { temple_citadel_holding } + required_county_holdings = { city_holding church_holding } + government_rules = { + create_cadet_branches = yes + court_generate_spouses = yes + council = yes + always_use_patronym = yes + rulers_should_have_dynasty = yes + landless_playable = yes + barter = yes + mercenary = yes + use_as_base_on_landed = yes + allow_out_of_realm_inheritance = no + use_as_base_on_rank_up = yes + uses_county_fertility = yes + sticky_government = yes + replenishes_county_fertility = yes + regiments_use_barter_goods_as_gold = yes + inherit_from_dynastic_government = no + house_aspirations = yes + } + + can_get_government = { + OR = { + culture = { + has_cultural_tradition = tradition_farmer_republics + } + faith = { + has_doctrine = tenet_communal_possessions + } + liege = { + has_government = peasantrepublic_government + } + primary_title = { + is_target_in_global_variable_list = { + name = prepublic_list + target = prev + } + } + } + NOR = { + culture = { + has_cultural_tradition = tradition_republican_legacy + } + faith = { + has_doctrine = tenet_egalite + } + any_liege_or_above = { + has_government = urbanrepublic_government + } + } + } + domicile_type = farmstead + character_modifier = { + feudal_government_tax_contribution_mult = -0.5 + feudal_government_levy_contribution_mult = -0.5 + clan_government_tax_contribution_mult = -0.5 + clan_government_levy_contribution_mult = -0.5 + ignore_negative_opinion_of_culture = yes + men_at_arms_cap = -1 + men_at_arms_limit = -1 + knight_limit = -4 + active_accolades = -1 + title_creation_cost_mult = 1.5 + mercenary_hire_cost_mult = 2 + men_at_arms_maintenance = 1.5 + vassal_limit = 5 + ai_war_cooldown = 2 + ai_war_chance = -0.15 + } + vassal_contract_group = peasantrepublic_vassal + + # Use flags instead of has_government for moddability if possible (i.e., wherever not visible to the player). + flags = { + government_can_raid_rule + government_enables_naval_raiding + government_is_settled + may_elevate_co_monarch + government_uses_domain_limit + government_has_herd + government_uses_domicile_but_not_adventurer + government_is_barterer + government_is_prepublic + government_locked_to_elective + government_allows_nomad_domicile_titles + gov_uses_non_crown_coa + government_uses_crown_authority + } + + mechanic_type = feudal + color = hsv{ 0.30 0.60 0.68 } + realm_mask_offset = { 0.0 -0.01 } + realm_mask_scale = { 1 1 } +} +urbanrepublic_government = { + primary_holding = city_holding + valid_holdings = { temple_citadel_holding monotown_holding } + required_county_holdings = { city_holding church_holding } + government_rules = { + create_cadet_branches = yes + court_generate_spouses = yes + council = yes + always_use_patronym = yes + rulers_should_have_dynasty = yes + landless_playable = yes + barter = yes + mercenary = yes + use_as_base_on_landed = yes + allow_out_of_realm_inheritance = no + use_as_base_on_rank_up = yes + sticky_government = yes + uses_county_fertility = yes + inherit_from_dynastic_government = no + treasury = yes + replace_gold_cost_by_treasury = yes + regiments_use_barter_goods_as_gold = yes + house_aspirations = yes + } + + can_get_government = { + OR = { + culture = { + has_cultural_tradition = tradition_republican_legacy + } + faith = { + has_doctrine = tenet_egalite + } + any_liege_or_above = { + has_government = urbanrepublic_government + } + primary_title = { + is_target_in_global_variable_list = { + name = urepublic_list + target = prev + } + } + } + } + domicile_type = palace + character_modifier = { + feudal_government_tax_contribution_mult = -0.5 + feudal_government_levy_contribution_mult = -0.5 + clan_government_tax_contribution_mult = -0.5 + clan_government_levy_contribution_mult = -0.5 + ignore_negative_opinion_of_culture = yes + men_at_arms_cap = 2 + men_at_arms_limit = 2 + knight_limit = -4 + active_accolades = -1 + title_creation_cost_mult = 1.5 + mercenary_hire_cost_mult = -0.25 + men_at_arms_maintenance = 2 + vassal_limit = 5 + ai_war_cooldown = 2 + ai_war_chance = -0.15 + monthly_treasury_from_vassals = 0.85 + } + vassal_contract_group = urbanrepublic_vassal + + # Use flags instead of has_government for moddability if possible (i.e., wherever not visible to the player). + flags = { + government_can_raid_rule + government_enables_naval_raiding + government_has_influence + government_is_settled + government_has_treasury + may_elevate_co_monarch + government_uses_domain_limit + government_uses_monotowns + government_uses_domicile_but_not_adventurer + government_has_citizen_militia + government_elections_and_tax_influenced_by_influence + government_is_barterer + government_is_urepublic + government_locked_to_elective + government_allows_nomad_domicile_titles + gov_uses_non_crown_coa + government_uses_crown_authority + } + + mechanic_type = feudal + color = { 0 85 164 } + realm_mask_offset = { 0.0 -0.01 } + realm_mask_scale = { 1 1 } +} ### Brief: nomad_government # Default nomad government, used for the Steppe Region # @@ -741,6 +983,7 @@ herder_government = { # Use flags instead of has_government for moddability if possible (i.e., wherever not visible to the player). flags = { government_is_herder + government_is_true_herder government_has_herd ignores_faith_marriage_penalties } @@ -808,6 +1051,8 @@ celestial_government = { # Vassals get Treasury income that is this percentage less than their taxes to their liege monthly_treasury_from_liege_mult = -0.25 + ai_war_cooldown = 2 + ai_war_chance = -0.15 } top_liege_character_modifier = { diff --git a/common/holdings/00_holdings.txt b/common/holdings/00_holdings.txt index 7cd2aedc..1ab65ced 100644 --- a/common/holdings/00_holdings.txt +++ b/common/holdings/00_holdings.txt @@ -55,6 +55,7 @@ vineyards_01 chemistry_workshop_01 air_dock_01 + doggerland_ivory_deposits_01 } } @@ -140,6 +141,7 @@ city_holding = { tell_mines_01 chemistry_workshop_01 air_dock_01 + doggerland_ivory_deposits_01 } can_be_inherited = yes @@ -197,10 +199,21 @@ church_holding = { tell_mines_01 chemistry_workshop_01 air_dock_01 + doggerland_ivory_deposits_01 } can_be_inherited = yes } +monotown_holding = { + primary_building = monotown_01 + can_be_inherited = yes + required_heir_government_types = { urbanrepublic_government } + + parameters = { + no_buildings + } + can_be_inherited = yes +} nomad_holding = { primary_building = nomadic_camp_01 @@ -289,6 +302,7 @@ temple_citadel_holding = { tell_mines_01 chemistry_workshop_01 air_dock_01 + doggerland_ivory_deposits_01 } can_be_inherited = yes diff --git a/common/landed_titles/LAAMPs.txt b/common/landed_titles/LAAMPs.txt index c9da6012..78d335c3 100644 --- a/common/landed_titles/LAAMPs.txt +++ b/common/landed_titles/LAAMPs.txt @@ -9,7 +9,7 @@ d_laamp_zolt = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -24,7 +24,7 @@ d_laamp_test_jewish = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -38,7 +38,7 @@ d_laamp_bookwyrm = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -53,7 +53,7 @@ d_laamp_cool = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -68,7 +68,7 @@ d_laamp_rostagnac = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -83,7 +83,65 @@ d_laamp_knife = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + + destroy_if_invalid_heir = yes + + ai_primary_priority = { add = @never_primary_score } +} + +d_laamp_cale_roman = { + color = { 100 100 100 } + capital = c_camargue + + definite_form = yes + landless = yes + ruler_uses_title_name = no + always_follows_primary_heir = yes + no_automatic_claims = yes + + destroy_if_invalid_heir = yes + + ai_primary_priority = { add = @never_primary_score } +} + +d_laamp_turkisch_simurghi = { + color = { 100 100 100 } + capital = c_cologne + + definite_form = yes + landless = yes + ruler_uses_title_name = no + always_follows_primary_heir = yes + no_automatic_claims = yes + + destroy_if_invalid_heir = yes + + ai_primary_priority = { add = @never_primary_score } +} +d_laamp_beur_simurghi = { + color = { 100 100 100 } + capital = c_ile_de_france + + definite_form = yes + landless = yes + ruler_uses_title_name = no + always_follows_primary_heir = yes + no_automatic_claims = yes + + destroy_if_invalid_heir = yes + + ai_primary_priority = { add = @never_primary_score } +} +d_laamp_traveller_celtic = { + color = { 100 100 100 } + capital = c_dublin + + definite_form = yes + landless = yes + ruler_uses_title_name = no + always_follows_primary_heir = yes + no_automatic_claims = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } diff --git a/common/landed_titles/alps.txt b/common/landed_titles/alps.txt index 23c64d4c..3495c776 100644 --- a/common/landed_titles/alps.txt +++ b/common/landed_titles/alps.txt @@ -512,7 +512,7 @@ e_alps = { #can_be_named_after_dynasty = no b_bolzano = { - province = 2498 + province = 2955 color = { 250 150 220 } } @@ -529,7 +529,7 @@ e_alps = { } } b_brixen = { - province = 2955 + province = 2498 color = { 60 50 60 } } @@ -538,6 +538,32 @@ e_alps = { color = { 60 50 60 } } + b_laives = { + province = 8806 + + color = { 60 50 60 } + } + } + c_ladinia = { + color = { 208 98 56 } + #can_be_named_after_dynasty = no + + b_fascia = { + province = 8808 + + color = { 208 98 56 } + } + b_val_badia = { + province = 8807 + + color = { 208 98 56 } + } + b_fodom = { + province = 8809 + + color = { 208 98 56 } + } + } } d_lictenstein = { diff --git a/common/landed_titles/britannia.txt b/common/landed_titles/britannia.txt index fb8af74b..f2397090 100644 --- a/common/landed_titles/britannia.txt +++ b/common/landed_titles/britannia.txt @@ -4,7 +4,7 @@ @never_primary_score = -1000 e_britannia = { - color = { 165 8 34 } + color = { 140 7 29 } capital = c_london can_be_named_after_dynasty = no @@ -17,7 +17,7 @@ e_britannia = { } k_england = { # Anglia - color = { 178 17 31 } + color = { 127 12 24 } capital = c_london cultural_names = { @@ -2649,7 +2649,7 @@ e_britannia = { } k_wales = { - color = { 0 114 57 } + color = { 0 63 31 } capital = c_glamorgan # Cardiff cultural_names = { @@ -5327,7 +5327,7 @@ e_britannia = { } k_ireland = { - color = { 46 140 28 } + color = { 10 102 10 } capital = c_dublin # Dublin can_create = { diff --git a/common/landed_titles/france.txt b/common/landed_titles/france.txt index 46aee1d9..8da1818a 100644 --- a/common/landed_titles/france.txt +++ b/common/landed_titles/france.txt @@ -410,7 +410,7 @@ e_france = { } } k_france = { - color = { 0 76 153 } + color = { 0 63 127 } capital = c_ile_de_france @@ -2195,11 +2195,12 @@ e_france = { color = { 81 30 243 } cultural_names = { - name_list_NEOW_breton=cn_breizh - name_list_picard=cn_franche - name_list_arpitan=cn_franche - name_list_occitan=cn_fran_c_ced_a - name_list_basque=cn_frantzia + name_list_NEOW_breton=cn_bourdel + name_list_picard=cn_bordieus + name_list_arpitan=cn_bord_o_hat_x + name_list_occitan=cn_bord_e_grv_u + name_list_corsican=cn_francia + name_list_basque=cn_bordele } } b_medoc = { # Lesparre-Médoc diff --git a/common/landed_titles/iberia.txt b/common/landed_titles/iberia.txt index 2198c481..1655f237 100644 --- a/common/landed_titles/iberia.txt +++ b/common/landed_titles/iberia.txt @@ -2652,7 +2652,7 @@ e_iberia = { } k_portugal = { - color = { 11 76 11 } + color = { 9 63 9 } capital = c_lisboa # Lisboa #can_be_named_after_dynasty = no diff --git a/common/landed_titles/italy.txt b/common/landed_titles/italy.txt index becf4300..ccd94d13 100644 --- a/common/landed_titles/italy.txt +++ b/common/landed_titles/italy.txt @@ -52,12 +52,17 @@ e_italy = { color = { 84 211 116 } #can_be_named_after_dynasty = no - capital = c_turin #Asti + capital = c_turin c_monferrato = { color = { 102 204 125 } #can_be_named_after_dynasty = no + b_chieri = { + province = 2045 + + color = { 195 115 135 } + } b_asti = { province = 2469 @@ -68,11 +73,6 @@ e_italy = { color = { 195 160 160 } } - b_chieri = { - province = 2045 - - color = { 195 115 135 } - } b_pombia = { province = 2472 @@ -202,6 +202,11 @@ e_italy = { color = { 185 120 205 } } + } + c_brianza = { + color = { 22 119 30 } + #can_be_named_after_dynasty = no + b_monza = { province = 2481 @@ -267,13 +272,13 @@ e_italy = { color = { 26 178 36 } #can_be_named_after_dynasty = no b_brescia = { - province = 2494 + province = 8762 color = { 170 150 190 } } b_chiari = { - province = 8762 + province = 2494 color = { 170 150 190 } } @@ -328,27 +333,27 @@ e_italy = { color = { 209 145 95 } } - b_monte_sole = { - province = 2550 - - color = { 209 145 95 } - } b_cento = { province = 2541 color = { 230 185 185 } } + b_imola = { + province = 2550 + + color = { 229 165 115 } + } } c_reggio_emilia = { color = { 89 204 51 } #can_be_named_after_dynasty = no - b_canossa = { - province = 2535 + b_reggio_emilia = { + province = 2534 color = { 230 185 185 } } - b_reggio_emilia = { - province = 2534 + b_canossa = { + province = 2535 color = { 230 185 185 } } @@ -498,7 +503,7 @@ e_italy = { name_list_NEOW_french=cn_tyrrh_e_act_nie } - d_palermo= { + d_palermo = { color = { 57 114 45 } #can_be_named_after_dynasty = no @@ -1183,11 +1188,11 @@ e_italy = { color = { 229 165 115 } } - b_imola = { + b_monte_sole = { province = 2549 - color = { 229 165 115 } - } + color = { 209 145 95 } + } } c_casentino = { color = { 229 181 114 } @@ -2106,12 +2111,12 @@ e_italy = { color = { 160 225 210 } } - b_ceneta = { + b_ceneta = { # Conegliano province = 2511 color = { 160 225 210 } } - b_pieve = { + b_pieve = { # Belluno province = 9707 color = { 55 55 70 } @@ -2126,11 +2131,6 @@ e_italy = { color = { 130 215 190 } } - b_montagnana = { - province = 2666 - - color = { 130 215 190 } - } b_este = { province = 8765 @@ -2173,13 +2173,13 @@ e_italy = { color = { 17 178 178 } #can_be_named_after_dynasty = no - b_aquileia = { - province = 2508 + b_trieste = { + province = 2514 color = { 170 255 170 } } - b_trieste = { - province = 2514 + b_aquileia = { + province = 2508 color = { 170 255 170 } } @@ -2203,13 +2203,13 @@ e_italy = { c_friuli = { color = { 22 229 229 } #can_be_named_after_dynasty = no - b_pordenone = { - province = 2513 + b_portogruaro = { + province = 8766 color = { 155 255 175 } } - b_portogruaro = { - province = 8766 + b_pordenone = { + province = 2513 color = { 155 255 175 } } @@ -2236,6 +2236,12 @@ e_italy = { color = { 150 245 210 } } + + b_montagnana = { + province = 2666 + + color = { 130 215 190 } + } } c_trent = { color = { 30 153 91 } @@ -2260,12 +2266,12 @@ e_italy = { color = { 20 102 61 } #can_be_named_after_dynasty = no b_vicenza = { - province = 2500 + province = 2509 color = { 160 225 210 } } b_lonigo = { - province = 2509 + province = 2500 color = { 130 215 190 } } diff --git a/common/landed_titles/noble_families.txt b/common/landed_titles/noble_families.txt index c6e9232e..b946460c 100644 --- a/common/landed_titles/noble_families.txt +++ b/common/landed_titles/noble_families.txt @@ -374,5 +374,20 @@ d_nf_bollani = { #Mountbatten noble_family = yes destroy_if_invalid_heir = yes + ai_primary_priority = { add = @never_primary_score } +} + +d_nf_robecchi-bricchetti = { #Mountbatten + color = { 100 100 100 } + capital = c_venezia + + definite_form = yes + landless = yes + ruler_uses_title_name = no + always_follows_primary_heir = yes + no_automatic_claims = yes + noble_family = yes + destroy_if_invalid_heir = yes + ai_primary_priority = { add = @never_primary_score } } \ No newline at end of file diff --git a/common/laws/00_succession_laws.txt b/common/laws/00_succession_laws.txt index c91c100d..e53c1b25 100644 --- a/common/laws/00_succession_laws.txt +++ b/common/laws/00_succession_laws.txt @@ -40,6 +40,10 @@ } is_confederation_member = no } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { NOR = { @@ -82,6 +86,8 @@ potential = { NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic government_has_flag = government_is_nomadic government_has_flag = government_is_clan government_has_flag = government_is_administrative @@ -126,6 +132,10 @@ is_confederation_member = yes } } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { NOR = { @@ -169,6 +179,8 @@ potential = { NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic government_has_flag = government_is_nomadic government_has_flag = government_is_clan government_has_flag = government_is_administrative @@ -190,6 +202,10 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_high_partition_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { NOR = { @@ -234,6 +250,8 @@ potential = { NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic government_has_flag = government_is_nomadic government_has_flag = government_is_clan government_has_flag = government_is_administrative @@ -262,7 +280,10 @@ NOT = { exists = var:administrative_ui_special_title.holder } } can_have = { - NOT = { government_has_flag = government_is_nomadic } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } can_have_single_heir_succession_law_trigger = yes } can_pass = { @@ -322,7 +343,9 @@ } potential = { - NOR = { + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic government_has_flag = government_is_nomadic government_has_flag = government_is_mandala } @@ -344,6 +367,10 @@ } can_have = { government_has_flag = government_is_nomadic + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_pass = { government_has_flag = government_is_nomadic @@ -395,6 +422,10 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_single_heir_youngest_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_pass = { can_change_succession_law_trigger = yes @@ -475,6 +506,10 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_single_heir_dynasty_house_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_pass = { can_change_single_heir_dynasty_house_succession_law_trigger = yes @@ -536,7 +571,9 @@ } potential = { - NOR = { + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic government_has_flag = government_is_administrative government_has_flag = government_is_nomadic government_has_flag = government_is_mandala @@ -554,6 +591,10 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_acclamation_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { has_ep3_dlc_trigger = yes @@ -586,6 +627,8 @@ government_allows = administrative is_independent_ruler = yes NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic government_has_flag = government_is_celestial government_has_flag = government_is_japan_administrative government_has_flag = government_is_meritocratic @@ -609,6 +652,10 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_appointment_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_pass = { can_change_appointment_succession_law_trigger = yes @@ -673,6 +720,10 @@ } can_have = { government_has_flag = government_is_landless_adventurer + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_pass = { government_has_flag = government_is_landless_adventurer @@ -704,9 +755,17 @@ bishop_theocratic_succession_law = { can_keep = { can_have_bishop_theocratic_succession_law_trigger = yes # same as can_have + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_have = { can_have_bishop_theocratic_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { always = yes @@ -725,9 +784,17 @@ holy_order_succession_law = { can_keep = { can_have_holy_order_succession_law_trigger = yes # same as can_have + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_have = { can_have_holy_order_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { government_has_flag = government_is_holy_order @@ -766,9 +833,17 @@ city_succession_law = { can_keep = { can_have_city_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_have = { can_have_city_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { government_has_flag = government_is_republic @@ -801,6 +876,10 @@ house ?= { has_house_unity_stage = antagonistic } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { @@ -858,6 +937,10 @@ house ?= { has_house_unity_stage = competitive } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { government_has_flag = government_is_clan @@ -917,6 +1000,10 @@ house ?= { has_house_unity_stage = impassive } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { government_has_flag = government_is_clan @@ -975,6 +1062,10 @@ house ?= { has_house_unity_stage = friendly } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { government_has_flag = government_is_clan @@ -1027,6 +1118,10 @@ house ?= { has_house_unity_stage = harmonious } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { government_has_flag = government_is_clan @@ -1065,9 +1160,17 @@ herder_succession_law = { can_keep = { can_have_herder_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_have = { can_have_herder_succession_law_trigger = yes + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } should_start_with = { government_has_flag = government_is_herder @@ -1105,6 +1208,10 @@ can_have = { government_allows = administrative is_independent_ruler = no + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_pass = { government_allows = administrative diff --git a/common/laws/01_title_succession_laws.txt b/common/laws/01_title_succession_laws.txt index 90dda5af..c7e2c02c 100644 --- a/common/laws/01_title_succession_laws.txt +++ b/common/laws/01_title_succession_laws.txt @@ -5,6 +5,8 @@ government_has_flag = government_is_feudal highest_held_title_tier >= tier_county NOR = { #Cultures have their special flavor. + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic culture = { has_cultural_parameter = witenagemot_succession_enabled } culture = { has_cultural_parameter = scandinavian_elective_enabled } culture = { has_cultural_parameter = tribal_elective_enabled } #FP3 addition @@ -37,6 +39,10 @@ government_has_flag = government_is_feudal government_has_flag = government_is_clan } + NOR = { #Cultures have their special flavor. + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } highest_held_title_tier = tier_empire } can_pass = { @@ -67,25 +73,27 @@ # Witenagemot saxon_elective_succession_law = { 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 + government_has_flag = government_is_prepublic } can_pass = { can_change_title_law_trigger = yes - culture = { has_cultural_parameter = witenagemot_succession_enabled } } can_title_have = { - can_title_have_law_general_trigger = yes + tier >= tier_county + is_temporal_head_of_faith_trigger = no + NOT = { + is_nomad_title = yes + } } succession = { order_of_succession = election election_type = saxon_elective } + should_start_with = { + government_has_flag = government_is_prepublic + } flag = elective_succession_law + flag = titles_cannot_leave_realm_on_succession title_allegiance_opinion = 5 revoke_cost = { prestige = change_title_succession_law_prestige_cost @@ -93,8 +101,45 @@ pass_cost = { prestige = change_title_succession_law_prestige_cost } + potential = { + government_has_flag = government_is_prepublic + } } + urban_elective_succession_law = { + can_have = { + government_has_flag = government_is_urepublic + } + can_pass = { + can_change_title_law_trigger = yes + } + can_title_have = { + tier >= tier_county + is_temporal_head_of_faith_trigger = no + NOT = { + is_nomad_title = yes + } + } + succession = { + order_of_succession = election + election_type = urban_elective + } + should_start_with = { + government_has_flag = government_is_urepublic + } + flag = elective_succession_law + flag = titles_cannot_leave_realm_on_succession + title_allegiance_opinion = 5 + revoke_cost = { + prestige = change_title_succession_law_prestige_cost + } + pass_cost = { + prestige = change_title_succession_law_prestige_cost + } + potential = { + government_has_flag = government_is_urepublic + } + } # Thing scandinavian_elective_succession_law = { can_have = { @@ -103,6 +148,10 @@ government_has_flag = government_is_clan government_has_flag = government_is_tribal } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } highest_held_title_tier >= tier_duchy } can_pass = { @@ -134,6 +183,10 @@ government_has_flag = government_is_clan government_has_flag = government_is_tribal } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } highest_held_title_tier >= tier_duchy } can_pass = { @@ -171,6 +224,10 @@ government_has_flag = government_is_clan government_has_flag = government_is_tribal } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } highest_held_title_tier >= tier_kingdom } can_pass = { @@ -216,7 +273,10 @@ # Noble Family Succession noble_family_succession_law = { can_title_have = { - is_noble_family_title = yes + OR = { + is_noble_family_title = yes + is_nomad_title = yes + } } should_show_for_title = { # Never show this in the UI, just apply it through script always = no @@ -292,6 +352,10 @@ celestial_ministry_appointment_succession_law = { can_have = { government_has_flag = government_is_celestial + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_pass = { } @@ -330,6 +394,10 @@ celestial_grand_marshal_appointment_succession_law = { can_have = { government_has_flag = government_is_celestial + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } } can_pass = { } diff --git a/common/legitimacy/_legitimacy.info b/common/legitimacy/_legitimacy.info new file mode 100644 index 00000000..e19949d7 --- /dev/null +++ b/common/legitimacy/_legitimacy.info @@ -0,0 +1,59 @@ + = { + # Should this legitimacy type apply to this playable ruler, evaluated daily for the player, yearly for AI + # First valid one is selected + # root = ruler character + is_valid = { + + } + + # What level the AI expects of a liege with this legitimacy type + # root = vassal + # scope:liege = liege character + ai_expected_level = { +