diff --git a/common/bookmarks/bookmarks/00_bookmarks.txt b/common/bookmarks/bookmarks/00_bookmarks.txt index 6b7027ea..be35e238 100644 --- a/common/bookmarks/bookmarks/00_bookmarks.txt +++ b/common/bookmarks/bookmarks/00_bookmarks.txt @@ -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..bc5c3df8 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,14 @@ 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 + } + + next_building = guild_halls_02 type_icon = "icon_building_guild_halls.dds" @@ -2050,7 +2073,11 @@ 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 + } + next_building = guild_halls_03 ai_value = { base = 9 @@ -2104,6 +2131,11 @@ guild_halls_03 = { county_modifier = { development_growth_factor = 0.15 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.3 + } + on_complete = { #Mandala Creator Aspect @@ -2164,6 +2196,11 @@ guild_halls_04 = { county_modifier = { development_growth_factor = 0.2 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.4 + } + on_complete = { #Mandala Creator Aspect @@ -2223,6 +2260,11 @@ guild_halls_05 = { county_modifier = { development_growth_factor = 0.25 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.5 + } + on_complete = { #Mandala Creator Aspect @@ -2282,6 +2324,11 @@ guild_halls_06 = { county_modifier = { development_growth_factor = 0.3 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.6 + } + on_complete = { #Mandala Creator Aspect @@ -2341,6 +2388,11 @@ guild_halls_07 = { county_modifier = { development_growth_factor = 0.35 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.7 + } + on_complete = { #Mandala Creator Aspect @@ -2400,6 +2452,11 @@ guild_halls_08 = { county_modifier = { development_growth_factor = 0.4 } + province_government_modifier = { + parameter = government_is_prepublic + monthly_barter_goods = 0.8 + } + on_complete = { #Mandala Creator Aspect diff --git a/common/buildings/00_standard_economy_buildings.txt b/common/buildings/00_standard_economy_buildings.txt index 1efa950f..aa43afad 100644 --- a/common/buildings/00_standard_economy_buildings.txt +++ b/common/buildings/00_standard_economy_buildings.txt @@ -2747,6 +2747,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 +2851,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 +2958,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 +3062,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 +3171,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 +3281,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 +3391,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 +3501,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 @@ -5069,7 +5135,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 +5221,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 +5291,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 +5361,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 +5433,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 +5504,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 +5574,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 +5644,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 +6335,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 +6407,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 +6471,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 +6532,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 +6594,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 +6656,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 +6721,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 +6786,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 +6863,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 +6956,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 +7027,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 +7089,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 +7172,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 +7250,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 +7329,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 +7407,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 +7464,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 +7574,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 +7663,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 +7751,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 +7838,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 +7925,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 +8014,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 +8102,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 +9091,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 +9169,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 +9239,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 +9306,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 +9373,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 +9441,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 +9509,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 +9577,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 @@ -9678,6 +10072,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 @@ -9759,6 +10161,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 @@ -9816,6 +10226,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 @@ -9869,6 +10288,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 @@ -9926,6 +10354,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 @@ -9983,6 +10419,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 @@ -10040,6 +10484,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 @@ -10097,6 +10549,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 bd6b6d85..5b311a6a 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,19 @@ 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 + county_fertility_growth_add = 0.8 + monthly_barter_goods = 0.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 +1508,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 +1614,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 +1727,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 +1835,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 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/character_interactions/00_grant_titles_interaction.txt b/common/character_interactions/00_grant_titles_interaction.txt new file mode 100644 index 00000000..464e711c --- /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_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_revoke_title_interaction.txt b/common/character_interactions/00_revoke_title_interaction.txt new file mode 100644 index 00000000..d05b7c71 --- /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_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_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_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_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_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/09_mpo_interactions.txt b/common/character_interactions/09_mpo_interactions.txt index b47bf025..0dfc0f4d 100644 --- a/common/character_interactions/09_mpo_interactions.txt +++ b/common/character_interactions/09_mpo_interactions.txt @@ -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 } } diff --git a/common/culture/cultures/NEOW_goidelic.txt b/common/culture/cultures/NEOW_goidelic.txt index 206b8867..bbf0c6df 100644 --- a/common/culture/cultures/NEOW_goidelic.txt +++ b/common/culture/cultures/NEOW_goidelic.txt @@ -9,7 +9,7 @@ traditions = { tradition_seafaring - tradition_adaptive_skirmishing + tradition_farmer_republics tradition_festivities tradition_swords_for_hire tradition_diasporic @@ -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 diff --git a/common/culture/cultures/NEOW_italian.txt b/common/culture/cultures/NEOW_italian.txt index 971f55e9..9037303f 100644 --- a/common/culture/cultures/NEOW_italian.txt +++ b/common/culture/cultures/NEOW_italian.txt @@ -491,6 +491,7 @@ maltese = { #Maltin tradition_stalwart_defenders tradition_esteemed_hospitality tradition_xenophilic + tradition_farmer_republics } name_list = name_list_sicilian #PLACEHOLDER @@ -525,6 +526,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_north_germanic.txt b/common/culture/cultures/NEOW_north_germanic.txt index 011cd70a..643617c7 100644 --- a/common/culture/cultures/NEOW_north_germanic.txt +++ b/common/culture/cultures/NEOW_north_germanic.txt @@ -116,6 +116,7 @@ faerosk = { head_determination = head_determination_domain traditions = { tradition_things + tradition_farmer_republics tradition_fishermen tradition_hereditary_hierarchy tradition_seafaring @@ -249,7 +250,7 @@ icelander = { head_determination = head_determination_domain traditions = { tradition_things - tradition_republican_legacy + tradition_farmer_republics tradition_seafaring tradition_fishermen } diff --git a/common/culture/cultures/NEOW_rhaeto_helvetic.txt b/common/culture/cultures/NEOW_rhaeto_helvetic.txt index 7ad060b9..87df495f 100644 --- a/common/culture/cultures/NEOW_rhaeto_helvetic.txt +++ b/common/culture/cultures/NEOW_rhaeto_helvetic.txt @@ -90,7 +90,7 @@ romansch = { 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 @@ -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_scottish.txt b/common/culture/cultures/NEOW_scottish.txt index 3844bf19..a9adda94 100644 --- a/common/culture/cultures/NEOW_scottish.txt +++ b/common/culture/cultures/NEOW_scottish.txt @@ -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_west_germanic.txt b/common/culture/cultures/NEOW_west_germanic.txt index cc64cc38..eee77bc3 100644 --- a/common/culture/cultures/NEOW_west_germanic.txt +++ b/common/culture/cultures/NEOW_west_germanic.txt @@ -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 } 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/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..3c26706b 100644 --- a/common/customizable_localization/00_government_custom_loc.txt +++ b/common/customizable_localization/00_government_custom_loc.txt @@ -1126,6 +1126,26 @@ 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 = { # Theocracy trigger = { trigger_if = { diff --git a/common/decisions/dlc_decisions/mpo/mpo_decisions.txt b/common/decisions/dlc_decisions/mpo/mpo_decisions.txt index 8bb054c2..7a24c9aa 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 } 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..3713488f 100644 --- a/common/defines/00_defines.txt +++ b/common/defines/00_defines.txt @@ -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.01 # 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/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..e0d0b1b9 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,7 +4172,7 @@ 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 = { @@ -4302,7 +4302,7 @@ 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 = { @@ -4432,7 +4432,7 @@ 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 = { @@ -4564,7 +4564,7 @@ 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 = { @@ -4694,7 +4694,7 @@ 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 = { @@ -4824,7 +4824,7 @@ 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 = { @@ -6954,7 +6954,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 +7037,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,7 +7123,7 @@ 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 = { @@ -7209,7 +7209,7 @@ 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 = { @@ -7297,7 +7297,7 @@ 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 = { @@ -7386,7 +7386,7 @@ 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 = { @@ -7973,7 +7973,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 +8093,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 +8215,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,7 +8338,7 @@ 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 = { @@ -8452,7 +8452,7 @@ 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 = { @@ -8566,7 +8566,7 @@ 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 = { @@ -8683,7 +8683,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 +8820,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,7 +8948,7 @@ 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 = { @@ -9081,7 +9081,7 @@ 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 = { @@ -9214,7 +9214,7 @@ 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 = { @@ -9347,7 +9347,7 @@ 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 = { @@ -9482,7 +9482,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 +9559,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,7 +9636,7 @@ 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 = { @@ -9718,7 +9718,7 @@ 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 = { @@ -9800,7 +9800,7 @@ 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 = { @@ -9882,7 +9882,7 @@ 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 = { diff --git a/common/domiciles/types/NEOW_domicile_types.txt b/common/domiciles/types/NEOW_domicile_types.txt index 0bea98f2..2d413efa 100644 --- a/common/domiciles/types/NEOW_domicile_types.txt +++ b/common/domiciles/types/NEOW_domicile_types.txt @@ -1169,3 +1169,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/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..d87ca27f 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,121 @@ druid_king_female = { # Bandruí-Queen flavourization_rules = { top_liege = no } +} + +baron_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = barony + priority = 7 + governments = { peasantrepublic_government } +} +baron_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = barony + priority = 7 + governments = { peasantrepublic_government } +} +barony_peasantrepublic = { + type = title + tier = barony + priority = 7 + governments = { peasantrepublic_government } +} +count_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = county + priority = 28 + governments = { peasantrepublic_government } +} +count_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = county + priority = 28 + governments = { peasantrepublic_government } +} +county_peasantrepublic = { + type = title + tier = county + priority = 51 + governments = { peasantrepublic_government } +} +duke_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = duchy + priority = 29 + governments = { peasantrepublic_government } +} +duke_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = duchy + priority = 29 + governments = { peasantrepublic_government } +} +duchy_peasantrepublic = { + type = title + tier = duchy + priority = 60 + governments = { peasantrepublic_government } + +} +king_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = kingdom + priority = 75 + governments = { peasantrepublic_government } + +} +king_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = kingdom + priority = 75 + governments = { peasantrepublic_government } + +} +kingdom_peasantrepublic = { + type = title + tier = kingdom + priority = 75 + governments = { peasantrepublic_government } +} + +emperor_peasantrepublic_male = { + type = character + gender = male + special = holder + tier = empire + priority = 102 + governments = { peasantrepublic_government } + +} +emperor_peasantrepublic_female = { + type = character + gender = female + special = holder + tier = empire + priority = 102 + governments = { peasantrepublic_government } + +} +empire_peasantrepublic = { + type = title + tier = empire + priority = 102 + governments = { peasantrepublic_government } } \ No newline at end of file diff --git a/common/game_concepts/neow_game_concepts.txt b/common/game_concepts/neow_game_concepts.txt index bbf1dffc..63b01fe3 100644 --- a/common/game_concepts/neow_game_concepts.txt +++ b/common/game_concepts/neow_game_concepts.txt @@ -24,5 +24,15 @@ 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 } \ No newline at end of file diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index 9f1651bb..c3ecd16c 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 = 1.5 + 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,20 @@ republic_government = { inherit_from_dynastic_government = no } + can_get_government = { + + NOR = { + culture = { + has_cultural_tradition = tradition_farmer_republics + } + faith = { + has_doctrine = tenet_communal_possessions + } + liege = { + has_government = peasantrepublic_government + } + } + } ai = { arrange_marriage = no use_goals = no @@ -175,6 +192,10 @@ clan_government = { } } + character_modifier = { + ai_war_cooldown = 1.5 + 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 +248,9 @@ tribal_government = { character_travel_safety = 10 - ai_war_chance = 0.25 monthly_prestige = 0.2 + ai_war_cooldown = 1.5 + 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 +311,8 @@ wanua_government = { # "Wanua" domain_limit_max = 2 vassal_limit_max = 2 + ai_war_cooldown = 1.5 + ai_war_chance = -0.55 } can_get_government = { @@ -441,6 +465,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 = 1.5 + ai_war_chance = -0.15 } top_liege_character_modifier = { @@ -607,6 +633,83 @@ 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 + legitimacy = 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 + } + + can_get_government = { + OR = { + culture = { + has_cultural_tradition = tradition_farmer_republics + } + faith = { + has_doctrine = tenet_communal_possessions + } + liege = { + has_government = peasantrepublic_government + } + } + } + domicile_type = farmstead + character_modifier = { + levy_size = 1.5 + 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 = 1.5 + 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_is_settled + may_elevate_co_monarch + government_uses_legitimacy + government_uses_domain_limit + government_is_herder + government_has_herd + government_is_barterer + government_is_prepublic + government_locked_to_elective + government_allows_nomad_domicile_titles + } + + mechanic_type = feudal + color = hsv{ 0.30 0.60 0.68 } + 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 +844,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 +912,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 = 1.5 + ai_war_chance = -0.15 } top_liege_character_modifier = { diff --git a/common/laws/00_succession_laws.txt b/common/laws/00_succession_laws.txt index c91c100d..e7e4abea 100644 --- a/common/laws/00_succession_laws.txt +++ b/common/laws/00_succession_laws.txt @@ -40,6 +40,9 @@ } is_confederation_member = no } + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { NOR = { @@ -82,6 +85,7 @@ potential = { NOR = { + government_has_flag = government_is_prepublic government_has_flag = government_is_nomadic government_has_flag = government_is_clan government_has_flag = government_is_administrative @@ -126,6 +130,9 @@ is_confederation_member = yes } } + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { NOR = { @@ -169,6 +176,7 @@ potential = { NOR = { + government_has_flag = government_is_prepublic government_has_flag = government_is_nomadic government_has_flag = government_is_clan government_has_flag = government_is_administrative @@ -190,6 +198,9 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_high_partition_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { NOR = { @@ -234,6 +245,7 @@ potential = { NOR = { + government_has_flag = government_is_prepublic government_has_flag = government_is_nomadic government_has_flag = government_is_clan government_has_flag = government_is_administrative @@ -264,6 +276,9 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_single_heir_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } can_pass = { can_change_succession_law_trigger = yes @@ -323,6 +338,7 @@ potential = { NOR = { + government_has_flag = government_is_prepublic government_has_flag = government_is_nomadic government_has_flag = government_is_mandala } @@ -344,6 +360,9 @@ } can_have = { government_has_flag = government_is_nomadic + NOT = { + government_has_flag = government_is_prepublic + } } can_pass = { government_has_flag = government_is_nomadic @@ -395,6 +414,9 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_single_heir_youngest_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } can_pass = { can_change_succession_law_trigger = yes @@ -475,6 +497,9 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_single_heir_dynasty_house_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } can_pass = { can_change_single_heir_dynasty_house_succession_law_trigger = yes @@ -537,6 +562,7 @@ potential = { NOR = { + government_has_flag = government_is_prepublic government_has_flag = government_is_administrative government_has_flag = government_is_nomadic government_has_flag = government_is_mandala @@ -554,6 +580,9 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_acclamation_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { has_ep3_dlc_trigger = yes @@ -586,6 +615,7 @@ government_allows = administrative is_independent_ruler = yes NOR = { + government_has_flag = government_is_prepublic government_has_flag = government_is_celestial government_has_flag = government_is_japan_administrative government_has_flag = government_is_meritocratic @@ -609,6 +639,9 @@ can_have = { NOT = { government_has_flag = government_is_nomadic } can_have_appointment_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } can_pass = { can_change_appointment_succession_law_trigger = yes @@ -673,6 +706,9 @@ } can_have = { government_has_flag = government_is_landless_adventurer + NOT = { + government_has_flag = government_is_prepublic + } } can_pass = { government_has_flag = government_is_landless_adventurer @@ -704,9 +740,15 @@ bishop_theocratic_succession_law = { can_keep = { can_have_bishop_theocratic_succession_law_trigger = yes # same as can_have + NOT = { + government_has_flag = government_is_prepublic + } } can_have = { can_have_bishop_theocratic_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { always = yes @@ -725,9 +767,15 @@ holy_order_succession_law = { can_keep = { can_have_holy_order_succession_law_trigger = yes # same as can_have + NOT = { + government_has_flag = government_is_prepublic + } } can_have = { can_have_holy_order_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { government_has_flag = government_is_holy_order @@ -766,9 +814,15 @@ city_succession_law = { can_keep = { can_have_city_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } can_have = { can_have_city_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { government_has_flag = government_is_republic @@ -801,6 +855,9 @@ house ?= { has_house_unity_stage = antagonistic } + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { @@ -858,6 +915,9 @@ house ?= { has_house_unity_stage = competitive } + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { government_has_flag = government_is_clan @@ -917,6 +977,9 @@ house ?= { has_house_unity_stage = impassive } + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { government_has_flag = government_is_clan @@ -975,6 +1038,9 @@ house ?= { has_house_unity_stage = friendly } + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { government_has_flag = government_is_clan @@ -1027,6 +1093,9 @@ house ?= { has_house_unity_stage = harmonious } + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { government_has_flag = government_is_clan @@ -1065,9 +1134,15 @@ herder_succession_law = { can_keep = { can_have_herder_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } can_have = { can_have_herder_succession_law_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } } should_start_with = { government_has_flag = government_is_herder @@ -1105,6 +1180,9 @@ can_have = { government_allows = administrative is_independent_ruler = no + NOT = { + government_has_flag = government_is_prepublic + } } 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..462959fd 100644 --- a/common/laws/01_title_succession_laws.txt +++ b/common/laws/01_title_succession_laws.txt @@ -5,6 +5,7 @@ government_has_flag = government_is_feudal highest_held_title_tier >= tier_county NOR = { #Cultures have their special flavor. + government_has_flag = government_is_prepublic 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 +38,9 @@ government_has_flag = government_is_feudal government_has_flag = government_is_clan } + NOT = { + government_has_flag = government_is_prepublic + } highest_held_title_tier = tier_empire } can_pass = { @@ -67,16 +71,10 @@ # 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 @@ -93,6 +91,9 @@ pass_cost = { prestige = change_title_succession_law_prestige_cost } + potential = { + government_has_flag = government_is_prepublic + } } # Thing @@ -103,6 +104,9 @@ government_has_flag = government_is_clan government_has_flag = government_is_tribal } + NOT = { + government_has_flag = government_is_prepublic + } highest_held_title_tier >= tier_duchy } can_pass = { @@ -134,6 +138,9 @@ government_has_flag = government_is_clan government_has_flag = government_is_tribal } + NOT = { + government_has_flag = government_is_prepublic + } highest_held_title_tier >= tier_duchy } can_pass = { @@ -171,6 +178,9 @@ government_has_flag = government_is_clan government_has_flag = government_is_tribal } + NOT = { + government_has_flag = government_is_prepublic + } highest_held_title_tier >= tier_kingdom } can_pass = { @@ -292,6 +302,9 @@ celestial_ministry_appointment_succession_law = { can_have = { government_has_flag = government_is_celestial + NOT = { + government_has_flag = government_is_prepublic + } } can_pass = { } @@ -330,6 +343,9 @@ celestial_grand_marshal_appointment_succession_law = { can_have = { government_has_flag = government_is_celestial + NOT = { + government_has_flag = government_is_prepublic + } } can_pass = { } diff --git a/common/legitimacy/00_legitimacy.txt b/common/legitimacy/00_legitimacy.txt new file mode 100644 index 00000000..0ba484b1 --- /dev/null +++ b/common/legitimacy/00_legitimacy.txt @@ -0,0 +1,915 @@ +###################### +# Legitimacy +###################### + +count_legitimacy = { + is_valid = { + highest_held_title_tier = tier_county + government_has_flag = government_is_prepublic + NOR = { + government_allows = administrative + government_has_flag = government_is_nomadic + government_has_flag = government_is_mandala + } + } + + ai_expected_level = default_ai_legitimacy_expectation + + below_expectations_opinion = default_legitimacy_opinion_penalty + + max = legitimacy_max + + # Scales based on Tier and Era + ## A Tribal era Count requires 4x less than a Late Medieval era Emperor + level = { + threshold = legitimacy_level_1 + modifier = { + short_reign_duration_mult = 0.25 + monthly_dynasty_prestige = -0.1 + county_opinion_add = -10 + } + flag = reduced_marriage_acceptance + flag = increased_claim_cb_cost + flag = reduced_alliance_acceptance + flag = reduced_vassalization_acceptance + flag = reduced_tributarization_acceptance + flag = increased_factions + } + # Gap of at least 50 + level = { + threshold = legitimacy_level_2 # 50-200 + modifier = { + short_reign_duration_mult = -0.1 + } + } + # Gap of at least 100 + level = { + threshold = legitimacy_level_3 # 150-600 + modifier = { + short_reign_duration_mult = -0.25 + } + flag = reduced_claim_cb_cost + flag = increased_marriage_acceptance + } + # Gap of at least 200 + level = { + threshold = legitimacy_level_4 # 350-1400 + modifier = { + short_reign_duration_mult = -0.5 + county_opinion_add = 10 + } + flag = increased_marriage_acceptance + flag = increased_alliance_acceptance + flag = very_reduced_claim_cb_cost + flag = reduced_factions + flag = reduced_swing_scales_cost + flag = reduced_title_creation_cost + } + # Gap of at least 350 + level = { + threshold = legitimacy_level_5 # 700-2800 + modifier = { + short_reign_duration_mult = -0.75 + monthly_dynasty_prestige = 0.25 + county_opinion_add = 20 + } + flag = very_increased_marriage_acceptance + flag = very_increased_alliance_acceptance + flag = extra_reduced_claim_cb_cost + flag = very_reduced_factions + flag = very_reduced_swing_scales_cost + flag = very_reduced_title_creation_cost + } + # Gap of at least 500 + level = { + threshold = legitimacy_level_6 # 1200-4800 + modifier = { + short_reign_duration_mult = -1 + monthly_dynasty_prestige = 0.5 + county_opinion_add = 30 + } + flag = extra_increased_marriage_acceptance + flag = extra_increased_alliance_acceptance + flag = extra_reduced_claim_cb_cost + flag = extra_reduced_factions + flag = extra_swing_scales_cost + flag = extra_reduced_title_creation_cost + } +} + +duke_legitimacy = { + is_valid = { + highest_held_title_tier = tier_duchy + NOT = { + government_has_flag = government_is_prepublic + } + NOR = { + government_allows = administrative + government_has_flag = government_is_nomadic + government_has_flag = government_is_mandala + } + } + + ai_expected_level = default_ai_legitimacy_expectation + + below_expectations_opinion = default_legitimacy_opinion_penalty + + max = legitimacy_max + + # Scales based on Tier and Era + ## A Tribal era Count requires 4x less than a Late Medieval era Emperor + level = { + threshold = legitimacy_level_1 + modifier = { + short_reign_duration_mult = 0.5 + monthly_dynasty_prestige = -0.1 + county_opinion_add = -10 + } + flag = very_reduced_marriage_acceptance + flag = very_increased_claim_cb_cost + flag = very_reduced_alliance_acceptance + flag = very_reduced_vassalization_acceptance + flag = slightly_reduced_tributarization_acceptance + flag = very_increased_factions + flag = very_increased_swing_scales_cost + } + # Gap of at least 50 + level = { + threshold = legitimacy_level_2 # 50-200 + modifier = { + short_reign_duration_mult = 0.1 + county_opinion_add = -5 + } + flag = reduced_marriage_acceptance + flag = increased_claim_cb_cost + flag = reduced_alliance_acceptance + flag = reduced_vassalization_acceptance + flag = reduced_tributarization_acceptance + flag = increased_factions + flag = increased_swing_scales_cost + } + # Gap of at least 100 + level = { + threshold = legitimacy_level_3 # 150-600 + modifier = { + short_reign_duration_mult = -0.15 + } + } + # Gap of at least 200 + level = { + threshold = legitimacy_level_4 # 350-1400 + modifier = { + short_reign_duration_mult = -0.35 + } + flag = increased_marriage_acceptance + flag = reduced_claim_cb_cost + flag = increased_alliance_acceptance + flag = increased_vassalization_acceptance + flag = increased_tributarization_acceptance + flag = reduced_factions + flag = reduced_swing_scales_cost + flag = reduced_title_creation_cost + } + # Gap of at least 350 + level = { + threshold = legitimacy_level_5 # 700-2800 + modifier = { + short_reign_duration_mult = -0.65 + county_opinion_add = 10 + } + flag = very_increased_marriage_acceptance + flag = very_reduced_claim_cb_cost + flag = very_increased_alliance_acceptance + flag = very_increased_vassalization_acceptance + flag = very_increased_tributarization_acceptance + flag = very_reduced_factions + flag = very_reduced_swing_scales_cost + flag = very_reduced_title_creation_cost + } + # Gap of at least 500 + level = { + threshold = legitimacy_level_6 # 1200-4800 + modifier = { + short_reign_duration_mult = -1 + monthly_dynasty_prestige = 0.25 + county_opinion_add = 20 + } + flag = extra_increased_marriage_acceptance + flag = extra_reduced_claim_cb_cost + flag = extra_increased_alliance_acceptance + flag = extra_increased_vassalization_acceptance + flag = extra_increased_tributarization_acceptance + flag = extra_reduced_factions + flag = extra_reduced_swing_scales_cost + flag = extra_reduced_title_creation_cost + } +} + +king_legitimacy = { + is_valid = { + highest_held_title_tier = tier_kingdom + NOT = { + government_has_flag = government_is_prepublic + } + OR = { + NOT = { government_allows = administrative } + top_liege = this + } + NOR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_mandala + } + } + + ai_expected_level = default_ai_legitimacy_expectation + + below_expectations_opinion = default_legitimacy_opinion_penalty + + max = legitimacy_max + + # Scales based on Tier and Era + ## A Tribal era Count requires 4x less than a Late Medieval era Emperor + level = { + threshold = legitimacy_level_1 + modifier = { + short_reign_duration_mult = 0.75 + monthly_dynasty_prestige = -0.2 + county_opinion_add = -20 + } + flag = very_reduced_marriage_acceptance + flag = very_increased_claim_cb_cost + flag = very_reduced_alliance_acceptance + flag = very_reduced_vassalization_acceptance + flag = reduced_tributarization_acceptance + flag = very_increased_factions + flag = very_increased_swing_scales_cost + + } + # Gap of at least 50 + level = { + threshold = legitimacy_level_2 # 50-200 + modifier = { + short_reign_duration_mult = 0.5 + monthly_dynasty_prestige = -0.1 + county_opinion_add = -10 + } + flag = reduced_marriage_acceptance + flag = increased_claim_cb_cost + flag = reduced_alliance_acceptance + flag = reduced_vassalization_acceptance + flag = slightly_reduced_tributarization_acceptance + flag = increased_factions + flag = increased_swing_scales_cost + } + # Gap of at least 100 + level = { + threshold = legitimacy_level_3 # 150-600 + modifier = { + short_reign_duration_mult = 0.25 + } + flag = reduced_marriage_acceptance + flag = reduced_vassalization_acceptance + flag = increased_claim_cb_cost + } + # Gap of at least 200 + level = { + threshold = legitimacy_level_4 # 350-1400 + modifier = { + short_reign_duration_mult = -0.10 + } + } + # Gap of at least 350 + level = { + threshold = legitimacy_level_5 # 700-2800 + modifier = { + short_reign_duration_mult = -0.25 + } + flag = increased_marriage_acceptance + flag = reduced_claim_cb_cost + flag = increased_alliance_acceptance + flag = increased_vassalization_acceptance + flag = increased_tributarization_acceptance + flag = reduced_factions + flag = reduced_swing_scales_cost + flag = reduced_title_creation_cost + } + # Gap of at least 500 + level = { + threshold = legitimacy_level_6 # 1200-4800 + modifier = { + short_reign_duration_mult = -0.5 + county_opinion_add = 10 + monthly_dynasty_prestige = 0.25 + } + flag = very_increased_marriage_acceptance + flag = very_reduced_claim_cb_cost + flag = very_increased_alliance_acceptance + flag = very_increased_vassalization_acceptance + flag = very_increased_tributarization_acceptance + flag = very_reduced_factions + flag = very_reduced_swing_scales_cost + flag = very_reduced_title_creation_cost + } +} + +emperor_legitimacy = { + is_valid = { + highest_held_title_tier = tier_empire + NOT = { + government_has_flag = government_is_prepublic + } + NOR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_mandala + } + } + + ai_expected_level = default_ai_legitimacy_expectation + + below_expectations_opinion = default_legitimacy_opinion_penalty + + max = legitimacy_max + + # Scales based on Tier and Era + ## A Tribal era Count requires 4x less than a Late Medieval era Emperor + level = { + threshold = legitimacy_level_1 + modifier = { + short_reign_duration_mult = 1 + monthly_dynasty_prestige = -0.3 + county_opinion_add = -30 + } + flag = massively_reduced_marriage_acceptance + flag = massively_increased_claim_cb_cost + flag = massively_reduced_vassalization_acceptance + flag = massively_reduced_tributarization_acceptance + flag = massively_reduced_alliance_acceptance + flag = massively_increased_factions + flag = massively_increased_swing_scales_cost + } + # Gap of at least 50 + level = { + threshold = legitimacy_level_2 # 50-200 + modifier = { + short_reign_duration_mult = 0.65 + monthly_dynasty_prestige = -0.2 + county_opinion_add = -20 + } + flag = very_reduced_marriage_acceptance + flag = very_increased_claim_cb_cost + flag = very_reduced_alliance_acceptance + flag = very_reduced_vassalization_acceptance + flag = very_reduced_tributarization_acceptance + flag = very_increased_factions + flag = very_increased_swing_scales_cost + } + # Gap of at least 100 + level = { + threshold = legitimacy_level_3 # 150-600 + modifier = { + short_reign_duration_mult = 0.35 + monthly_dynasty_prestige = -0.1 + county_opinion_add = -10 + } + flag = reduced_marriage_acceptance + flag = reduced_alliance_acceptance + flag = increased_claim_cb_cost + flag = reduced_vassalization_acceptance + flag = reduced_tributarization_acceptance + flag = increased_factions + flag = increased_swing_scales_cost + } + # Gap of at least 200 + level = { + threshold = legitimacy_level_4 # 350-1400 + modifier = { + short_reign_duration_mult = 0.15 + } + flag = reduced_marriage_acceptance + flag = reduced_vassalization_acceptance + flag = slightly_reduced_tributarization_acceptance + flag = increased_claim_cb_cost + } + # Gap of at least 350 + level = { + threshold = legitimacy_level_5 # 700-2800 + modifier = { + short_reign_duration_mult = -0.1 + } + } + # Gap of at least 500 + level = { + threshold = legitimacy_level_6 # 1200-4800 + modifier = { + short_reign_duration_mult = -0.25 + county_opinion_add = 10 + } + flag = increased_marriage_acceptance + flag = reduced_claim_cb_cost + flag = increased_alliance_acceptance + flag = increased_vassalization_acceptance + flag = increased_tributarization_acceptance + flag = reduced_factions + flag = reduced_title_creation_cost + flag = reduced_swing_scales_cost + } +} + +hegemon_legitimacy = { + is_valid = { + highest_held_title_tier = tier_hegemony + NOT = { + government_has_flag = government_is_prepublic + } + NOT = { government_has_flag = government_is_mandala } + NAND = { + has_tgp_dlc_trigger = yes + has_title = title:h_china + } + NOR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_mandala + } + } + + ai_expected_level = default_ai_legitimacy_expectation + + below_expectations_opinion = default_legitimacy_opinion_penalty + + max = legitimacy_max + + # Scales based on Tier and Era + ## A Tribal era Count requires 4x less than a Late Medieval era Emperor + level = { + threshold = legitimacy_level_1 + modifier = { + short_reign_duration_mult = 1.25 + monthly_dynasty_prestige = -0.4 + county_opinion_add = -40 + } + flag = massively_reduced_marriage_acceptance + flag = massively_increased_claim_cb_cost + flag = massively_reduced_vassalization_acceptance + flag = massively_reduced_tributarization_acceptance + flag = massively_reduced_alliance_acceptance + flag = massively_increased_factions + flag = massively_increased_swing_scales_cost + } + # Gap of at least 50 + level = { + threshold = legitimacy_level_2 # 50-200 + modifier = { + short_reign_duration_mult = 0.75 + monthly_dynasty_prestige = -0.3 + county_opinion_add = -30 + } + flag = very_reduced_marriage_acceptance + flag = very_increased_claim_cb_cost + flag = very_reduced_alliance_acceptance + flag = very_reduced_vassalization_acceptance + flag = very_reduced_tributarization_acceptance + flag = very_increased_factions + flag = very_increased_swing_scales_cost + } + # Gap of at least 100 + level = { + threshold = legitimacy_level_3 # 150-600 + modifier = { + short_reign_duration_mult = 0.5 + monthly_dynasty_prestige = -0.2 + county_opinion_add = -20 + } + flag = reduced_marriage_acceptance + flag = reduced_alliance_acceptance + flag = increased_claim_cb_cost + flag = reduced_vassalization_acceptance + flag = reduced_tributarization_acceptance + flag = increased_factions + flag = increased_swing_scales_cost + } + # Gap of at least 200 + level = { + threshold = legitimacy_level_4 # 350-1400 + modifier = { + short_reign_duration_mult = 0.2 + } + flag = reduced_marriage_acceptance + flag = reduced_vassalization_acceptance + flag = slightly_reduced_tributarization_acceptance + flag = increased_claim_cb_cost + } + # Gap of at least 350 + level = { + threshold = legitimacy_level_5 # 700-2800 + } + # Gap of at least 500 + level = { + threshold = legitimacy_level_6 # 1200-4800 + modifier = { + short_reign_duration_mult = -0.25 + county_opinion_add = 10 + } + flag = increased_marriage_acceptance + flag = reduced_claim_cb_cost + flag = increased_alliance_acceptance + flag = increased_vassalization_acceptance + flag = increased_tributarization_acceptance + flag = reduced_factions + flag = reduced_title_creation_cost + flag = reduced_swing_scales_cost + } +} + +mandate_legitimacy = { + is_valid = { + highest_held_title_tier = tier_hegemony + NOT = { + government_has_flag = government_is_prepublic + } + has_tgp_dlc_trigger = yes + has_title = title:h_china + } + + # must be equal to the dynastic_cycle_legitimacy_expectation script value and not dependent on vassal scopes + ai_expected_level = dynastic_cycle_legitimacy_expectation + + below_expectations_opinion = default_legitimacy_opinion_penalty + + max = mandate_legitimacy_max + + # Scales based on Tier and Era + ## A Tribal era Count requires 4x less than a Late Medieval era Emperor + level = { + threshold = legitimacy_level_1 + on_level_entered = { + situation:dynastic_cycle ?= { + if = { + limit = { + situation_top_has_catalyst = catalyst_hegemon_lost_mandate_of_heaven + months_from_game_start > 0 # We check this to avoid potentially triggering this immediately on game start + } + trigger_situation_catalyst = catalyst_hegemon_lost_mandate_of_heaven + } + } + } + on_level_entered_desc = { + desc = legitimacy_on_entered_lost_mandate + } + modifier = { + short_reign_duration_mult = 1.25 + monthly_dynasty_prestige = -0.4 + county_opinion_add = -40 + } + flag = massively_reduced_marriage_acceptance + flag = massively_increased_claim_cb_cost + flag = massively_reduced_vassalization_acceptance + flag = massively_reduced_tributarization_acceptance + flag = massively_reduced_alliance_acceptance + flag = massively_increased_factions + flag = massively_increased_swing_scales_cost + } + # Gap of at least 50 + level = { + threshold = legitimacy_level_2 # 50-200 + modifier = { + short_reign_duration_mult = 0.75 + monthly_dynasty_prestige = -0.3 + county_opinion_add = -30 + } + flag = very_reduced_marriage_acceptance + flag = very_increased_claim_cb_cost + flag = very_reduced_alliance_acceptance + flag = very_reduced_vassalization_acceptance + flag = very_reduced_tributarization_acceptance + flag = very_increased_factions + flag = very_increased_swing_scales_cost + } + # Gap of at least 100 + level = { + threshold = legitimacy_level_3 # 150-600 + modifier = { + short_reign_duration_mult = 0.5 + monthly_dynasty_prestige = -0.2 + county_opinion_add = -20 + } + flag = reduced_marriage_acceptance + flag = reduced_alliance_acceptance + flag = increased_claim_cb_cost + flag = reduced_vassalization_acceptance + flag = reduced_tributarization_acceptance + flag = increased_factions + flag = increased_swing_scales_cost + } + # Gap of at least 200 + level = { + threshold = legitimacy_level_4 # 350-1400 + modifier = { + short_reign_duration_mult = 0.2 + } + flag = reduced_marriage_acceptance + flag = reduced_vassalization_acceptance + flag = slightly_reduced_tributarization_acceptance + flag = increased_claim_cb_cost + } + # Gap of at least 350 + level = { + threshold = legitimacy_level_5 # 700-2800 + } + # Gap of at least 500 + level = { + threshold = legitimacy_level_6 # 1200-4800 + modifier = { + short_reign_duration_mult = -0.25 + county_opinion_add = 10 + } + flag = reduced_claim_cb_cost + flag = increased_marriage_acceptance + flag = increased_tributarization_acceptance + flag = reduced_factions + flag = reduced_title_creation_cost + flag = reduced_swing_scales_cost + } + level = { + threshold = legitimacy_level_7 # 1650-6600 + modifier = { + tributary_opinion = 20 + county_opinion_add = 20 + monthly_dynasty_prestige = 0.15 + } + flag = very_reduced_claim_cb_cost + flag = very_increased_marriage_acceptance + flag = extra_increased_tributarization_acceptance + flag = reduced_factions + flag = reduced_title_creation_cost + flag = reduced_swing_scales_cost + } + level = { + threshold = legitimacy_level_8 + modifier = { + tributary_opinion = 30 + county_opinion_add = 25 + monthly_dynasty_prestige = 0.25 + } + flag = very_reduced_claim_cb_cost + flag = very_increased_marriage_acceptance + flag = extra_increased_tributarization_acceptance + flag = reduced_factions + flag = reduced_title_creation_cost + flag = reduced_swing_scales_cost + } +} + +nomadic_legitimacy = { + is_valid = { + has_mpo_dlc_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } + government_has_flag = government_is_nomadic + } + + ai_expected_level = default_ai_legitimacy_expectation + + below_expectations_opinion = default_legitimacy_opinion_penalty + + max = legitimacy_max + + # Scales based on Tier and Era + ## A Tribal era Count requires 4x less than a Late Medieval era Emperor + level = { + threshold = legitimacy_level_1 + modifier = { + short_reign_duration_mult = 0.75 + county_opinion_add = -10 + herd_gain_mult = -0.05 + dread_baseline_add = -30 + } + flag = very_reduced_marriage_acceptance + flag = very_reduced_alliance_acceptance + flag = very_reduced_vassalization_acceptance + flag = very_reduced_tributarization_acceptance + flag = very_reduced_confederation_acceptance + flag = reduced_obedience_acceptance + + } + # Gap of at least 50 + level = { + threshold = legitimacy_level_2 # 50-200 + modifier = { + short_reign_duration_mult = 0.5 + county_opinion_add = -5 + dread_baseline_add = -15 + } + flag = reduced_marriage_acceptance + flag = reduced_alliance_acceptance + flag = reduced_vassalization_acceptance + flag = reduced_tributarization_acceptance + flag = reduced_confederation_acceptance + flag = reduced_obedience_acceptance + } + # Gap of at least 100 + level = { + threshold = legitimacy_level_3 # 150-600 + modifier = { + short_reign_duration_mult = 0.25 + dread_baseline_add = -5 + } + flag = reduced_marriage_acceptance + flag = reduced_vassalization_acceptance + flag = reduced_obedience_acceptance + } + # Gap of at least 200 + level = { + threshold = legitimacy_level_4 # 350-1400 + modifier = { + tributary_opinion = 5 + herd_gain_mult = 0.05 + } + flag = increased_obedience_acceptance + } + # Gap of at least 350 + level = { + threshold = legitimacy_level_5 # 700-2800 + modifier = { + tributary_opinion = 10 + herd_gain_mult = 0.15 + } + flag = increased_marriage_acceptance + flag = increased_alliance_acceptance + flag = increased_vassalization_acceptance + flag = increased_tributarization_acceptance + flag = increased_confederation_acceptance + flag = reduced_factions + flag = reduced_swing_scales_cost + flag = increased_obedience_acceptance + } + # Gap of at least 500 + level = { + threshold = legitimacy_level_6 # 1200-4800 + modifier = { + tributary_opinion = 15 + county_opinion_add = 10 + monthly_dynasty_prestige = 0.25 + herd_gain_mult = 0.30 + } + flag = very_increased_marriage_acceptance + flag = very_increased_alliance_acceptance + flag = very_increased_vassalization_acceptance + flag = very_increased_tributarization_acceptance + flag = very_increased_confederation_acceptance + flag = very_reduced_factions + flag = very_reduced_swing_scales_cost + flag = increased_obedience_acceptance + } +} + +mandala_legitimacy = { + is_valid = { + has_tgp_dlc_trigger = yes + NOT = { + government_has_flag = government_is_prepublic + } + government_has_flag = government_is_mandala + } + + ai_expected_level = default_ai_mandala_legitimacy_expectation + + below_expectations_opinion = default_legitimacy_opinion_penalty + + max = mandala_legitimacy_max + + # Scales based on Tier and Era + ## A Tribal era Count requires 4x less than a Late Medieval era Emperor + level = { + threshold = mandala_legitimacy_level_1 + modifier = { + short_reign_duration_mult = 0.75 + county_opinion_add = -10 + monthly_piety_gain_mult = -0.05 + } + flag = massively_increased_claim_cb_cost + flag = massively_reduced_marriage_acceptance + flag = massively_reduced_alliance_acceptance + flag = massively_reduced_vassalization_acceptance + flag = slightly_reduced_tributarization_acceptance + flag = very_increased_factions + + } + # Gap of at least 200 + level = { + threshold = mandala_legitimacy_level_2 # 200-800 + modifier = { + short_reign_duration_mult = 0.5 + county_opinion_add = -5 + } + flag = very_increased_claim_cb_cost + flag = very_reduced_marriage_acceptance + flag = very_reduced_alliance_acceptance + flag = very_reduced_vassalization_acceptance + flag = slightly_reduced_tributarization_acceptance + flag = increased_factions + } + # Gap of at least 220 + level = { + threshold = mandala_legitimacy_level_3 # 420-1680 + modifier = { + short_reign_duration_mult = 0.25 + } + flag = increased_claim_cb_cost + flag = reduced_marriage_acceptance + flag = reduced_alliance_acceptance + flag = reduced_vassalization_acceptance + flag = increased_factions + } + # Gap of at least 220 + level = { + threshold = mandala_legitimacy_level_4 # 640-2560 + modifier = { + tributary_opinion = 5 + monthly_piety_gain_mult = 0.05 + } + flag = reduced_vassalization_acceptance + } + # Gap of at least 270 + level = { + threshold = mandala_legitimacy_level_5 # 910-3640 + modifier = { + tributary_opinion = 10 + monthly_piety_gain_mult = 0.15 + } + flag = reduced_claim_cb_cost + flag = increased_marriage_acceptance + flag = increased_alliance_acceptance + flag = increased_tributarization_acceptance + flag = reduced_factions + flag = reduced_swing_scales_cost + } + # Gap of at least 330 + level = { + threshold = mandala_legitimacy_level_6 # 1240-4960 + modifier = { + tributary_opinion = 15 + county_opinion_add = 10 + monthly_piety_gain_mult = 0.2 + monthly_dynasty_prestige = 0.15 + } + flag = reduced_claim_cb_cost + flag = increased_marriage_acceptance + flag = increased_alliance_acceptance + flag = very_increased_tributarization_acceptance + flag = reduced_factions + flag = reduced_swing_scales_cost + } + # Gap of at least 550 + level = { + threshold = mandala_legitimacy_level_7 # 1650-6600 + modifier = { + tributary_opinion = 20 + county_opinion_add = 20 + monthly_piety_gain_mult = 0.3 + monthly_dynasty_prestige = 0.15 + } + flag = very_reduced_claim_cb_cost + flag = very_increased_marriage_acceptance + flag = very_increased_alliance_acceptance + flag = extra_increased_tributarization_acceptance + flag = very_reduced_factions + flag = very_reduced_swing_scales_cost + } + # Gap of at least 550 + level = { + threshold = mandala_legitimacy_level_8 # 2200-8800 + modifier = { + tributary_opinion = 30 + county_opinion_add = 25 + monthly_piety_gain_mult = 0.35 + monthly_dynasty_prestige = 0.25 + faith_conversion_piety_cost_mult = -0.15 + } + flag = very_reduced_claim_cb_cost + flag = very_increased_marriage_acceptance + flag = very_increased_alliance_acceptance + flag = increased_vassalization_acceptance + flag = extra_increased_tributarization_acceptance + flag = very_reduced_factions + flag = very_reduced_swing_scales_cost + } + # Gap of at least 700 + level = { + threshold = mandala_legitimacy_level_9 # 3000-12000 + modifier = { + tributary_opinion = 35 + county_opinion_add = 35 + monthly_piety_gain_mult = 0.4 + monthly_dynasty_prestige = 0.3 + faith_conversion_piety_cost_mult = -0.3 + } + flag = extra_reduced_claim_cb_cost + flag = extra_increased_marriage_acceptance + flag = extra_increased_alliance_acceptance + flag = very_increased_vassalization_acceptance + flag = extra_increased_tributarization_acceptance + flag = extra_reduced_factions + flag = extra_reduced_swing_scales_cost + } +} 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 = { +