Bugs fixing

This commit is contained in:
Heidesommer 2026-05-24 05:01:46 -04:00
parent cb926c39aa
commit ebc206bb1c
117 changed files with 59950 additions and 11056 deletions

View file

@ -0,0 +1,278 @@
##################################################
#
# Royal Court Court Grandeur Level & Amenity Decisions List
#
# COURT GRANDEUR LEVELS
#
# AMENITIES
# Order Mass Eviction - Pay a little prestige to boot out all the guests from your palace.
# Exoticise a Grand Hall - Arrange for a fancy new room with decor inspired by a culture you adore.
#
##################################################
#############################################
# Order Mass Eviction #
# by Ewan Cowhig Croft #
#############################################
# Pay a little prestige to boot out all the guests from your palace.
### Order Mass Eviction ###
order_mass_eviction_decision = {
picture = {
reference = "gfx/interface/illustrations/decisions/decision_realm.dds"
}
ai_check_interval = 0
sort_order = 79
desc = order_mass_eviction_decision_desc
selection_tooltip = order_mass_eviction_decision_tooltip
is_shown = {
# Standard filter checks.
is_playable_character = yes
has_royal_court = yes
has_dlc_feature = royal_court
# Has a suitable lack of rooms.
amenity_level = {
target = court_lodging_standards
value <= medium_amenity_level
}
}
is_valid = {
# Restate the amenity level requirement so it's visible.
amenity_level = {
target = court_lodging_standards
value <= medium_amenity_level
}
# At least one guest if you have more than the minimum amenities.
trigger_if = {
limit = {
amenity_level = {
target = court_lodging_standards
value > low_amenity_level
}
}
custom_description = {
text = AT_LEAST_ONE_GUEST_TRIGGER
any_pool_guest = { }
}
}
# At least one guest or evictable courtier if you have low amenities.
trigger_else = {
OR = {
custom_description = {
text = AT_LEAST_ONE_GUEST_TRIGGER
any_pool_guest = { }
}
custom_description = {
text = AT_LEAST_ONE_UNIMPORTANT_COURTIER_TRIGGER
any_courtier = {
order_mass_eviction_decision_evictable_courtier_trigger = yes
count >= 1
}
}
}
}
}
is_valid_showing_failures_only = {
is_alive = yes
not = { exists = involved_activity }
is_imprisoned = no
has_contagious_deadly_disease_trigger = no
}
effect = {
show_as_tooltip = { order_mass_eviction_decision_guests_only_effect = yes }
if = {
limit = {
amenity_level = {
target = court_lodging_standards
value > low_amenity_level
}
}
custom_tooltip = order_mass_eviction_decision.tt.courtier_option
}
trigger_event = ep1_decision.0101
}
cost = { prestige = order_mass_eviction_decision_cost_value }
cooldown = { years = 20 }
ai_potential = {
# The AI can use the regular system; this decision is just for players.
always = no
}
ai_will_do = {
base = 0
}
}
#############################################
# Exoticise a Grand Hall #
# by Ewan Cowhig Croft #
#############################################
# Arrange for a major room to be remodelled with decor inspired by a more grandiose culture.
### Exoticize a Grand Hall ###
exoticise_a_grand_hall_decision = {
picture = {
trigger = {
NOR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_theocracy
government_has_flag = government_is_nomadic
top_liege ?= { government_has_flag = government_is_tribal }
top_liege ?= { government_has_flag = government_is_theocracy }
}
OR = {
culture = { has_cultural_pillar = heritage_byzantine }
top_liege ?= {
OR = {
culture = { has_cultural_pillar = heritage_byzantine }
capital_barony ?= title:b_constantinople
is_roman_emperor_primary_title_trigger = yes
}
}
}
}
reference = "gfx/interface/illustrations/decisions/ep3_cerimonial_decision.dds"
}
picture = {
trigger = {
government_has_flag = government_is_nomadic
}
reference = "gfx/interface/illustrations/event_scenes/mpo_tent_interior_mongol.dds"
}
picture = {
trigger = {
government_has_flag = government_is_celestial
}
reference = "gfx/interface/illustrations/event_scenes/tgp_asia_throne_room.dds"
}
picture = {
reference = "gfx/interface/illustrations/decisions/decision_knight_kneeling.dds"
}
ai_check_interval_by_tier = {
barony = 0
county = 0
duchy = 0
kingdom = 120
empire = 120
hegemony = 120
}
sort_order = 80
desc = exoticise_a_grand_hall_decision_desc
selection_tooltip = exoticise_a_grand_hall_decision_tooltip
is_shown = {
# Standard filter checks.
is_playable_character = yes
has_royal_court = yes
has_dlc_feature = royal_court
# Has suitably amazing rooms.
amenity_level = {
target = court_lodging_standards
value >= very_high_amenity_level
}
# Grandeur requirements.
OR = {
# AI need to border a player or an empire.
AND = {
is_ai = yes
OR = {
any_player = {
has_royal_court = yes
any_neighboring_and_across_water_realm_same_rank_owner = { this = root }
any_neighboring_and_across_water_top_liege_realm_owner = { this = root }
}
any_neighboring_and_across_water_top_liege_realm_owner = { this.primary_title.tier = tier_empire }
}
}
# Players handle this in the is_valid block.
is_ai = no
}
}
is_valid = {
# Players just have to have royal courts nicer than theirs.
trigger_if = {
limit = { is_ai = no }
OR = {
custom_description = {
text = exoticise_a_grand_hall_decision.tt.any_valid_empire
any_empire = { exoticise_a_grand_hall_decision_list_builder_guts_trigger = yes }
}
custom_description = {
text = exoticise_a_grand_hall_decision.tt.any_valid_kingdom
any_kingdom = { exoticise_a_grand_hall_decision_list_builder_guts_trigger = yes }
}
}
}
}
is_valid_showing_failures_only = {
is_alive = yes
not = { exists = involved_activity }
is_imprisoned = no
}
effect = {
# Save the current gold count for refund purposes.
## Since this is a large & variable gold cost, we use a firmer refund system to prevent player market manipulation.
set_variable = {
name = exoticise_a_grand_hall_decision_refund_value
value = exoticise_a_grand_hall_decision_cost_value
}
# Trigger the decision.
trigger_event = ep1_decision.0111
# And some flavour.
custom_tooltip = exoticise_a_grand_hall_decision.tt.you_ponder
}
cost = { gold = exoticise_a_grand_hall_decision_cost_value }
cooldown = { years = 10 }
ai_potential = {
# Keep this restricted to a few likely types
OR = {
has_trait = humble
has_trait = gregarious
has_trait = profligate
has_trait = adventurer
}
# And they need the gold to make the purchase at all.
short_term_gold >= exoticise_a_grand_hall_decision_cost_value
}
ai_will_do = {
base = 0
# We add 25% per each of the qualifying traits they have.
modifier = {
add = 25
has_trait = humble
}
modifier = {
add = 25
has_trait = gregarious
}
modifier = {
add = 25
has_trait = profligate
}
modifier = {
add = 25
has_trait = adventurer
}
}
}

View file

@ -0,0 +1,545 @@
##################################################
# Royal Court Other Decisions List
# Adopt Puppy - doot a puppo
# Introduce a Fashion at Court - make a bold fashion statement
##################################################
#############################################
# Have the Jester Entertain You
#############################################
### Be Entertained by the Court Jester ###
jester_entertainment_decision = {
picture = { reference = "gfx/interface/illustrations/decisions/decision_pet_dog.dds" }
desc = jester_entertainment_decision_desc
selection_tooltip = jester_entertainment_decision_tooltip
ai_check_interval_by_tier = {
barony = 0
county = 60
duchy = 24
kingdom = 24
empire = 24
hegemony = 24
}
sort_order = 150
cooldown = { years = 2 }
ai_potential = {
stress > 0
}
is_shown = {
highest_held_title_tier >= tier_duchy
is_landed_or_landless_administrative = yes
employs_court_position = court_jester_court_position
}
is_valid_showing_failures_only = {
age >= 12
court_position:court_jester_court_position ?= {
is_physically_able_ai_adult = yes
}
NOR = {
is_available = no
is_incapable = yes
}
}
effect = {
custom_tooltip = jester_decision_rewards
trigger_event = {
on_action = jester_ongoing
}
close_view = {
view = decisions
player = root
}
}
ai_will_do = {
base = 100
}
}
#############################################
# Adopt Puppy #
# by Joe Parkin #
#############################################
### Adopt Puppy Decision ###
adopt_puppy_decision = {
title = adopt_puppy_decision_name
picture = {
reference = "gfx/interface/illustrations/decisions/decision_pet_dog.dds"
}
desc = adopt_puppy_decision_desc
selection_tooltip = adopt_puppy_decision_tooltip
cooldown = { years = 5 }
sort_order = 89
is_shown = {
is_landed_or_landless_administrative = yes
is_lowborn = no
OR = {
any_owned_story = { type = debug_test_story }
# House has the Dog Lovers modifier from Hold Court event
house ?= { has_house_modifier = hold_court_8140_house_modifier }
# Or the character has the Kennel upgrade in their Estate
domicile ?= { has_domicile_parameter = estate_unlock_adopt_puppy_decision }
}
}
is_valid_showing_failures_only = {
# Does not already have a pet.
custom_tooltip = {
text = adopt_puppy_decision_already_pet_tt
NOR = {
any_owned_story = { type = story_cycle_pet_dog }
any_owned_story = { type = story_cycle_pet_cat }
has_character_modifier = dog_story_modifier
has_character_modifier = cat_story_modifier
}
}
}
effect = {
show_as_tooltip = { start_dog_story_cycle_effect = yes }
trigger_event = hold_court.8142
}
cost = { gold = minor_gold_value }
ai_check_interval_by_tier = {
barony = 0
county = 60
duchy = 60
kingdom = 60
empire = 60
hegemony = 60
}
ai_potential = {
# Has enough gold.
short_term_gold >= minor_gold_value
NOR = {
has_trait = lazy
has_trait = callous
}
}
ai_will_do = {
base = 100
# You're richer.
modifier = {
add = 50
faith = { has_doctrine_parameter = gruesome_festivals_active }
short_term_gold >= massive_gold_value
}
modifier = {
add = 50
faith = { has_doctrine_parameter = gruesome_festivals_active }
short_term_gold >= monumental_gold_value
}
}
}
#############################################
# Introduce a New Fashion at Court #
# by James Beaumont #
#############################################
### Introduce a New Fashion at Court ###
introduce_a_new_fashion_at_court_decision = {
picture = {
trigger = {
NOR = {
government_has_flag = government_is_tribal
government_has_flag = government_is_theocracy
government_has_flag = government_is_nomadic
top_liege ?= { government_has_flag = government_is_tribal }
top_liege ?= { government_has_flag = government_is_theocracy }
}
OR = {
culture = { has_cultural_pillar = heritage_byzantine }
top_liege ?= {
OR = {
culture = { has_cultural_pillar = heritage_byzantine }
capital_barony ?= title:b_constantinople
primary_title ?= title:e_byzantium
primary_title ?= title:h_roman_empire
primary_title ?= title:h_eastern_roman_empire
}
}
}
}
reference = "gfx/interface/illustrations/decisions/ep3_cerimonial_decision.dds"
}
picture = {
trigger = {
government_has_flag = government_is_nomadic
}
reference = "gfx/interface/illustrations/event_scenes/mpo_tent_interior_mongol.dds"
}
picture = {
reference = "gfx/interface/illustrations/decisions/decision_knight_kneeling.dds"
}
desc = introduce_a_new_fashion_at_court_decision_desc
selection_tooltip = introduce_a_new_fashion_at_court_decision_tooltip
cooldown = { years = 5 }
sort_order = 80
is_shown = {
NOT = { has_title = title:k_fashion } # Kingdom of Fashion is very much the end-game of this interaction
NOT = { faith = { has_doctrine_parameter = naked_adherents_active } } # Must wear clothes
NOT = { culture = { has_cultural_parameter = naked_culture_active } } # Must wear clothes
is_available_at_peace_adult = yes
is_landed = yes
# Either has a royal court with high fashion or is part of a royal court with high fashion
OR = {
AND = {
has_royal_court = yes
has_dlc_feature = royal_court
OR = {
amenity_level = {
target = court_fashion
value >= 4
}
has_nickname = nick_prince_of_fashion
}
}
AND = {
liege = { has_royal_court = yes }
has_royal_court = no # Narrative flow of the event is a bit weird if it's unclear which royal court it's taking place in
OR = {
liege = {
amenity_level = {
target = court_fashion
value >= 4
}
}
has_nickname = nick_prince_of_fashion
}
}
}
trigger_if = {
limit = {
OR = {
government_has_flag = government_is_celestial
government_has_flag = government_is_meritocratic
}
}
this = top_liege
}
}
is_valid_showing_failures_only = {
# Standard checks
is_available_at_peace_adult = yes
# Court does not currently have a fashion trend
trigger_if = {
limit = {
OR = {
AND = {
root = { has_royal_court = yes }
root = { has_character_flag = fashion_trend_flag }
}
AND = {
exists = root.liege
liege != root
root.liege = { has_royal_court = yes }
root = { has_royal_court = no }
root.liege = { has_character_flag = fashion_trend_flag }
}
}
}
custom_description = {
text = court_already_has_a_fashion_tend_tt
always = no
}
}
any_courtier_or_guest = {
NOT = { faith = { has_doctrine_parameter = naked_adherents_active } }
is_available_at_peace_adult = yes
}
}
effect = {
hidden_effect = {
if = {
limit = {
has_royal_court = yes
}
add_character_flag = {
flag = fashion_trend_flag
years = 3
}
}
else = {
liege = {
add_character_flag = {
flag = fashion_trend_flag
years = 3
}
}
}
random_list = {
# Determine what the strange fashion choice is
10 = {
add_character_flag = { flag = flag_big_collar years = 1 }
}
10 = {
add_character_flag = { flag = flag_head_dress years = 1 }
}
10 = {
add_character_flag = { flag = flag_gold_boots years = 1 }
}
10 = {
add_character_flag = { flag = flag_sleeveless years = 1 }
}
10 = {
add_character_flag = { flag = flag_commoner_clothes years = 1 }
}
}
save_scope_as = actor
# Get someone to potentially oppose the fashion choice
random_courtier_or_guest = {
limit = {
NOT = { faith = { has_doctrine_parameter = naked_adherents_active } }
is_available_at_peace_adult = yes
}
weight = {
base = 1
compare_modifier = { # Diplo duel should look for high diplo characters
value = diplomacy
multiplier = 0.25
}
modifier = { # Rivals should want to insult their rival
has_relation_rival = root
add = 10
}
modifier = { # Increase visibility for other players
is_ai = no
factor = 2
}
}
save_scope_as = recipient
trigger_event = court_amenities_interactions.0010
}
}
custom_tooltip = {
text = introduce_new_fashion_duel_tooltip
}
}
cost = {
gold = minor_gold_value
prestige = medium_prestige_value
}
# Fashion trends last for five years
ai_check_interval_by_tier = {
barony = 0
county = 0
duchy = 60
kingdom = 60
empire = 60
hegemony = 60
}
ai_potential = {
# Has enough gold.
short_term_gold >= minor_gold_value
liege = { # Shouldn't snipe the opportunity away from the player
is_ai = yes
}
}
ai_will_do = {
base = 25
# You're a fashionista
modifier = {
add = 50
has_trait = seducer
}
modifier = {
add = 50
has_trait = avaricious
}
}
}
#############################################
# Finance Culture Development #
# by Maxence Voleau #
#############################################
### Promote Other Culture Development Decision ###
promote_other_culture_development_decision = {
title = promote_other_culture_development_decision_name
picture = {
trigger = {
culture = { has_graphical_east_asia_culture_group_trigger = yes }
}
reference = "gfx/interface/illustrations/activity_splash_screens/tour_arrival_asia_welcome.dds"
}
picture = {
trigger = {
culture = { has_graphical_india_culture_group_trigger = yes }
}
reference = "gfx/interface/illustrations/activity_splash_screens/tour_arrival_indian_welcome.dds"
}
picture = {
reference = "gfx/interface/illustrations/decisions/decision_misc.dds"
}
desc = promote_other_culture_development_decision_desc
selection_tooltip = promote_other_culture_development_decision_tooltip
cooldown = { years = 10 }
sort_order = 90
is_shown = {
dynasty ?= {
has_dynasty_perk = ep1_culture_legacy_5
}
}
is_valid_showing_failures_only = {
custom_tooltip = {
text = promote_other_culture_development_decision_not_acceptance_tt
any_sub_realm_county = {
count > 0
AND = {
culture != root.culture
culture = {
cultural_acceptance = {
target = ROOT.culture
value >= 75
}
}
}
}
}
}
effect = {
#Add a modifier on the character who spent the money
add_character_modifier = {
modifier = promote_culture_leader_modifier
years = 10
}
#Collect the list of Cultures which will be affected
hidden_effect = {
every_sub_realm_county = {
if = {
limit = {
NOT = {
culture = {
any_in_list = {
list = promoted_culture
this = prev
}
}
}
root.culture != culture
culture = {
cultural_acceptance = {
target = ROOT.culture
value >= 75
}
}
}
culture = { add_to_temporary_list = promoted_culture }
}
}
}
#Generate intelligible effect
if = {
limit = {
any_in_list = {
list = promoted_culture
count > 0
}
}
every_in_list = {
list = promoted_culture
this = { save_scope_as = current_culture }
custom_tooltip = promote_other_culture_development_decision_effect_summary #see if a modifier can be injected for better effect
}
}
else = {
custom_tooltip = promote_other_culture_development_decision_no_effect
}
#Apply the actual effect: add a County Modifier on the relevant Counties
hidden_effect = {
every_sub_realm_county = {
if = {
limit = {
culture != root.culture
culture = {
cultural_acceptance = {
target = root.culture
value >= 75
}
}
}
add_county_modifier = {
modifier = promote_culture_modifier
years = 10
}
}
}
}
}
cost = {
gold = {
value = minor_gold_value
every_sub_realm_county = {
if = {
limit = {
culture != root.culture
culture = {
cultural_acceptance = {
target = root.culture
value >= 75
}
}
}
add = 10
}
}
}
}
ai_check_interval_by_tier = {
barony = 0
county = 0
duchy = 120
kingdom = 120
empire = 120
hegemony = 120
}
ai_potential = {
is_at_war = no
# Has enough gold.
short_term_gold >= ai_war_chest_desired_gold_value
NOR = {
has_trait = lazy
has_trait = callous
}
}
ai_will_do = {
base = 100
}
}