Pretty good
This commit is contained in:
parent
095c30fddf
commit
a739d2c92a
25 changed files with 80404 additions and 2 deletions
887
common/activities/activity_types/camp_party.txt
Normal file
887
common/activities/activity_types/camp_party.txt
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4927
common/activities/activity_types/feast.txt
Normal file
4927
common/activities/activity_types/feast.txt
Normal file
File diff suppressed because it is too large
Load diff
1694
common/activities/activity_types/funeral.txt
Normal file
1694
common/activities/activity_types/funeral.txt
Normal file
File diff suppressed because it is too large
Load diff
1030
common/activities/activity_types/hike.txt
Normal file
1030
common/activities/activity_types/hike.txt
Normal file
File diff suppressed because it is too large
Load diff
5789
common/activities/activity_types/hunt.txt
Normal file
5789
common/activities/activity_types/hunt.txt
Normal file
File diff suppressed because it is too large
Load diff
2222
common/activities/activity_types/imperial_examination.txt
Normal file
2222
common/activities/activity_types/imperial_examination.txt
Normal file
File diff suppressed because it is too large
Load diff
1244
common/activities/activity_types/inspection.txt
Normal file
1244
common/activities/activity_types/inspection.txt
Normal file
File diff suppressed because it is too large
Load diff
1010
common/activities/activity_types/playdate.txt
Normal file
1010
common/activities/activity_types/playdate.txt
Normal file
File diff suppressed because it is too large
Load diff
4095
common/activities/activity_types/tour.txt
Normal file
4095
common/activities/activity_types/tour.txt
Normal file
File diff suppressed because it is too large
Load diff
4166
common/activities/activity_types/wedding.txt
Normal file
4166
common/activities/activity_types/wedding.txt
Normal file
File diff suppressed because it is too large
Load diff
2696
common/character_interactions/00_character_interactions.txt
Normal file
2696
common/character_interactions/00_character_interactions.txt
Normal file
File diff suppressed because it is too large
Load diff
388
common/character_interactions/00_culture_interactions.txt
Normal file
388
common/character_interactions/00_culture_interactions.txt
Normal 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.
|
||||
}
|
||||
}
|
||||
5531
common/character_interactions/00_marriage_interactions.txt
Normal file
5531
common/character_interactions/00_marriage_interactions.txt
Normal file
File diff suppressed because it is too large
Load diff
7703
common/character_interactions/00_religious_interactions.txt
Normal file
7703
common/character_interactions/00_religious_interactions.txt
Normal file
File diff suppressed because it is too large
Load diff
492
common/character_interactions/02_ep1_interactions.txt
Normal file
492
common/character_interactions/02_ep1_interactions.txt
Normal 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 }
|
||||
}
|
||||
}
|
||||
}
|
||||
5491
common/character_interactions/03_fp2_interactions.txt
Normal file
5491
common/character_interactions/03_fp2_interactions.txt
Normal file
File diff suppressed because it is too large
Load diff
7965
common/character_interactions/06_ep3_laamp_interactions.txt
Normal file
7965
common/character_interactions/06_ep3_laamp_interactions.txt
Normal file
File diff suppressed because it is too large
Load diff
11274
common/character_interactions/09_mpo_interactions.txt
Normal file
11274
common/character_interactions/09_mpo_interactions.txt
Normal file
File diff suppressed because it is too large
Load diff
7131
common/court_positions/types/00_camp_officers.txt
Normal file
7131
common/court_positions/types/00_camp_officers.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -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 = {
|
||||
|
|
|
|||
3275
common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt
Normal file
3275
common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue