Pretty good

This commit is contained in:
Fishedotjpg 2026-02-26 22:06:19 +00:00
parent 095c30fddf
commit a739d2c92a
25 changed files with 80404 additions and 2 deletions

View file

@ -0,0 +1,887 @@
activity_camp_party = {
is_shown = {
has_ep3_dlc_trigger = yes
has_government = landless_adventurer_government
is_adult = yes
#Every other activity must be blocked until an uncrowned AI crowns themselves
trigger_if = {
limit = {
is_ai = yes
}
NOT = {
has_realm_law = uncrowned
}
}
}
can_start_showing_failures_only = {
NOT = { is_activity_type_on_cooldown = activity_camp_party }
is_available = yes
age >= 16
}
is_valid = {
scope:host = {
is_alive = yes
is_imprisoned = no
has_government = landless_adventurer_government
NOT = { is_incapable = yes }
}
}
on_invalidated = {
# Host becomes incapable
if = {
limit = {
scope:host = { is_incapable = yes }
}
scope:activity = {
activity_type = { save_scope_as = activity_type }
}
scope:host = {
trigger_event = activity_system.0330
}
every_attending_character = {
limit = { this != scope:host }
trigger_event = activity_system.0331
}
}
}
province_filter = domicile_domain
ai_province_filter = domicile_domain
max_province_icons = 1
allow_zero_guest_invites = no
open_invite = no
province_description = {
desc = activity_camp_party_province_desc
}
province_score = {
add = camp_party_province_reference_value
}
cost = {
gold = {
add = {
add = {
value = standard_camp_party_activity_cost
desc = hunt_base_cost
}
if = {
limit = {
has_character_modifier = journey_communal_modifier
}
multiply = {
value = 0.8
desc = journey_communal_modifier
}
}
}
}
}
ui_predicted_cost = {
gold = {
# Base Cost
value = standard_camp_party_activity_cost
# Make it a multiple of 5 (rounded up)
divide = 5
ceiling = yes
multiply = 5
}
}
cooldown = { years = standard_camp_party_cooldown_time }
###################
# PHASES AND OPTIONS
###################
phases = {
phase_camp_party = {
is_predefined = yes
location_source = pickable
ai_will_do = {
value = 0
add = {
value = 30
desc = "Base test value"
}
}
on_phase_active = {
if = {
limit = { this = scope:host }
scope:host = {
trigger_event = {
id = ep3_camp_party.0009
days = 89
}
}
scope:activity = {
#Phase progression
progress_activity_phase_after = { days = 90 }
#Loc
activity_location = { save_scope_as = location }
}
#Arrival event
trigger_event = ep3_camp_party.0001
}
}
on_monthly_pulse = {
if = {
limit = { this = scope:host }
trigger_event = { on_action = camp_party_destination_events }
}
}
}
}
options = {
#Food options: upgrades locked behind Supply Tent
camp_party_option_food = {
camp_party_food_none = { #Default
default = yes
ai_will_do = {
value = 0
# Financial preference.
add = activity_option_likes_cheap_expense_value
# Quantity preference.
add = activity_option_food_prefers_small_volume_value
}
}
camp_party_food_simple = { #locked behind Supply Tent
is_shown = { always = yes }
is_valid = {
custom_tooltip = {
text = camp_party_food_options_invalid
domicile ?= {
has_domicile_parameter = camp_unlocks_camp_party_food_option
}
}
}
cost = {
gold = {
add = {
desc = camp_party_food_simple
add = {
value = 5
desc = camp_party_food_simple
}
add = {
value = 5
multiply = activity_cost_scale_by_tier
subtract = 5
desc = activity_cost_scale_by_tier_desc
}
add = {
value = 5
multiply = activity_cost_scale_by_era
subtract = 5
desc = activity_cost_scale_by_era_desc
}
if = {
limit = {
dynasty ?= {
has_dynasty_perk = law_legacy_1
}
}
subtract = {
value = 5
add = {
value = 5
multiply = activity_cost_scale_by_tier
subtract = 5
}
add = {
value = 5
multiply = activity_cost_scale_by_era
subtract = 5
}
multiply = law_legacy_cost_reduction_mult
desc = law_legacy_1_name
}
}
min = 0
}
}
}
ai_will_do = {
value = 0
# Financial preference.
add = activity_option_likes_middling_expense_value
# Quantity preference.
## We just use slightly reduced quantity prefs here.
add = {
value = activity_option_prefers_large_volume_value
multiply = 0.3
}
}
}
camp_party_food_lavish = {
is_shown = { always = yes }
is_valid = {
custom_tooltip = {
text = camp_party_food_options_invalid
domicile ?= {
has_domicile_parameter = camp_unlocks_camp_party_food_option
}
}
}
cost = {
gold = {
add = {
desc = camp_party_food_lavish
add = {
value = 15
desc = camp_party_food_lavish
}
add = {
value = 15
multiply = activity_cost_scale_by_tier
subtract = 15
desc = activity_cost_scale_by_tier_desc
}
add = {
value = 15
multiply = activity_cost_scale_by_era
subtract = 15
desc = activity_cost_scale_by_era_desc
}
if = {
limit = {
dynasty ?= {
has_dynasty_perk = law_legacy_1
}
}
subtract = {
value = 15
add = {
value = 15
multiply = activity_cost_scale_by_tier
subtract = 15
}
add = {
value = 15
multiply = activity_cost_scale_by_era
subtract = 15
}
multiply = law_legacy_cost_reduction_mult
desc = law_legacy_1_name
}
}
min = 0
}
}
}
ai_will_do = {
value = 0
# Financial preference.
add = activity_option_likes_middling_expense_value
# Quantity preference.
## We just use slightly reduced quantity prefs here.
add = {
value = activity_option_prefers_large_volume_value
multiply = 0.6
}
}
}
}
#Drinks options: upgrades locked behind Mess Tent & Mobile Brewery
camp_party_option_drinks = {
camp_party_drinks_none = { #Default
default = yes
ai_will_do = {
value = 0
# Financial preference.
add = activity_option_likes_cheap_expense_value
# Quantity preference.
add = activity_option_food_prefers_small_volume_value
}
}
camp_party_drinks_adequate = { #locked behind Mess Tent
is_shown = { always = yes }
is_valid = {
custom_tooltip = {
text = camp_party_drinks_adequate_invalid
domicile ?= {
has_domicile_building_or_higher = mess_tent_01
}
}
}
cost = {
gold = {
add = {
desc = camp_party_drinks_adequate
add = {
value = 10
desc = camp_party_drinks_adequate
}
add = {
value = 10
multiply = activity_cost_scale_by_tier
subtract = 10
desc = activity_cost_scale_by_tier_desc
}
add = {
value = 10
multiply = activity_cost_scale_by_era
subtract = 10
desc = activity_cost_scale_by_era_desc
}
if = {
limit = {
dynasty ?= {
has_dynasty_perk = law_legacy_1
}
}
subtract = {
value = 10
add = {
value = 10
multiply = activity_cost_scale_by_tier
subtract = 10
}
add = {
value = 10
multiply = activity_cost_scale_by_era
subtract = 10
}
multiply = law_legacy_cost_reduction_mult
desc = law_legacy_1_name
}
}
min = 0
}
}
}
ai_will_do = {
value = 0
# Financial preference.
add = activity_option_likes_middling_expense_value
# Quantity preference.
## We just use slightly reduced quantity prefs here.
add = {
value = activity_option_prefers_large_volume_value
multiply = 0.3
}
}
}
camp_party_drinks_abundant = { #locked behind Mobile Brewery
is_shown = { always = yes }
is_valid = {
custom_tooltip = {
text = camp_party_drinks_abundant_invalid
domicile ?= {
has_domicile_building_or_higher = mess_tent_brewers
}
}
}
cost = {
gold = {
add = {
desc = camp_party_drinks_abundant
add = {
value = 20
desc = camp_party_drinks_abundant
}
add = {
value = 20
multiply = activity_cost_scale_by_tier
subtract = 20
desc = activity_cost_scale_by_tier_desc
}
add = {
value = 20
multiply = activity_cost_scale_by_era
subtract = 20
desc = activity_cost_scale_by_era_desc
}
if = {
limit = {
dynasty ?= {
has_dynasty_perk = law_legacy_1
}
}
subtract = {
value = 35
add = {
value = 35
multiply = activity_cost_scale_by_tier
subtract = 35
}
add = {
value = 35
multiply = activity_cost_scale_by_era
subtract = 35
}
multiply = law_legacy_cost_reduction_mult
desc = law_legacy_1_name
}
}
min = 0
}
}
}
ai_will_do = {
value = 0
# Financial preference.
add = activity_option_likes_middling_expense_value
# Quantity preference.
## We just use slightly reduced quantity prefs here.
add = {
value = activity_option_prefers_large_volume_value
multiply = 0.6
}
}
}
}
}
max_guest_arrival_delay_time = { weeks = 1 }
###################
# ACTIVITY-SPECIFIC PULSES
###################
pulse_actions = {
entries = {
apa_bonded_by_fire
apa_taught_repair
apa_revelry_hangover_camp
apa_local_food_camp
apa_lauded_food_camp
apa_guest_of_honor_impressed
apa_cultural_acceptance
apa_camp_host_gifted
apa_fireside_chat_shared_stories_martial
apa_fireside_chat_shared_stories_learning
apa_fireside_chat_shared_stories_diplomacy
apa_fireside_chat_shared_stories_stewardship
apa_fireside_chat_shared_stories_intrigue
apa_fireside_chat_shared_drinks
apa_fireside_chat_inspiring_speech
apa_camp_party_sad_lonesome
apa_camp_party_shadows_in_the_dark
apa_camp_party_fortress_of_solitude
apa_camp_party_lecture
apa_camp_party_tales_of_distant_lands
apa_camp_party_tales_of_war
apa_camp_party_tales_of_lands_lost
apa_camp_party_blademaster_sparring
apa_camp_party_tales_of_piety
#Re-used
host_gains_diplo_xp
host_gains_intrigue_xp
hook_trusting_guest
}
chance_of_no_event = 2
}
on_start = {
scope:activity ?= {
activity_setup_special_type_progression_effect = yes
if = {
limit = {
has_activity_option = {
category = camp_party_option_food
option = camp_party_food_simple
}
}
activity_special_type_progression_variable = { NUM = 25 }
}
else_if = {
limit = {
has_activity_option = {
category = camp_party_option_food
option = camp_party_food_lavish
}
}
activity_special_type_progression_variable = { NUM = 50 }
}
}
}
###################
# AI VALUES
###################
# desc is only shown in debug AI watch window
ai_will_do = {
value = 50
if = {
limit = {
has_trait = lazy
}
add = -10
}
#Can you actually afford this?
if = {
limit = {
domicile.provisions <= 100
}
add = -75
}
}
ai_check_interval = 60
ai_will_select_province = {
value = 10
}
###################
# GUEST HANDLING
###################
host_intents = {
default = reduce_stress_intent
intents = { reduce_stress_intent befriend_attendee_intent fireside_chat_intent }
}
guest_intents = {
intents = { reduce_stress_intent befriend_attendee_intent }
default = reduce_stress_intent
}
can_be_activity_guest = {
OR = { #Follower
AND = {
is_healthy = yes
is_available = yes
age >= 16
is_ai = yes
liege = scope:host
location = scope:host.location
}
AND = { #Local lord
is_healthy = yes
is_available = yes
age >= 16
is_ai = yes
top_liege = this
location = scope:host.location
}
}
}
guest_invite_rules = {
defaults = {
1 = activity_invite_rule_followers
2 = activity_invite_rule_local_lord
2 = activity_invite_rule_friends
2 = activity_invite_rule_potential_friends
2 = activity_invite_rule_lovers
2 = activity_invite_rule_potential_lovers
}
}
special_guests = {
camp_party_honorary_guest = {
is_required = no
can_pick = {
this != scope:host
is_healthy = yes
is_available = yes
age >= 16
is_ai = yes
top_liege = this
location = scope:host.location
}
ai_will_do = {
value = 10
}
}
}
travel_entourage_selection = {
weight = {
value = 10
if = {
limit = {
NOT = { is_in_list = special_guests }
}
multiply = 0
}
}
invite_rule_order = 1
# Up to how many characters to select for a player
max = 2
# Up to how many characters to select for an AI
ai_max = 2
}
max_guests = 50 #Theoretically everyone, practically only around 2-10 usually
guest_join_chance = {
base = 50 #Everyone should accept, but...
base_activity_modifier = yes
# Scripted Modifiers
activity_guest_shared_ai_accept_modifier = yes
modifier = {
is_courtier_of = scope:host
scope:host = {
has_government = landless_adventurer_government
}
add = 100
desc = ACTIVITY_GUEST_ADVENTURER_REASON
}
modifier = { #Emperors
primary_title.tier = tier_empire
add = -100
desc = ACTIVITY_GUEST_LANDLESS_REASON
}
modifier = { #Kings
primary_title.tier = tier_kingdom
add = -75
desc = ACTIVITY_GUEST_LANDLESS_REASON
}
modifier = { #Dukes
primary_title.tier = tier_duchy
add = -50
desc = ACTIVITY_GUEST_LANDLESS_REASON
}
modifier = { #Counts
primary_title.tier = tier_county
add = -25
desc = ACTIVITY_GUEST_LANDLESS_REASON
}
modifier = { #Barons
primary_title.tier = tier_barony
add = -5
desc = ACTIVITY_GUEST_LANDLESS_REASON
}
}
###################
# GRAPHICS
###################
#Backgrounds mostly not needed here
background = { #Campfire
trigger = {
scope:host.location = scope:activity.activity_location
}
texture = "gfx/interface/illustrations/event_scenes/ep3_campfire.dds"
environment = "environment_event_bp1_bonfire"
ambience = "event:/SFX/Events/Backgrounds/burning_building"
}
### Plug in widgets
activity_window_widgets = {
activity_special_type_progression = "activity_plugin_widgets_summary"
}
window_characters = {
guest = {
camera = camera_body_right
effect = {
if = {
limit = {
scope:host.location = scope:activity.activity_location
}
every_attending_character = {
limit = {
location = scope:activity.activity_location
this != scope:host
}
add_to_list = characters
}
}
}
scripted_animation = {
triggered_animation = {
trigger = {
always = yes
}
animation = { drink_goblet happiness flirtation throne_room_conversation_3 throne_room_conversation_1 instrument_idle alto_flute_active }
}
}
}
#Guest of Honor
guest = {
camera = camera_body
effect = {
if = {
limit = {
scope:host.location = scope:activity.activity_location
any_attending_character = {
this = scope:activity.special_guest:camp_party_honorary_guest
location = scope:activity.activity_location
}
}
every_attending_character = {
limit = {
this = scope:activity.special_guest:camp_party_honorary_guest
location = scope:activity.activity_location
}
add_to_list = characters
}
}
else = {
every_attending_character = {
limit = {
location = scope:activity.activity_location
this != scope:host
}
add_to_list = characters
}
}
}
scripted_animation = {
triggered_animation = {
trigger = {
scope:character = { has_trait = shy }
}
animation = { worry stress boredom fear disbelief paranoia eyeroll drink drink_goblet }
}
triggered_animation = {
trigger = {
scope:character = {
NOT = { has_trait = shy }
}
}
animation = { ecstasy wedding_priest chaplain personality_honorable personality_bold hero_flex }
}
#Fallback
animation = toast_goblet
}
}
host = {
camera = camera_body
effect = {
if = {
limit = {
scope:host.location = scope:activity.activity_location
}
scope:host = {
add_to_list = characters
}
}
}
scripted_animation = {
triggered_animation = {
trigger = {
always = yes
}
animation = { toast_goblet toast lute_active }
}
}
}
guest = {
camera = camera_body
effect = {
if = {
limit = {
scope:host.location = scope:activity.activity_location
}
every_attending_character = {
limit = {
location = scope:activity.activity_location
this != scope:host
}
add_to_list = characters
}
}
}
scripted_animation = {
triggered_animation = {
trigger = {
scope:character = { has_trait = shy }
}
animation = { worry stress boredom fear disbelief paranoia eyeroll drink drink_goblet }
}
triggered_animation = {
trigger = {
scope:character = {
NOT = { has_trait = shy }
}
}
animation = { dancing laugh throne_room_conversation_2 }
}
#Fallback
animation = toast
}
}
guest = {
camera = camera_body_left
effect = {
if = {
limit = {
scope:host.location = scope:activity.activity_location
}
every_attending_character = {
limit = {
location = scope:activity.activity_location
this != scope:host
}
add_to_list = characters
}
}
}
scripted_animation = {
triggered_animation = {
trigger = {
scope:character = { has_trait = shy }
}
animation = { worry stress boredom fear disbelief paranoia eyeroll drink drink_goblet }
}
triggered_animation = {
trigger = {
scope:character = {
NOT = { has_trait = shy }
}
}
animation = { drink eavesdrop wedding_drunk instrument_active }
}
#Fallback
animation = toast
}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,388 @@
# Interaction used to convert people when you hybridize or diverge culture
# Note that it will only be applied to vassals of the parent culture(s)
# Acceptance is checked *before* culture conversion happens so that it'll be correct in the UI
# This has the culture traits available in the traits list:
# modifier = {
# add = 10
# desc = TEST
# culture_pillar:ethos_bellicose = { is_in_list = traits }
# }
request_culture_conversion_interaction = {
category = interaction_category_religion
special_interaction = request_culture_conversion_interaction
popup_on_receive = yes
desc = ask_for_conversion_interaction_desc
hidden = yes
is_shown = {
scope:actor.culture != scope:recipient.culture
scope:recipient.liege = scope:actor
NOT = { scope:recipient = { government_has_flag = government_is_landless_minority } }
}
is_valid_showing_failures_only = {
}
ai_accept = {
base = -10
opinion_modifier = {
opinion_target = scope:actor
who = scope:recipient
multiplier = 1
}
modifier = {
desc = ASK_FOR_CONVERSION_SAME_CULTURE_PRESTIGE_LEVEL
add = {
value = 10
multiply = scope:actor.prestige_level
}
scope:actor.prestige_level > 0
scope:recipient.culture = scope:actor.culture
}
modifier = {
desc = ASK_FOR_CONVERSION_RECIPIENT_DIPLOMACY
add = {
value = scope:actor.diplomacy
subtract = scope:recipient.diplomacy
multiply = 5
}
}
modifier = {
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_CYNICAL
add = 30
scope:recipient = {
has_trait = cynical
}
}
modifier = {
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_STUBBORN
add = -30
scope:recipient = {
has_trait = stubborn
}
}
modifier = {
add = intimidated_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_external_reason_value
scope:recipient = {
has_dread_level_towards = {
target = scope:actor
level = 2
}
}
desc = COWED_REASON
}
# Unity modifiers
evaluate_action_increasing_house_unity = {
VALUE = 100
}
}
ai_min_reply_days = 1
ai_max_reply_days = 5
on_accept = {
new_culture_created_vassal_conversion_effect = {
CONVERTEE = scope:recipient
CONVERTER = scope:actor
CULTURE = scope:actor.culture
}
}
}
ai_cultural_hybridization_interaction = {
hidden = yes
auto_accept = yes
ai_potential = {
has_dlc_feature = hybridize_culture
OR = {
top_liege = this
highest_held_title_tier >= tier_kingdom
}
sub_realm_size >= 4
is_physically_able_adult = yes
is_at_war = no
NOT = {
has_game_rule = none_hybrid_culture_ai_frequency
}
}
is_shown = {
scope:actor = {
is_ai = yes
}
}
has_valid_target = {
exists = scope:target
}
ai_set_target = {
scope:actor = {
if = {
limit = {
any_sub_realm_county = {
culture != scope:actor.culture
culture = {
cultural_acceptance = { target = scope:actor.culture value >= hybridization_ai_threshold_value }
scope:actor = {
can_hybridize = prev
}
}
}
}
every_sub_realm_county = {
limit = {
culture != scope:actor.culture
culture = {
cultural_acceptance = { target = scope:actor.culture value >= hybridization_ai_threshold_value }
scope:actor = {
can_hybridize = prev
}
}
}
culture = {
add_to_list = culture_list
}
}
ordered_in_list = {
list = culture_list
limit = { culture_realm_size >= 3 }
order_by = culture_realm_size
save_scope_as = target
}
}
}
}
on_accept = {
# Global cooldowns for the lower frequency game rule settings
if = {
limit = {
has_game_rule = less_common_hybrid_culture_ai_frequency
}
set_global_variable = { name = has_ai_hybrid_event_cooldown value = yes days = 3650 }
}
scope:actor = {
create_hybrid_culture_with_side_effects = scope:target
}
}
ai_targets = {
ai_recipients = self
}
ai_frequency_by_tier = {
barony = 0
county = 120
duchy = 60
kingdom = 60
empire = 60
hegemony = 60
}
ai_will_do = {
base = 100
# Unity modifiers
evaluate_action_increasing_house_unity = {
VALUE = 100
}
modifier = {
factor = 0.2
has_game_rule = less_common_hybrid_culture_ai_frequency
}
modifier = {
factor = 0
exists = global_var:has_ai_hybrid_event_cooldown
}
modifier = {
factor = 0
culture = {
has_cultural_parameter = harder_to_hybridize
}
}
modifier = { # The AI should only want to hybridize if they're the second ruler of their culture for their primary title
factor = 0
OR = {
NOT = {
exists = primary_title.previous_holder
}
AND = {
exists = primary_title.previous_holder
primary_title.previous_holder.culture != scope:actor.culture
}
}
}
modifier = { # The AI doesn't want to hybridize if their culture is more than X% bigger than the targeted culture within the same realm (unless it's in the capital, and the capital is the De Jure capital of the primary title)
factor = 0
scope:actor.culture.culture_realm_size > scope:target.culture_realm_size_larger_30_percent
NAND = {
scope:actor.primary_title.title_capital_county = scope:actor.capital_county
scope:actor.capital_county.culture = scope:target
}
}
modifier = { # Do not hybridize if 30% or more of your vassals of the relevant culture/s dislike you
factor = 0
scope:actor = {
any_vassal = {
percent >= 0.3
OR = {
culture = scope:actor.culture
culture = scope:target
}
highest_held_title_tier >= tier_county
opinion = {
target = scope:actor
value <= 0
}
}
}
}
modifier = { # The AI does not want to create multiple hybrids from the same cultures
factor = 0
any_in_global_list = {
variable = hybrid_cultures
any_parent_culture = { this = scope:target }
any_parent_culture = { this = scope:actor.culture }
}
}
# Loose requirements
modifier = { # The AI does not want to create a hybrid with a hybrid culture that has the same roots
factor = 0
has_game_rule = very_relaxed_hybrid_culture_ai_restrictions
scope:target = { is_hybrid_culture = yes }
scope:actor.culture = {
is_hybrid_culture = yes
any_parent_culture = {
save_temporary_scope_as = parent_culture_check
scope:target = {
any_parent_culture = {
this = scope:parent_culture_check
}
}
}
}
}
modifier = { # The AI does not want to create a hybrid with a hybrid culture (unless a historical hybrid)
factor = 0
has_game_rule = relaxed_hybrid_culture_ai_restrictions
scope:target = {
is_hybrid_culture = yes
culture_is_not_historical_hybrid_trigger = yes
}
scope:actor.culture = {
is_hybrid_culture = yes
culture_is_not_historical_hybrid_trigger = yes
}
}
modifier = { # The AI does not want to create a hybrid with a hybrid culture or if the target is a hybrid (unless a historical hybrid)
factor = 0
has_game_rule = default_hybrid_culture_ai_restrictions
OR = {
scope:target = {
is_hybrid_culture = yes
culture_is_not_historical_hybrid_trigger = yes
}
scope:actor.culture = {
is_hybrid_culture = yes
culture_is_not_historical_hybrid_trigger = yes
}
}
}
modifier = { # The AI does not want to create a hybrid with a hybrid culture that their culture is a parent of, or share heritage of
factor = 0
scope:target = {
is_hybrid_culture = yes
any_parent_culture = {
OR = {
this = scope:actor.culture
has_same_culture_heritage = scope:actor.culture
}
}
}
}
modifier = { # The AI does not want to create a hybrid if their culture is a hybrid of the target culture, or share heritage of
factor = 0
scope:actor.culture = {
is_hybrid_culture = yes
any_parent_culture = {
OR = {
this = scope:target
has_same_culture_heritage = scope:target
}
}
}
}
modifier = { # Avoid hybridizing if your realm is of a significant size and elective, we don't want the HRE Emperor to hybdridize in ugly ways...
factor = 0
primary_title = {
has_order_of_succession = election
tier >= tier_kingdom
}
realm_size >= 50
any_vassal = {
highest_held_title_tier >= tier_county
culture != scope:actor.culture
}
}
modifier = { # Theocrats such as the Pope shouldn't hybridize; they have an influx of different cultures, it's just weird
factor = 0
government_has_flag = government_is_theocracy
}
modifier = { # Block for Scots and Gaelic specifically
factor = 0
scope:actor.culture = {
OR = {
this = culture:scottish
this = culture:gaelic
}
}
scope:target = {
OR = {
this = culture:scottish
this = culture:gaelic
}
}
}
# Note: As we're checking if we can hybridize with a culture *right now*, a suboptimal culture might be checked. A buffer of 10 acceptance is used by the AI to alleviate this.
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,492 @@
# Character Interactions for EP1
##################
# Fund someone's inspiration
# by Linnéa Thimrén
##################
fund_inspiration_interaction = {
icon = inspiration
interface_priority = 30
common_interaction = yes
category = interaction_category_vassal
desc = fund_inspiration_interaction_desc
is_shown = {
scope:recipient = {
is_ruler = no
inspiration ?= {
NOT = {
exists = inspiration_sponsor
}
}
}
scope:actor = {
any_courtier_or_guest = {
this = scope:recipient
}
}
}
is_highlighted = {
always = yes
}
is_valid_showing_failures_only = {
scope:recipient = {
is_physically_able = yes
is_ruler = no
trigger_if = {
limit = {
NOT = { is_courtier_of = scope:actor }
}
can_recruit_character_to_court_trigger = {
RECRUITER = scope:actor
RECRUITEE = scope:recipient
}
}
}
scope:actor = {
can_sponsor_inspiration = scope:recipient.inspiration
gold >= scope:recipient.inspiration.base_inspiration_gold_cost
}
}
on_accept = {
fund_inspiration_effect = yes
if = {
limit = { scope:recipient.inspiration = { has_inspiration_type = weapon_inspiration } }
custom_description_no_bullet = { text = weapon_inspiration_cost_tt }
}
else_if = {
limit = { scope:recipient.inspiration = { has_inspiration_type = armor_inspiration } }
custom_description_no_bullet = { text = armor_inspiration_cost_tt }
}
else_if = {
limit = { scope:recipient.inspiration = { has_inspiration_type = book_inspiration } }
custom_description_no_bullet = { text = book_inspiration_cost_tt }
}
else_if = {
limit = { scope:recipient.inspiration = { has_inspiration_type = weaver_inspiration } }
custom_description_no_bullet = { text = weaver_inspiration_cost_tt }
}
else_if = {
limit = { scope:recipient.inspiration = { has_inspiration_type = adventure_inspiration } }
custom_description_no_bullet = { text = adventure_inspiration_cost_tt }
}
else_if = {
limit = { scope:recipient.inspiration = { has_inspiration_type = artisan_inspiration } }
custom_description_no_bullet = { text = artisan_inspiration_cost_tt }
}
else_if = {
limit = { scope:recipient.inspiration = { has_inspiration_type = smith_inspiration } }
custom_description_no_bullet = { text = smith_inspiration_cost_tt }
}
else_if = {
limit = { scope:recipient.inspiration = { has_inspiration_type = alchemy_inspiration } }
custom_description_no_bullet = { text = alchemy_inspiration_cost_tt }
}
else_if = {
limit = { scope:recipient.inspiration = { has_inspiration_type = bow_inspiration } }
custom_description_no_bullet = { text = bow_inspiration_cost_tt }
}
# Add a flag on AI to have an extra cooldown of 3 years
if = {
limit = {
scope:actor = {
is_ai = yes
NOT = {
gold >= 1000
}
OR = {
short_term_gold < ai_inspiration_desired_gold_value
ai_greed >= 50
}
}
}
scope:actor = {
add_character_flag = {
flag = recently_fund_inspiration
years = 3
}
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = miniscule_unity_gain
DESC = clan_unity_inspo.desc
REVERSE_NON_HOUSE_TARGET = no
}
#Mandala Creation Aspect
scope:actor = {
if = {
limit = { government_has_flag = government_is_mandala }
increment_variable_effect = {
VAR = num_commissioned_artifacts
VAL = 1
}
}
}
}
auto_accept = {
custom_description = {
text = auto_accept_interaction_ai
object = scope:recipient
scope:recipient = {
is_ai = yes
}
}
}
ai_frequency_by_tier = {
barony = 0
county = 0
duchy = 0
kingdom = 10
empire = 10
hegemony = 10
}
ai_targets = {
ai_recipients = guests
ai_recipients = courtiers
}
ai_target_quick_trigger = {
adult = yes
}
ai_potential = {
is_at_war = no
OR = {
has_royal_court = yes
OR = { government_has_flag = government_is_landless_adventurer government_has_flag = government_is_landless_minority }
}
gold > ai_inspiration_desired_gold_value
NOT = { has_character_flag = recently_fund_inspiration }
NOT = { has_variable = conqueror }
ai_should_focus_on_building_in_their_capital = no
}
ai_will_do = {
base = 100
modifier = { # Not as likely to fund inspirations if they already have some going (max three for very prestigious courts)
add = {
if = {
limit = {
highest_held_title_tier >= tier_empire
any_sponsored_inspiration = {
count >= 3
}
}
add = -50
}
else_if = {
limit = {
highest_held_title_tier >= tier_kingdom
any_sponsored_inspiration = {
count >= 2
}
}
add = -50
}
}
}
# Do not pointlessly fund inspirations you do not need
modifier = { # Weapons
factor = 0
scope:recipient.inspiration = {
has_inspiration_type = weapon_inspiration
}
OR = {
any_character_artifact = { # Has a fantastic item already
artifact_slot_type = primary_armament
rarity = illustrious
}
AND = { # Have a lot of artifacts already, and the inspired person isn't even very good
scope:recipient = {
weapon_inspiration_average_skill_value < 15
}
any_character_artifact = {
count >= 2
artifact_slot_type = primary_armament
}
}
}
}
modifier = { # Armor
factor = 0
scope:recipient.inspiration = {
has_inspiration_type = armor_inspiration
}
OR = {
any_character_artifact = { # Has a fantastic item already
artifact_slot_type = armor
rarity = illustrious
}
AND = { # Have a lot of artifacts already, and the inspired person isn't even very good
scope:recipient = {
armor_inspiration_average_skill_value < 15
}
any_character_artifact = {
count >= 2
artifact_slot_type = armor
}
}
}
}
modifier = { # Warlike AI's only sponsor if they've been at peace for a long time
factor = 0
ai_has_warlike_personality = yes
days_of_continuous_peace < 1825 # 5 years
}
modifier = { # Cautious AI's only sponsor if they feel safe enough
factor = 0
ai_has_cautious_personality = yes
war_chest_gold < cautious_ai_minimum_war_chest_gold
}
}
}
##################
# Indebt Guest
# by Ewan Cowhig Croft
##################
indebt_guest_interaction = {
icon = icon_hostile
interface_priority = 120
common_interaction = yes
ai_max_reply_days = 0
cooldown = { years = 5 }
category = interaction_category_hostile
ai_maybe = yes
desc = indebt_guest_interaction_desc
greeting = negative
pre_answer_maybe_key = ANSWER_MIGHT_SUCCEED
pre_answer_no_key = ANSWER_CANT_SUCCEED
pre_answer_yes_key = ANSWER_WILL_SUCCEED
pre_answer_maybe_breakdown_key = ANSWER_SUM_CHANCE
ai_potential = {
# Repeat some is_shown triggers for performance gains.
indebt_guest_interaction_basic_checks_trigger = { ACTOR = this }
}
is_shown = {
scope:actor != scope:recipient
# Repeat some ai_potential triggers for performance gains.
indebt_guest_interaction_basic_checks_trigger = { ACTOR = scope:actor }
# Scope:recipient must be a guest.
scope:recipient = { is_pool_guest_of = scope:actor }
}
is_valid_showing_failures_only = {
scope:actor = { is_imprisoned = no }
scope:actor = { is_commanding_army = no }
# Scope:actor can't have a hook of any kind on scope:recipient already.
NOT = {
scope:actor = { has_hook = scope:recipient }
}
# Scope:actor must be able to afford the cost of the decision going wrong.
scope:actor.court_grandeur_current >= indebt_guest_interaction_lost_test_grandeur_cost_value
}
can_send = {
scope:actor = {
custom_description = {
text = "character_interactions_hostile_actions_disabled_delay"
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
}
}
}
on_send = {
scope:actor = {
add_character_flag = {
flag = flag_hostile_actions_disabled_delay
days = 10
}
}
}
on_accept = {
scope:actor = {
# On accept, you gain a hook & lose some opinion.
## Which we only show as a tooltip for now, since it's applied in the event.
show_as_tooltip = { indebt_guest_interaction_accepted_effect = yes }
# Pop the event.
trigger_event = ep1_character_interaction.0001
# Reminder that you'll have a chance to direct where they go.
custom_tooltip = indebt_guest_interaction.tt.direct_indebted_guest
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = miniscule_unity_loss
DESC = clan_unity_indebt_guest.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
on_decline = {
# Send a toast.
scope:actor = {
send_interface_toast = {
type = event_toast_effect_bad
title = indebt_guest_interaction.tt.failure
left_icon = scope:recipient
# On decline, scope:recipient leaves your court...
scope:recipient = { select_and_move_to_pool_effect = yes }
# ... and you lose a bit of extra grandeur for your audacity.
change_current_court_grandeur = indebt_guest_interaction_lost_test_grandeur_cost_value
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = miniscule_unity_loss
DESC = clan_unity_indebt_guest_failure.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
auto_accept = no
ai_accept = {
base = 50
# Standard intrigue duel.
modifier = {
add = {
value = scope:actor.intrigue
multiply = 2
}
desc = INDEBT_GUEST_INTRIGUE_ACTOR
}
modifier = {
add = {
value = scope:recipient.intrigue
multiply = -1
}
desc = INDEBT_GUEST_INTRIGUE_RECIPIENT
}
# Weight it a bit more in your favour for every point of excess CGV you have.
modifier = {
add = scope:actor.current_cgv_above_expected_exact_value
desc = INDEBT_GUEST_CURRENT_CGV_ABOVE_EXPECTED
scope:actor.current_cgv_above_expected_exact_value >= 1
}
# Some traits may also affect the chances for scope:actor...
modifier = {
add = 10
scope:actor = { has_trait = schemer }
}
modifier = {
add = 10
scope:actor = { has_trait = education_intrigue }
}
modifier = {
add = 5
scope:actor = { has_trait = deceitful }
}
modifier = {
add = 5
scope:actor = { has_trait = vengeful }
}
modifier = {
add = -10
scope:actor = { has_trait = honest }
}
modifier = {
add = -5
scope:actor = { has_trait = forgiving }
}
# ... or else for scope:recipient.
modifier = {
add = -10
scope:recipient = { has_trait = schemer }
}
modifier = {
add = -5
scope:recipient = { has_trait = education_intrigue }
}
modifier = {
add = -5
scope:recipient = { has_trait = deceitful }
}
modifier = {
add = 10
scope:recipient = { has_trait = honest }
}
}
# AI
ai_targets = {
ai_recipients = guests
chance = 0.5
}
ai_frequency_by_tier = {
barony = 0
county = 0
duchy = 0
kingdom = 10
empire = 10
hegemony = 10
}
ai_will_do = {
base = -100
# This is a silly way for the AI to spend its CGV, so we keep 'em off it most of the time.
# Unless they've got a scheme on the go at their nemesis' court...
modifier = {
add = 100
scope:actor = {
any_relation = { type = nemesis }
any_scheme = {
count >= 1
scheme_target_character = {
any_relation = {
type = nemesis
count >= 1
this = scope:actor
}
}
}
}
}
# ... *and* they're likely to win due to having higher intrigue, but without scope:recipient being too terrible.
modifier = {
add = 25
indebt_guest_interaction_get_intrigue_difference_value >= indebt_guest_interaction_likely_success_control_value
scope:recipient = { intrigue >= high_skill_rating }
}
modifier = {
add = 25
indebt_guest_interaction_get_intrigue_difference_value >= indebt_guest_interaction_likely_success_control_value
scope:recipient = { intrigue >= very_high_skill_rating }
}
modifier = {
add = 50
indebt_guest_interaction_get_intrigue_difference_value >= indebt_guest_interaction_likely_success_control_value
scope:recipient = { intrigue >= extremely_high_skill_rating }
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3768,7 +3768,7 @@ go_fishing_decision = {
is_shown = {
#DLC check.
has_ep3_dlc_trigger = yes
has_government = landless_adventurer_government
OR = { has_government = landless_adventurer_government has_government = landless_minority_government }
}
is_valid_showing_failures_only = {

File diff suppressed because it is too large Load diff

View file

@ -1175,6 +1175,124 @@ ep3_laamps.0032 = {
}
}
ep3_laamps.1030 = {
type = character_event
window = fullscreen_event
title = ep3_laamps.1030.t
desc = {
desc = ep3_laamps.1030.desc
first_valid = {
triggered_desc = {
trigger = { exists = scope:laamp_heir }
desc = ep3_laamps.1030.heir
}
triggered_desc = {
trigger = { exists = scope:laamp_liege }
desc = ep3_laamps.1030.liege
}
desc = ep3_laamps.1030.new
}
}
theme = realm
left_portrait = {
character = root
animation = marshal
}
lower_right_portrait = scope:laamp_inheritor
override_background = { reference = ep3_fullscreen_adventurer_positive }
cooldown = { days = 5 }
trigger = { exists = scope:laamp_inheritor }
immediate = {
# Save scopes for loc
primary_title = { save_scope_as = old_primary_title }
capital_province = { save_scope_as = old_capital_province }
if = {
limit = { top_liege != this }
liege = { save_scope_as = old_liege }
}
# Transfer landed titles
every_held_title = {
title_tier > barony
limit = {
OR = {
is_landless_type_title = no
is_nomad_title = yes
}
}
add_to_list = target_titles
}
create_title_and_vassal_change = {
type = conquest
save_scope_as = change
add_claim_on_loss = no
}
hidden_effect = {
every_in_list = {
list = target_titles
change_title_holder_include_vassals = {
holder = scope:laamp_inheritor
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
# Create Adventurer
create_landless_adventurer_title_effect = {
REASON = flag:voluntary
FLAVOR_CHAR = scope:laamp_inheritor
}
scope:laamp_inheritor = {
# Tooltip for player
custom_tooltip = become_landless_adventurer_decision_title_scope_tt
# Create a loving family so inheritance isn't so borked
if = {
limit = { has_character_flag = new_laamp_inheritor }
trigger_event = game_rule.1001
remove_character_flag = new_laamp_inheritor
}
}
scope:old_liege ?= { trigger_event = ep3_laamps.1032 }
adventurer_prestige_reset_effect = yes
hidden_effect = {
every_held_title = {
limit = {
is_noble_family_title = yes
}
root = { destroy_title = prev }
}
}
}
option = {
name = ep3_laamps.1030.a
create_landless_adventurer_title_tooltip_effect = yes
add_prestige = medium_prestige_gain
add_character_modifier = {
modifier = ep3_voluntary_laamp_character_modifier
years = 5
}
}
}
# Liege event
ep3_laamps.1032 = {
type = letter_event
opening = ep3_laamps.1032.opening
desc = ep3_laamps.1032.desc
sender = scope:adventurer
trigger = { is_ai = no }
immediate = {
scope:adventurer = { create_landless_adventurer_title_tooltip_effect = yes }
}
option = {
name = ep3_laamps.1032.a
}
}
##################################################
# Become Adventurer - Revocation
# by Joe Parkin

View file

@ -2776,7 +2776,7 @@
duke_landless_minority_community_female_minority_community: "Mistress"
spouse_landless_minority_community_male: "Master"
spouse_landless_minority_community_holder_female: "Mistress"
d_laamp_test_jewish:0 "$congregationist$ Community of $dynn_britannia_kohn$"
d_laamp_test_jewish:0 "$ashkenazi$ Community of the $dynn_britannia_kohn$'s"
d_laamp_test_jewish_adj:0 "Jewish"
d_laamp_test_jewish_article:0 "The "
minority_community_domicile_title: "[CHARACTER.GetFirstNamePossessiveNoTooltip] $game_concept_minority_community$"
@ -2790,3 +2790,13 @@
minority_community_move_desc: "#T Move $minority_community_type$#!\nMove your [game_concept_minority_community|E] to another [barony|E] within the [realm|E].\n@alert_icon! #alert_trial You will be unable to move it again for [EmptyScope.ScriptValue('estate_move_cooldown_value')|V0] days#!\n\n#S Cost:\n#![GetCostString( DOMICILE_TYPE.GetMoveCost( Character.Self ) )]\n\n#P Click to move your $minority_community_type$#!"
MINORITY_COMMUNITY_CONCEPT: "[game_concept_minority_community|E]"
domicile_minority_community: "the [CHARACTER.GetFaith.GetNameNoTooltip] $Community$ of [CHARACTER.GetHouse.GetNameNoTooltip]"
ep3_laamps.1030.t: "On the Move Again"
ep3_laamps.1030.desc: "My people no longer feel secure in this realm, as such we are leaving to ensure our safety.\n\nI am joined by my family and people, with varying degrees of enthusiasm for their new lives on the road.\n\n"
ep3_laamps.1030.heir: "In my stead, my [ROOT.Char.Custom2('RelationToMeShort', SCOPE.sC('laamp_inheritor'))] and heir, [laamp_inheritor.GetFirstName], has assumed my titles as the [laamp_inheritor.GetTitleAsNameNoTooltip] of [laamp_inheritor.GetPrimaryTitle.GetNameNoTierNoTooltip]."
ep3_laamps.1030.liege: "Any lands you ruled have been given to my erstwhile liege."
ep3_laamps.1030.new: "Any lands you ruled have been given to a local knight."
ep3_laamps.1030.a: "Well, what we are we waiting for?"
ep3_laamps.1032.opening: "[adventurer.Custom2('AppropriateGreetingPositive', ROOT.Char)]"
ep3_laamps.1032.desc: "My people no longer feel secure in this realm, as such we are leaving. Good Day my Liege."
ep3_laamps.1032.a: "A bold move, some might call foolish."

View file

@ -0,0 +1,177 @@
l_english:
master_of_hunt_court_position_task_dangerous_game: "Track Dangerous Game"
master_of_hunt_court_position_task_dangerous_game_desc: "Your $master_of_hunt_court_position$ will track down dangerous game, such as wolves or bears, that would yield a lot of prestige to hunt."
master_of_hunt_court_position_task_dangerous_game_tt: "Every year your $master_of_hunt_court_position$ has a chance of [hunt_sighting_no_prefix|E] dangerous game for you to[GetActivityType('activity_hunt').GetTextIcon][GetActivityType('activity_hunt').GetName]\n$master_of_hunt_court_position_task_generic_tt$"
master_of_hunt_court_position_task_regular_game: "Track Regular Game"
master_of_hunt_court_position_task_regular_game_desc: "Your $master_of_hunt_court_position$ will track down regular game, such as foxes or deer, that would yield an average amount of prestige to hunt."
master_of_hunt_court_position_task_regular_game_tt: "Every year your $master_of_hunt_court_position$ has a chance of [hunt_sighting_no_prefix|E] regular game for you to[GetActivityType('activity_hunt').GetTextIcon][GetActivityType('activity_hunt').GetName]\n$master_of_hunt_court_position_task_generic_tt$"
master_of_hunt_court_position_task_legendary_game: "Track Legendary Game"
master_of_hunt_court_position_task_legendary_game_desc: "Your $master_of_hunt_court_position$ will attempt to track down legendary beasts that would yield an enormous of prestige to hunt."
master_of_hunt_court_position_task_legendary_game_tt: "Every year your $master_of_hunt_court_position$ has a small chance of [hunt_sighting_no_prefix|E] legendary game for you to[GetActivityType('activity_hunt').GetTextIcon][GetActivityType('activity_hunt').GetName]\n$master_of_hunt_court_position_task_generic_tt$"
master_of_hunt_court_position_task_generic_tt: "The frequency of [hunt_sightings_no_prefix|E] increases with [aptitude|E] #weak (max one Sighting every 3 years)#!"
court_jester_court_position_task_entertain_court: "Entertain Courtiers"
court_jester_court_position_task_entertain_court_desc: "Your $court_jester_court_position$ will spend their time entertaining your courtiers with jokes, stories, and acrobatics."
court_jester_court_position_task_entertain_court_tt: "Every year the $court_jester_court_position$ has a chance to reduce the [stress_loss_i] [stress|E] of a random [courtier|E] #weak (preferring those close to you, such as your [children|E])#!\nIf their [aptitude|E] is at least $aptitude_good$, up to two [courtiers|E] can be targeted every year"
foreign_emissary_court_position_task_entertain_court_tt: "Every year the $foreign_emissary_court_position$ has a chance to reduce the [stress_loss_i] [stress|E] of a random [courtier|E] #weak (preferring those close to you, such as your [children|E])#!\nIf their [aptitude|E] is at least $aptitude_good$, up to two [courtiers|E] can be targeted every year"
court_jester_court_position_task_fuel_the_rumour_mill: "Fuel the Rumor Mill"
court_jester_court_position_task_fuel_the_rumour_mill_desc: "This character will spend their time spreading nonsensical rumors and misleading stories to slow down enemy schemes."
court_jester_court_position_task_fuel_the_rumour_mill_tt: "Every year the $court_jester_court_position$ has a chance to reduce the [stress_loss_i] [stress|E] of a random [courtier|E] #weak (preferring those close to you, such as your [children|E])#!"
court_jester_court_position_task_abuse_the_jester: "Abuse the Jester"
court_jester_court_position_task_abuse_the_jester_desc: "Your $court_jester_court_position$ will spend their time being abused and humiliated."
court_jester_court_position_task_abuse_the_jester_tt: "Every year the $court_jester_court_position$ has a chance to reduce the [stress_loss_i] [stress|E] of a random [courtier|E] #weak (preferring those close to you, such as your [children|E])#!"
court_artificer_court_position_task_martial: "Create Weapons, Armor, & go Adventuring"
court_artificer_court_position_task_martial_desc: "Your $court_artificer_court_position$ will gather inspiration to make swords, shields, armor, and go adventuring for the martially-inclined ruler."
court_artificer_court_position_task_martial_tt: "Every year the $court_artificer_court_position$ has a chance to gain a #V Weapon#!, #V Armor#!, or #V Adventure#! [inspiration|E] #weak (preferring [artifacts|E] you do not already have)#!\n$court_artificer_court_position_task_improved_chances_tt$"
court_artificer_court_position_task_learning: "Create Books & Tapestries"
court_artificer_court_position_task_learning_desc: "Your $court_artificer_court_position$ will gather inspiration to make books, tapestries, or archemical concoctions to please the learned ruler."
court_artificer_court_position_task_learning_tt: "Every year the $court_artificer_court_position$ has a chance to gain a #V Book#!, #V Weaver#!, or #V Alchemy#! [inspiration|E] #weak (preferring [artifacts|E] you do not already have)#!\n$court_artificer_court_position_task_improved_chances_tt$"
court_artificer_court_position_task_stewardship: "Create Crowns & Sculptures"
court_artificer_court_position_task_stewardship_desc: "Your $court_artificer_court_position$ will gather inspiration to make regalia, crowns, thrones, and other artifacts for the stewardly ruler."
court_artificer_court_position_task_stewardship_tt: "Every year the $court_artificer_court_position$ has a chance to gain a #V Smith#! or #V Artisan#! [inspiration|E]\n$court_artificer_court_position_task_improved_chances_tt$"
court_artificer_court_position_task_improved_chances_tt: "Using this task drastically increases the chance of gaining an [inspiration|E]"
must_have_an_equipped_illustrious_court_artifact: "You do #bold not#! have an equipped #V Illustrious#! [court_artifact|E]"
must_have_upgradeable_artifact_tt: "You do #bold not#! have an equipped [artifact|E] that can be upgraded"
antiquarian_court_position_task_scout_for_artifacts: "Search for Rare Artifacts"
antiquarian_court_position_task_scout_for_artifacts_desc: "Your $antiquarian_court_position$ will scour ancient tomes and investigate loose rumors, searching for those who might be able to bring something spectacular back to court."
antiquarian_court_position_task_scout_for_artifacts_tt: "Every year the $antiquarian_court_position$ has a chance to give someone at [court|E] an Adventure [inspiration|E] #weak (Chance increases with [aptitude|E])#!"
antiquarian_inspired_adventurer_message: "$antiquarian_court_position$ Inspires Adventure!"
antiquarian_inspired_adventurer_effect: "Your [ROOT.Char.Custom2('RelationToMeShort', SCOPE.sC('adventure_target'))] [adventure_target.GetFirstName] gained an #V Adventure#! [inspiration|E]"
antiquarian_court_position_task_improve_artifacts: "Improve Artifacts"
antiquarian_court_position_task_improve_artifacts_desc: "Your $antiquarian_court_position$ will improve and polish artifacts so that they are as impressive and effective as they can possibly be."
antiquarian_court_position_task_improve_artifacts_tt: "Every year the $antiquarian_court_position$ has a chance to improve an equipped [artifact|E]\nThe chance of improvement #weak (#bold not#! the quality)#! increases with [aptitude|E]\nCommon [artifacts|E] can be improved once, Masterworks twice, and so on"
antiquarian_improved_artifact_message: "[artifact_target.GetName] Improved!"
artifact_prowess_1_modifier: "Prowess"
artifact_knight_effectiveness_1_modifier: "Knight Effectiveness"
artifact_glory_hound_levy_contribution_mult_1_modifier: "Glory Hound Levy Contribution"
artifact_enemy_hard_casualty_modifier_1_modifier: "Enemy Hard Casualty Modifier"
artifact_plains_advantage_1_modifier: "Plains Advantage"
artifact_farmlands_advantage_1_modifier: "Farmlands Advantage"
artifact_hills_advantage_1_modifier: "Hills Advantage"
artifact_mountains_advantage_1_modifier: "Mountains Advantage"
artifact_desert_advantage_1_modifier: "Desert Advantage"
artifact_desert_mountains_advantage_1_modifier: "Desert Mountain Advantage"
artifact_oasis_advantage_1_modifier: "Oasis Advantage"
artifact_jungle_advantage_1_modifier: "Jungle Advantage"
artifact_forest_advantage_1_modifier: "Forest Advantage"
artifact_taiga_advantage_1_modifier: "Taiga Advantage"
artifact_wetlands_advantage_1_modifier: "Wetlands Advantage"
artifact_steppe_advantage_1_modifier: "Steppe Advantage"
artifact_floodplains_advantage_1_modifier: "Floodplains Advantage"
artifact_drylands_advantage_1_modifier: "Drylands Advantage"
artifact_controlled_province_advantage_1_modifier: "Controlled Territory Defender Advantage"
artifact_hard_casualty_modifier_1_modifier: "Hard Casualty Modifier"
artifact_monthly_minor_prestige_1_modifier: "Monthly Prestige"
artifact_monthly_prestige_1_modifier: "Monthly Prestige"
artifact_monthly_piety_1_modifier: "Monthly Piety"
artifact_monthly_prestige_add_1_modifier: "Monthly Renown"
artifact_short_reign_duration_mult_1_modifier: "Short Reign Reduction"
artifact_short_reign_duration_mult_3_modifier: "$artifact_short_reign_duration_mult_1_modifier$"
artifact_monthly_tyranny_1_modifier: "Monthly Tyranny Reduction"
artifact_happy_powerful_vassal_tax_contribution_mult_1_modifier: "Powerful Vassal Councillor Tax Contribution"
artifact_courtly_tax_contribution_mult_1_modifier: "Courtly Tax Contribution"
artifact_courtly_vassal_opinion_1_modifier: "Courtly Opinion"
artifact_powerful_vassal_opinion_1_modifier: "Powerful Vassal Opinion"
artifact_parochial_vassal_opinion_1_modifier: "Parochial Opinion"
artifact_parochial_tax_contribution_mult_1_modifier: "Parochial Tax Contribution"
artifact_courtier_and_guest_opinion_1_modifier: "Courtier and Guest Opinion"
artifact_men_at_arms_maintenance_1_modifier: "Men-at-Arms Maintenance Reduction"
artifact_build_gold_cost_1_modifier: "Build Cost Reduction"
artifact_domain_tax_mult_1_modifier: "Domain Taxes"
artifact_zealot_vassal_opinion_1_modifier: "Zealot Opinion"
artifact_zealot_tax_contribution_mult_1_modifier: "Zealot Tax Contribution"
artifact_belligerent_tax_contribution_mult_1_modifier: "Belligerent Tax Contribution"
artifact_court_grandeur_baseline_add_1_modifier: "Court Grandeur"
artifact_development_growth_1_modifier: "Development Growth"
artifact_glory_hound_vassal_opinion_1_modifier: "Glory Hound Opinion"
artifact_belligerent_vassal_opinion_1_modifier: "Belligerent Opinion"
artifact_vassal_limit_1_modifier: "Vassal Limit"
artifact_owned_scheme_secrecy_add_1_modifier: "Scheme Secrecy"
artifact_hostile_scheme_phase_duration_add_1_modifier: "Hostile Scheme Speed"
artifact_personal_scheme_phase_duration_add_1_modifier: "Personal Scheme Speed"
artifact_learn_language_scheme_phase_duration_add_1_modifier: "Learn Language Scheme Speed"
artifact_monthly_lifestyle_xp_minor_modifier: "Monthly Lifestyle Experience"
artifact_monthly_lifestyle_xp_miniscule_modifier: "Monthly Lifestyle Experience"
artifact_glory_hound_tax_contribution_mult_1_modifier: "Glory Hound Tax Contribution"
artifact_mercenary_hire_cost_mult_1_modifier: "Mercenary Hire Cost"
artifact_fertility_growth_1_modifier: "Fertility Growth"
artifact_herd_gain_1_modifier: "Herd Gain"
artifact_herd_conversion_1_modifier: "Herd Conversion"
artifact_health_gain_2_modifier: "Improved Health"
artifact_dread_baseline_add_2_modifier: "Dread"
artifact_pursue_efficiency_2_modifier: "Pursue Efficiency"
artifact_controlled_province_advantage_5_modifier: "Controlled Province Advantage"
artifact_negate_health_penalty_add_2_modifier: "Negate Health Penalty"
artifact_scheme_resistance_add_3_modifier: "Scheme Resistance"
antiquarian_court_position_task_exibit_artifacts: "Exibit Illustrious Artifacts"
antiquarian_court_position_task_exibit_artifacts_desc: "Your $antiquarian_court_position$ will exibit your illustrious artifacts to the public, showing everyone that you are in possession of something truly unique."
court_musician_court_position_task_bolster_legitimacy: "Bolster Legitimacy"
court_musician_court_position_task_bolster_legitimacy_desc: "This character will strengthen your right to rule through song and dance."
cupbearer_court_position_task_flatter_dignitaries: "Flatter Dignitaries"
cupbearer_court_position_task_flatter_dignitaries_desc: "This character will make sure that the cups of those you care for the most runneth over with vigor."
cupbearer_court_position_task_collect_tallage: "Collect Tallage"
cupbearer_court_position_task_collect_tallage_desc: "Your $cupbearer_court_position$ will collect extra taxes from vassal socialites and revelers, the feasts must not run out of food and drink, after all!"
cupbearer_court_position_task_collect_tallage_tt: "You do not have any [GetVassalStance( 'courtly' ).GetName] [vassals|E]"
high_almoner_court_position_task_appease_zealots_tt: "You do not have any [GetVassalStance( 'zealot' ).GetName] [vassals|E]"
chief_qadi_court_position_task_public_alms: "Lead Public Sadaqah"
chief_qadi_court_position_task_public_alms_desc: "Your $chief_qadi_court_position$ will divide alms to the poor and destitute of your domain in your name."
high_almoner_court_position_task_appease_zealots: "Appease Zealots"
high_almoner_court_position_task_appease_zealots_desc: "This character will drum up your name in the eyes of the pious vassals of the realm."
food_taster_court_position_task_brew_poisons: "Brew Poisons"
food_taster_court_position_task_brew_poisons_desc: "This character will spend their time behind the scenes, concocting poisons for use in schemes."
food_taster_court_position_task_ear_to_the_ground: "Keep an Ear to the Ground"
food_taster_court_position_task_ear_to_the_ground_desc: "This character will spend their time hiding behind curtains, listening intently for rumors and gossip."
court_poet_court_position_task_create_poetry: "Write Poetry"
court_poet_court_position_task_create_poetry_desc: "Your $court_poet_court_position$ will spend their time penning and reciting beautiful poems about you, your realm, and your achievements."
court_poet_court_position_task_create_poetry_tt: "Every year the $court_poet_court_position$ will write a poem, giving you a [modifier|E] improving either your [legitimacy|E], [piety|E], [advantage|E], or [attraction|E] for three years #weak (Effect increases with [aptitude|E])#!"
court_poet_court_position_task_japanese_legacy_addendum: "Each finished Poem will provide a one time increase of [bloc_cohesion|E]"
court_poet_poetry_desc: "[court_poet_from_task.Custom('GeneratePoem_Outro_Rhyming')]"
court_poet_poetry_title: "[court_poet_from_task.Custom('GeneratePoem_Title')|U]"
court_poet_romance_aptitude_1_modifier: "Court Poet: Poetry about Romance"
court_poet_romance_aptitude_2_modifier: "$court_poet_romance_aptitude_1_modifier$"
court_poet_romance_aptitude_3_modifier: "$court_poet_romance_aptitude_1_modifier$"
court_poet_romance_aptitude_4_modifier: "$court_poet_romance_aptitude_1_modifier$"
court_poet_romance_aptitude_5_modifier: "$court_poet_romance_aptitude_1_modifier$"
court_poet_mourning_aptitude_1_modifier: "Court Poet: Poetry about Mourning"
court_poet_mourning_aptitude_2_modifier: "$court_poet_mourning_aptitude_1_modifier$"
court_poet_mourning_aptitude_3_modifier: "$court_poet_mourning_aptitude_1_modifier$"
court_poet_mourning_aptitude_4_modifier: "$court_poet_mourning_aptitude_1_modifier$"
court_poet_mourning_aptitude_5_modifier: "$court_poet_mourning_aptitude_1_modifier$"
court_poet_legacy_aptitude_1_modifier: "Court Poet: Poetry about Legacy"
court_poet_legacy_aptitude_2_modifier: "$court_poet_legacy_aptitude_1_modifier$"
court_poet_legacy_aptitude_3_modifier: "$court_poet_legacy_aptitude_1_modifier$"
court_poet_legacy_aptitude_4_modifier: "$court_poet_legacy_aptitude_1_modifier$"
court_poet_legacy_aptitude_5_modifier: "$court_poet_legacy_aptitude_1_modifier$"
court_poet_strife_aptitude_1_modifier: "Court Poet: Poetry about Strife"
court_poet_strife_aptitude_2_modifier: "$court_poet_strife_aptitude_1_modifier$"
court_poet_strife_aptitude_3_modifier: "$court_poet_strife_aptitude_1_modifier$"
court_poet_strife_aptitude_4_modifier: "$court_poet_strife_aptitude_1_modifier$"
court_poet_strife_aptitude_5_modifier: "$court_poet_strife_aptitude_1_modifier$"
drinks_alcohol: "They drink alcohol"

File diff suppressed because it is too large Load diff