imported
This commit is contained in:
parent
1d8698f72b
commit
9716fe80f6
527 changed files with 1641520 additions and 0 deletions
195
N3OW/events/_events.info
Normal file
195
N3OW/events/_events.info
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
=== Structure ===
|
||||
|
||||
Note: this is very very incomplete...
|
||||
|
||||
event_namespace.42 = {
|
||||
type = character_event/letter_event/court_event/activity_event # Default to character, what type of event this is
|
||||
scope = scope_type # Optional, defaults to character, will make this event fire with a different expected root scope. none can be used to have no scopes set up.
|
||||
window = window_name # Optional, what special event file and widget in gui/event_windows should this event use, only used for character events
|
||||
|
||||
# If you have a cooldown, the recipient will get a variable saved with that duration. The variable name will be the event ID
|
||||
# Anything that checks that an event is legal to fire will also check that the recipient doesn't have that variable
|
||||
cooldown = {
|
||||
days/weeks/months/years = script value
|
||||
}
|
||||
|
||||
# DLC or Mod that this Event belongs to, shown in Event Window if set.
|
||||
content_source = X
|
||||
|
||||
# Specify a character portrait to appear in the event on the specified position.
|
||||
left_portrait = X
|
||||
right_portrait = X
|
||||
center_portrait = X # not used in all event types
|
||||
lower_left_portrait = X
|
||||
lower_center_portrait = X
|
||||
lower_right_portrait = X
|
||||
sender = X # for letter events, required
|
||||
# X can be one of:
|
||||
X = event target
|
||||
X = {
|
||||
character = event target
|
||||
trigger = ... # optional, a trigger saying whether this portrait should be visible, in the scope of the portrait character, the event scope is accessible as root scope
|
||||
animation = animation name # optional, the animation to show for this portrait. It's used if no triggered animations pass their trigger. The default animation will be used if nothing is this item is not specified.
|
||||
scripted_animation = key_of_scripted_animation # optional, instead of 'animation' you can also define a 'scripted_animation'
|
||||
|
||||
# A list of triggered animations. The first triggered animation that passes the trigger check will be used.
|
||||
triggered_animation = {
|
||||
trigger = ...
|
||||
animation = animation name
|
||||
# Instead of 'animation' you can also define a 'scripted_animation'
|
||||
scripted_animation = key_of_scripted_animation
|
||||
|
||||
### brief: camera ( database key, optional )
|
||||
# A camera type defined for a triggered animation will override the default
|
||||
# camera defined for the event portrait if that animation is chosen
|
||||
#
|
||||
camera = camera_name
|
||||
}
|
||||
triggered_animation = ...
|
||||
|
||||
# A list of triggered outfits. The first triggered otfit that passes the trigger check will be used.
|
||||
triggered_outfit = {
|
||||
trigger = ...
|
||||
outfit_tags = ...
|
||||
remove_default_outfit = ...
|
||||
hide_info = ...
|
||||
}
|
||||
triggered_outfit = ...
|
||||
|
||||
# Override camera to be used instead of the normal event ones
|
||||
camera = camera_key
|
||||
|
||||
outfit_tags = { tag1 tag2 } # Specifies outfit tags for this portrait in ascending priority (i.e. tag2 will "override" tag1 here if anything with tag2 is found in a specific portrait modifier category)
|
||||
remove_default_outfit = yes/no # If set to yes, portrait modifier categories in which nothing matches any of the event tags will be disabled completely (no by default)
|
||||
hide_info = yes/no # If set to yes, only the portrait will be shown, with no identifiable elements (no CoA, tooltips, clicks...) (no by default)
|
||||
}
|
||||
|
||||
# Specify an artifact to appear in the event on the specified position
|
||||
artifact = {
|
||||
target = event target
|
||||
position = lower_left_portrait/lower_center_portrait/lower_right_portrait
|
||||
# Can't be in the same position as a portrait
|
||||
trigger = ... # Optional, as for character portraits
|
||||
}
|
||||
|
||||
# This will be run if a queued event (or one triggered immediately from script) does not fulfil its trigger
|
||||
# Events failing to trigger from an on-action will *not* run this
|
||||
on_trigger_fail = {
|
||||
some effect
|
||||
}
|
||||
|
||||
# Specify custom widgets to embed in the event. See section about Custom Widgets below.
|
||||
widgets = {
|
||||
widget = {
|
||||
# Trigger that controls the availability of the widget. Scope: same as the event, after immediate effect. Default: always = yes
|
||||
is_shown = {}
|
||||
# Name of the widget to use. Must be at the path <event_window_widgets>/<widget_name>.gui
|
||||
gui = "<widget_name>"
|
||||
# Name of the widget where this custome widget will be insert
|
||||
container = "<container_widget_name>"
|
||||
# Some widgets require a custom controller (see below). Default: default
|
||||
controller = <controller_type>
|
||||
# Effect to set up the scope as required by the controller. Scope: same as the event, after immediate effect, doesn't modify the event scope, though. Default: {}
|
||||
setup_scope = {}
|
||||
}
|
||||
}
|
||||
widget = { ... } # alternative syntax for a single widget. Follows the same info as the widget in the widgets parameter
|
||||
|
||||
option = { # An option the player/AI can pick
|
||||
# Localization key for the event option button text
|
||||
name = X
|
||||
|
||||
# The effects that will be run when picking the options. Written directly here with no label
|
||||
X..
|
||||
|
||||
# A trigger that has to be fulfilled for this option to be valid.
|
||||
trigger = {}
|
||||
|
||||
# If the event is invalid, but this trigger is valid, then the option will be shown (but disabled).
|
||||
# This behavior is also influenced by the EVENT_OPTIONS_SHOWN_HIDE_UNAVAILABLE or SCHEME_PREPARATION_OPTIONS_SHOWN_HIDE_UNAVAILABLE defines depending on event type.
|
||||
show_as_unavailable = {}
|
||||
|
||||
# Highlights the event portrait of this character while this option is hovered. This is in addition to the automatic highlighting when hovering an event option that has an effect that affects portrait characters.
|
||||
highlight_portrait = scope:a_character
|
||||
|
||||
reason = <flag> # Special reason for why this option is unlocked, can be any arbitrary string, is be checked in the UI to show special by reason
|
||||
|
||||
# Parameters to impact the way ai-characters pick options to resolve their events
|
||||
# We have 2 mutually exclusive parameters; ai_chance, and ai_will_select where the only difference is the syntax for calculating the value
|
||||
ai_chance = { # See common/scripted_modifiers/_scripted_modifiers.info for more details
|
||||
base = 10
|
||||
modifier = {
|
||||
add = 5
|
||||
<trigger>
|
||||
}
|
||||
modifier = {
|
||||
factor = 0.5
|
||||
<trigger>
|
||||
}
|
||||
}
|
||||
|
||||
ai_will_select = { # See common/script_values/_script_values.info for more details
|
||||
base = 10
|
||||
if = {
|
||||
limit = {
|
||||
<trigger>
|
||||
}
|
||||
add = 5
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
<trigger>
|
||||
}
|
||||
multiply = 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
theme = "" # Theme to use in the event. For a list, check: 00_event_themes.txt
|
||||
override_background = { # A background that can be shown when the event pops up. This overrides the theme one. In case that there are multiples the first one that fits the trigger will be the one selected. In case none fits the ones inthe theme will be checked after.
|
||||
trigger = {} # Receives the event scope to check if it's valid.
|
||||
reference = "" # Path to the texture
|
||||
}
|
||||
override_transition = { # A transition that can be shown when the event pops up, before the event options and backgrounds. This overrides the theme one. In case that there are multiples the first one that fits the trigger will be the one selected. In case none fits the ones inthe theme will be checked after.
|
||||
trigger = {} # Receives the event scope to check if it's valid.
|
||||
reference = "" # Path to the texture
|
||||
}
|
||||
override_effect_2d = { # A 2d effect that can be put on top of the background. This overrides the theme one. In case that there are multiples the first one that fits the trigger will be the one selected. In case none fits the ones inthe theme will be checked after.
|
||||
trigger = {} # Receives the event scope to check if it's valid.
|
||||
reference = "" # key to the effect
|
||||
}
|
||||
override_icon = { # An icon that can be shown when the event pops up. This overrides the theme one. In case that there are multiples the first one that fits the trigger will be the one selected. In case none fits the ones inthe theme will be checked after.
|
||||
trigger = {} # Receives the event scope to check if it's valid.
|
||||
reference = "" # Path to the texture
|
||||
}
|
||||
override_header_background = { # The header asset located behind the event icon. This overrides the header asset defined by the theme. If there are multiples defined here, the first one that passes its trigger will be selected. If none are valid, then the theme's header asset will be used
|
||||
trigger = {}
|
||||
reference = ""
|
||||
}
|
||||
override_sound = { # A sound that can be played when the event pops up. This overrides the theme one. In case that there are multiples the first one that fits the trigger will be the one selected. In case none fits the ones inthe theme will be checked after.
|
||||
trigger = {} # Receives the event scope to check if it's valid.
|
||||
reference = "" # Reference of the sound
|
||||
}
|
||||
orphan = yes # The game will not log an error about this event being unreferenced. Useful for debug events
|
||||
}
|
||||
|
||||
=== Custom Widgets ===
|
||||
|
||||
Custom widgets can be embedded into events.
|
||||
GUI files must be placed at the event_window_widgets path (see paths.settings). The name of the file must match the widget name.
|
||||
|
||||
Some widgets that modify the game require a custom controller. This should be documented in the widget's GUI file.
|
||||
The data context type available in the GUI depends on the controller type.
|
||||
|
||||
Some controllers require special scope setup, which should be documented under Notes below. Use the setup_scope effect for that.
|
||||
|
||||
Available controllers:
|
||||
|
||||
Controller Type | Data Context Name | Notes
|
||||
------------------------+----------------------------------------+-------------------------------------------------------------------------------------------------------------
|
||||
default | EventWindowWidget | Default controller, no special behavior
|
||||
name_character | EventWindowWidgetNameCharacter | Changes a character's name. Scope must have the name_character_target saved scope.
|
||||
text | EventWindowWidgetEnterText | Saves some text onto the character.
|
||||
event_chain_progress | EventWindowWidgetChainProgress | Displays progress through an event chain, needs event_chain_length and event_chain_progress scope values set
|
||||
struggle_info | EventWindowCustomWidgetStruggleInfo | Displays information for the struggle, needs "start" scope value set
|
||||
situation_info | EventWindowCustomWidgetSituationInfo | Displays information for the situation
|
||||
891
N3OW/events/accolade_events.txt
Normal file
891
N3OW/events/accolade_events.txt
Normal file
|
|
@ -0,0 +1,891 @@
|
|||
namespace = accolade
|
||||
|
||||
#Accolade rank gain notification
|
||||
# by Jason Cantalini
|
||||
accolade.0001 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = acclaimed_knight
|
||||
has_dlc_feature = accolades
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:changing_accolade = {
|
||||
acclaimed_knight = {
|
||||
save_scope_as = acclaimed_knight
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:changing_accolade = {
|
||||
accolade_rank >= 5
|
||||
}
|
||||
}
|
||||
send_interface_message = {
|
||||
type = msg_accolade_gained_rank
|
||||
title = accolade.0001.notification_high
|
||||
desc = accolade_rank_unlock_notification_tooltip_high
|
||||
left_icon = scope:acclaimed_knight
|
||||
}
|
||||
}
|
||||
else = {
|
||||
send_interface_message = {
|
||||
type = msg_accolade_gained_rank
|
||||
title = accolade.0001.notification_low
|
||||
desc = accolade_rank_unlock_notification_tooltip_low
|
||||
left_icon = scope:acclaimed_knight
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Accolade rank loss notification
|
||||
# by Jason Cantalini
|
||||
accolade.0002 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
has_dlc_feature = accolades
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:changing_accolade.acclaimed_knight
|
||||
}
|
||||
scope:changing_accolade = {
|
||||
acclaimed_knight = {
|
||||
save_scope_as = acclaimed_knight
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:changing_accolade = {
|
||||
accolade_rank >= 5
|
||||
}
|
||||
}
|
||||
send_interface_message = {
|
||||
type = msg_accolade_lost_rank
|
||||
title = accolade.0002.notification_high
|
||||
left_icon = scope:acclaimed_knight
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:acclaimed_knight = {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
desc = accolade_rank_loss_notification_tooltip_high
|
||||
}
|
||||
desc = accolade_rank_loss_notification_tooltip_high_dead
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
scope:changing_accolade = {
|
||||
accolade_rank >= 1
|
||||
}
|
||||
}
|
||||
send_interface_message = {
|
||||
type = msg_accolade_lost_rank
|
||||
title = accolade.0002.notification_low
|
||||
left_icon = scope:acclaimed_knight
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:acclaimed_knight = {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
desc = accolade_rank_loss_notification_tooltip_low
|
||||
}
|
||||
desc = accolade_rank_loss_notification_tooltip_low_dead
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
send_interface_message = {
|
||||
type = msg_accolade_lost_rank
|
||||
title = accolade.0002.notification_low
|
||||
left_icon = scope:acclaimed_knight
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:acclaimed_knight = {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
desc = accolade_rank_loss_notification_tooltip_no_rank
|
||||
}
|
||||
desc = accolade_rank_loss_notification_tooltip_no_rank_dead
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:changing_accolade.acclaimed_knight }
|
||||
scope:changing_accolade = { accolade_rank >= 1 }
|
||||
}
|
||||
send_interface_message = {
|
||||
type = msg_accolade_lost_rank
|
||||
title = accolade.0002.notification_empty
|
||||
desc = accolade_rank_loss_notification_tooltip_empty
|
||||
}
|
||||
}
|
||||
else = {
|
||||
send_interface_message = {
|
||||
type = msg_accolade_lost_rank
|
||||
title = accolade.0002.notification_low
|
||||
desc = accolade_rank_loss_notification_tooltip_empty_no_rank
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Accolade becomes idle
|
||||
# by Jason Cantalini
|
||||
accolade.0003 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
has_dlc_feature = accolades
|
||||
}
|
||||
|
||||
immediate = {
|
||||
send_interface_toast = {
|
||||
type = msg_accolade_active
|
||||
title = accolade.0003.accolade_becomes_idle.tt
|
||||
custom_tooltip = accolade.0003.accolade_becomes_idle_effects.tt
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Accolade succession with unchanged types
|
||||
# by Jason Cantalini
|
||||
accolade.0004 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
has_dlc_feature = accolades
|
||||
}
|
||||
|
||||
immediate = {
|
||||
send_interface_toast = {
|
||||
type = msg_accolade_succession
|
||||
title = accolade.0004.new_acclaimed_knight.tt
|
||||
left_icon = scope:new_acclaimed_knight
|
||||
custom_tooltip = accolade.0004.new_acclaimed_knight_name.tt
|
||||
custom_tooltip = accolade.glory_loss.tt
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Accolade succession with new secondary type
|
||||
# by Jason Cantalini
|
||||
accolade.0005 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
has_dlc_feature = accolades
|
||||
}
|
||||
|
||||
immediate = {
|
||||
send_interface_toast = {
|
||||
type = msg_accolade_succession_toast
|
||||
title = accolade.0005.new_acclaimed_knight_new_type.tt
|
||||
left_icon = scope:new_acclaimed_knight
|
||||
custom_tooltip = accolade.0005.new_accolade_type.tt
|
||||
custom_tooltip = accolade.0005.new_acclaimed_knight_succeeds.tt
|
||||
custom_tooltip = accolade.glory_loss.tt
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Find Accolade Successor knight creation event
|
||||
accolade.0006 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = scope:accolade_in_need
|
||||
exists = root.capital_province
|
||||
highest_held_title_tier >= tier_county
|
||||
NOT = { government_has_flag = government_is_theocracy }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# try to find a pool character first
|
||||
every_courtier_or_guest = {
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
is_healthy = yes
|
||||
save_temporary_scope_as = temp_knight
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = scope:temp_knight
|
||||
}
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
every_pool_character = {
|
||||
province = root.capital_province
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
is_healthy = yes
|
||||
save_temporary_scope_as = temp_knight
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = scope:temp_knight
|
||||
}
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
random_in_list = {
|
||||
list = potential_knights
|
||||
save_scope_as = chosen_knight
|
||||
}
|
||||
|
||||
# create a character if needed
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:chosen_knight }
|
||||
}
|
||||
#if = { # Balance testing variables
|
||||
# limit = {
|
||||
# NOT = {
|
||||
# exists = global_var:accolade_fail
|
||||
# }
|
||||
# }
|
||||
# set_global_variable = {
|
||||
# name = accolade_fail
|
||||
# value = 1
|
||||
# }
|
||||
#}
|
||||
#else = {
|
||||
# change_global_variable = {
|
||||
# name = accolade_fail
|
||||
# add = 1
|
||||
# }
|
||||
#}
|
||||
accolade_character_creation_effect = yes
|
||||
}
|
||||
#else = { # Balance testing variables
|
||||
# if = {
|
||||
# limit = {
|
||||
# NOT = {
|
||||
# exists = global_var:accolade_success
|
||||
# }
|
||||
# }
|
||||
# set_global_variable = {
|
||||
# name = accolade_success
|
||||
# value = 1
|
||||
# }
|
||||
# }
|
||||
# else = {
|
||||
# change_global_variable = {
|
||||
# name = accolade_success
|
||||
# add = 1
|
||||
# }
|
||||
# }
|
||||
#}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:chosen_knight
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = scope:chosen_knight
|
||||
}
|
||||
# make sure the chosen knight is not already a courtier
|
||||
scope:chosen_knight ?= {
|
||||
NOT = { is_courtier_of = root }
|
||||
}
|
||||
}
|
||||
add_courtier = scope:chosen_knight
|
||||
}
|
||||
|
||||
trigger_event = {
|
||||
id = accolade.0007
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#Find Accolade Successor join event
|
||||
accolade.0007 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:accolade_in_need
|
||||
exists = scope:chosen_knight
|
||||
exists = root.capital_province
|
||||
highest_held_title_tier >= tier_county
|
||||
NOT = { government_has_flag = government_is_theocracy }
|
||||
}
|
||||
|
||||
#SEND A TOAST NOTIFICATION
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_neutral
|
||||
title = accolade.0007.notification
|
||||
left_icon = scope:chosen_knight
|
||||
custom_tooltip = accolade_call_acclaimed_knight_tooltip
|
||||
hidden_effect = {
|
||||
scope:chosen_knight = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { is_knight_of = root }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
send_interface_message = {
|
||||
type = event_accolade_bad_text
|
||||
title = accolade.0007.notification_fail
|
||||
desc = accolade_find_successor_fail_notification_tooltip
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Call Acclaimed Knight first knight
|
||||
accolade.0008 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = scope:empty_accolade_1
|
||||
exists = root.capital_province
|
||||
highest_held_title_tier >= tier_county
|
||||
NOT = { government_has_flag = government_is_theocracy }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# try to find a pool character first
|
||||
scope:empty_accolade_1 = {
|
||||
save_scope_as = accolade_in_need
|
||||
}
|
||||
every_courtier_or_guest = {
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
every_pool_character = {
|
||||
province = root.capital_province
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
random_in_list = {
|
||||
list = potential_knights
|
||||
save_scope_as = chosen_knight
|
||||
}
|
||||
|
||||
# create a character if needed
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:chosen_knight }
|
||||
}
|
||||
accolade_character_creation_effect = yes
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = scope:chosen_knight
|
||||
}
|
||||
}
|
||||
add_courtier = scope:chosen_knight
|
||||
}
|
||||
|
||||
trigger_event = {
|
||||
id = accolade.0013
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Call Acclaimed Knight second knight
|
||||
accolade.0009 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = scope:empty_accolade_2
|
||||
exists = root.capital_province
|
||||
highest_held_title_tier >= tier_county
|
||||
NOT = { government_has_flag = government_is_theocracy }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# try to find a pool character first
|
||||
scope:empty_accolade_2 = {
|
||||
save_scope_as = accolade_in_need
|
||||
}
|
||||
every_courtier_or_guest = {
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_clergy = no
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
every_pool_character = {
|
||||
province = root.capital_province
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_clergy = no
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
random_in_list = {
|
||||
list = potential_knights
|
||||
save_scope_as = chosen_knight
|
||||
}
|
||||
|
||||
# create a character if needed
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:chosen_knight }
|
||||
}
|
||||
accolade_character_creation_effect = yes
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = scope:chosen_knight
|
||||
}
|
||||
}
|
||||
add_courtier = scope:chosen_knight
|
||||
}
|
||||
trigger_event = {
|
||||
id = accolade.0013
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Call Acclaimed Knight third knight
|
||||
accolade.0010 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = scope:empty_accolade_3
|
||||
exists = root.capital_province
|
||||
highest_held_title_tier >= tier_county
|
||||
NOT = { government_has_flag = government_is_theocracy }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# try to find a pool character first
|
||||
scope:empty_accolade_3 = {
|
||||
save_scope_as = accolade_in_need
|
||||
}
|
||||
every_courtier_or_guest = {
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
every_pool_character = {
|
||||
province = root.capital_province
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
random_in_list = {
|
||||
list = potential_knights
|
||||
save_scope_as = chosen_knight
|
||||
}
|
||||
|
||||
# create a character if needed
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:chosen_knight }
|
||||
}
|
||||
accolade_character_creation_effect = yes
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = scope:chosen_knight
|
||||
}
|
||||
}
|
||||
add_courtier = scope:chosen_knight
|
||||
}
|
||||
trigger_event = {
|
||||
id = accolade.0013
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Call Acclaimed Knight fourth knight
|
||||
accolade.0011 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = scope:empty_accolade_4
|
||||
exists = root.capital_province
|
||||
highest_held_title_tier >= tier_county
|
||||
NOT = { government_has_flag = government_is_theocracy }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# try to find a pool character first
|
||||
scope:empty_accolade_4 = {
|
||||
save_scope_as = accolade_in_need
|
||||
}
|
||||
every_courtier_or_guest = {
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
every_pool_character = {
|
||||
province = root.capital_province
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
random_in_list = {
|
||||
list = potential_knights
|
||||
save_scope_as = chosen_knight
|
||||
}
|
||||
|
||||
# create a character if needed
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:chosen_knight }
|
||||
}
|
||||
accolade_character_creation_effect = yes
|
||||
}
|
||||
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = scope:chosen_knight
|
||||
}
|
||||
}
|
||||
add_courtier = scope:chosen_knight
|
||||
}
|
||||
trigger_event = {
|
||||
id = accolade.0013
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Call Acclaimed Knight fifth knight
|
||||
accolade.0012 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = scope:empty_accolade_5
|
||||
exists = root.capital_province
|
||||
highest_held_title_tier >= tier_county
|
||||
NOT = { government_has_flag = government_is_theocracy }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# try to find a pool character first
|
||||
scope:empty_accolade_5 = {
|
||||
save_scope_as = accolade_in_need
|
||||
}
|
||||
every_courtier_or_guest = {
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
every_pool_character = {
|
||||
province = root.capital_province
|
||||
limit = {
|
||||
ep2_can_be_accolade_successor_base_trigger = yes
|
||||
can_be_knight_trigger = { ARMY_OWNER = root }
|
||||
is_valid_successor_for_accolade = scope:accolade_in_need
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value <= faith_astray_level
|
||||
}
|
||||
}
|
||||
is_clergy = no
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = this
|
||||
}
|
||||
is_healthy = yes
|
||||
}
|
||||
add_to_list = potential_knights
|
||||
}
|
||||
random_in_list = {
|
||||
list = potential_knights
|
||||
save_scope_as = chosen_knight
|
||||
}
|
||||
|
||||
# create a character if needed
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:chosen_knight }
|
||||
}
|
||||
accolade_character_creation_effect = yes
|
||||
}
|
||||
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
can_recruit_character_to_court_trigger = {
|
||||
RECRUITER = root
|
||||
RECRUITEE = scope:chosen_knight
|
||||
}
|
||||
}
|
||||
add_courtier = scope:chosen_knight
|
||||
}
|
||||
trigger_event = {
|
||||
id = accolade.0013
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Call Accolade Knight join event
|
||||
accolade.0013 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:accolade_in_need
|
||||
exists = scope:chosen_knight
|
||||
exists = root.capital_province
|
||||
highest_held_title_tier >= tier_county
|
||||
NOR = {
|
||||
government_has_flag = government_is_theocracy
|
||||
has_character_flag = had_accolade_successor_notification
|
||||
}
|
||||
}
|
||||
|
||||
#SEND A TOAST NOTIFICATION
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_neutral
|
||||
title = accolade.0013.notification
|
||||
left_icon = scope:chosen_knight
|
||||
custom_tooltip = accolade_call_acclaimed_knight_tooltip
|
||||
hidden_effect = {
|
||||
scope:chosen_knight = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { is_knight_of = root }
|
||||
}
|
||||
set_knight_status = force
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add_character_flag = {
|
||||
flag = had_accolade_successor_notification
|
||||
months = 6
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = scope:accolade_in_need
|
||||
exists = scope:chosen_knight
|
||||
exists = root.capital_province
|
||||
highest_held_title_tier >= tier_county
|
||||
NOT = { government_has_flag = government_is_theocracy }
|
||||
}
|
||||
|
||||
#SEND A FEED NOTIFICATION FOR NEXT KNIGHTS
|
||||
send_interface_message = {
|
||||
type = event_accolade_good_with_text
|
||||
title = accolade.0013.notification
|
||||
desc = accolade_call_acclaimed_knight_tooltip
|
||||
left_icon = scope:chosen_knight
|
||||
scope:chosen_knight = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { is_knight_of = root }
|
||||
}
|
||||
set_knight_status = force
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
send_interface_message = {
|
||||
type = event_accolade_bad_text
|
||||
title = accolade.0013.notification_fail
|
||||
desc = accolade_call_acclaimed_knight_fail_notification_tooltip
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1029
N3OW/events/activities/activity_system_events.txt
Normal file
1029
N3OW/events/activities/activity_system_events.txt
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
4549
N3OW/events/activities/chariot_race_activity/chariot_race_events.txt
Normal file
4549
N3OW/events/activities/chariot_race_activity/chariot_race_events.txt
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
5148
N3OW/events/activities/coronation_activity/coronation_events.txt
Normal file
5148
N3OW/events/activities/coronation_activity/coronation_events.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,70 @@
|
|||
namespace = coronation_events
|
||||
|
||||
scripted_trigger coronation_events_3001_angry_vassal_trigger = {
|
||||
is_available_healthy_ai_adult = yes
|
||||
opinion = {
|
||||
target = scope:host
|
||||
value < 10
|
||||
}
|
||||
}
|
||||
|
||||
coronation_events.3001 = {
|
||||
type = letter_event
|
||||
opening = coronation_events.3001.opening
|
||||
desc = coronation_events.3001.desc
|
||||
sender = scope:main_vassal
|
||||
|
||||
trigger = {
|
||||
any_vassal = {
|
||||
coronation_events_3001_angry_vassal_trigger = yes
|
||||
count > 1
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
ordered_vassal = {
|
||||
limit = {
|
||||
coronation_events_3001_angry_vassal_trigger = yes
|
||||
}
|
||||
order_by = primary_title.tier
|
||||
save_scope_as = main_vassal
|
||||
}
|
||||
every_vassal = {
|
||||
limit = {
|
||||
coronation_events_3001_angry_vassal_trigger = yes
|
||||
NOT = { this = scope:main_vassal }
|
||||
}
|
||||
add_to_list = angry_vassals
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Invite them
|
||||
name = coronation_events.3001.a
|
||||
show_as_tooltip = {
|
||||
every_in_list = {
|
||||
list = angry_vassals
|
||||
add_to_activity = root.involved_activity
|
||||
}
|
||||
}
|
||||
hidden_effect = {
|
||||
every_in_list = {
|
||||
list = angry_vassals
|
||||
set_location = root.location
|
||||
add_to_activity_without_travel = root.involved_activity
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Nah
|
||||
name = coronation_events.3001.b
|
||||
add_legitimacy = major_legitimacy_loss
|
||||
every_in_list = {
|
||||
list = angry_vassals
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = not_invited_coronation_opinion
|
||||
opinion = -15
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10379
N3OW/events/activities/coronation_activity/coronation_events_1.txt
Normal file
10379
N3OW/events/activities/coronation_activity/coronation_events_1.txt
Normal file
File diff suppressed because it is too large
Load diff
15420
N3OW/events/activities/coronation_activity/coronation_events_6.txt
Normal file
15420
N3OW/events/activities/coronation_activity/coronation_events_6.txt
Normal file
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
5660
N3OW/events/activities/coronation_activity/prelude_events.txt
Normal file
5660
N3OW/events/activities/coronation_activity/prelude_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2639
N3OW/events/activities/debate_activity/az_debate_events.txt
Normal file
2639
N3OW/events/activities/debate_activity/az_debate_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3594
N3OW/events/activities/debate_activity/debate_events.txt
Normal file
3594
N3OW/events/activities/debate_activity/debate_events.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,227 @@
|
|||
namespace = feast_default_axel
|
||||
|
||||
feast_default_axel.1001 = {
|
||||
type = activity_event
|
||||
title = feast_default_axel.1001.t
|
||||
desc = feast_default_axel.1001.desc
|
||||
theme = feast_activity
|
||||
override_background = { reference = bp1_wine_cellar }
|
||||
right_portrait = {
|
||||
character = scope:youngster_1
|
||||
animation = wedding_drunk
|
||||
camera = camera_event_very_right
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:youngster_2
|
||||
animation = interested
|
||||
camera = camera_event_very_left
|
||||
}
|
||||
left_portrait = {
|
||||
character = root
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
root = {
|
||||
OR = {
|
||||
has_trait = drunkard
|
||||
has_trait = lifestyle_reveler
|
||||
}
|
||||
}
|
||||
}
|
||||
animation = eyeroll
|
||||
}
|
||||
animation = disapproval
|
||||
}
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
faith = { trait_is_sin = drunkard }
|
||||
this = scope:host
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
NOT = {
|
||||
this = scope:host
|
||||
is_spouse_of = root
|
||||
}
|
||||
age = { 16 25 }
|
||||
is_physically_able_ai_adult = yes
|
||||
num_of_relation_friend < 2
|
||||
location = scope:host.location
|
||||
save_temporary_scope_as = temp_first
|
||||
}
|
||||
any_attending_character = {
|
||||
NOR = {
|
||||
this = scope:host
|
||||
is_spouse_of = root
|
||||
this = scope:temp_first
|
||||
}
|
||||
age = { 16 25 }
|
||||
is_physically_able_ai_adult = yes
|
||||
num_of_relation_friend < 2
|
||||
location = scope:host.location
|
||||
number_of_traits_in_common = {
|
||||
target = scope:temp_first
|
||||
value >= 1
|
||||
}
|
||||
}
|
||||
}
|
||||
#serious stuff only
|
||||
NOT = {
|
||||
primary_title ?= title:h_china
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
involved_activity = { save_scope_as = activity }
|
||||
save_scope_as = host
|
||||
scope:activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
NOT = {
|
||||
this = scope:host
|
||||
}
|
||||
age = { 16 25 }
|
||||
is_physically_able_ai_adult = yes
|
||||
num_of_relation_friend < 2
|
||||
location = scope:host.location
|
||||
}
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
age < 19
|
||||
add = 3
|
||||
}
|
||||
}
|
||||
save_scope_as = youngster_1
|
||||
}
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
NOR = {
|
||||
this = scope:host
|
||||
this = scope:youngster_1
|
||||
}
|
||||
age = { 16 25 }
|
||||
is_physically_able_ai_adult = yes
|
||||
num_of_relation_friend < 2
|
||||
location = scope:host.location
|
||||
number_of_traits_in_common = {
|
||||
target = scope:youngster_1
|
||||
value >= 1
|
||||
}
|
||||
}
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
age < 19
|
||||
add = 3
|
||||
}
|
||||
}
|
||||
save_scope_as = youngster_2
|
||||
}
|
||||
}
|
||||
scope:youngster_1 = {
|
||||
progress_towards_friend_effect = {
|
||||
REASON = friend_feast_talking_and_laughing
|
||||
CHARACTER = scope:youngster_2
|
||||
OPINION = default_friend_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # As if I would ever...
|
||||
name = feast_default_axel.1001.a
|
||||
trigger = { has_trait = drunkard }
|
||||
add_character_modifier = {
|
||||
modifier = drunk_high_spirits
|
||||
years = 10
|
||||
}
|
||||
stress_impact = {
|
||||
greedy = minor_stress_impact_loss
|
||||
base = medium_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
ai_value_modifier = {
|
||||
# Doesn't like sharing
|
||||
ai_greed = 1
|
||||
}
|
||||
modifier = {
|
||||
has_trait = greedy
|
||||
add = 20
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Let the kids drink!
|
||||
name = feast_default_axel.1001.b
|
||||
scope:activity = {
|
||||
every_attending_character = {
|
||||
limit = { has_trait = gregarious }
|
||||
custom = custom.every_activity_guest_with_gregarious_trait
|
||||
add_opinion = {
|
||||
modifier = amused_opinion
|
||||
opinion = 15
|
||||
target = root
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = lifestyle_reveler
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = lifestyle_reveler
|
||||
value = 5
|
||||
}
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = bad_influence_modifier
|
||||
years = 10
|
||||
}
|
||||
stress_impact = {
|
||||
gregarious = medium_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
ai_value_modifier = {
|
||||
ai_sociability = 1
|
||||
}
|
||||
modifier = {
|
||||
has_trait = lifestyle_reveler
|
||||
add = 20
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Shame on both of you!
|
||||
name = feast_default_axel.1001.c
|
||||
trigger = {
|
||||
NOR = {
|
||||
# Not allowed to judge others for drinking and/or revelling
|
||||
has_trait = gregarious
|
||||
has_trait = drunkard
|
||||
}
|
||||
}
|
||||
add_prestige = medium_prestige_gain
|
||||
add_dread = minor_dread_gain
|
||||
reverse_add_opinion = {
|
||||
modifier = unfriendly_opinion
|
||||
target = scope:youngster_1
|
||||
}
|
||||
reverse_add_opinion = {
|
||||
modifier = unfriendly_opinion
|
||||
target = scope:youngster_2
|
||||
}
|
||||
stress_impact = {
|
||||
compassionate = medium_stress_impact_gain
|
||||
vengeful = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
ai_value_modifier = {
|
||||
ai_boldness = 1
|
||||
ai_vengefulness = 1
|
||||
}
|
||||
modifier = {
|
||||
has_trait = compassionate
|
||||
add = -40
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,613 @@
|
|||
|
||||
namespace = feast_default_jason
|
||||
|
||||
# Legend
|
||||
# involved_activity
|
||||
# activity_host
|
||||
# activity_location
|
||||
|
||||
scripted_trigger feast_default_jason_100_attending_soldier_trigger = {
|
||||
is_ai = yes
|
||||
NOT = {
|
||||
this = root
|
||||
}
|
||||
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root }
|
||||
is_adult = yes
|
||||
NOT = {
|
||||
is_at_war_with = root
|
||||
}
|
||||
}
|
||||
scripted_trigger feast_default_jason_100_attending_ruler_trigger = {
|
||||
gold >= minor_gold_value
|
||||
is_ai = yes
|
||||
is_ruler = yes
|
||||
is_landed = yes
|
||||
NOT = {
|
||||
this = root
|
||||
}
|
||||
is_adult = yes
|
||||
NOR = {
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
|
||||
any_ally = {
|
||||
is_at_war_with = root
|
||||
}
|
||||
is_allied_to = root
|
||||
government_has_flag = government_is_herder
|
||||
}
|
||||
is_at_war = no
|
||||
opinion = {
|
||||
target = root
|
||||
value >= 0
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
root = {
|
||||
highest_held_title_tier >= tier_empire
|
||||
}
|
||||
}
|
||||
highest_held_title_tier >= tier_duchy
|
||||
}
|
||||
trigger_else = {
|
||||
highest_held_title_tier >= tier_county
|
||||
}
|
||||
current_military_strength > 0
|
||||
NOR = {
|
||||
any_tributary = {
|
||||
is_at_war_with = root
|
||||
}
|
||||
suzerain ?= {
|
||||
is_at_war_with = root
|
||||
}
|
||||
top_suzerain ?= {
|
||||
is_at_war_with = root
|
||||
}
|
||||
any_liege_or_above = {
|
||||
is_at_war_with = root
|
||||
suzerain ?= {
|
||||
is_at_war_with = root
|
||||
}
|
||||
}
|
||||
any_vassal_or_below = {
|
||||
is_at_war_with = root
|
||||
}
|
||||
AND = {
|
||||
is_confederation_member = yes
|
||||
confederation = {
|
||||
is_house_based = no # any_confederation_member is not performant for house blocs
|
||||
any_confederation_member = {
|
||||
is_at_war_with = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#You are stressed at the feast and your realm is at war
|
||||
feast_default_jason.100 = {
|
||||
type = activity_event
|
||||
title = feast_default_jason.100.t
|
||||
desc = feast_default_jason.100.desc
|
||||
theme = feast_activity
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = stress
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:soldier
|
||||
animation = inspect_weapon
|
||||
camera = camera_event_center_pointing_forward
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:other_ruler
|
||||
animation = debating
|
||||
camera = camera_event_very_right
|
||||
}
|
||||
lower_right_portrait = scope:foe
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
has_raised_armies = yes
|
||||
is_landed = yes
|
||||
stress_level >= 1
|
||||
is_at_war = yes
|
||||
any_character_war = {
|
||||
NOR = {
|
||||
using_cb = undirected_great_holy_war
|
||||
using_cb = directed_great_holy_war
|
||||
}
|
||||
OR = {
|
||||
AND = {
|
||||
primary_defender = root
|
||||
defender_war_score <= 10
|
||||
}
|
||||
AND = {
|
||||
primary_attacker = root
|
||||
attacker_war_score <= 10
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
feast_default_jason_100_attending_soldier_trigger = yes
|
||||
save_temporary_scope_as = soldier_temp
|
||||
}
|
||||
any_attending_character = {
|
||||
feast_default_jason_100_attending_ruler_trigger = yes
|
||||
NOT = {
|
||||
this = scope:soldier_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = {
|
||||
stress_level >= 2
|
||||
add = 1
|
||||
}
|
||||
modifier = {
|
||||
stress_level >= 3
|
||||
add = 1
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
|
||||
scope:activity = {
|
||||
ordered_attending_character = {
|
||||
order_by = martial
|
||||
limit = {
|
||||
feast_default_jason_100_attending_soldier_trigger = yes
|
||||
}
|
||||
save_scope_as = soldier
|
||||
}
|
||||
#Try to save valid supporter if host of coronation
|
||||
if = {
|
||||
limit = {
|
||||
activity_host = root
|
||||
has_activity_type = activity_coronation
|
||||
}
|
||||
ordered_guest_subset = {
|
||||
name = supporter
|
||||
order_by = {
|
||||
value = "opinion(root)"
|
||||
}
|
||||
limit = {
|
||||
feast_default_jason_100_attending_ruler_trigger = yes
|
||||
NOT = {
|
||||
this = scope:soldier
|
||||
}
|
||||
}
|
||||
save_scope_as = other_ruler
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
exists = scope:other_ruler
|
||||
}
|
||||
}
|
||||
ordered_attending_character = {
|
||||
order_by = {
|
||||
value = "opinion(root)"
|
||||
}
|
||||
limit = {
|
||||
feast_default_jason_100_attending_ruler_trigger = yes
|
||||
NOT = {
|
||||
this = scope:soldier
|
||||
}
|
||||
}
|
||||
save_scope_as = other_ruler
|
||||
}
|
||||
}
|
||||
}
|
||||
random_character_war = {
|
||||
limit = {
|
||||
NOR = {
|
||||
using_cb = undirected_great_holy_war
|
||||
using_cb = directed_great_holy_war
|
||||
}
|
||||
OR = {
|
||||
AND = {
|
||||
primary_defender = root
|
||||
defender_war_score <= 10
|
||||
}
|
||||
AND = {
|
||||
primary_attacker = root
|
||||
attacker_war_score <= 10
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = war
|
||||
if = {
|
||||
limit = {
|
||||
primary_defender = root
|
||||
}
|
||||
primary_attacker = {
|
||||
save_scope_as = foe
|
||||
}
|
||||
}
|
||||
else = {
|
||||
primary_defender = {
|
||||
save_scope_as = foe
|
||||
}
|
||||
}
|
||||
}
|
||||
ordered_army = {
|
||||
order_by = army_size
|
||||
save_scope_as = army
|
||||
location = {
|
||||
save_scope_as = army_location
|
||||
}
|
||||
}
|
||||
}
|
||||
#Add ruler to war
|
||||
option = {
|
||||
trigger = {
|
||||
#I seek advancement!
|
||||
trigger_if = {
|
||||
limit = {
|
||||
involved_activity = {
|
||||
NOT = { activity_host = root }
|
||||
has_activity_type = activity_coronation
|
||||
}
|
||||
scope:war = {
|
||||
primary_attacker = root
|
||||
}
|
||||
}
|
||||
has_activity_intent = coronation_seize_advantages
|
||||
}
|
||||
#I seek aid for my people
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
involved_activity = {
|
||||
NOT = { activity_host = root }
|
||||
has_activity_type = activity_coronation
|
||||
}
|
||||
scope:war = {
|
||||
primary_defender = root
|
||||
}
|
||||
}
|
||||
has_activity_intent = coronation_advocate_domain
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
involved_activity = {
|
||||
activity_host = root
|
||||
has_activity_type = activity_coronation
|
||||
}
|
||||
has_activity_intent = coronation_embrace_supporters
|
||||
}
|
||||
has_activity_intent = coronation_embrace_supporters
|
||||
}
|
||||
trigger_else = {
|
||||
diplomacy >= high_skill_rating
|
||||
}
|
||||
}
|
||||
show_as_unavailable = {
|
||||
always = yes
|
||||
}
|
||||
name = feast_default_jason.100.a
|
||||
if = {
|
||||
limit = {
|
||||
scope:war = {
|
||||
primary_defender = root
|
||||
}
|
||||
}
|
||||
scope:war = {
|
||||
add_defender = scope:other_ruler
|
||||
}
|
||||
}
|
||||
else = {
|
||||
scope:war = {
|
||||
add_attacker = scope:other_ruler
|
||||
}
|
||||
}
|
||||
scope:other_ruler = {
|
||||
if = {
|
||||
limit = {
|
||||
NOR = {
|
||||
is_liege_or_above_of = root
|
||||
is_allied_to = root
|
||||
highest_held_title_tier > root.highest_held_title_tier
|
||||
}
|
||||
}
|
||||
add_prestige = medium_prestige_gain
|
||||
}
|
||||
else = {
|
||||
add_prestige = minor_prestige_gain
|
||||
}
|
||||
}
|
||||
hidden_effect = {
|
||||
add_opinion = {
|
||||
modifier = grateful_opinion
|
||||
target = scope:other_ruler
|
||||
opinion = 30
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
stubborn = minor_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
craven = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 150
|
||||
ai_value_modifier = {
|
||||
ai_boldness = -0.5
|
||||
ai_rationality = 0.5
|
||||
}
|
||||
modifier = {
|
||||
factor = 5
|
||||
OR = {
|
||||
scope:war = {
|
||||
primary_defender = root
|
||||
attacker_war_score >= 40
|
||||
}
|
||||
scope:war = {
|
||||
primary_attacker = root
|
||||
defender_war_score >= 40
|
||||
}
|
||||
scope:war = {
|
||||
primary_defender = root
|
||||
primary_attacker = {
|
||||
current_military_strength > root.current_military_strength
|
||||
|
||||
}
|
||||
}
|
||||
scope:war = {
|
||||
primary_attacker = root
|
||||
primary_defender = {
|
||||
current_military_strength > root.current_military_strength
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 2
|
||||
has_trait = craven
|
||||
scope:war = {
|
||||
primary_defender = root
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0.5
|
||||
OR = {
|
||||
has_trait = stubborn
|
||||
has_trait = arrogant
|
||||
|
||||
scope:war = {
|
||||
primary_defender = root
|
||||
primary_attacker = {
|
||||
current_military_strength < root.current_military_strength
|
||||
|
||||
}
|
||||
}
|
||||
scope:war = {
|
||||
primary_attacker = root
|
||||
primary_defender = {
|
||||
current_military_strength < root.current_military_strength
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#Spend the rest of the feast speaking of victory
|
||||
option = {
|
||||
name = feast_default_jason.100.b
|
||||
if = {
|
||||
limit = {
|
||||
involved_activity = {
|
||||
has_activity_type = activity_coronation
|
||||
}
|
||||
this = involved_activity.activity_host
|
||||
}
|
||||
custom_tooltip = coronation_tt_positive_tiny
|
||||
involved_activity = { activity_special_type_progression_tiny = yes }
|
||||
coronation_add_magnificence_log_effect = {
|
||||
VALUE = flag:positive_tiny
|
||||
CHAR = root
|
||||
}
|
||||
}
|
||||
else = {
|
||||
add_prestige = miniscule_prestige_gain
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
has_activity_intent = coronation_exalt_crown
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = boasted_of_victories_modifier
|
||||
years = 5
|
||||
desc = victories_reduce_stress_add_prestige_desc
|
||||
}
|
||||
}
|
||||
else = {
|
||||
add_character_modifier = {
|
||||
modifier = boasted_of_victories_modifier
|
||||
years = 3
|
||||
desc = victories_reduce_stress_add_prestige_desc
|
||||
}
|
||||
}
|
||||
custom_tooltip = victories_reduce_stress_add_prestige_tt
|
||||
if = {
|
||||
limit = {
|
||||
has_activity_intent = coronation_exalt_crown
|
||||
}
|
||||
custom_tooltip = feast_default_jason.100.b_exalt_the_crown
|
||||
}
|
||||
stress_impact = {
|
||||
arrogant = minor_stress_impact_loss
|
||||
ambitious = miniscule_stress_impact_loss
|
||||
humble = miniscule_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = 0.5
|
||||
ai_energy = 0.5
|
||||
}
|
||||
modifier = {
|
||||
factor = 5
|
||||
|
||||
}
|
||||
modifier = {
|
||||
factor = 2
|
||||
OR = {
|
||||
has_trait = arrogant
|
||||
has_trait = ambitious
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = humble
|
||||
scope:war = {
|
||||
primary_defender = root
|
||||
attacker_war_score >= 30
|
||||
}
|
||||
scope:war = {
|
||||
primary_attacker = root
|
||||
defender_war_score >= 30
|
||||
}
|
||||
scope:war = {
|
||||
primary_defender = root
|
||||
primary_attacker = {
|
||||
current_military_strength > root.current_military_strength
|
||||
|
||||
}
|
||||
}
|
||||
scope:war = {
|
||||
primary_attacker = root
|
||||
primary_defender = {
|
||||
current_military_strength > root.current_military_strength
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#Another round!
|
||||
option = {
|
||||
name = {
|
||||
trigger = {
|
||||
drinks_alcohol_trigger = yes
|
||||
NOR = {
|
||||
has_trait = comfort_eater
|
||||
has_trait = gluttonous
|
||||
}
|
||||
}
|
||||
text = feast_default_jason.100.c
|
||||
}
|
||||
name = {
|
||||
trigger = {
|
||||
OR = {
|
||||
drinks_alcohol_trigger = no
|
||||
has_trait = comfort_eater
|
||||
has_trait = gluttonous
|
||||
}
|
||||
}
|
||||
text = feast_default_jason.100.c_hungee
|
||||
}
|
||||
#Alcohol stress loss
|
||||
if = {
|
||||
limit = {
|
||||
drinks_alcohol_trigger = yes
|
||||
NOR = {
|
||||
has_trait = comfort_eater
|
||||
has_trait = gluttonous
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
has_trait = drunkard
|
||||
}
|
||||
}
|
||||
random = {
|
||||
chance = 5
|
||||
add_trait = drunkard
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
temperate = medium_stress_impact_gain
|
||||
diligent = miniscule_stress_impact_gain
|
||||
vengeful = miniscule_stress_impact_gain
|
||||
drunkard = medium_stress_impact_loss
|
||||
lifestyle_reveler = medium_stress_impact_loss
|
||||
gregarious = miniscule_stress_impact_loss
|
||||
content = minor_stress_impact_loss
|
||||
lazy = minor_stress_impact_loss
|
||||
fickle = miniscule_stress_impact_loss
|
||||
calm = miniscule_stress_impact_loss
|
||||
patient = miniscule_stress_impact_loss
|
||||
}
|
||||
}
|
||||
#Food stress loss
|
||||
if = {
|
||||
limit = {
|
||||
OR = {
|
||||
drinks_alcohol_trigger = no
|
||||
has_trait = comfort_eater
|
||||
has_trait = gluttonous
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
has_trait = comfort_eater
|
||||
}
|
||||
}
|
||||
random = {
|
||||
chance = 5
|
||||
add_trait = comfort_eater
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
temperate = medium_stress_impact_gain
|
||||
diligent = miniscule_stress_impact_gain
|
||||
vengeful = miniscule_stress_impact_gain
|
||||
gluttonous = medium_stress_impact_loss
|
||||
comfort_eater = medium_stress_impact_loss
|
||||
gregarious = miniscule_stress_impact_loss
|
||||
content = minor_stress_impact_loss
|
||||
lazy = minor_stress_impact_loss
|
||||
fickle = miniscule_stress_impact_loss
|
||||
calm = miniscule_stress_impact_loss
|
||||
patient = miniscule_stress_impact_loss
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = -0.5
|
||||
ai_energy = -0.5
|
||||
}
|
||||
modifier = {
|
||||
factor = 2
|
||||
OR = {
|
||||
has_trait = gluttonous
|
||||
has_trait = drunkard
|
||||
has_trait = comfort_eater
|
||||
has_trait = lifestyle_reveler
|
||||
has_trait = content
|
||||
has_trait = lazy
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = temperate
|
||||
has_trait = diligent
|
||||
has_trait = vengeful
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,142 @@
|
|||
|
||||
namespace = feast_default_joe
|
||||
|
||||
scripted_trigger feast_default_joe_1010_agent_trigger = {
|
||||
is_ai = yes
|
||||
intrigue > mediocre_skill_rating # avoid suck
|
||||
$SCHEME$ = {
|
||||
any_scheme_agent_slot = { save_temporary_scope_as = agent_slot_temp }
|
||||
}
|
||||
is_valid_as_agent_in_slot = scope:agent_slot_temp
|
||||
save_temporary_scope_as = agent_temp
|
||||
NOR = {
|
||||
$SCHEME$ = { scheme_is_character_agent = scope:agent_temp } # Not already in the scheme
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = root } # Doesn't hate you
|
||||
}
|
||||
}
|
||||
|
||||
feast_default_joe.1010 = { # Get agent to join your scheme
|
||||
type = activity_event
|
||||
title = feast_default_joe.1010.t
|
||||
desc = feast_default_joe.1010.desc
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = scheme
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:agent
|
||||
animation = war_over_win
|
||||
}
|
||||
lower_center_portrait = scope:scheme.scheme_target_character
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
any_scheme = { save_temporary_scope_as = scheme_temp }
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
feast_default_joe_1010_agent_trigger = { SCHEME = scope:scheme_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
root = { any_scheme = { save_temporary_scope_as = scheme_temp } }
|
||||
feast_default_joe_1010_agent_trigger = { SCHEME = scope:scheme_temp }
|
||||
scope:agent_slot_temp = { is_filled = no } # prefer schemes with unfilled slots
|
||||
}
|
||||
alternative_limit = {
|
||||
root = { any_scheme = { save_temporary_scope_as = scheme_temp } }
|
||||
feast_default_joe_1010_agent_trigger = { SCHEME = scope:scheme_temp }
|
||||
}
|
||||
add_to_list = agent_list
|
||||
scope:scheme_temp = { add_to_list = scheme_list }
|
||||
}
|
||||
}
|
||||
random_in_list = { # Pick a scheme
|
||||
list = scheme_list
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = { add = scheme_success_chance }
|
||||
}
|
||||
save_scope_as = scheme
|
||||
}
|
||||
random_in_list = { # Pick an agent
|
||||
list = agent_list
|
||||
limit = { feast_default_joe_1010_agent_trigger = { SCHEME = scope:scheme } }
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = { add = intrigue }
|
||||
is_of_major_interest_to_weight_up_modifier = { CHARACTER = scope:scheme.scheme_target_character }
|
||||
}
|
||||
save_scope_as = agent
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Attract all
|
||||
name = feast_default_joe.1010.a
|
||||
trigger = {
|
||||
custom_tooltip = {
|
||||
text = feast_default_joe.1010.a.trigger
|
||||
OR = {
|
||||
intrigue >= decent_skill_rating
|
||||
has_trait = schemer
|
||||
}
|
||||
}
|
||||
}
|
||||
skill = intrigue
|
||||
show_as_unavailable = { always = yes }
|
||||
custom_tooltip = {
|
||||
text = all_guests_agent_more_likely_join_scheme_tt
|
||||
scope:activity = {
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
is_valid_as_agent_in_any_slot = scope:scheme
|
||||
trigger_if = {
|
||||
limit = { exists = scope:scheme.scheme_target_character }
|
||||
NOT = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:scheme.scheme_target_character }
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:scheme = {
|
||||
add_to_variable_list = {
|
||||
name = increased_agent_join_acceptance
|
||||
target = prev
|
||||
months = 6
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Focus on one
|
||||
name = feast_default_joe.1010.b
|
||||
custom_tooltip = {
|
||||
text = agent_more_likely_join_scheme_tt
|
||||
scope:scheme = {
|
||||
add_to_variable_list = {
|
||||
name = increased_agent_join_acceptance
|
||||
target = scope:agent
|
||||
months = 6
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_default_joe.1010.c
|
||||
add_prestige = medium_prestige_loss
|
||||
scope:scheme = { change_opportunities = 1 }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_default_joe.1010.d
|
||||
scope:scheme = { add_scheme_progress = 15 }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,502 @@
|
|||
namespace = feast_default_laurence
|
||||
#Bitter rebelious fellow vassal wants to murder your liege at your feast
|
||||
feast_default_laurence.100 = {
|
||||
type = activity_event
|
||||
title = feast_default_laurence.100.t
|
||||
desc = feast_default_laurence.100.desc
|
||||
|
||||
theme = feast_activity
|
||||
|
||||
override_background = { reference = corridor_night }
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_dishonorable
|
||||
camera = camera_event_very_left
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:conspiratorial_fellow
|
||||
#animation = marshal_dagger
|
||||
animation = marshal
|
||||
camera = camera_event_left_forward
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:intent_target
|
||||
animation = wedding_drunk
|
||||
camera = camera_event_right_away
|
||||
}
|
||||
cooldown = { years = 10 }
|
||||
trigger = {
|
||||
# Correct intent for vibes time.
|
||||
has_activity_intent = murder_attendee_intent
|
||||
# Some extra cautious validity checks.
|
||||
intent_target ?= {
|
||||
is_alive = yes
|
||||
}
|
||||
liege = intent_target
|
||||
#Someone who has been in a war with our liege and therefore has a grudge
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
this != root
|
||||
is_ai = yes
|
||||
any_memory = {
|
||||
OR = {
|
||||
has_memory_type = offensive_war
|
||||
has_memory_type = defensive_war
|
||||
}
|
||||
any_memory_participant = {
|
||||
this = root.intent_target
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
immediate = {
|
||||
save_scope_as = feast_host
|
||||
scope:activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
this != root
|
||||
is_ai = yes
|
||||
any_memory = {
|
||||
OR = {
|
||||
has_memory_type = offensive_war
|
||||
has_memory_type = defensive_war
|
||||
}
|
||||
any_memory_participant = {
|
||||
this = root.intent_target
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = conspiratorial_fellow
|
||||
random_memory = {
|
||||
limit = {
|
||||
OR = {
|
||||
has_memory_type = offensive_war
|
||||
has_memory_type = defensive_war
|
||||
}
|
||||
any_memory_participant = {
|
||||
this = root.intent_target
|
||||
}
|
||||
}
|
||||
save_scope_as = war_memory
|
||||
}
|
||||
}
|
||||
}
|
||||
intent_target = {
|
||||
save_scope_as = intent_target
|
||||
}
|
||||
}
|
||||
# You agree to turn a blind eye to his murder attempt on your liege
|
||||
option = {
|
||||
name = feast_default_laurence.100.a
|
||||
scope:conspiratorial_fellow = {
|
||||
duel = {
|
||||
skill = intrigue
|
||||
value = scope:intent_target.intrigue
|
||||
|
||||
30 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -39
|
||||
}
|
||||
min = 5
|
||||
desc = feast_default_laurence.100.a.tt.success
|
||||
scope:intent_target = {
|
||||
trigger_event = feast_default_laurence.101
|
||||
}
|
||||
show_as_tooltip = {
|
||||
scope:conspiratorial_fellow = {
|
||||
unknown_murder_effect = {
|
||||
VICTIM = scope:intent_target
|
||||
MURDERER = scope:conspiratorial_fellow
|
||||
REASON = death_murder
|
||||
}
|
||||
add_trait = murderer
|
||||
}
|
||||
}
|
||||
}
|
||||
70 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -39
|
||||
}
|
||||
min = 10
|
||||
desc = feast_default_laurence.100.a.tt.failure
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
type = event_intrigue_bad
|
||||
title = feast_default_laurence.100.a.tt.failure
|
||||
left_icon = scope:intent_target
|
||||
scope:conspiratorial_fellow = {
|
||||
add_prestige = medium_prestige_loss
|
||||
add_secret = {
|
||||
type = secret_murder_attempt
|
||||
target = scope:intent_target
|
||||
}
|
||||
reverse_add_opinion = {
|
||||
target = scope:intent_target
|
||||
modifier = suspicion_opinion
|
||||
opinion = -60
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
brave = minor_stress_impact_loss
|
||||
wrathful = medium_stress_impact_loss
|
||||
ambitious = medium_stress_impact_loss
|
||||
content = medium_stress_impact_gain
|
||||
calm = minor_stress_impact_gain
|
||||
craven = miniscule_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = craven
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = brave
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = calm
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = wrathful
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = content
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = ambitious
|
||||
factor = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
# Simply gather information on HerHis habits and ticks.
|
||||
option = {
|
||||
name = feast_default_laurence.100.b
|
||||
|
||||
# Do we already have a scheme against them? If so, add the modifier immediately.
|
||||
if = {
|
||||
limit = {
|
||||
any_scheme = {
|
||||
scheme_type = murder
|
||||
scheme_target_character = scope:intent_target
|
||||
}
|
||||
}
|
||||
random_scheme = {
|
||||
limit = {
|
||||
scheme_type = murder
|
||||
scheme_target_character = scope:intent_target
|
||||
}
|
||||
add_scheme_modifier = { type = feast_learnt_habits_modifier }
|
||||
}
|
||||
}
|
||||
# Otherwise, note that we notify them that they'll gain a bonus to murdering this character if they start in the next X years.
|
||||
else = {
|
||||
# If we've already got someone logged for this, warn that we'll overwrite them.
|
||||
if = {
|
||||
limit = { has_variable = feast_events_ewan_0001_bonus_value }
|
||||
custom_tooltip = feast_events_ewan.0001.e.tt.bonus_to_murder_scheme.overwrite
|
||||
}
|
||||
# Set the variable.
|
||||
set_variable = {
|
||||
name = feast_events_ewan_0001_bonus_value
|
||||
value = scope:intent_target
|
||||
years = feast_events_ewan_0001_murder_scheme_bonus_time_to_use_value
|
||||
}
|
||||
# Inform the player.
|
||||
custom_tooltip = feast_events_ewan.0001.e.tt.bonus_to_murder_scheme
|
||||
}
|
||||
stress_impact = {
|
||||
craven = miniscule_stress_impact_loss
|
||||
wrathful = medium_stress_impact_loss
|
||||
ambitious = medium_stress_impact_loss
|
||||
content = medium_stress_impact_gain
|
||||
brave = minor_stress_impact_gain
|
||||
calm = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = brave
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = craven
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = calm
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = wrathful
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = content
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = ambitious
|
||||
factor = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
#Threaten conspiratorial_fellow and get hook
|
||||
option = {
|
||||
name = feast_default_laurence.100.c
|
||||
if = {
|
||||
limit = {
|
||||
can_add_hook = {
|
||||
target = scope:conspiratorial_fellow
|
||||
type = suspicious_activity_hook
|
||||
}
|
||||
}
|
||||
add_hook = {
|
||||
type = suspicious_activity_hook
|
||||
target = scope:conspiratorial_fellow
|
||||
}
|
||||
add_intrigue_lifestyle_xp = minor_lifestyle_xp
|
||||
}
|
||||
else = {
|
||||
add_intrigue_lifestyle_xp = major_lifestyle_xp
|
||||
}
|
||||
stress_impact = {
|
||||
paranoid = medium_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
deceitful = medium_stress_impact_loss
|
||||
forgiving = miniscule_stress_impact_gain
|
||||
honest = minor_stress_impact_gain
|
||||
trusting = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = forgiving
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = vengeful
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = honest
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = deceitful
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = trusting
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = paranoid
|
||||
factor = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#You were killed by a vassal at another vassal's murder intent feast
|
||||
feast_default_laurence.101 = {
|
||||
type = activity_event
|
||||
title = feast_default_laurence.100.t
|
||||
desc = feast_default_laurence.101.desc
|
||||
|
||||
theme = feast_activity
|
||||
|
||||
left_portrait = {
|
||||
character = scope:intent_target
|
||||
animation = sick_stomach
|
||||
camera = camera_event_very_left
|
||||
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:feast_host
|
||||
animation = wedding_drunk
|
||||
camera = camera_event_right_away
|
||||
}
|
||||
option = {
|
||||
name = feast_default_laurence.101.a
|
||||
scope:conspiratorial_fellow = {
|
||||
unknown_murder_effect = {
|
||||
VICTIM = scope:intent_target
|
||||
MURDERER = scope:conspiratorial_fellow
|
||||
REASON = death_murder
|
||||
}
|
||||
add_trait = murderer
|
||||
}
|
||||
scope:feast_host = {
|
||||
trigger_event = feast_default_laurence.102
|
||||
}
|
||||
}
|
||||
}
|
||||
#Your guest succeeded at murdering your liege
|
||||
feast_default_laurence.102 = {
|
||||
|
||||
type = activity_event
|
||||
title = feast_default_laurence.100.t
|
||||
desc = feast_default_laurence.102.desc
|
||||
|
||||
theme = feast_activity
|
||||
|
||||
left_portrait = {
|
||||
character = scope:feast_host
|
||||
animation = personality_dishonorable
|
||||
camera = camera_event_very_left
|
||||
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:intent_target
|
||||
animation = sick_stomach
|
||||
camera = camera_event_very_left_activity
|
||||
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:conspiratorial_fellow
|
||||
animation = sword_coup_degrace
|
||||
camera = camera_event_right_away
|
||||
}
|
||||
#Befriend murderer but gain murder trait!
|
||||
option = {
|
||||
name = feast_default_laurence.102.a
|
||||
add_intrigue_lifestyle_xp = minor_lifestyle_xp
|
||||
set_relation_friend = {
|
||||
reason = friend_bonded_over_sins
|
||||
target = scope:conspiratorial_fellow
|
||||
}
|
||||
reverse_add_opinion = {
|
||||
target = scope:conspiratorial_fellow
|
||||
modifier = befriended_opinion
|
||||
opinion = 50
|
||||
}
|
||||
scope:feast_host = {
|
||||
add_trait = murderer
|
||||
}
|
||||
stress_impact = {
|
||||
gregarious = medium_stress_impact_loss
|
||||
trusting = medium_stress_impact_loss
|
||||
shy = minor_stress_impact_gain
|
||||
paranoid = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = shy
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = gregarious
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = paranoid
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = trusting
|
||||
factor = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
#Attempt to imprison him for his crime
|
||||
option = {
|
||||
name = feast_default_laurence.102.b
|
||||
flavor = feast_default_laurence.102.b.flavor
|
||||
duel = {
|
||||
skill = intrigue
|
||||
value = scope:conspiratorial_fellow.intrigue
|
||||
30 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -39
|
||||
}
|
||||
min = 10
|
||||
send_interface_toast = {
|
||||
type = event_intrigue_good
|
||||
title = feast_default_laurence.102.b.tt.success
|
||||
left_icon = scope:conspiratorial_fellow
|
||||
rightfully_imprison_character_effect = {
|
||||
TARGET = scope:conspiratorial_fellow
|
||||
IMPRISONER = scope:feast_host
|
||||
}
|
||||
add_intrigue_lifestyle_xp = medium_lifestyle_xp
|
||||
reverse_add_opinion = {
|
||||
target = scope:conspiratorial_fellow
|
||||
modifier = betrayed_me_opinion
|
||||
opinion = -80
|
||||
}
|
||||
}
|
||||
}
|
||||
70 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -39
|
||||
}
|
||||
min = 5
|
||||
send_interface_toast = {
|
||||
type = event_intrigue_bad
|
||||
title = feast_default_laurence.102.b.tt.fail
|
||||
left_icon = scope:conspiratorial_fellow
|
||||
reverse_add_opinion = {
|
||||
target = scope:conspiratorial_fellow
|
||||
modifier = betrayed_me_opinion
|
||||
opinion = -30
|
||||
}
|
||||
}
|
||||
desc = feast_default_laurence.102.b.tt.fail
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
deceitful = medium_stress_impact_loss
|
||||
paranoid = medium_stress_impact_loss
|
||||
arbitrary = minor_stress_impact_loss
|
||||
honest = medium_stress_impact_gain
|
||||
trusting = medium_stress_impact_gain
|
||||
just = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = deceitful
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = honest
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = paranoid
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = trusting
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = arbitrary
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = just
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
2653
N3OW/events/activities/feast_activity/feast_events.txt
Normal file
2653
N3OW/events/activities/feast_activity/feast_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1879
N3OW/events/activities/feast_activity/feast_events_ewan.txt
Normal file
1879
N3OW/events/activities/feast_activity/feast_events_ewan.txt
Normal file
File diff suppressed because it is too large
Load diff
560
N3OW/events/activities/feast_activity/feast_events_flavor.txt
Normal file
560
N3OW/events/activities/feast_activity/feast_events_flavor.txt
Normal file
|
|
@ -0,0 +1,560 @@
|
|||
namespace = feast_events_flavor
|
||||
|
||||
#######################################
|
||||
# By Veronica Pazos and Jay Zaborowski
|
||||
# feast_events_flavor.0001 - Dynasty member of someone you have a relation with approaches you
|
||||
# feast_events_flavor.0002 - A former rival reminisces with you
|
||||
|
||||
# Dynasty member of someone you have a relation with approaches you
|
||||
# by Veronica Pazos
|
||||
scripted_trigger feast_events_flavor_0001_appropriate_guest = {
|
||||
is_ai = yes
|
||||
is_adult = yes
|
||||
NOR = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = root }
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
|
||||
dynasty = root.dynasty
|
||||
is_courtier_of = root
|
||||
overlord ?= root
|
||||
}
|
||||
save_temporary_scope_as = guest_temp
|
||||
dynasty ?= {
|
||||
any_dynasty_member = {
|
||||
NOT = { this = scope:guest_temp }
|
||||
NOT = { is_spouse_of = scope:guest_temp } # We exclude their spouses to avoid weirdness
|
||||
OR = {
|
||||
AND = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = root }
|
||||
NOT = { has_any_bad_relationship_with_character_trigger = { CHARACTER = root } }
|
||||
}
|
||||
AND = {
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
|
||||
NOT = { has_any_good_relationship_with_character_trigger = { CHARACTER = root } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
feast_events_flavor.0001 = {
|
||||
type = activity_event
|
||||
title = feast_events_flavor.0001.t
|
||||
desc = {
|
||||
desc = feast_events_flavor.0001.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:relation_target }
|
||||
}
|
||||
desc = feast_events_flavor.0001.desc.good
|
||||
}
|
||||
desc = feast_events_flavor.0001.desc.bad
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = root
|
||||
triggered_animation = {
|
||||
trigger = { has_any_good_relationship_with_character_trigger = { CHARACTER = scope:relation_target } }
|
||||
animation = happiness
|
||||
}
|
||||
animation = dismissal
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:guest
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
root = { has_any_good_relationship_with_character_trigger = { CHARACTER = scope:relation_target } }
|
||||
}
|
||||
animation = toast_goblet
|
||||
}
|
||||
animation = schadenfreude
|
||||
}
|
||||
lower_left_portrait = scope:relation_target
|
||||
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
involved_activity = {
|
||||
any_attending_character = {
|
||||
feast_events_flavor_0001_appropriate_guest = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
involved_activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_events_flavor_0001_appropriate_guest = yes
|
||||
}
|
||||
save_scope_as = guest
|
||||
dynasty = {
|
||||
random_dynasty_member = {
|
||||
limit = {
|
||||
is_ai = yes
|
||||
NOT = { this = scope:guest }
|
||||
NOT = { is_spouse_of = scope:guest } # We exclude their spouses to avoid weirdness
|
||||
OR = {
|
||||
AND = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = root }
|
||||
NOT = { has_any_bad_relationship_with_character_trigger = { CHARACTER = root } }
|
||||
}
|
||||
AND = {
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
|
||||
NOT = { has_any_good_relationship_with_character_trigger = { CHARACTER = root } }
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = relation_target
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Special diplo option
|
||||
name = feast_events_flavor.0001.aa
|
||||
trigger = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:relation_target }
|
||||
has_trait = family_first
|
||||
NOT = { is_allied_to = scope:guest }
|
||||
}
|
||||
custom_tooltip = feast_alliance_effect_tooltip
|
||||
create_alliance = {
|
||||
target = scope:guest
|
||||
allied_through_owner = root
|
||||
allied_through_target = scope:guest
|
||||
}
|
||||
stress_impact = {
|
||||
callous = major_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = callous
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # If it's a good relationship, extend it
|
||||
name = feast_events_flavor.0001.a
|
||||
trigger = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:relation_target }
|
||||
NOT = { has_relation_friend = scope:guest }
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= scope:guest
|
||||
}
|
||||
complete_activity_intent = yes
|
||||
}
|
||||
set_relation_friend = {
|
||||
target = scope:guest
|
||||
reason = friend_feast_bonding
|
||||
}
|
||||
stress_impact = {
|
||||
gregarious = major_stress_impact_loss
|
||||
shy = medium_stress_impact_gain
|
||||
callous = major_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = gregarious
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
OR = {
|
||||
has_trait = shy
|
||||
has_trait = callous
|
||||
}
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # If it's a good relationship, sing their praises
|
||||
name = feast_events_flavor.0001.b
|
||||
trigger = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:relation_target }
|
||||
}
|
||||
add_prestige = minor_prestige_gain
|
||||
every_vassal_or_below = {
|
||||
limit = {
|
||||
this != scope:guest
|
||||
is_ai = yes
|
||||
has_vassal_stance = courtly
|
||||
is_vassal_of = root
|
||||
}
|
||||
custom = every_participating_courtly_vassal
|
||||
add_opinion = {
|
||||
modifier = feast_had_good_talk
|
||||
target = root
|
||||
opinion = 10
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
callous = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = callous
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # If it's bad, double down
|
||||
name = feast_events_flavor.0001.c
|
||||
trigger = {
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:relation_target }
|
||||
}
|
||||
add_dread = minor_dread_gain
|
||||
set_relation_rival = {
|
||||
target = scope:guest
|
||||
reason = rival_insulted_dynasty
|
||||
}
|
||||
stress_impact = {
|
||||
callous = major_stress_impact_loss
|
||||
vengeful = major_stress_impact_loss
|
||||
wrathful = major_stress_impact_loss
|
||||
compassionate = major_stress_impact_gain
|
||||
craven = major_stress_impact_gain
|
||||
calm = major_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
OR = {
|
||||
has_trait = callous
|
||||
has_trait = wrathful
|
||||
has_trait = vengeful
|
||||
}
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = craven
|
||||
has_trait = calm
|
||||
}
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # If it's bad, apologise
|
||||
name = feast_events_flavor.0001.d
|
||||
show_as_unavailable = {
|
||||
has_trait = callous # We show it but we don't even let you click it kekw
|
||||
}
|
||||
trigger = {
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:relation_target }
|
||||
NOT = { has_trait = callous }
|
||||
}
|
||||
if = {
|
||||
limit = { has_relation_rival = scope:relation_target }
|
||||
remove_relation_rival = scope:relation_target
|
||||
}
|
||||
else_if = {
|
||||
limit = { has_relation_nemesis = scope:relation_target }
|
||||
remove_relation_nemesis = scope:relation_target
|
||||
}
|
||||
else = {
|
||||
scope:relation_target = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = apologized_opinion
|
||||
opinion = 25
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
craven = major_stress_impact_loss
|
||||
vengeful = major_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = forgiving
|
||||
factor = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = vengeful
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Enough talking about them
|
||||
name = feast_events_flavor.0001.e
|
||||
if = {
|
||||
limit = {
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:relation_target }
|
||||
}
|
||||
scope:guest = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = feast_had_good_talk
|
||||
opinion = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
every_vassal_or_below = {
|
||||
limit = {
|
||||
this != scope:guest
|
||||
is_ai = yes
|
||||
has_vassal_stance = courtly
|
||||
is_participant_in_activity = root.involved_activity
|
||||
}
|
||||
custom = every_participating_courtly_vassal
|
||||
add_opinion = {
|
||||
modifier = impressed_opinion
|
||||
target = root
|
||||
opinion = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = craven
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# A former rival reminisces with you
|
||||
# By Jay Zaborowski
|
||||
feast_events_flavor.0002 = {
|
||||
type = activity_event
|
||||
title = feast_events_flavor.0002.t
|
||||
desc = feast_events_flavor.0002.desc
|
||||
theme = feast_activity
|
||||
right_portrait = {
|
||||
character = root
|
||||
animation = laugh
|
||||
}
|
||||
left_portrait = {
|
||||
character = scope:former_rival
|
||||
animation = drink_goblet
|
||||
}
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
involved_activity = {
|
||||
any_attending_character = {
|
||||
NOT = { this = root }
|
||||
is_physically_able_ai_adult = yes
|
||||
any_memory = {
|
||||
OR = {
|
||||
has_memory_type = stopped_being_rivals
|
||||
has_memory_type = let_go_of_rivalry
|
||||
}
|
||||
memory_participant:rival = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
involved_activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
NOT = { this = root }
|
||||
is_physically_able_ai_adult = yes
|
||||
any_memory = {
|
||||
OR = {
|
||||
has_memory_type = stopped_being_rivals
|
||||
has_memory_type = let_go_of_rivalry
|
||||
}
|
||||
memory_participant:rival = root
|
||||
}
|
||||
}
|
||||
save_scope_as = former_rival
|
||||
get_quirk_character_effect = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Seduce
|
||||
name = feast_events_flavor.0002.a
|
||||
trigger = {
|
||||
trigger_if = {
|
||||
limit = { is_married = yes }
|
||||
OR = {
|
||||
might_cheat_on_every_partner_trigger = yes
|
||||
is_ai = no # Players can do as they like
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
has_trait = lustful
|
||||
has_trait = rakish
|
||||
has_trait = seducer
|
||||
has_trait = deviant
|
||||
}
|
||||
is_attracted_to_gender_of = scope:former_rival
|
||||
scope:former_rival = { is_attracted_to_gender_of = root }
|
||||
}
|
||||
trait = lustful
|
||||
trait = rakish
|
||||
trait = seducer
|
||||
trait = deviant
|
||||
had_sex_with_effect = {
|
||||
CHARACTER = scope:former_rival
|
||||
PREGNANCY_CHANCE = pregnancy_chance
|
||||
}
|
||||
progress_towards_lover_effect = {
|
||||
CHARACTER = scope:former_rival
|
||||
REASON = lover_distracting_sex
|
||||
OPINION = default_lover_opinion
|
||||
}
|
||||
stress_impact = {
|
||||
chaste = medium_stress_impact_gain
|
||||
celibate = major_stress_impact_gain
|
||||
vengeful = major_stress_impact_gain
|
||||
forgiving = medium_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 200
|
||||
}
|
||||
}
|
||||
option = { # Become friends
|
||||
name = feast_events_flavor.0002.b
|
||||
trigger = { can_set_relation_friend_trigger = { CHARACTER = scope:former_rival } }
|
||||
set_relation_friend = { reason = friend_feast_recounted_rivalry target = scope:former_rival }
|
||||
stress_impact = {
|
||||
gregarious = major_stress_impact_loss
|
||||
forgiving = major_stress_impact_loss
|
||||
vengeful = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = shy
|
||||
opinion = {
|
||||
value <= medium_negative_opinion
|
||||
target = scope:former_rival
|
||||
}
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 2
|
||||
has_trait = gregarious
|
||||
}
|
||||
}
|
||||
}
|
||||
option = { # Time to go back to old times - give prestige
|
||||
name = feast_events_flavor.0002.c
|
||||
trigger = { can_set_relation_rival_trigger = { CHARACTER = scope:former_rival } }
|
||||
set_relation_rival = { reason = rival_bad_chemistry target = scope:former_rival }
|
||||
add_prestige = medium_prestige_gain
|
||||
if = {
|
||||
limit = {
|
||||
OR = {
|
||||
faith = { trait_is_virtue = forgiving }
|
||||
faith = { trait_is_sin = vengeful }
|
||||
}
|
||||
}
|
||||
custom_tooltip = feast_events_flavor.0002.c.vengeful_sinful.tt #This will lose you piety because Forgiving is Virtuous or Vengeful is Sinful
|
||||
add_piety = major_piety_loss
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
OR = {
|
||||
faith = { trait_is_sin = forgiving }
|
||||
faith = { trait_is_virtue = vengeful }
|
||||
}
|
||||
}
|
||||
custom_tooltip = feast_events_flavor.0002.c.forgiving_sinful.tt #This will lose you piety because Forgiving is Virtuous or Vengeful is Sinful
|
||||
add_piety = major_piety_gain
|
||||
}
|
||||
stress_impact = {
|
||||
forgiving = medium_stress_impact_gain
|
||||
vengeful = major_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 0
|
||||
modifier = {
|
||||
add = 10 # Not enough on its own to be Vengeful
|
||||
has_trait = vengeful
|
||||
}
|
||||
modifier = {
|
||||
add = 100
|
||||
opinion = {
|
||||
value <= medium_negative_opinion
|
||||
target = scope:former_rival
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = forgiving
|
||||
has_trait = craven # Isn't about to start a fight
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
option = { # It feels good to turn the other cheek!
|
||||
name = {
|
||||
text = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
OR = {
|
||||
faith = { trait_is_virtue = forgiving }
|
||||
faith = { trait_is_sin = vengeful }
|
||||
}
|
||||
}
|
||||
desc = feast_events_flavor.0002.d.virtuous
|
||||
}
|
||||
desc = feast_events_flavor.0002.d
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
OR = {
|
||||
faith = { trait_is_virtue = forgiving }
|
||||
faith = { trait_is_sin = vengeful }
|
||||
}
|
||||
}
|
||||
custom_tooltip = feast_events_flavor.0002.d.virtuous.tt # This option is available because Forgiving is Virtuous or Vengeful is Sinful
|
||||
add_piety = major_piety_gain
|
||||
add_character_modifier = { modifier = feast_turning_the_other_cheek_modifier years = 10 }
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
NOR = {
|
||||
faith = { trait_is_sin = forgiving }
|
||||
faith = { trait_is_virtue = vengeful }
|
||||
}
|
||||
}
|
||||
add_piety = medium_piety_gain
|
||||
}
|
||||
reverse_add_opinion = {
|
||||
target = scope:former_rival
|
||||
modifier = friendliness_opinion
|
||||
opinion = 10
|
||||
}
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
forgiving = medium_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 150
|
||||
}
|
||||
}
|
||||
}
|
||||
137
N3OW/events/activities/feast_activity/feast_events_klank.txt
Normal file
137
N3OW/events/activities/feast_activity/feast_events_klank.txt
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
|
||||
namespace = feast_events_klank
|
||||
|
||||
feast_events_klank.1001 = {
|
||||
type = activity_event
|
||||
title = feast_events_klank.1001.t
|
||||
desc = feast_events_klank.1001.desc
|
||||
theme = feast_activity
|
||||
right_portrait = {
|
||||
character = scope:terrified_onlooker
|
||||
animation = shock
|
||||
camera = camera_event_right_away
|
||||
}
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = scheme
|
||||
camera = camera_event_very_left
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:fellow_torturer
|
||||
animation = assassin
|
||||
camera = camera_event_very_right
|
||||
}
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
has_trait = torturer
|
||||
NOT = {
|
||||
has_trait = gluttonous
|
||||
}
|
||||
involved_activity = {
|
||||
any_attending_character = {
|
||||
has_trait = torturer
|
||||
is_ai = yes
|
||||
opinion = {
|
||||
target = root
|
||||
value >= 20
|
||||
}
|
||||
intrigue <= root.intrigue
|
||||
NOT = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
any_attending_character = {
|
||||
NOR = {
|
||||
has_trait = torturer
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
this = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
set_random_entertainment_text_effect = yes
|
||||
involved_activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
has_trait = torturer
|
||||
is_ai = yes
|
||||
intrigue <= root.intrigue
|
||||
opinion = {
|
||||
target = root
|
||||
value >= medium_positive_opinion
|
||||
}
|
||||
NOT = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
save_scope_as = fellow_torturer
|
||||
}
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
NOR = {
|
||||
has_trait = torturer
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
NOT = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = terrified_onlooker
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { #nah, the other way is better
|
||||
name = feast_events_klank.1001.a
|
||||
add_intrigue_lifestyle_xp = major_lifestyle_xp
|
||||
|
||||
scope:fellow_torturer = {
|
||||
add_intrigue_lifestyle_xp = major_lifestyle_xp
|
||||
add_intrigue_skill = 1
|
||||
}
|
||||
}
|
||||
|
||||
option = { #yeah, you're right
|
||||
name = feast_events_klank.1001.b
|
||||
progress_towards_friend_effect = {
|
||||
REASON = friend_common_interests
|
||||
CHARACTER = scope:fellow_torturer
|
||||
OPINION = default_friend_opinion
|
||||
}
|
||||
add_intrigue_lifestyle_xp = minor_lifestyle_xp
|
||||
scope:fellow_torturer = {
|
||||
add_intrigue_lifestyle_xp = minor_lifestyle_xp
|
||||
}
|
||||
}
|
||||
|
||||
option = { #actually, I've been thinking recently
|
||||
name = feast_events_klank.1001.c
|
||||
|
||||
trigger = {
|
||||
learning >= 16
|
||||
}
|
||||
|
||||
show_as_unavailable = { always = yes }
|
||||
|
||||
add_intrigue_lifestyle_perk_points = 1
|
||||
add_prestige = medium_prestige_gain
|
||||
progress_towards_friend_effect = {
|
||||
REASON = friend_common_interests
|
||||
CHARACTER = scope:fellow_torturer
|
||||
OPINION = default_friend_opinion
|
||||
}
|
||||
scope:fellow_torturer = {
|
||||
add_intrigue_lifestyle_perk_points = 1
|
||||
add_intrigue_skill = 1
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 200
|
||||
}
|
||||
}
|
||||
}
|
||||
95
N3OW/events/activities/feast_activity/feast_events_mkc.txt
Normal file
95
N3OW/events/activities/feast_activity/feast_events_mkc.txt
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
namespace = feast_mkc
|
||||
|
||||
feast_mkc.0001 = {
|
||||
type = activity_event
|
||||
title = feast_mkc.0001.t
|
||||
desc = feast_mkc.0001.desc
|
||||
theme = feast_activity
|
||||
|
||||
left_portrait = {
|
||||
character = ROOT
|
||||
animation = thinking
|
||||
camera = camera_event_very_left
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:guest_lost_loved_pet
|
||||
animation = sadness
|
||||
camera = camera_event_very_right
|
||||
}
|
||||
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
has_named_cat_trigger = yes
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
NOT = { ROOT = this }
|
||||
any_memory = {
|
||||
has_memory_type = cat_died
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
NOT = { ROOT = this }
|
||||
any_memory = { has_memory_type = cat_died }
|
||||
}
|
||||
save_scope_as = guest_lost_loved_pet
|
||||
}
|
||||
}
|
||||
random_owned_story = {
|
||||
limit = {
|
||||
story_type = story_cycle_pet_cat
|
||||
}
|
||||
save_scope_as = pet_cat_story
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_mkc.0001.a
|
||||
|
||||
scope:guest_lost_loved_pet = {
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
}
|
||||
add_opinion = {
|
||||
modifier = feast_helped_overcome_loss_opinion
|
||||
target = root
|
||||
}
|
||||
hidden_effect = {
|
||||
reverse_add_opinion = {
|
||||
modifier = feast_sympathy_over_loss_opinion
|
||||
target = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
compassionate = minor_stress_impact_loss
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_mkc.0001.b
|
||||
|
||||
|
||||
scope:guest_lost_loved_pet = {
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
}
|
||||
}
|
||||
custom_tooltip = bonus_to_petting_pet_tt
|
||||
|
||||
hidden_effect = {
|
||||
scope:pet_cat_story = {
|
||||
set_variable = {
|
||||
name = bonus_to_petting_pet
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
206
N3OW/events/activities/feast_activity/feast_events_tova.txt
Normal file
206
N3OW/events/activities/feast_activity/feast_events_tova.txt
Normal file
|
|
@ -0,0 +1,206 @@
|
|||
namespace = feast_events_tova
|
||||
|
||||
feast_events_tova.0001 = { #Pleasure Dome Feast
|
||||
type = activity_event
|
||||
title = feast_events_tova.0001.t
|
||||
desc = feast_events_tova.0001.desc
|
||||
|
||||
theme = feast_activity
|
||||
|
||||
override_background = { reference = mpo_city_steppe }
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = schadenfreude
|
||||
}
|
||||
|
||||
center_portrait = {
|
||||
character = scope:palace_admirer
|
||||
animation = admiration
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:honorary_guest
|
||||
animation = thinking
|
||||
}
|
||||
|
||||
cooldown = { years = 20 }
|
||||
|
||||
trigger = {
|
||||
has_mpo_dlc_trigger = yes
|
||||
scope:activity.activity_location = {
|
||||
has_building_or_higher = pleasure_dome
|
||||
}
|
||||
this = scope:activity.activity_host
|
||||
involved_activity = {
|
||||
any_attending_character = {
|
||||
highest_held_title_tier >= tier_county
|
||||
this != root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:activity.special_guest:honorary_guest
|
||||
}
|
||||
scope:activity.special_guest:honorary_guest = { save_scope_as = honorary_guest }
|
||||
}
|
||||
else_if = {
|
||||
limit = { exists = scope:activity.special_guest:honorary_guest_regular }
|
||||
scope:activity.special_guest:honorary_guest_regular = { save_scope_as = honorary_guest }
|
||||
}
|
||||
else = {
|
||||
involved_activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
highest_held_title_tier >= tier_county
|
||||
this != root
|
||||
}
|
||||
save_scope_as = honorary_guest
|
||||
}
|
||||
}
|
||||
}
|
||||
involved_activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
NOT = { this = root }
|
||||
NAND = {
|
||||
exists = scope:honorary_guest
|
||||
this = scope:honorary_guest
|
||||
}
|
||||
}
|
||||
save_scope_as = palace_admirer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = {
|
||||
factor = 1.5
|
||||
involved_activity = {
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = feast_type_tsagaan_sar
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { #A place worthy to host such mighty warriors as us!
|
||||
name = feast_events_tova.0001.a
|
||||
trigger = {
|
||||
involved_activity = {
|
||||
any_attending_character = {
|
||||
is_vassal_of = root
|
||||
has_vassal_stance = glory_hound
|
||||
}
|
||||
}
|
||||
}
|
||||
add_prestige = minor_prestige_loss
|
||||
involved_activity = {
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
is_vassal_of = root
|
||||
has_vassal_stance = glory_hound
|
||||
}
|
||||
custom = every_glory_hound_vassal
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = obedience_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = humble
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
has_trait = arrogant
|
||||
factor = 2
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
arrogant = medium_stress_impact_loss
|
||||
humble = major_stress_impact_gain
|
||||
}
|
||||
}
|
||||
|
||||
option = { #Impress most important guest.
|
||||
name = feast_events_tova.0001.b
|
||||
|
||||
duel = {
|
||||
target = scope:honorary_guest
|
||||
skill = diplomacy
|
||||
|
||||
50 = { #They are impressed by your opulence
|
||||
desc = feast_events_tova.0001.b.success
|
||||
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
min = 5
|
||||
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = feast_events_tova.0001.b.success
|
||||
left_icon = root
|
||||
right_icon = scope:honorary_guest
|
||||
add_hook = {
|
||||
target = scope:honorary_guest
|
||||
type = loyalty_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
50 = { #They are not impressed by your palace
|
||||
desc = feast_events_tova.0001.b.failure
|
||||
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
min = 5
|
||||
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_bad
|
||||
title = feast_events_tova.0001.b.failure
|
||||
left_icon = root
|
||||
right_icon = scope:honorary_guest
|
||||
add_hook = {
|
||||
target = scope:honorary_guest
|
||||
type = favor_hook
|
||||
}
|
||||
stress_impact = {
|
||||
base = miniscule_stress_gain
|
||||
diligent = miniscule_stress_gain
|
||||
ambitious = miniscule_stress_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
option = { #Truly, this is a great testament to my rule.
|
||||
name = feast_events_tova.0001.c
|
||||
dynasty = {
|
||||
add_dynasty_prestige = medium_dynasty_prestige_value
|
||||
}
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,489 @@
|
|||
|
||||
namespace = feast_default_alex
|
||||
|
||||
# Someone reminds you of a positive memory you share
|
||||
feast_default_alex.100 = {
|
||||
type = activity_event
|
||||
title = feast_default_alex.100.t
|
||||
desc = feast_default_alex.100.desc
|
||||
theme = feast_activity
|
||||
right_portrait = {
|
||||
character = scope:guest
|
||||
animation = wedding_drunk
|
||||
camera = camera_event_very_right
|
||||
}
|
||||
center_portrait = {
|
||||
character = root
|
||||
animation = interested
|
||||
}
|
||||
left_portrait = {
|
||||
character = scope:other_guest
|
||||
animation = storyteller
|
||||
camera = camera_event_very_left
|
||||
}
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
this != root
|
||||
is_physically_able_ai_adult = yes
|
||||
NOT = { has_relation_rival = root }
|
||||
any_memory = {
|
||||
has_memory_category = positive
|
||||
NOT = {
|
||||
has_memory_category = private
|
||||
}
|
||||
any_memory_participant = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
opinion = {
|
||||
target = root
|
||||
value > 0
|
||||
}
|
||||
save_temporary_scope_as = guest_temp
|
||||
}
|
||||
#There is a third attendee in existence
|
||||
any_attending_character = {
|
||||
count >= 2
|
||||
NOT = {
|
||||
this = root
|
||||
}
|
||||
opinion = {
|
||||
target = root
|
||||
value > 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = 3
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= {
|
||||
involved_activity ?= root.involved_activity
|
||||
is_physically_able_ai_adult = yes
|
||||
NOT = { has_relation_rival = root }
|
||||
any_memory = {
|
||||
has_memory_category = positive
|
||||
any_memory_participant = {
|
||||
this = root
|
||||
}
|
||||
NOT = {
|
||||
has_memory_category = private
|
||||
}
|
||||
}
|
||||
opinion = {
|
||||
target = root
|
||||
value > 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
save_scope_as = root_scope
|
||||
scope:activity = {
|
||||
activity_host = { save_scope_as = host }
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
this != root
|
||||
is_physically_able_ai_adult = yes
|
||||
NOT = { has_relation_rival = root }
|
||||
any_memory = {
|
||||
has_memory_category = positive
|
||||
any_memory_participant = {
|
||||
this = root
|
||||
}
|
||||
NOT = {
|
||||
has_memory_category = private
|
||||
}
|
||||
}
|
||||
opinion = {
|
||||
target = root
|
||||
value > 0
|
||||
}
|
||||
}
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = 1000
|
||||
root = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
}
|
||||
root.intent_target ?= this
|
||||
}
|
||||
modifier = {
|
||||
add = 50
|
||||
has_relation_potential_friend = root
|
||||
}
|
||||
modifier = {
|
||||
add = 10
|
||||
is_of_major_interest_to_root_trigger = yes
|
||||
}
|
||||
modifier = {
|
||||
add = 5
|
||||
is_of_minor_interest_to_root_trigger = yes
|
||||
}
|
||||
}
|
||||
assign_quirk_effect = yes
|
||||
save_scope_as = guest
|
||||
random_memory = {
|
||||
limit = {
|
||||
has_memory_category = positive
|
||||
any_memory_participant = {
|
||||
this = root
|
||||
}
|
||||
NOT = {
|
||||
has_memory_category = private
|
||||
}
|
||||
}
|
||||
save_scope_as = guest_memory
|
||||
}
|
||||
}
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
NOR = {
|
||||
this = root
|
||||
this = scope:guest
|
||||
}
|
||||
opinion = {
|
||||
target = root
|
||||
value > 0
|
||||
}
|
||||
}
|
||||
save_scope_as = other_guest
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = arrogant
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
has_trait = vengeful
|
||||
has_trait = wrathful
|
||||
has_trait = arbitrary
|
||||
has_trait = fickle
|
||||
}
|
||||
scope:guest = {
|
||||
NOR = {
|
||||
is_spouse_of = root
|
||||
is_close_family_of = root
|
||||
any_vassal = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
name = feast_default_alex.100.aa
|
||||
|
||||
add_prestige = minor_prestige_gain
|
||||
|
||||
reverse_add_opinion = {
|
||||
modifier = insulted_opinion
|
||||
target = scope:guest
|
||||
opinion = -30
|
||||
}
|
||||
scope:guest = {
|
||||
add_stress = medium_stress_gain
|
||||
add_prestige = medium_prestige_loss
|
||||
}
|
||||
stress_impact = {
|
||||
gregarious = minor_stress_impact_gain
|
||||
compassionate = minor_stress_impact_gain
|
||||
humble = minor_stress_impact_gain
|
||||
forgiving = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 3
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = gregarious
|
||||
has_trait = compassionate
|
||||
has_trait = humble
|
||||
has_trait = forgiving
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_default_alex.100.a
|
||||
progress_towards_friend_effect = {
|
||||
REASON = friend_showed_personal_interest
|
||||
CHARACTER = scope:guest
|
||||
OPINION = 20
|
||||
}
|
||||
stress_impact = {
|
||||
gregarious = medium_stress_impact_loss
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_default_alex.100.b
|
||||
|
||||
add_diplomacy_lifestyle_xp = miniscule_lifestyle_xp
|
||||
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 1
|
||||
modifier = {
|
||||
factor = 0
|
||||
stress <= 0
|
||||
has_focus_diplomacy = no
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# There's a terrible plague in a nearby realm
|
||||
feast_default_alex.200 = {
|
||||
type = activity_event
|
||||
title = feast_default_alex.200.t
|
||||
desc = feast_default_alex.200.desc
|
||||
theme = feast_activity
|
||||
center_portrait = {
|
||||
character = root
|
||||
animation = drink_goblet
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:guest
|
||||
animation = worry
|
||||
}
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
this != root
|
||||
is_physically_able_ai_adult = yes
|
||||
NOT = { has_relation_rival = root }
|
||||
top_liege = root.top_liege
|
||||
OR = {
|
||||
has_personality_emotional_trigger = yes
|
||||
has_personality_submissive_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
any_epidemic = {
|
||||
save_temporary_scope_as = the_epidemic
|
||||
any_infected_province = {
|
||||
squared_distance = {
|
||||
target = root.location
|
||||
value <= squared_distance_large
|
||||
}
|
||||
exists = barony.holder.top_liege
|
||||
}
|
||||
NOT = {
|
||||
any_infected_province = {
|
||||
barony.holder.top_liege ?= root.involved_activity.activity_host.top_liege
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
save_scope_as = root_scope
|
||||
scope:activity = {
|
||||
activity_host = { save_scope_as = host }
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
this != root
|
||||
is_physically_able_ai_adult = yes
|
||||
NOT = { has_relation_rival = root }
|
||||
top_liege = root.top_liege
|
||||
OR = {
|
||||
has_personality_emotional_trigger = yes
|
||||
has_personality_submissive_trigger = yes
|
||||
}
|
||||
}
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = 1000
|
||||
root = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
}
|
||||
root.intent_target ?= this
|
||||
}
|
||||
modifier = {
|
||||
add = 50
|
||||
has_relation_potential_friend = root
|
||||
}
|
||||
modifier = {
|
||||
add = 10
|
||||
is_of_major_interest_to_root_trigger = yes
|
||||
}
|
||||
modifier = {
|
||||
add = 5
|
||||
is_of_minor_interest_to_root_trigger = yes
|
||||
}
|
||||
}
|
||||
assign_quirk_effect = yes
|
||||
save_scope_as = guest
|
||||
}
|
||||
}
|
||||
random_epidemic = {
|
||||
limit = {
|
||||
save_temporary_scope_as = the_epidemic
|
||||
any_infected_province = {
|
||||
squared_distance = {
|
||||
target = root.location
|
||||
value <= squared_distance_large
|
||||
}
|
||||
exists = barony.holder.top_liege
|
||||
}
|
||||
NOT = {
|
||||
any_infected_province = {
|
||||
barony.holder.top_liege ?= root.involved_activity.activity_host.top_liege
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = epidemic
|
||||
random_infected_province = {
|
||||
limit = {
|
||||
squared_distance = {
|
||||
target = root.location
|
||||
value <= squared_distance_large
|
||||
}
|
||||
exists = barony.holder.top_liege
|
||||
}
|
||||
barony.holder.top_liege = { save_scope_as = afflicted_top_liege }
|
||||
}
|
||||
}
|
||||
hidden_effect = {
|
||||
create_character = {
|
||||
template = peasant_character
|
||||
dynasty = none
|
||||
location = root.location
|
||||
culture = root.location.culture
|
||||
faith = root.location.faith
|
||||
gender_female_chance = 50
|
||||
save_scope_as = sick_peasant
|
||||
}
|
||||
scope:sick_peasant = {
|
||||
add_trait = scope:epidemic.epidemic_type.epidemic_trait
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_default_alex.200.a
|
||||
trigger = {
|
||||
this = scope:activity.activity_host
|
||||
scope:activity.activity_location.county = {
|
||||
holder = scope:activity.activity_host
|
||||
NOT = {
|
||||
has_county_modifier = plague_preparations_modifier
|
||||
}
|
||||
}
|
||||
}
|
||||
remove_short_term_gold = miniscule_gold_value
|
||||
add_prestige = minor_prestige_gain
|
||||
scope:activity.activity_location.county = {
|
||||
add_county_modifier = {
|
||||
modifier = plague_preparations_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
scope:guest = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = thankful_opinion
|
||||
opinion = 20
|
||||
}
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
craven = medium_stress_impact_loss
|
||||
compassionate = medium_stress_impact_loss
|
||||
generous = medium_stress_impact_loss
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_default_alex.200.b
|
||||
trigger = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= scope:guest
|
||||
}
|
||||
add_internal_flag = special
|
||||
progress_towards_friend_effect = {
|
||||
REASON = friend_supported_at_feast
|
||||
CHARACTER = scope:guest
|
||||
OPINION = 20
|
||||
}
|
||||
scope:guest = {
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
sadistic = medium_stress_impact_gain
|
||||
arbitrary = medium_stress_impact_gain
|
||||
compassionate = medium_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 1
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = sadistic
|
||||
has_trait = arbitrary
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_default_alex.200.c
|
||||
add_piety = minor_piety_gain
|
||||
stress_impact = {
|
||||
zealous = minor_stress_impact_loss
|
||||
humble = minor_stress_impact_loss
|
||||
compassionate = minor_stress_impact_loss
|
||||
forgiving = minor_stress_impact_loss
|
||||
cynical = medium_stress_impact_gain
|
||||
}
|
||||
scope:guest = {
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
cynical = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 1
|
||||
modifier = {
|
||||
factor = 0
|
||||
has_trait = cynical
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_default_alex.200.d
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
}
|
||||
scope:guest = {
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
scope:sick_peasant = { silent_disappearance_effect = yes }
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,941 @@
|
|||
# FEAST ACTIVITY KEY EVENTS
|
||||
# Most custom variables checked here will have been set by the "welcoming" events in feast_activity_standard_events
|
||||
# Each unique key event gets a range of 50 IDs. This should more than suffice in all cases.
|
||||
|
||||
namespace = feast_main_befriend
|
||||
|
||||
|
||||
################################
|
||||
# Feast Befriend Events
|
||||
# by Petter Vilberg
|
||||
################################
|
||||
|
||||
###
|
||||
# Weight and setup event
|
||||
###
|
||||
feast_main_befriend.0001 = {
|
||||
type = activity_event
|
||||
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
not_hosting_a_murder_feast = yes
|
||||
OR = {
|
||||
AND = {
|
||||
scope:activity = {
|
||||
has_variable = potential_friend
|
||||
}
|
||||
scope:activity.var:potential_friend = {
|
||||
opinion = {
|
||||
target = scope:activity.activity_host
|
||||
value > 20
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
NOT = { has_relation_friend = root }
|
||||
opinion = {
|
||||
target = scope:activity.activity_host
|
||||
value > 35
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
opinion_modifier = {
|
||||
trigger = { exists = scope:activity.var:potential_friend }
|
||||
who = scope:activity.var:potential_friend
|
||||
opinion_target = scope:activity.activity_host
|
||||
multiplier = 0.1
|
||||
step = 0.1
|
||||
}
|
||||
modifier = {
|
||||
add = 2
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -0.5
|
||||
NOT = { has_activity_intent = befriend_attendee_intent }
|
||||
NOT = {
|
||||
scope:activity = {
|
||||
has_variable = potential_friend
|
||||
}
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -0.5
|
||||
is_ai = yes
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:activity = {
|
||||
has_variable = potential_friend
|
||||
var:potential_friend = {
|
||||
opinion = {
|
||||
target = scope:activity.activity_host
|
||||
value > 20
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:activity.var:potential_friend = {
|
||||
save_scope_as = potential_friend
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
intent_target = {
|
||||
save_scope_as = potential_friend
|
||||
}
|
||||
}
|
||||
else = {
|
||||
scope:activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
NOT = { has_relation_friend = root }
|
||||
opinion = {
|
||||
target = scope:activity.activity_host
|
||||
value > 35
|
||||
}
|
||||
}
|
||||
save_scope_as = potential_friend
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
this != scope:potential_friend
|
||||
highest_held_title_tier > 1
|
||||
OR = {
|
||||
has_trait = arrogant
|
||||
has_trait = vengeful
|
||||
}
|
||||
}
|
||||
save_scope_as = arrogant_guest
|
||||
}
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
this != scope:potential_friend
|
||||
trigger_if = {
|
||||
limit = { exists = scope:arrogant_guest }
|
||||
this != scope:arrogant_guest
|
||||
}
|
||||
highest_held_title_tier > 1
|
||||
OR = {
|
||||
has_trait = humble
|
||||
has_trait = compassionate
|
||||
any_secret = {
|
||||
type = secret_cannibal
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = kind_to_lower_nobility
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:kind_to_lower_nobility
|
||||
scope:kind_to_lower_nobility = {
|
||||
any_secret = { type = secret_cannibal }
|
||||
}
|
||||
}
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
this != scope:potential_friend
|
||||
trigger_if = {
|
||||
limit = { exists = scope:arrogant_guest }
|
||||
this != scope:arrogant_guest
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = scope:kind_to_lower_nobility }
|
||||
this != scope:kind_to_lower_nobility
|
||||
}
|
||||
OR = {
|
||||
has_trait = gluttonous
|
||||
has_trait = lifestyle_reveler
|
||||
}
|
||||
}
|
||||
save_scope_as = glutton_target
|
||||
}
|
||||
}
|
||||
activity_host = {
|
||||
trigger_event = feast_main_befriend.1001
|
||||
}
|
||||
scope:potential_friend = {
|
||||
trigger_event = feast_main_befriend.2001
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:arrogant_guest
|
||||
}
|
||||
scope:arrogant_guest = {
|
||||
trigger_event = feast_main_befriend.2002
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:kind_to_lower_nobility
|
||||
}
|
||||
scope:kind_to_lower_nobility = {
|
||||
trigger_event = feast_main_befriend.2003
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:glutton_target
|
||||
}
|
||||
scope:glutton_target = {
|
||||
trigger_event = feast_main_befriend.2004
|
||||
}
|
||||
}
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
this != scope:potential_friend
|
||||
trigger_if = {
|
||||
limit = { exists = scope:arrogant_guest }
|
||||
this != scope:arrogant_guest
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = scope:kind_to_lower_nobility }
|
||||
this != scope:kind_to_lower_nobility
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = scope:glutton_target }
|
||||
this != scope:glutton_target
|
||||
}
|
||||
}
|
||||
trigger_event = feast_main_befriend.3001
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
##########################
|
||||
# Main event for Host
|
||||
##########################
|
||||
feast_main_befriend.1001 = {
|
||||
title = feast_main_befriend.1001.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_befriend.1001.opening
|
||||
desc = feast_main_befriend.1001.getting_close
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:arrogant_guest }
|
||||
desc = {
|
||||
desc = feast_main_befriend.1001.arrogant_guest
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:kind_to_lower_nobility }
|
||||
desc = feast_main_befriend.1001.arrogant_kind_link
|
||||
}
|
||||
}
|
||||
}
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:kind_to_lower_nobility }
|
||||
desc = {
|
||||
desc = feast_main_befriend.1001.kind_to_lower_nobility
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:kind_to_lower_nobility = {
|
||||
any_secret = { type = secret_cannibal }
|
||||
}
|
||||
}
|
||||
desc = feast_main_befriend.1001.really_hungry
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = feast_main_befriend.1001.no_kind_target
|
||||
}
|
||||
desc = feast_main_befriend.1001.friendship
|
||||
}
|
||||
theme = feast_activity
|
||||
center_portrait = {
|
||||
character = root
|
||||
animation = toast
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:potential_friend
|
||||
animation = happiness
|
||||
}
|
||||
lower_right_portrait = scope:kind_to_lower_nobility
|
||||
|
||||
trigger = {
|
||||
OR = {
|
||||
any_scheme = {
|
||||
type = befriend
|
||||
scheme_target_character = {
|
||||
involved_activity ?= scope:activity
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
NOT = { has_relation_friend = root }
|
||||
opinion = {
|
||||
target = scope:activity.activity_host
|
||||
value > 35
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_meadandwine
|
||||
if = {
|
||||
limit = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
intent_target = { save_scope_as = potential_friend }
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
any_scheme = {
|
||||
type = befriend
|
||||
scheme_target_character = {
|
||||
involved_activity ?= scope:activity
|
||||
}
|
||||
}
|
||||
}
|
||||
random_scheme = {
|
||||
type = befriend
|
||||
limit = {
|
||||
scheme_target_character = {
|
||||
involved_activity ?= scope:activity
|
||||
}
|
||||
}
|
||||
scheme_target_character = {
|
||||
save_scope_as = potential_friend
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
scope:activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
NOT = { has_relation_friend = root }
|
||||
opinion = {
|
||||
target = scope:activity.activity_host
|
||||
value > 35
|
||||
}
|
||||
}
|
||||
save_scope_as = potential_friend
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_befriend.1001.a
|
||||
if = {
|
||||
limit = {
|
||||
can_set_relation_friend_trigger = { CHARACTER = scope:potential_friend }
|
||||
}
|
||||
set_relation_friend = { reason = friend_feast_talking_and_laughing target = scope:potential_friend }
|
||||
# Complete activity intent if relevant
|
||||
if = {
|
||||
limit = {
|
||||
exists = involved_activity
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= scope:potential_friend
|
||||
intent_target.involved_activity ?= root.involved_activity
|
||||
}
|
||||
save_scope_as = intent_completer
|
||||
send_interface_toast = {
|
||||
title = activity_intent_complete_toast
|
||||
left_icon = scope:potential_friend
|
||||
complete_activity_intent = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
progress_towards_friend_effect = {
|
||||
REASON = friend_feast_talking_and_laughing
|
||||
CHARACTER = scope:potential_friend
|
||||
OPINION = default_friend_opinion
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
any_scheme = {
|
||||
type = befriend
|
||||
scheme_target_character = scope:potential_friend
|
||||
}
|
||||
}
|
||||
random_scheme = {
|
||||
type = befriend
|
||||
limit = {
|
||||
scheme_target_character = scope:potential_friend
|
||||
}
|
||||
end_scheme = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
hidden_effect = {
|
||||
# Fire the end events
|
||||
trigger_event = {
|
||||
id = feast_main_befriend.5001
|
||||
days = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##########################
|
||||
# Main Event for Potential Friend
|
||||
##########################
|
||||
feast_main_befriend.2001 = {
|
||||
title = feast_main_befriend.2001.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_befriend.1001.opening
|
||||
desc = feast_main_befriend.2001.getting_close
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:arrogant_guest }
|
||||
desc = {
|
||||
desc = feast_main_befriend.2001.arrogant_guest
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:kind_to_lower_nobility }
|
||||
desc = feast_main_befriend.2001.arrogant_kind_link
|
||||
}
|
||||
}
|
||||
}
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:kind_to_lower_nobility }
|
||||
desc = {
|
||||
desc = feast_main_befriend.2001.kind_to_lower_nobility
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:kind_to_lower_nobility = {
|
||||
any_secret = { type = secret_cannibal }
|
||||
}
|
||||
}
|
||||
desc = feast_main_befriend.2001.really_hungry
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = feast_main_befriend.2001.no_kind_target
|
||||
}
|
||||
desc = feast_main_befriend.2001.friendship
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = root
|
||||
right_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
lower_left_portrait = scope:kind_to_lower_nobility
|
||||
lower_right_portrait = scope:arrogant_guest
|
||||
|
||||
option = {
|
||||
name = feast_main_befriend.2001.a
|
||||
add_prestige = medium_prestige_gain
|
||||
show_as_tooltip = {
|
||||
set_relation_friend = scope:activity.activity_host
|
||||
hidden_effect = {
|
||||
add_opinion = {
|
||||
target = scope:activity.activity_host
|
||||
modifier = bonded_at_feast_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##########################
|
||||
# Main Event for Arrogant Guest
|
||||
##########################
|
||||
feast_main_befriend.2002 = {
|
||||
title = feast_main_befriend.2002.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_befriend.1001.opening
|
||||
desc = feast_main_befriend.2002.arrogant_guest
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:kind_to_lower_nobility
|
||||
}
|
||||
desc = feast_main_befriend.2002.disgusted_by_kindness
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:kind_to_lower_nobility
|
||||
animation = personality_compassionate
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_befriend.2002.a
|
||||
add_prestige = medium_prestige_loss
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:kind_to_lower_nobility
|
||||
}
|
||||
add_opinion = {
|
||||
modifier = disgusted_by_humility_opinion
|
||||
target = scope:kind_to_lower_nobility
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
CHARACTER = scope:kind_to_lower_nobility
|
||||
REASON = rival_feast_commoners
|
||||
OPINION = 0
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
faith = { has_doctrine_parameter = host_honored_guests_active }
|
||||
}
|
||||
custom_description_no_bullet = {
|
||||
text = feast_main_befriend.2002.because_of_hospitality_tenet
|
||||
}
|
||||
add_piety = medium_piety_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##########################
|
||||
# Main Event for Kind to Nobility
|
||||
##########################
|
||||
feast_main_befriend.2003 = {
|
||||
title = feast_main_befriend.2003.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_befriend.2003.opening
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:arrogant_guest }
|
||||
desc = feast_main_befriend.2003.arrogant_guest
|
||||
}
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
any_secret = { type = secret_cannibal }
|
||||
exists = scope:glutton_target
|
||||
}
|
||||
desc = feast_main_befriend.2003.kind_to_glutton
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
any_secret = { type = secret_cannibal }
|
||||
}
|
||||
desc = feast_main_befriend.2003.cannibal_kindness
|
||||
}
|
||||
desc = feast_main_befriend.2003.kind_to_lower_nobility
|
||||
}
|
||||
desc = feast_main_befriend.2003.ending
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
lower_left_portrait = scope:arrogant_guest
|
||||
|
||||
option = {
|
||||
name = feast_main_befriend.2003.a
|
||||
scope:activity = {
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_trigger = yes
|
||||
trigger_if = {
|
||||
limit = { exists = scope:arrogant_guest }
|
||||
this != scope:arrogant_guest
|
||||
}
|
||||
}
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = impressed_with_humility_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:arrogant_guest
|
||||
}
|
||||
show_as_tooltip = {
|
||||
scope:arrogant_guest = {
|
||||
add_prestige = minor_prestige_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##########################
|
||||
# Main Event for Glutton Target
|
||||
##########################
|
||||
feast_main_befriend.2004 = {
|
||||
title = feast_main_befriend.2004.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_befriend.2003.opening
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:arrogant_guest }
|
||||
desc = feast_main_befriend.2004.arrogant_guest
|
||||
}
|
||||
desc = feast_main_befriend.2004.kindness_from_other
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:kind_to_lower_nobility
|
||||
animation = personality_compassionate
|
||||
}
|
||||
lower_right_portrait = scope:arrogant_guest
|
||||
|
||||
option = {
|
||||
name = feast_main_befriend.2004.a
|
||||
stress_impact = {
|
||||
base = medium_stress_loss
|
||||
}
|
||||
progress_towards_friend_effect = {
|
||||
REASON = friend_had_a_great_feast_together
|
||||
CHARACTER = scope:kind_to_lower_nobility
|
||||
OPINION = 0
|
||||
}
|
||||
hidden_effect = {
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:kind_to_lower_nobility
|
||||
NOT = { has_trait = arrogant }
|
||||
}
|
||||
add_opinion = {
|
||||
modifier = impressed_with_humility_opinion
|
||||
target = scope:kind_to_lower_nobility
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##########################
|
||||
# Generic Main Event for Guests
|
||||
##########################
|
||||
feast_main_befriend.3001 = {
|
||||
title = feast_main_befriend.3001.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_befriend.2003.opening
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:arrogant_guest }
|
||||
desc = {
|
||||
desc = feast_main_befriend.3001.arrogant_guest
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:kind_to_lower_nobility }
|
||||
desc = feast_main_befriend.1001.arrogant_kind_link
|
||||
}
|
||||
}
|
||||
}
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:kind_to_lower_nobility }
|
||||
desc = {
|
||||
desc = feast_main_befriend.3001.kind_to_lower_nobility
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:kind_to_lower_nobility = {
|
||||
any_secret = { type = secret_cannibal }
|
||||
}
|
||||
}
|
||||
desc = feast_main_befriend.3001.really_hungry
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = feast_main_befriend.3001.ending
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
lower_left_portrait = scope:arrogant_guest
|
||||
|
||||
option = {
|
||||
name = feast_main_befriend.3001.a
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:kind_to_lower_nobility
|
||||
NOT = { has_trait = arrogant }
|
||||
}
|
||||
add_opinion = {
|
||||
modifier = impressed_with_humility_opinion
|
||||
target = scope:kind_to_lower_nobility
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
##########################################################
|
||||
# END EVENTS
|
||||
# 5000-5999
|
||||
##########################################################
|
||||
|
||||
# Fire End Events
|
||||
feast_main_befriend.5001 = {
|
||||
type = activity_event
|
||||
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
#verify that the activity still exists
|
||||
exists = scope:activity
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
|
||||
activity_host = {
|
||||
save_scope_as = host_saying_goodbye
|
||||
if = {
|
||||
limit = { exists = primary_partner }
|
||||
random_consort = {
|
||||
limit = {
|
||||
this = scope:activity.activity_host.primary_partner
|
||||
is_available_ai = yes
|
||||
}
|
||||
alternative_limit = {
|
||||
is_available_ai = yes
|
||||
}
|
||||
save_scope_as = spouse
|
||||
}
|
||||
}
|
||||
scope:potential_friend = {
|
||||
trigger_event = feast_main_befriend.5003
|
||||
}
|
||||
}
|
||||
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
this != scope:potential_friend
|
||||
}
|
||||
trigger_event = feast_main_befriend.5004
|
||||
}
|
||||
|
||||
activity_host = { trigger_event = feast_main_befriend.5002 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#################
|
||||
# Host End Event
|
||||
#################
|
||||
feast_main_befriend.5002 = {
|
||||
type = activity_event
|
||||
title = feast_main_befriend.5002.t
|
||||
desc = feast_main_befriend.5002.desc
|
||||
theme = feast_activity
|
||||
center_portrait = {
|
||||
character = root
|
||||
animation = toast
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:potential_friend
|
||||
animation = happiness
|
||||
}
|
||||
|
||||
trigger = {
|
||||
OR = {
|
||||
any_scheme = {
|
||||
type = befriend
|
||||
scheme_target_character = {
|
||||
involved_activity ?= scope:activity
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
NOT = { has_relation_friend = root }
|
||||
opinion = {
|
||||
target = scope:activity.activity_host
|
||||
value > 35
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
has_activity_intent = befriend_attendee_intent
|
||||
intent_target ?= {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
intent_target = { save_scope_as = potential_friend }
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
any_scheme = {
|
||||
type = befriend
|
||||
scheme_target_character = {
|
||||
involved_activity ?= scope:activity
|
||||
}
|
||||
}
|
||||
}
|
||||
random_scheme = {
|
||||
type = befriend
|
||||
limit = {
|
||||
scheme_target_character = {
|
||||
involved_activity ?= scope:activity
|
||||
}
|
||||
}
|
||||
scheme_target_character = {
|
||||
save_scope_as = potential_friend
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
scope:activity = {
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
NOT = { has_relation_friend = root }
|
||||
opinion = {
|
||||
target = scope:activity.activity_host
|
||||
value > 35
|
||||
}
|
||||
}
|
||||
save_scope_as = potential_friend
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_befriend.5002.a
|
||||
scope:potential_friend = {
|
||||
add_opinion = {
|
||||
modifier = bonded_at_feast_opinion
|
||||
target = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#################
|
||||
# Friend End Event
|
||||
#################
|
||||
feast_main_befriend.5003 = {
|
||||
type = activity_event
|
||||
title = feast_main_befriend.5003.t
|
||||
desc = feast_main_befriend.5003.desc
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
lower_left_portrait = scope:spouse
|
||||
|
||||
option = {
|
||||
name = feast_main_befriend.5003.a
|
||||
scope:host_saying_goodbye = {
|
||||
add_opinion = {
|
||||
modifier = bonded_at_feast_opinion
|
||||
target = scope:potential_friend
|
||||
}
|
||||
}
|
||||
feast_end_guest_effect = yes
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
# General Guest End Event
|
||||
###################
|
||||
feast_main_befriend.5004 = {
|
||||
type = activity_event
|
||||
title = feast_main_befriend.5004.t
|
||||
desc = feast_main_befriend.5004.desc
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:spouse
|
||||
animation = personality_bold
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_befriend.5004.a
|
||||
add_hosted_feast_modifier_towards_character = { CHARACTER = scope:activity.activity_host }
|
||||
feast_end_guest_effect = yes
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,768 @@
|
|||
# FEAST ACTIVITY KEY EVENTS
|
||||
# Most custom variables checked here will have been set by the "welcoming" events in feast_activity_standard_events
|
||||
# Each unique key event gets a range of 50 IDs. This should more than suffice in all cases.
|
||||
|
||||
namespace = feast_main_live_fowl
|
||||
|
||||
|
||||
|
||||
|
||||
############################
|
||||
# A LIVELY DISH
|
||||
# 0051 - 0100
|
||||
############################
|
||||
# Among a number of delightfully presented entremets, a peacock [or other fowl] turns out to still be alive.
|
||||
|
||||
# 0051 - 0060: Standard setup and descriptive events.
|
||||
# 0061 - 0070: Standard unique followup events.
|
||||
# 0091 - 0100: Standard end events.
|
||||
|
||||
|
||||
####
|
||||
# Weight and Setup Event
|
||||
####
|
||||
feast_main_live_fowl.0001 = {
|
||||
type = activity_event
|
||||
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:activity.activity_host = {
|
||||
has_variable = last_feast_was
|
||||
}
|
||||
}
|
||||
NOT = { scope:activity.activity_host.var:last_feast_was = flag:live_fowl }
|
||||
}
|
||||
scope:activity = {
|
||||
NOT = {
|
||||
has_activity_option = {
|
||||
category = feast_option_courses
|
||||
option = feast_courses_bad
|
||||
}
|
||||
}
|
||||
any_attending_character = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
save_temporary_scope_as = fowl_dinner_target
|
||||
}
|
||||
any_attending_character = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:fowl_dinner_target
|
||||
}
|
||||
NOT = { has_trait = lazy }
|
||||
NOT = { has_trait = compassionate }
|
||||
save_temporary_scope_as = fowl_bird_chaser
|
||||
}
|
||||
any_attending_character = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:fowl_dinner_target
|
||||
this = scope:fowl_bird_chaser
|
||||
}
|
||||
count > 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
|
||||
# Someone has to take the pain for the enjoyment of others.
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
}
|
||||
save_scope_as = fowl_dinner_target
|
||||
}
|
||||
|
||||
# A sadistic character kills the bird
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
has_trait = sadistic
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:fowl_dinner_target
|
||||
}
|
||||
}
|
||||
random = {
|
||||
chance = 50
|
||||
save_scope_as = fowl_bird_killer
|
||||
}
|
||||
}
|
||||
|
||||
# If the bird is not killed, someone chases it out.
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOT = { exists = scope:fowl_bird_killer }
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:fowl_dinner_target
|
||||
}
|
||||
NOT = { has_trait = lazy }
|
||||
NOT = { has_trait = compassionate }
|
||||
NOT = { has_trait = sadistic }
|
||||
}
|
||||
|
||||
save_scope_as = fowl_bird_chaser
|
||||
}
|
||||
|
||||
activity_host = {
|
||||
set_variable = {
|
||||
name = last_feast_was
|
||||
value = flag:live_fowl
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NAND = {
|
||||
exists = scope:fowl_bird_killer
|
||||
this = scope:fowl_bird_killer
|
||||
}
|
||||
}
|
||||
|
||||
# Generic host event, as long as they are not the bird killer.
|
||||
trigger_event = feast_main_live_fowl.0003
|
||||
}
|
||||
}
|
||||
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:fowl_dinner_target
|
||||
AND = {
|
||||
exists = scope:fowl_bird_killer
|
||||
this = scope:fowl_bird_killer
|
||||
}
|
||||
AND = {
|
||||
exists = scope:fowl_bird_chaser
|
||||
this = scope:fowl_bird_chaser
|
||||
}
|
||||
}
|
||||
}
|
||||
# Generic guest description event
|
||||
trigger_event = feast_main_live_fowl.0002
|
||||
}
|
||||
|
||||
scope:fowl_dinner_target = {
|
||||
trigger_event = feast_main_live_fowl.0004
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:fowl_bird_killer }
|
||||
scope:fowl_bird_killer = {
|
||||
trigger_event = feast_main_live_fowl.0005
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:fowl_bird_chaser }
|
||||
scope:fowl_bird_chaser = {
|
||||
trigger_event = feast_main_live_fowl.0006
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
# Generic event for Guests
|
||||
###
|
||||
feast_main_live_fowl.0002 = {
|
||||
title = feast_main_live_fowl.0002.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_live_fowl.0002.entremets_served
|
||||
first_valid = {
|
||||
# If a character kills the bird
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:fowl_bird_killer
|
||||
}
|
||||
desc = feast_main_live_fowl.0002.bird_killed
|
||||
}
|
||||
# If a named character chases the bird out
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:fowl_bird_chaser
|
||||
}
|
||||
desc = feast_main_live_fowl.0002.bird_chased_by_character
|
||||
}
|
||||
# If a servant chases it away.
|
||||
desc = feast_main_live_fowl.0002.bird_chased_away
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:fowl_dinner_target
|
||||
animation = pain
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:fowl_bird_killer
|
||||
animation = anger
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.0002.a
|
||||
add_character_modifier = {
|
||||
modifier = feast_raucous_entertainment_modifier
|
||||
years = 5
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:fowl_bird_killer }
|
||||
show_as_tooltip = {
|
||||
scope:fowl_bird_killer = {
|
||||
add_dread = medium_dread_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
# Event for Host
|
||||
###
|
||||
feast_main_live_fowl.0003 = {
|
||||
title = feast_main_live_fowl.0003.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_live_fowl.0003.entremets_served
|
||||
first_valid = {
|
||||
# If a character kills the bird
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:fowl_bird_killer
|
||||
}
|
||||
desc = {
|
||||
desc = feast_main_live_fowl.0003.bird_killed
|
||||
}
|
||||
}
|
||||
# If a named character chases the bird out
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:fowl_bird_chaser
|
||||
}
|
||||
desc = {
|
||||
desc = feast_main_live_fowl.0003.bird_chased_by_character
|
||||
}
|
||||
}
|
||||
# If a servant chases it away.
|
||||
desc = feast_main_live_fowl.0003.bird_chased_away
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
right_portrait = {
|
||||
character = scope:fowl_dinner_target
|
||||
animation = pain
|
||||
}
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = shock
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:fowl_bird_killer
|
||||
animation = anger
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_meadandwine
|
||||
}
|
||||
|
||||
trigger = {
|
||||
NOT = {
|
||||
has_character_modifier = feast_raucous_entertainment_modifier
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.0003.a
|
||||
add_character_modifier = {
|
||||
modifier = feast_raucous_entertainment_modifier
|
||||
years = 5
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:fowl_bird_killer }
|
||||
show_as_tooltip = {
|
||||
scope:fowl_bird_killer = {
|
||||
add_dread = medium_dread_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
hidden_effect = {
|
||||
trigger_event = {
|
||||
id = feast_main_live_fowl.9000
|
||||
days = 10
|
||||
}
|
||||
|
||||
scope:activity = {
|
||||
add_activity_log_entry = {
|
||||
key = feast_live_fowl_log
|
||||
tags = { good }
|
||||
score = 25
|
||||
character = root
|
||||
target = scope:fowl_dinner_target
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
# Event for Bird Target
|
||||
###
|
||||
# The guest that suffers the fowl's wrath.
|
||||
feast_main_live_fowl.0004 = {
|
||||
title = feast_main_live_fowl.0004.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_live_fowl.0004.entremets_served
|
||||
first_valid = {
|
||||
# If a character kills the bird
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:fowl_bird_killer
|
||||
}
|
||||
desc = feast_main_live_fowl.0004.bird_killed
|
||||
}
|
||||
# If a named character chases the bird out
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:fowl_bird_chaser
|
||||
}
|
||||
desc = feast_main_live_fowl.0004.bird_chased_by_character
|
||||
}
|
||||
# If a servant chases it away.
|
||||
desc = feast_main_live_fowl.0004.bird_chased_away
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:fowl_dinner_target
|
||||
animation = pain
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:fowl_bird_killer
|
||||
animation = anger
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.0004.a
|
||||
if = {
|
||||
limit = { has_trait = wounded_3 }
|
||||
add_internal_flag = dangerous
|
||||
}
|
||||
random_list = {
|
||||
15 = {
|
||||
increase_wounds_effect = {
|
||||
REASON = feast_accident
|
||||
}
|
||||
add_character_flag = was_wounded_by_bird_at_feast
|
||||
}
|
||||
85 = { } # Nothing happens
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = feast_suspicious_of_food_modifier
|
||||
years = 10
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:fowl_bird_killer }
|
||||
show_as_tooltip = {
|
||||
scope:fowl_bird_killer = {
|
||||
add_dread = medium_dread_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
hidden_effect = {
|
||||
random = {
|
||||
chance = 15
|
||||
scope:activity.activity_host = {
|
||||
save_scope_as = host
|
||||
}
|
||||
trigger_event = {
|
||||
id = feast_main_live_fowl.1001
|
||||
days = { 10 20 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
# Event for Bird Killer
|
||||
###
|
||||
feast_main_live_fowl.0005 = {
|
||||
title = feast_main_live_fowl.0005.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_live_fowl.0005.entremets_served
|
||||
desc = feast_main_live_fowl.0005.bird_killed
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:fowl_dinner_target
|
||||
animation = pain
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.0005.a
|
||||
add_dread = medium_dread_gain
|
||||
add_character_modifier = {
|
||||
modifier = feast_display_of_ruthlessness_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
# Event for Bird Chaser
|
||||
###
|
||||
feast_main_live_fowl.0006 = {
|
||||
title = feast_main_live_fowl.0006.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
desc = feast_main_live_fowl.0006.entremets_served
|
||||
desc = feast_main_live_fowl.0006.bird_chased_by_character
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:fowl_dinner_target
|
||||
animation = pain
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:fowl_bird_killer
|
||||
animation = anger
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.0006.a
|
||||
add_character_modifier = {
|
||||
modifier = feast_bird_based_exercise_modifier
|
||||
years = 5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##################
|
||||
# FOLLOW-UPS
|
||||
##################
|
||||
|
||||
# Become scarred from the bird peck
|
||||
feast_main_live_fowl.1001 = {
|
||||
type = activity_event
|
||||
title = feast_main_live_fowl.1001.t
|
||||
desc = feast_main_live_fowl.1001.desc
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = pain
|
||||
}
|
||||
lower_left_portrait = scope:host
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.1001.a
|
||||
if = {
|
||||
limit = { has_character_flag = was_wounded_by_bird_at_feast }
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = wounded
|
||||
}
|
||||
change_trait_rank = {
|
||||
trait = wounded
|
||||
rank = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
add_trait = scarred
|
||||
add_trait_xp = {
|
||||
trait = scarred
|
||||
value = {
|
||||
integer_range = {
|
||||
min = 5
|
||||
max = 25
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:host = { is_alive = yes }
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
CHARACTER = scope:host
|
||||
REASON = rival_bird_pecked
|
||||
OPINION = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
##################
|
||||
# END EVENT SETUP
|
||||
##################
|
||||
feast_main_live_fowl.9000 = {
|
||||
type = activity_event
|
||||
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = scope:activity
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
|
||||
# Fire the end event for the host
|
||||
activity_host = {
|
||||
save_scope_as = host_saying_goodbye
|
||||
if = {
|
||||
limit = { exists = primary_partner }
|
||||
random_consort = {
|
||||
limit = {
|
||||
this = scope:activity.activity_host.primary_partner
|
||||
is_available_ai = yes
|
||||
}
|
||||
alternative_limit = {
|
||||
is_available_ai = yes
|
||||
}
|
||||
save_scope_as = spouse
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Fire the end event for every participant except specials
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:fowl_dinner_target
|
||||
AND = {
|
||||
exists = scope:fowl_bird_killer
|
||||
this = scope:fowl_bird_killer
|
||||
}
|
||||
AND = {
|
||||
exists = scope:fowl_bird_chaser
|
||||
this = scope:fowl_bird_chaser
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_event = feast_main_live_fowl.9001
|
||||
}
|
||||
|
||||
|
||||
# Fire special guest end events
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:fowl_dinner_target
|
||||
}
|
||||
scope:fowl_dinner_target = {
|
||||
trigger_event = feast_main_live_fowl.9003
|
||||
}
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:fowl_bird_killer
|
||||
}
|
||||
scope:fowl_bird_killer = {
|
||||
trigger_event = feast_main_live_fowl.9004
|
||||
}
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:fowl_bird_chaser
|
||||
}
|
||||
scope:fowl_bird_chaser = {
|
||||
trigger_event = feast_main_live_fowl.9005
|
||||
}
|
||||
}
|
||||
activity_host = { trigger_event = feast_main_live_fowl.9002 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
# Guest End event
|
||||
###################
|
||||
feast_main_live_fowl.9001 = {
|
||||
type = activity_event
|
||||
title = feast_main_live_fowl.9001.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:fowl_bird_killer
|
||||
}
|
||||
desc = feast_main_live_fowl.9001.bird_killer
|
||||
}
|
||||
desc = feast_main_live_fowl.9001.no_bird_killer
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:fowl_dinner_target
|
||||
animation = pain
|
||||
}
|
||||
lower_left_portrait = scope:spouse
|
||||
lower_right_portrait = scope:fowl_bird_killer
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.9001.a
|
||||
stress_impact = {
|
||||
base = minor_stress_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
######################
|
||||
# Host End event
|
||||
######################
|
||||
feast_main_live_fowl.9002 = {
|
||||
type = activity_event
|
||||
title = feast_main_live_fowl.9002.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:fowl_bird_killer
|
||||
}
|
||||
desc = feast_main_live_fowl.9002.bird_killer
|
||||
}
|
||||
desc = feast_main_live_fowl.9002.no_bird_killer
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_bold
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:fowl_dinner_target
|
||||
animation = pain
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.9002.a
|
||||
stress_impact = {
|
||||
base = minor_stress_loss
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
########################
|
||||
# Bird Target end event
|
||||
########################
|
||||
feast_main_live_fowl.9003 = {
|
||||
type = activity_event
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:fowl_bird_killer
|
||||
}
|
||||
desc = feast_main_live_fowl.9003.bird_killer
|
||||
}
|
||||
desc = feast_main_live_fowl.9003.no_bird_killer
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
lower_left_portrait = scope:spouse
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.9003.a
|
||||
increase_wounds_no_death_effect = { REASON = wild_animal }
|
||||
add_opinion = {
|
||||
modifier = feast_victimised_in_prank
|
||||
target = scope:activity.activity_host
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
CHARACTER = scope:activity.activity_host
|
||||
OPINION = 0
|
||||
REASON = rival_fowl_prank
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##################
|
||||
# Bird Killer end event
|
||||
##################
|
||||
feast_main_live_fowl.9004 = {
|
||||
type = activity_event
|
||||
desc = feast_main_live_fowl.9004.desc
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
lower_left_portrait = scope:spouse
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.9004.a
|
||||
add_dread = minor_dread_gain
|
||||
stress_impact = {
|
||||
callous = medium_stress_impact_loss
|
||||
sadistic = medium_stress_impact_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##################
|
||||
# Bird Chaser end event
|
||||
##################
|
||||
feast_main_live_fowl.9005 = {
|
||||
type = activity_event
|
||||
desc = feast_main_live_fowl.9005.desc
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = happiness
|
||||
}
|
||||
lower_left_portrait = scope:spouse
|
||||
|
||||
option = {
|
||||
name = feast_main_live_fowl.9005.a
|
||||
add_prestige = minor_prestige_gain
|
||||
stress_impact = {
|
||||
shy = medium_stress_impact_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,968 @@
|
|||
# FEAST ACTIVITY KEY EVENTS
|
||||
# Most custom variables checked here will have been set by the "welcoming" events in feast_activity_standard_events
|
||||
|
||||
namespace = feast_main_stable_breakin
|
||||
|
||||
|
||||
|
||||
######################
|
||||
# STABLE BREAK-IN
|
||||
# by Petter Vilberg
|
||||
######################
|
||||
# Some guests break into the host's stables and drunkenly ride around on animals.
|
||||
|
||||
# Trigger and weight event
|
||||
feast_main_stable_breakin.0001 = {
|
||||
type = activity_event
|
||||
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:activity.activity_host = { has_variable = last_feast_was }
|
||||
}
|
||||
NOT = { scope:activity.activity_host.var:last_feast_was = flag:stable_breakin }
|
||||
}
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOT = { has_trait = temperate }
|
||||
this != scope:activity.activity_host
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
# Someone to be responsible for the break-in.
|
||||
random_attending_character = {
|
||||
# Either someone who fits the bill
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
OR = {
|
||||
has_trait = lifestyle_reveler
|
||||
has_trait = lunatic
|
||||
has_trait = shrewd
|
||||
}
|
||||
this != scope:activity.activity_host
|
||||
}
|
||||
# Or just someone who's had a little too much to drink
|
||||
alternative_limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOT = { has_trait = temperate }
|
||||
this != scope:activity.activity_host
|
||||
}
|
||||
save_scope_as = breakin_stager
|
||||
}
|
||||
|
||||
# If someone is unfortunate enough to be a deviant in the wrong place at the wrong time...
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
OR = {
|
||||
has_trait = deviant
|
||||
any_secret = {
|
||||
type = secret_deviant
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
this = scope:breakin_stager
|
||||
this = scope:activity.activity_host
|
||||
}
|
||||
}
|
||||
|
||||
save_scope_as = breakin_deviant
|
||||
|
||||
random = {
|
||||
chance = 30
|
||||
modifier = {
|
||||
add = 20
|
||||
scope:breakin_deviant = {
|
||||
has_trait = lustful
|
||||
}
|
||||
}
|
||||
scope:activity = {
|
||||
set_variable = {
|
||||
name = deviant_discovered
|
||||
value = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
# If there's no deviant, make sure the stager has support from someone
|
||||
if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
exists = scope:breakin_deviant
|
||||
}
|
||||
}
|
||||
random_attending_character = {
|
||||
limit = { # A Master of the Horse is the perfect accomplice!
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
has_court_position = master_of_horse_court_position
|
||||
}
|
||||
alternative_limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
this != scope:breakin_stager
|
||||
this != scope:activity.activity_host
|
||||
}
|
||||
|
||||
save_scope_as = breakin_helper
|
||||
}
|
||||
}
|
||||
|
||||
# We need at least one more bystander, if there are enough guests
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOR = {
|
||||
this = scope:breakin_stager
|
||||
AND = {
|
||||
exists = scope:breakin_deviant
|
||||
this = scope:breakin_deviant
|
||||
}
|
||||
AND = {
|
||||
exists = scope:breakin_helper
|
||||
this = scope:breakin_helper
|
||||
}
|
||||
}
|
||||
this != scope:activity.activity_host
|
||||
|
||||
}
|
||||
save_scope_as = breakin_bystander
|
||||
}
|
||||
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOR = {
|
||||
this = scope:breakin_stager
|
||||
AND = {
|
||||
exists = scope:breakin_bystander
|
||||
this = scope:breakin_bystander
|
||||
}
|
||||
AND = {
|
||||
exists = scope:breakin_deviant
|
||||
this = scope:breakin_deviant
|
||||
}
|
||||
AND = {
|
||||
exists = scope:breakin_helper
|
||||
this = scope:breakin_helper
|
||||
}
|
||||
}
|
||||
this != scope:activity.activity_host
|
||||
}
|
||||
|
||||
trigger_event = feast_main_stable_breakin.0002
|
||||
}
|
||||
|
||||
activity_host = {
|
||||
set_variable = {
|
||||
name = last_feast_was
|
||||
value = flag:stable_breakin
|
||||
}
|
||||
trigger_event = feast_main_stable_breakin.0003
|
||||
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = { exists = scope:breakin_bystander }
|
||||
scope:breakin_bystander = {
|
||||
trigger_event = feast_main_stable_breakin.0007
|
||||
}
|
||||
}
|
||||
# If the one causing the break-in is not also a deviant, the stager gets their event.
|
||||
scope:breakin_stager = {
|
||||
trigger_event = feast_main_stable_breakin.0004
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:breakin_deviant
|
||||
scope:breakin_deviant != scope:breakin_stager
|
||||
}
|
||||
scope:breakin_deviant = {
|
||||
trigger_event = feast_main_stable_breakin.0005
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:breakin_helper }
|
||||
scope:breakin_helper = {
|
||||
trigger_event = feast_main_stable_breakin.0006
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
###
|
||||
# Generic guest event
|
||||
###
|
||||
feast_main_stable_breakin.0002 = {
|
||||
type = activity_event
|
||||
title = feast_main_stable_breakin.0002.t
|
||||
desc = {
|
||||
# Pick out who the introduction describes the stager as acting with
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
# The helper that is chosen if no deviant.
|
||||
trigger = {
|
||||
exists = scope:breakin_helper
|
||||
}
|
||||
desc = feast_main_stable_breakin.0002.breakin_with_helper
|
||||
}
|
||||
triggered_desc = {
|
||||
# The deviant, so they are partly responsible for their own demise
|
||||
trigger = {
|
||||
exists = scope:breakin_deviant
|
||||
scope:breakin_deviant != scope:breakin_stager
|
||||
}
|
||||
desc = feast_main_stable_breakin.0002.breakin_with_deviant
|
||||
}
|
||||
# A fallback in case your feast doesn't have that many guests.
|
||||
desc = feast_main_stable_breakin.0002.breakin_with_noone
|
||||
}
|
||||
triggered_desc = {
|
||||
# Some more fun if there are enough feast participants to sustain it.
|
||||
trigger = {
|
||||
exists = scope:breakin_bystander
|
||||
}
|
||||
desc = feast_main_stable_breakin.0002.bystander_riding
|
||||
}
|
||||
first_valid = {
|
||||
# If the deviant is discovered doing deviant things.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:activity = { has_variable = deviant_discovered }
|
||||
}
|
||||
desc = feast_main_stable_breakin.0002.deviant_discovered
|
||||
}
|
||||
# A signoff in case there is no deviant discovery.
|
||||
#desc = feast_main_stable_breakin.0002.what_a_silly_bunch
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:breakin_stager
|
||||
animation = jockey_victory
|
||||
camera = camera_event_horse_right
|
||||
}
|
||||
lower_center_portrait = scope:breakin_helper
|
||||
lower_right_portrait = scope:breakin_deviant
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.0002.a
|
||||
trigger = {
|
||||
NOT = {
|
||||
scope:activity = { has_variable = deviant_discovered }
|
||||
}
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = feast_livestock_at_feast_modifier
|
||||
years = 5
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.0002.b
|
||||
trigger = {
|
||||
exists = scope:activity.var:deviant_discovered
|
||||
NOR = {
|
||||
has_trait = deviant
|
||||
any_secret = {
|
||||
type = secret_deviant
|
||||
}
|
||||
}
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = feast_livestock_at_feast_modifier
|
||||
years = 5
|
||||
}
|
||||
show_as_tooltip = {
|
||||
scope:breakin_deviant = {
|
||||
add_prestige = major_prestige_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.0002.secret_of_my_own
|
||||
trigger = {
|
||||
exists = scope:activity.var:deviant_discovered
|
||||
OR = {
|
||||
has_trait = deviant
|
||||
any_secret = {
|
||||
type = secret_deviant
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:breakin_deviant = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = respect_opinion
|
||||
opinion = 20
|
||||
}
|
||||
}
|
||||
progress_towards_friend_effect = {
|
||||
REASON = friend_fellow_deviant
|
||||
CHARACTER = scope:breakin_deviant
|
||||
OPINION = 0
|
||||
}
|
||||
hidden_effect = {
|
||||
add_opinion = {
|
||||
target = scope:breakin_deviant
|
||||
modifier = pity_opinion
|
||||
opinion = 20
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
# Host event
|
||||
###
|
||||
feast_main_stable_breakin.0003 = {
|
||||
title = feast_main_stable_breakin.0003.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
# Pick out who the introduction describes the stager as acting with
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
# The helper that is chosen if no deviant.
|
||||
trigger = {
|
||||
exists = scope:breakin_helper
|
||||
}
|
||||
desc = feast_main_stable_breakin.0003.breakin_with_helper
|
||||
}
|
||||
triggered_desc = {
|
||||
# The deviant, so they are partly responsible for their own demise
|
||||
trigger = {
|
||||
exists = scope:breakin_deviant
|
||||
scope:breakin_deviant != scope:breakin_stager
|
||||
}
|
||||
desc = feast_main_stable_breakin.0003.breakin_with_deviant
|
||||
}
|
||||
# A fallback in case your feast doesn't have that many guests.
|
||||
desc = feast_main_stable_breakin.0003.breakin_with_noone
|
||||
}
|
||||
triggered_desc = {
|
||||
# Some more fun if there are enough feast participants to sustain it.
|
||||
trigger = {
|
||||
exists = scope:breakin_bystander
|
||||
}
|
||||
desc = feast_main_stable_breakin.0003.bystander_riding
|
||||
}
|
||||
first_valid = {
|
||||
# If the deviant is discovered doing deviant things.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:activity = {
|
||||
has_variable = deviant_discovered
|
||||
}
|
||||
}
|
||||
desc = feast_main_stable_breakin.0003.deviant_discovered
|
||||
}
|
||||
# A signoff in case there is no deviant discovery.
|
||||
#desc = feast_main_stable_breakin.0003.what_a_silly_bunch
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:breakin_stager
|
||||
animation = jockey_victory
|
||||
camera = camera_event_horse_left
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:breakin_helper
|
||||
animation = shame
|
||||
}
|
||||
lower_right_portrait = scope:breakin_deviant
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_meadandwine
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.0003.a
|
||||
add_prestige = minor_prestige_loss
|
||||
add_character_modifier = {
|
||||
modifier = feast_livestock_at_feast_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
hidden_effect = {
|
||||
# Activity End Event setup
|
||||
trigger_event = {
|
||||
id = feast_main_stable_breakin.9000
|
||||
days = 10
|
||||
}
|
||||
scope:activity = {
|
||||
add_activity_log_entry = {
|
||||
key = feast_stable_breakin_log
|
||||
tags = { good }
|
||||
score = 25
|
||||
character = root
|
||||
target = scope:breakin_stager
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
####
|
||||
# Stager event
|
||||
####
|
||||
feast_main_stable_breakin.0004 = {
|
||||
title = feast_main_stable_breakin.0004.t
|
||||
desc = {
|
||||
# Start the event by describing who planted the idea.
|
||||
first_valid = {
|
||||
# The "regular" helper
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_helper
|
||||
}
|
||||
desc = feast_main_stable_breakin.0004.breakin_with_helper
|
||||
}
|
||||
# The deviant, though you may not know.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_deviant
|
||||
scope:breakin_deviant != scope:breakin_stager
|
||||
}
|
||||
desc = feast_main_stable_breakin.0004.breakin_with_deviant
|
||||
}
|
||||
# You've come up with the idea all on your own. Sorry, no excuses!
|
||||
desc = feast_main_stable_breakin.0004.breakin_with_noone
|
||||
}
|
||||
# If someone goes crazy
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_bystander
|
||||
}
|
||||
desc = feast_main_stable_breakin.0004.bystander_riding
|
||||
}
|
||||
# Signoff based on whether the deviant makes poor choices.
|
||||
first_valid = {
|
||||
# If a deviant is discovered, the stager should also get to know about it.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:activity = { has_variable = deviant_discovered }
|
||||
}
|
||||
desc = feast_main_stable_breakin.0004.deviant_discovered
|
||||
}
|
||||
# Regular signoff.
|
||||
desc = feast_main_stable_breakin.0004.signoff
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:breakin_helper
|
||||
animation = shame
|
||||
}
|
||||
lower_center_portrait = scope:breakin_bystander
|
||||
lower_right_portrait = scope:breakin_deviant
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.0004.a
|
||||
add_prestige = minor_prestige_loss
|
||||
increase_wounds_effect = { REASON = horse_riding_accident }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
###
|
||||
# Deviant event
|
||||
###
|
||||
feast_main_stable_breakin.0005 = {
|
||||
title = feast_main_stable_breakin.0005.t
|
||||
desc = {
|
||||
# Deviant shares a good idea with the stager.
|
||||
desc = feast_main_stable_breakin.0005.breakin
|
||||
# Things go a little crazy.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_bystander
|
||||
scope:activity = { has_variable = deviant_discovered }
|
||||
}
|
||||
desc = feast_main_stable_breakin.0005.bystander_riding
|
||||
}
|
||||
first_valid = {
|
||||
# Uh-oh.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:activity = { NOT = { has_variable = deviant_discovered } }
|
||||
}
|
||||
desc = feast_main_stable_breakin.0005.deviant_discovered
|
||||
}
|
||||
# Nothing happened, or...?
|
||||
desc = feast_main_stable_breakin.0005.got_away_with_it
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:breakin_stager
|
||||
animation = jockey_victory
|
||||
camera = camera_event_horse_right
|
||||
}
|
||||
lower_center_portrait = scope:breakin_helper
|
||||
lower_right_portrait = scope:breakin_bystander
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.0005.a
|
||||
add_prestige = major_prestige_loss
|
||||
if = {
|
||||
limit = {
|
||||
any_secret = {
|
||||
type = secret_deviant
|
||||
}
|
||||
scope:activity = { has_variable = deviant_discovered }
|
||||
}
|
||||
random_secret = {
|
||||
type = secret_deviant
|
||||
expose_secret = scope:activity.activity_host
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
###
|
||||
# Helper event
|
||||
###
|
||||
feast_main_stable_breakin.0006 = {
|
||||
title = feast_main_stable_breakin.0006.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
# Helping the stager break in, then having fun.
|
||||
desc = feast_main_stable_breakin.0006.breakin_with_helper
|
||||
# Other people might be having fun, too!
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_bystander
|
||||
scope:activity = { NOT = { has_variable = deviant_discovered } }
|
||||
}
|
||||
desc = feast_main_stable_breakin.0006.bystander_riding
|
||||
}
|
||||
first_valid = {
|
||||
# Some people might be having a little too much fun.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:activity = { has_variable = deviant_discovered }
|
||||
}
|
||||
desc = feast_main_stable_breakin.0006.deviant_discovered
|
||||
}
|
||||
# Everything happens to be at the right level of fun.
|
||||
desc = feast_main_stable_breakin.0006.all_in_good_fun
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:breakin_stager
|
||||
animation = jockey_victory
|
||||
camera = camera_event_horse_right
|
||||
}
|
||||
lower_center_portrait = scope:breakin_bystander
|
||||
lower_right_portrait = scope:breakin_deviant
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.0006.a
|
||||
scope:breakin_stager = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = feast_helped_during_breakin
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:breakin_bystander }
|
||||
scope:breakin_bystander = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = feast_helped_during_breakin
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:breakin_deviant
|
||||
}
|
||||
scope:breakin_deviant = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = feast_helped_during_breakin
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
# Bystander event
|
||||
###
|
||||
feast_main_stable_breakin.0007 = {
|
||||
title = feast_main_stable_breakin.0007.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
# The stager is mainly responsible themselves.
|
||||
desc = feast_main_stable_breakin.0007.breakin
|
||||
# Root is having so much fun!
|
||||
desc = feast_main_stable_breakin.0007.bystander_riding
|
||||
first_valid = {
|
||||
# Uuuuh, deviant doing their thing is highly unfortunate.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:activity = { has_variable = deviant_discovered }
|
||||
}
|
||||
desc = feast_main_stable_breakin.0007.deviant_discovered
|
||||
}
|
||||
# What a great time we had.
|
||||
desc = feast_main_stable_breakin.0007.what_a_silly_bunch
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:breakin_stager
|
||||
animation = jockey_victory
|
||||
camera = camera_event_horse_right
|
||||
}
|
||||
lower_center_portrait = scope:breakin_helper
|
||||
lower_right_portrait = scope:breakin_deviant
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.0007.a
|
||||
add_prestige = minor_prestige_loss
|
||||
scope:breakin_stager = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = feast_helped_during_breakin
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:breakin_deviant
|
||||
}
|
||||
scope:breakin_deviant = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = feast_helped_during_breakin
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##################
|
||||
# END EVENT SETUP
|
||||
##################
|
||||
feast_main_stable_breakin.9000 = {
|
||||
type = activity_event
|
||||
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = scope:activity
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
|
||||
# Set up scopes
|
||||
activity_host = {
|
||||
save_scope_as = host_saying_goodbye
|
||||
if = {
|
||||
limit = { exists = primary_partner }
|
||||
random_consort = {
|
||||
limit = {
|
||||
this = scope:activity.activity_host.primary_partner
|
||||
is_available_ai = yes
|
||||
}
|
||||
alternative_limit = {
|
||||
is_available_ai = yes
|
||||
}
|
||||
save_scope_as = spouse
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Fire the end event for every participant except specials
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:breakin_stager
|
||||
AND = {
|
||||
exists = scope:breakin_helper
|
||||
this = scope:breakin_helper
|
||||
}
|
||||
AND = {
|
||||
exists = scope:breakin_bystander
|
||||
this = scope:breakin_bystander
|
||||
}
|
||||
AND = {
|
||||
exists = scope:breakin_deviant
|
||||
this = scope:breakin_deviant
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_event = feast_main_stable_breakin.9001
|
||||
}
|
||||
|
||||
# Fire special guest end events
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
OR = {
|
||||
this = scope:breakin_stager
|
||||
AND = {
|
||||
exists = scope:breakin_helper
|
||||
this = scope:breakin_helper
|
||||
}
|
||||
AND = {
|
||||
exists = scope:breakin_bystander
|
||||
this = scope:breakin_bystander
|
||||
}
|
||||
AND = {
|
||||
exists = scope:breakin_deviant
|
||||
this = scope:breakin_deviant
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_event = feast_main_stable_breakin.9003
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:breakin_deviant
|
||||
}
|
||||
scope:breakin_deviant = {
|
||||
trigger_event = feast_main_stable_breakin.9004
|
||||
if = {
|
||||
limit = { exists = scope:activity.var:deviant_discovered }
|
||||
set_variable = {
|
||||
name = was_i_discovered
|
||||
value = scope:activity.var:deviant_discovered
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
activity_host = { trigger_event = feast_main_stable_breakin.9002 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
# Guest End event
|
||||
###################
|
||||
feast_main_stable_breakin.9001 = {
|
||||
type = activity_event
|
||||
title = feast_main_stable_breakin.9001.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_deviant
|
||||
scope:breakin_deviant = {
|
||||
has_variable = was_i_discovered
|
||||
}
|
||||
}
|
||||
desc = feast_main_stable_breakin.9001.deviant_caught
|
||||
}
|
||||
desc = feast_main_stable_breakin.9001.in_good_fun
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:host_saying_goodbye
|
||||
animation = happiness
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:spouse
|
||||
animation = personality_bold
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:breakin_stager
|
||||
animation = jockey_idle
|
||||
camera = camera_event_horse_right
|
||||
}
|
||||
lower_center_portrait = scope:breakin_deviant
|
||||
lower_right_portrait = scope:breakin_bystander
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.9001.a
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
######################
|
||||
# Host End event
|
||||
######################
|
||||
feast_main_stable_breakin.9002 = {
|
||||
type = activity_event
|
||||
title = feast_main_stable_breakin.9001.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_deviant
|
||||
scope:breakin_deviant = { has_variable = was_i_discovered }
|
||||
}
|
||||
desc = feast_main_stable_breakin.9002.deviant_caught
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_deviant
|
||||
scope:breakin_deviant = {
|
||||
NOT = { has_variable = was_i_discovered }
|
||||
}
|
||||
}
|
||||
desc = feast_main_stable_breakin.9002.in_good_fun_or_what
|
||||
}
|
||||
desc = feast_main_stable_breakin.9002.in_good_fun
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
right_portrait = {
|
||||
character = scope:breakin_stager
|
||||
animation = wedding_drunk
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:breakin_bystander
|
||||
animation = personality_bold
|
||||
}
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = happiness
|
||||
}
|
||||
lower_center_portrait = scope:breakin_deviant
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.9002.a
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
########################
|
||||
# Stager, helper and bystander end event
|
||||
########################
|
||||
feast_main_stable_breakin.9003 = {
|
||||
type = activity_event
|
||||
title = feast_main_stable_breakin.9001.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_deviant
|
||||
scope:breakin_deviant = {
|
||||
has_variable = was_i_discovered
|
||||
}
|
||||
}
|
||||
desc = feast_main_stable_breakin.9003.deviant_caught
|
||||
}
|
||||
desc = feast_main_stable_breakin.9003.in_good_fun
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:host_saying_goodbye
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:spouse
|
||||
animation = personality_bold
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.9003.a
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#####################
|
||||
# Deviant end event
|
||||
#####################
|
||||
feast_main_stable_breakin.9004 = {
|
||||
type = activity_event
|
||||
title = feast_main_stable_breakin.9001.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:breakin_deviant
|
||||
scope:breakin_deviant = {
|
||||
has_variable = was_i_discovered
|
||||
}
|
||||
}
|
||||
desc = feast_main_stable_breakin.9004.deviant_caught
|
||||
}
|
||||
desc = feast_main_stable_breakin.9004.in_good_fun
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:host_saying_goodbye
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:spouse
|
||||
animation = personality_bold
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stable_breakin.9004.a
|
||||
if = {
|
||||
limit = { NOT = { exists = var:was_i_discovered } }
|
||||
feast_end_guest_effect = yes
|
||||
}
|
||||
else = {
|
||||
stress_impact = {
|
||||
deviant = medium_stress_impact_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,879 @@
|
|||
# FEAST ACTIVITY KEY EVENTS
|
||||
# Most custom variables checked here will have been set by the "welcoming" events in feast_activity_standard_events
|
||||
# Each unique key event gets a range of 50 IDs. This should more than suffice in all cases.
|
||||
|
||||
namespace = feast_main_stew_flood
|
||||
|
||||
|
||||
############################
|
||||
# THE STEW FLOOD
|
||||
# by Petter Vilberg
|
||||
############################
|
||||
# 0001 - 0010: Standard setup and descriptive events.
|
||||
# 0031 - 0040: Extraneous events
|
||||
# 0041 - 0050: Standard end events.
|
||||
|
||||
|
||||
# A giant cauldron of stew tips over in the middle of the meal
|
||||
# Half the hall gets covered in a sea of stew.
|
||||
|
||||
|
||||
####
|
||||
# Weight and Setup Event
|
||||
####
|
||||
feast_main_stew_flood.0001 = {
|
||||
type = activity_event
|
||||
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
trigger_if = {
|
||||
limit = { scope:activity.activity_host = { has_variable = last_feast_was } }
|
||||
NOT = { scope:activity.activity_host.var:last_feast_was = flag:stew_flood }
|
||||
}
|
||||
NOT = {
|
||||
scope:activity = {
|
||||
has_activity_option = {
|
||||
category = feast_option_food
|
||||
option = feast_food_good
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:activity = {
|
||||
any_attending_character = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
drinks_alcohol_trigger = yes
|
||||
save_temporary_scope_as = stew_sea_blamed_temp
|
||||
}
|
||||
any_attending_character = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
has_trait = gluttonous
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:stew_sea_blamed_temp
|
||||
}
|
||||
save_temporary_scope_as = stew_sea_glutton_temp
|
||||
}
|
||||
any_attending_character = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
has_trait = temperate
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:stew_sea_blamed_temp
|
||||
this = scope:stew_sea_glutton_temp
|
||||
}
|
||||
save_temporary_scope_as = stew_sea_horrified_character_temp
|
||||
}
|
||||
any_attending_character = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
this != scope:stew_sea_blamed_temp
|
||||
this != scope:stew_sea_glutton_temp
|
||||
this != scope:stew_sea_horrified_character_temp
|
||||
this != scope:activity.activity_host
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
# Find someone who can take the blame
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
this != scope:activity.activity_host
|
||||
drinks_alcohol_trigger = yes
|
||||
}
|
||||
|
||||
save_scope_as = stew_sea_blamed
|
||||
}
|
||||
|
||||
# Find someone who can cause themselves shame by eating off the floor.
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
has_trait = gluttonous
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:stew_sea_blamed
|
||||
}
|
||||
}
|
||||
random_list = { #Gluttons should not eat from the floor at _every_ feast where we spill food
|
||||
25 = { save_scope_as = stew_sea_glutton }
|
||||
75 = { }
|
||||
}
|
||||
}
|
||||
|
||||
# Find someone who can be horrified by the waste
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
has_trait = temperate
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
this = scope:stew_sea_blamed
|
||||
}
|
||||
}
|
||||
|
||||
save_scope_as = stew_sea_horrified_character
|
||||
}
|
||||
|
||||
# Find someone who gets covered in stew
|
||||
random_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
# Not any of the other targets
|
||||
this != scope:stew_sea_blamed
|
||||
trigger_if = {
|
||||
limit = { exists = scope:stew_sea_glutton }
|
||||
this != scope:stew_sea_glutton
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
trigger_if = {
|
||||
limit = { exists = scope:stew_sea_horrified_character }
|
||||
this != scope:stew_sea_horrified_character
|
||||
}
|
||||
trigger_else = { always = yes }
|
||||
this != scope:activity.activity_host
|
||||
OR = { # Prefer someone arrogant, beautiful or angry
|
||||
has_trait = arrogant
|
||||
has_trait = beauty_good
|
||||
has_trait = wrathful
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = scope:activity.special_guest:honorary_guest_regular
|
||||
}
|
||||
this = scope:activity.special_guest:honorary_guest_regular
|
||||
}
|
||||
}
|
||||
}
|
||||
alternative_limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
# Not any of the other targets
|
||||
this != scope:stew_sea_blamed
|
||||
trigger_if = {
|
||||
limit = { exists = scope:stew_sea_glutton }
|
||||
this != scope:stew_sea_glutton
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = scope:stew_sea_horrified_character }
|
||||
this != scope:stew_sea_horrified_character
|
||||
}
|
||||
this != scope:activity.activity_host
|
||||
OR = { # Take someone who might have an outsized reaction
|
||||
has_trait = stubborn
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
has_trait = paranoid
|
||||
has_trait = lunatic
|
||||
}
|
||||
}
|
||||
alternative_limit = { # Fallback
|
||||
# Not any of the other targets
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
this != scope:stew_sea_blamed
|
||||
trigger_if = {
|
||||
limit = { exists = scope:stew_sea_glutton }
|
||||
this != scope:stew_sea_glutton
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { exists = scope:stew_sea_horrified_character }
|
||||
this != scope:stew_sea_horrified_character
|
||||
}
|
||||
this != scope:activity.activity_host
|
||||
}
|
||||
|
||||
save_scope_as = stew_sea_gets_covered
|
||||
}
|
||||
|
||||
|
||||
activity_host = {
|
||||
set_variable = {
|
||||
name = last_feast_was
|
||||
value = flag:stew_flood
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NOR = {
|
||||
AND = {
|
||||
exists = scope:stew_sea_horrified_character
|
||||
this = scope:stew_sea_horrified_character
|
||||
}
|
||||
AND = {
|
||||
exists = scope:stew_sea_glutton
|
||||
this = scope:stew_sea_glutton
|
||||
}
|
||||
AND = {
|
||||
exists = scope:stew_sea_gets_covered
|
||||
this = scope:stew_sea_gets_covered
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_event = feast_main_stew_flood.0003
|
||||
}
|
||||
}
|
||||
|
||||
every_attending_character = {
|
||||
# Every participant that does not get a special event.
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOR = {
|
||||
AND = {
|
||||
exists = scope:stew_sea_glutton
|
||||
this = scope:stew_sea_glutton
|
||||
}
|
||||
AND = {
|
||||
exists = scope:stew_sea_horrified_character
|
||||
this = scope:stew_sea_horrified_character
|
||||
}
|
||||
AND = {
|
||||
exists = scope:stew_sea_gets_covered
|
||||
this = scope:stew_sea_gets_covered
|
||||
}
|
||||
this = scope:activity.activity_host
|
||||
}
|
||||
}
|
||||
|
||||
# Standard key event
|
||||
trigger_event = feast_main_stew_flood.0002
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:stew_sea_gets_covered }
|
||||
scope:stew_sea_gets_covered = {
|
||||
trigger_event = feast_main_stew_flood.0004
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:stew_sea_glutton }
|
||||
scope:stew_sea_glutton = {
|
||||
trigger_event = feast_main_stew_flood.0005
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:stew_sea_horrified_character }
|
||||
scope:stew_sea_horrified_character = {
|
||||
trigger_event = feast_main_stew_flood.0006
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
####
|
||||
# Standard Descriptive Event
|
||||
####
|
||||
feast_main_stew_flood.0002 = {
|
||||
title = feast_main_stew_flood.0002.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
root = scope:stew_sea_blamed
|
||||
}
|
||||
desc = feast_main_stew_flood.0002.stew_introduction_blamed
|
||||
}
|
||||
# Introduction, which also places blame.
|
||||
triggered_desc = {
|
||||
# If there is a character to blame, they'll be named and shamed
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
desc = feast_main_stew_flood.0002.stew_introduction_blame
|
||||
}
|
||||
# Fallback using blaming a generic servant if there aren't enough characters
|
||||
desc = feast_main_stew_flood.0002.stew_introduction
|
||||
}
|
||||
triggered_desc = {
|
||||
# Someone may get covered by meat stew, which is terrible for them.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_gets_covered
|
||||
}
|
||||
desc = feast_main_stew_flood.0002.someone_got_covered
|
||||
}
|
||||
# A general description of the state of things after the accident:
|
||||
desc = feast_main_stew_flood.0002.splash_desc_standard
|
||||
first_valid = {
|
||||
# A character may bring shame upon themselves by eating off the floor.
|
||||
triggered_desc = {
|
||||
# If there is a horrified witness to the action.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_glutton
|
||||
exists = scope:stew_sea_horrified_character
|
||||
}
|
||||
desc = feast_main_stew_flood.0002.every_target
|
||||
}
|
||||
triggered_desc = {
|
||||
# If there is someone eating off the floor, but no named witness.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_glutton
|
||||
}
|
||||
desc = feast_main_stew_flood.0002.only_glutton
|
||||
}
|
||||
triggered_desc = {
|
||||
# If there is a horrified witness, but nobody eating off the floor.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_horrified_character
|
||||
}
|
||||
desc = feast_main_stew_flood.0002.only_horror
|
||||
}
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:stew_sea_blamed
|
||||
animation = shame
|
||||
}
|
||||
lower_left_portrait = scope:stew_sea_gets_covered
|
||||
lower_center_portrait = scope:stew_sea_glutton
|
||||
lower_right_portrait = scope:stew_sea_horrified_character
|
||||
|
||||
option = {
|
||||
name = feast_main_stew_flood.0002.a
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_gain
|
||||
shy = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
###
|
||||
# Descrptive Event for Host
|
||||
###
|
||||
feast_main_stew_flood.0003 = {
|
||||
title = feast_main_stew_flood.0003.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
first_valid = {
|
||||
# Introduction, which also places blame.
|
||||
triggered_desc = {
|
||||
# If there is a character to blame, they'll be named and shamed
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
desc = feast_main_stew_flood.0003.stew_introduction_blame
|
||||
}
|
||||
# Fallback using blaming a generic servant if there aren't enough characters
|
||||
desc = feast_main_stew_flood.0003.stew_introduction
|
||||
}
|
||||
triggered_desc = {
|
||||
# Someone may get covered by meat stew, which is terrible for them.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_gets_covered
|
||||
}
|
||||
desc = feast_main_stew_flood.0003.someone_got_covered
|
||||
}
|
||||
# A general description of the state of things after the accident:
|
||||
desc = feast_main_stew_flood.0003.splash_desc_standard
|
||||
first_valid = {
|
||||
# A character may bring shame upon themselves by eating off the floor.
|
||||
triggered_desc = {
|
||||
# If there is a horrified witness to the action.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_glutton
|
||||
exists = scope:stew_sea_horrified_character
|
||||
}
|
||||
desc = feast_main_stew_flood.0003.every_target
|
||||
}
|
||||
triggered_desc = {
|
||||
# If there is someone eating off the floor, but no named witness.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_glutton
|
||||
}
|
||||
desc = feast_main_stew_flood.0003.only_glutton
|
||||
}
|
||||
triggered_desc = {
|
||||
# If there is a horrified witness, but nobody eating off the floor.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_horrified_character
|
||||
}
|
||||
desc = feast_main_stew_flood.0003.only_horror
|
||||
}
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:stew_sea_blamed
|
||||
animation = shame
|
||||
}
|
||||
lower_left_portrait = scope:stew_sea_gets_covered
|
||||
lower_center_portrait = scope:stew_sea_glutton
|
||||
lower_right_portrait = scope:stew_sea_horrified_character
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_meadandwine
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stew_flood.0003.a
|
||||
add_prestige = medium_prestige_loss
|
||||
add_character_modifier = {
|
||||
modifier = feast_spilled_stew_modifier
|
||||
years = 5
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
hidden_effect = {
|
||||
trigger_event = {
|
||||
id = feast_main_stew_flood.0040
|
||||
days = 10
|
||||
}
|
||||
scope:activity = {
|
||||
add_activity_log_entry = {
|
||||
key = feast_stew_flood_log
|
||||
tags = { good }
|
||||
score = 25
|
||||
character = root
|
||||
target = scope:stew_sea_gets_covered
|
||||
scope:stew_sea_gets_covered = {
|
||||
add_prestige = minor_prestige_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
# Descriptive Event for Getting Covered
|
||||
###
|
||||
feast_main_stew_flood.0004 = {
|
||||
title = feast_main_stew_flood.0004.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
# First part of event desc
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
# If there is a named character to blame.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
desc = feast_main_stew_flood.0004.stew_introduction_blame
|
||||
}
|
||||
# No named character to blame:
|
||||
desc = feast_main_stew_flood.0004.stew_introduction
|
||||
}
|
||||
# Second part of the event desc
|
||||
desc = feast_main_stew_flood.0004.getting_covered
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:stew_sea_blamed
|
||||
animation = shame
|
||||
}
|
||||
lower_center_portrait = scope:stew_sea_glutton
|
||||
lower_right_portrait = scope:stew_sea_horrified_character
|
||||
|
||||
option = {
|
||||
name = feast_main_stew_flood.0004.a
|
||||
if = {
|
||||
limit = { exists = scope:stew_sea_blamed }
|
||||
add_opinion = {
|
||||
modifier = feast_got_stew_all_over_me
|
||||
target = scope:stew_sea_blamed
|
||||
}
|
||||
}
|
||||
else = { #If no one else is to blame I blame my host
|
||||
scope:stew_sea_gets_covered = {
|
||||
add_opinion = {
|
||||
modifier = feast_got_stew_all_over_me
|
||||
target = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
###
|
||||
# Descriptive Event for Glutton
|
||||
###
|
||||
feast_main_stew_flood.0005 = {
|
||||
title = feast_main_stew_flood.0005.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
first_valid = {
|
||||
# First part of gluttons desc
|
||||
triggered_desc = {
|
||||
# If there's a named character to blame
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
desc = feast_main_stew_flood.0005.stew_introduction_blame
|
||||
}
|
||||
# Fallback for not having a named blame character
|
||||
desc = feast_main_stew_flood.0005.stew_introduction
|
||||
}
|
||||
# Second part of the gluttons desc
|
||||
desc = feast_main_stew_flood.0005.cannot_resist
|
||||
triggered_desc = {
|
||||
# If the horrified character is watching them, that detail is appended.
|
||||
trigger = {
|
||||
exists = scope:stew_sea_horrified_character
|
||||
}
|
||||
desc = feast_main_stew_flood.0005.being_watched
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:stew_sea_blamed
|
||||
animation = shame
|
||||
}
|
||||
lower_left_portrait = scope:stew_sea_gets_covered
|
||||
lower_right_portrait = scope:stew_sea_horrified_character
|
||||
|
||||
option = {
|
||||
name = feast_main_stew_flood.0005.a
|
||||
scope:activity = {
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOT = {
|
||||
has_trait = gluttonous
|
||||
}
|
||||
}
|
||||
add_opinion = {
|
||||
modifier = feast_disgracefully_ate_from_floor
|
||||
target = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
###
|
||||
# Descriptive Event for Horrified
|
||||
###
|
||||
feast_main_stew_flood.0006 = {
|
||||
title = feast_main_stew_flood.0006.t
|
||||
type = activity_event
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
desc = feast_main_stew_flood.0006.stew_introduction
|
||||
}
|
||||
desc = feast_main_stew_flood.0006.stew_introduction_blame
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:stew_sea_glutton
|
||||
}
|
||||
}
|
||||
desc = feast_main_stew_flood.0006.shocking_experience
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:activity.activity_host
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:stew_sea_blamed
|
||||
animation = shame
|
||||
}
|
||||
lower_left_portrait = scope:stew_sea_gets_covered
|
||||
lower_center_portrait = scope:stew_sea_glutton
|
||||
|
||||
option = {
|
||||
name = feast_main_stew_flood.0006.a
|
||||
|
||||
stress_impact = {
|
||||
base = medium_stress_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
##################
|
||||
# END EVENT SETUP
|
||||
##################
|
||||
feast_main_stew_flood.0040 = {
|
||||
type = activity_event
|
||||
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
exists = scope:activity
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
activity_host = {
|
||||
save_scope_as = host
|
||||
if = {
|
||||
limit = { exists = primary_partner }
|
||||
random_consort = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
this = scope:activity.activity_host.primary_partner
|
||||
is_available_ai = yes
|
||||
}
|
||||
alternative_limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
is_available_ai = yes
|
||||
}
|
||||
save_scope_as = spouse
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Fire the end event for every participant except specials
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
feast_default_participant_including_player_trigger = yes
|
||||
NOR = {
|
||||
this = scope:activity.activity_host
|
||||
AND = {
|
||||
exists = scope:stew_sea_gets_covered
|
||||
this = scope:stew_sea_gets_covered
|
||||
}
|
||||
AND = {
|
||||
exists = scope:stew_sea_blamed
|
||||
this = scope:stew_sea_blamed
|
||||
}
|
||||
}
|
||||
}
|
||||
trigger_event = feast_main_stew_flood.0041
|
||||
}
|
||||
|
||||
# Fire special guest end events
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:stew_sea_gets_covered
|
||||
}
|
||||
scope:stew_sea_gets_covered = {
|
||||
trigger_event = feast_main_stew_flood.0043
|
||||
}
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
scope:stew_sea_blamed = {
|
||||
trigger_event = feast_main_stew_flood.0044
|
||||
}
|
||||
}
|
||||
|
||||
# Fire the end event for the host
|
||||
activity_host = {
|
||||
trigger_event = feast_main_stew_flood.0042
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
# Guest End event
|
||||
###################
|
||||
feast_main_stew_flood.0041 = {
|
||||
type = activity_event
|
||||
title = feast_main_stew_flood.0041.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
desc = feast_main_stew_flood.0041.blame_placed
|
||||
}
|
||||
desc = feast_main_stew_flood.0041.no_blame_placed
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:host
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:spouse
|
||||
animation = personality_bold
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stew_flood.0041.a
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
}
|
||||
show_as_tooltip = {
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
scope:stew_sea_gets_covered = {
|
||||
add_opinion = {
|
||||
modifier = feast_got_stew_all_over_me
|
||||
target = scope:stew_sea_blamed
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
scope:stew_sea_gets_covered = {
|
||||
add_opinion = {
|
||||
modifier = feast_got_stew_all_over_me
|
||||
target = scope:host
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
######################
|
||||
# Host End event
|
||||
######################
|
||||
feast_main_stew_flood.0042 = {
|
||||
type = activity_event
|
||||
title = feast_main_stew_flood.0042.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
desc = feast_main_stew_flood.0042.blame_placed
|
||||
}
|
||||
desc = feast_main_stew_flood.0042.no_blame_placed
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:host
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:stew_sea_blamed
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
animation = shame
|
||||
}
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
NOT = { exists = scope:stew_sea_blamed }
|
||||
}
|
||||
animation = shock
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stew_flood.0042.a
|
||||
show_as_tooltip = {
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
scope:stew_sea_gets_covered = {
|
||||
add_opinion = {
|
||||
modifier = feast_got_stew_all_over_me
|
||||
target = scope:stew_sea_blamed
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
scope:stew_sea_gets_covered = {
|
||||
add_opinion = {
|
||||
modifier = feast_got_stew_all_over_me
|
||||
target = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
########################
|
||||
# Got Covered end event
|
||||
########################
|
||||
feast_main_stew_flood.0043 = {
|
||||
type = activity_event
|
||||
title = feast_main_stew_flood.0042.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:stew_sea_blamed
|
||||
}
|
||||
desc = feast_main_stew_flood.0043.blame_placed
|
||||
}
|
||||
desc = feast_main_stew_flood.0043.no_blame_placed
|
||||
}
|
||||
}
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:host
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:spouse
|
||||
animation = personality_bold
|
||||
}
|
||||
|
||||
immediate = {
|
||||
increase_wounds_no_death_effect = { REASON = burned }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stew_flood.0043.a
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
feast_main_stew_flood.0044 = {
|
||||
type = activity_event
|
||||
title = feast_main_stew_flood.0042.t
|
||||
desc = feast_main_stew_flood.0044.desc
|
||||
theme = feast_activity
|
||||
left_portrait = {
|
||||
character = scope:host
|
||||
animation = happiness
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:spouse
|
||||
animation = personality_bold
|
||||
}
|
||||
|
||||
option = {
|
||||
name = feast_main_stew_flood.0044.a
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
1175
N3OW/events/activities/feast_activity/murder_feast_events.txt
Normal file
1175
N3OW/events/activities/feast_activity/murder_feast_events.txt
Normal file
File diff suppressed because it is too large
Load diff
6526
N3OW/events/activities/festival_activity/festival_events.txt
Normal file
6526
N3OW/events/activities/festival_activity/festival_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3718
N3OW/events/activities/funeral_activity/funeral_events.txt
Normal file
3718
N3OW/events/activities/funeral_activity/funeral_events.txt
Normal file
File diff suppressed because it is too large
Load diff
26939
N3OW/events/activities/hold_court_activity/hold_court_events_general.txt
Normal file
26939
N3OW/events/activities/hold_court_activity/hold_court_events_general.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,686 @@
|
|||
namespace = hold_court
|
||||
|
||||
# 7000-7999 - James Beaumont
|
||||
# 7000 - Fair Share
|
||||
# 7010 - Two Faiths, One Family
|
||||
# 7020 - The Shield of Faith
|
||||
|
||||
# Fair Share
|
||||
# Low-dev counties want some money
|
||||
# 7000
|
||||
scripted_trigger hc_7000_valid_county = {
|
||||
hc_7000_low_dev = yes
|
||||
OR = {
|
||||
AND = {
|
||||
exists = holder
|
||||
holder != root
|
||||
}
|
||||
any_direct_de_facto_vassal_title = {
|
||||
exists = holder
|
||||
holder != root
|
||||
}
|
||||
}
|
||||
}
|
||||
scripted_trigger hc_7000_low_dev = {
|
||||
development_level <= {
|
||||
value = root.capital_county.development_level
|
||||
subtract = 10
|
||||
}
|
||||
}
|
||||
hold_court.7000 = {
|
||||
type = court_event
|
||||
title = hold_court.7000.t
|
||||
desc = hold_court.7000.desc
|
||||
theme = realm
|
||||
cooldown = { years = 15 }
|
||||
|
||||
court_scene = {
|
||||
button_position_character = scope:local_leader
|
||||
court_event_force_open = yes
|
||||
show_timeout_info = no
|
||||
should_pause_time = yes
|
||||
roles = {
|
||||
scope:local_leader = {
|
||||
group = petitioners_group
|
||||
animation = beg
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
widget = {
|
||||
gui = "event_window_widget_event_chain_progress"
|
||||
container = "custom_widgets_container"
|
||||
controller = event_chain_progress
|
||||
}
|
||||
|
||||
trigger = {
|
||||
any_sub_realm_county = {
|
||||
hc_7000_valid_county = yes
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
# Court weightings.
|
||||
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
random_sub_realm_county = {
|
||||
limit = {
|
||||
hc_7000_valid_county = yes
|
||||
}
|
||||
save_scope_as = low_dev_county
|
||||
if = {
|
||||
limit = {
|
||||
exists = holder
|
||||
holder != root
|
||||
}
|
||||
holder = { save_scope_as = local_leader }
|
||||
}
|
||||
else = {
|
||||
random_direct_de_facto_vassal_title = {
|
||||
limit = {
|
||||
exists = holder
|
||||
holder != root
|
||||
}
|
||||
holder = { save_scope_as = local_leader }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Divert resources to the low counties
|
||||
option = {
|
||||
name = hold_court.7000.a
|
||||
every_sub_realm_county = {
|
||||
limit = {
|
||||
hc_7000_low_dev = yes
|
||||
}
|
||||
custom = every_county_10_dev_below_capital
|
||||
add_county_modifier = {
|
||||
modifier = hc_7000_dev_boost
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
capital_county = {
|
||||
add_county_modifier = {
|
||||
modifier = hc_7000_dev_reduction
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
remove_treasury_or_gold = medium_treasury_or_gold_value
|
||||
stress_impact = {
|
||||
callous = minor_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
greedy = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = -1
|
||||
ai_compassion = 1
|
||||
}
|
||||
modifier = {
|
||||
factor = 0
|
||||
short_term_treasury_or_gold <= medium_treasury_or_gold_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Perhaps they should move to the capital ¯\_(ツ)_/¯
|
||||
option = {
|
||||
name = hold_court.7000.b
|
||||
every_sub_realm_county = {
|
||||
limit = {
|
||||
hc_7000_low_dev = yes
|
||||
}
|
||||
custom = every_county_10_dev_below_capital
|
||||
add_county_modifier = {
|
||||
modifier = hc_7000_dev_reduction
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
capital_county = {
|
||||
add_county_modifier = {
|
||||
modifier = hc_7000_dev_boost
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
remove_treasury_or_gold = minor_treasury_or_gold_value
|
||||
stress_impact = {
|
||||
compassionate = minor_stress_impact_gain
|
||||
humble = minor_stress_impact_gain
|
||||
just = minor_stress_impact_gain
|
||||
greedy = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = -1
|
||||
ai_compassion = -1
|
||||
}
|
||||
modifier = {
|
||||
factor = 0
|
||||
short_term_treasury_or_gold <= minor_treasury_or_gold_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Man don't care
|
||||
option = {
|
||||
name = hold_court.7000.c
|
||||
stress_impact = {
|
||||
generous = minor_stress_impact_gain
|
||||
just = miniscule_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = 1
|
||||
ai_compassion = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
after = {
|
||||
scope:local_leader = { clear_court_event_participation = yes }
|
||||
# Finish up the chain if relevant.
|
||||
hold_court_queue_post_event_effect = yes
|
||||
}
|
||||
}
|
||||
|
||||
# Two Faiths, One Family
|
||||
# Diff-daith neighbour wants to be besties
|
||||
# 7010
|
||||
scripted_trigger hc_7010_valid_neighbour = {
|
||||
NOT = {
|
||||
has_trait = zealous
|
||||
is_allied_to = root
|
||||
has_relation_rival = root
|
||||
has_trait = holy_warrior
|
||||
}
|
||||
ai_compassion > ai_zeal
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value >= faith_hostile_level
|
||||
}
|
||||
}
|
||||
any_child ?= {
|
||||
save_temporary_scope_as = foreign_princess_temp
|
||||
hc_7010_valid_prince = yes
|
||||
is_courtier_of = prev
|
||||
root = {
|
||||
any_child = {
|
||||
hc_7010_valid_prince = yes
|
||||
is_courtier_of = root
|
||||
allowed_to_marry_character_gender_trigger = { CHARACTER = scope:foreign_princess_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scripted_trigger hc_7010_valid_prince = {
|
||||
is_married = no
|
||||
is_concubine = no
|
||||
is_betrothed = no
|
||||
is_adult = yes
|
||||
fertility >= medium_fertility
|
||||
can_marry_trigger = yes
|
||||
}
|
||||
hold_court.7010 = {
|
||||
type = court_event
|
||||
title = hold_court.7010.t
|
||||
desc = hold_court.7010.desc
|
||||
theme = realm
|
||||
cooldown = { years = 15 }
|
||||
|
||||
court_scene = {
|
||||
button_position_character = scope:friendly_neighbour
|
||||
court_event_force_open = yes
|
||||
show_timeout_info = no
|
||||
should_pause_time = yes
|
||||
roles = {
|
||||
scope:friendly_neighbour = {
|
||||
group = petitioners_group
|
||||
animation = personality_compassionate
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lower_left_portrait = scope:potential_prince
|
||||
lower_right_portrait = scope:foreign_princess
|
||||
|
||||
widget = {
|
||||
gui = "event_window_widget_event_chain_progress"
|
||||
container = "custom_widgets_container"
|
||||
controller = event_chain_progress
|
||||
}
|
||||
|
||||
trigger = {
|
||||
top_liege = this
|
||||
any_neighboring_and_across_water_top_liege_realm_owner = {
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value >= faith_hostile_level
|
||||
}
|
||||
}
|
||||
count >= 2
|
||||
}
|
||||
any_neighboring_and_across_water_top_liege_realm_owner = {
|
||||
hc_7010_valid_neighbour = yes
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
# Court weightings.
|
||||
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
random_neighboring_and_across_water_top_liege_realm_owner = {
|
||||
limit = {
|
||||
hc_7010_valid_neighbour = yes
|
||||
}
|
||||
save_scope_as = friendly_neighbour
|
||||
random_child = {
|
||||
limit = {
|
||||
save_temporary_scope_as = foreign_princess_temp
|
||||
hc_7010_valid_prince = yes
|
||||
is_courtier_of = prev
|
||||
root = {
|
||||
any_child = {
|
||||
hc_7010_valid_prince = yes
|
||||
is_courtier_of = root
|
||||
allowed_to_marry_character_gender_trigger = { CHARACTER = scope:foreign_princess_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = foreign_princess
|
||||
root = {
|
||||
random_child = {
|
||||
limit = {
|
||||
hc_7010_valid_prince = yes
|
||||
is_courtier_of = root
|
||||
allowed_to_marry_character_gender_trigger = { CHARACTER = scope:foreign_princess }
|
||||
}
|
||||
save_scope_as = potential_prince
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# The two shall be wed at once!
|
||||
option = {
|
||||
name = {
|
||||
text = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
OR = {
|
||||
religion = religion:judaism_religion
|
||||
scope:neighboring_ruler = { religion = religion:judaism_religion }
|
||||
}
|
||||
}
|
||||
desc = hold_court.7010.a.jewish # To life, to life, l'chaim. L'chaim, l'chaim, to life. ♪♪
|
||||
}
|
||||
desc = hold_court.7010.a
|
||||
}
|
||||
}
|
||||
}
|
||||
set_relation_friend = {
|
||||
target = scope:friendly_neighbour
|
||||
reason = friend_beyond_faith
|
||||
}
|
||||
marry_spouse_1_dominant = {
|
||||
SPOUSE_1 = scope:potential_prince
|
||||
SPOUSE_2 = scope:foreign_princess
|
||||
}
|
||||
add_truce_both_ways = {
|
||||
character = scope:friendly_neighbour
|
||||
years = 10
|
||||
name = truce_religious_tolerance
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = hc_7010_tolerance
|
||||
years = 10
|
||||
}
|
||||
stress_impact = {
|
||||
callous = minor_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
sadistic = minor_stress_impact_gain
|
||||
brave = minor_stress_impact_gain
|
||||
zealous = major_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_compassion = 1
|
||||
ai_vengefulness = -1
|
||||
ai_zeal = -10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# See how this lunatic speaks of heresy! They must be destroyed!
|
||||
option = {
|
||||
name = hold_court.7010.b
|
||||
if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
has_trait = holy_warrior
|
||||
}
|
||||
}
|
||||
add_trait = holy_warrior
|
||||
}
|
||||
else = {
|
||||
add_character_modifier = {
|
||||
modifier = hc_7010_holy_war
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
REASON = rival_planning_holy_war
|
||||
CHARACTER = scope:friendly_neighbour
|
||||
OPINION = default_rival_opinion
|
||||
}
|
||||
stress_impact = {
|
||||
compassionate = medium_stress_impact_gain
|
||||
cynical = minor_stress_impact_gain
|
||||
just = minor_stress_impact_gain
|
||||
arbitrary = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_compassion = -1
|
||||
ai_vengefulness = 1
|
||||
ai_zeal = 2.5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# I don't wanna do this
|
||||
option = {
|
||||
name = hold_court.7010.c
|
||||
reverse_add_opinion = {
|
||||
modifier = disappointed_opinion
|
||||
opinion = -10
|
||||
target = scope:friendly_neighbour
|
||||
}
|
||||
stress_impact = {
|
||||
compassionate = minor_stress_impact_gain
|
||||
diligent = minor_stress_impact_gain
|
||||
just = minor_stress_impact_gain
|
||||
zealous = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
after = {
|
||||
scope:friendly_neighbour = { clear_court_event_participation = yes }
|
||||
# Finish up the chain if relevant.
|
||||
hold_court_queue_post_event_effect = yes
|
||||
}
|
||||
}
|
||||
|
||||
# The Shield of Faith
|
||||
# Same-faith ruler offers to sponsor a reformation
|
||||
# 7020
|
||||
scripted_trigger hc_7020_valid_same_faith_friend = {
|
||||
top_liege = this
|
||||
this != root
|
||||
NOT = {
|
||||
has_relation_rival = root # I would never work with you!
|
||||
has_trait = zealous # I would never change the old ways!
|
||||
}
|
||||
any_sub_realm_barony = {
|
||||
is_holy_site_of = root.faith
|
||||
holder.faith ?= root.faith
|
||||
}
|
||||
}
|
||||
scripted_trigger hc_7020_valid_threat = {
|
||||
# You see them as a threat to your religion
|
||||
NOT = { faith = { has_doctrine_parameter = unreformed } }
|
||||
religion != root.religion
|
||||
faith = {
|
||||
faith_hostility_level = {
|
||||
target = root.faith
|
||||
value >= faith_hostile_level
|
||||
}
|
||||
}
|
||||
# They are encroaching on your religion in some way
|
||||
OR = {
|
||||
# They control a large amount of your faith's lands
|
||||
any_sub_realm_county = {
|
||||
count >= 4
|
||||
faith = root.faith
|
||||
# Religiously protected people within their realm should not count towards this
|
||||
holder.faith != root.faith
|
||||
}
|
||||
# They recently attacked you
|
||||
any_memory = {
|
||||
memory_type = war_won
|
||||
memory_participant:loser ?= root
|
||||
}
|
||||
# They control one of your holy sites
|
||||
any_sub_realm_barony = {
|
||||
is_holy_site_of = root.faith
|
||||
# The holy site is not held by a vassal of your faith
|
||||
holder.faith != root.faith
|
||||
}
|
||||
}
|
||||
}
|
||||
hold_court.7020 = {
|
||||
type = court_event
|
||||
title = hold_court.7020.t
|
||||
desc = {
|
||||
desc = hold_court.7020.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:threatening_ruler = {
|
||||
any_sub_realm_county = {
|
||||
count >= 4
|
||||
faith = root.faith
|
||||
holder.faith != root.faith
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = hold_court.7020.desc.mid.oppression
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:threatening_ruler = {
|
||||
any_memory = {
|
||||
memory_type = war_won
|
||||
memory_participant:loser ?= root
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = hold_court.7020.desc.mid.recent_war
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:threatening_ruler = {
|
||||
any_sub_realm_barony = {
|
||||
is_holy_site_of = root.faith
|
||||
holder.faith != root.faith
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = hold_court.7020.desc.mid.holy_site
|
||||
}
|
||||
}
|
||||
desc = hold_court.7020.desc.outro
|
||||
}
|
||||
theme = realm
|
||||
cooldown = { years = 15 }
|
||||
|
||||
court_scene = {
|
||||
button_position_character = scope:same_faith_friend
|
||||
court_event_force_open = yes
|
||||
show_timeout_info = no
|
||||
should_pause_time = yes
|
||||
roles = {
|
||||
scope:same_faith_friend = {
|
||||
group = petitioners_group
|
||||
animation = personality_compassionate
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
widget = {
|
||||
gui = "event_window_widget_event_chain_progress"
|
||||
container = "custom_widgets_container"
|
||||
controller = event_chain_progress
|
||||
}
|
||||
|
||||
trigger = {
|
||||
is_ai = no # AI reformation should always follow the rules
|
||||
piety_level >= medium_piety_level
|
||||
faith = { has_doctrine_parameter = unreformed }
|
||||
any_sub_realm_barony = {
|
||||
is_holy_site_of = root.faith
|
||||
holder.faith ?= root.faith
|
||||
}
|
||||
faith = {
|
||||
holy_sites_controlled >= 3
|
||||
any_faith_character = {
|
||||
hc_7020_valid_same_faith_friend = yes
|
||||
}
|
||||
}
|
||||
any_neighboring_and_across_water_top_liege_realm_owner = {
|
||||
hc_7020_valid_threat = yes
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
# Court weightings.
|
||||
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_administrative }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
random_sub_realm_barony = {
|
||||
limit = {
|
||||
is_holy_site_of = root.faith
|
||||
holder.faith ?= root.faith
|
||||
}
|
||||
save_scope_as = holy_site
|
||||
}
|
||||
faith = {
|
||||
random_faith_character = {
|
||||
limit = { hc_7020_valid_same_faith_friend = yes }
|
||||
save_scope_as = same_faith_friend
|
||||
}
|
||||
}
|
||||
random_neighboring_and_across_water_top_liege_realm_owner = {
|
||||
limit = { hc_7020_valid_threat = yes }
|
||||
save_scope_as = threatening_ruler
|
||||
}
|
||||
}
|
||||
|
||||
# The reformation is neccessary
|
||||
option = {
|
||||
name = hold_court.7020.a
|
||||
remove_treasury_or_gold = major_treasury_or_gold_value
|
||||
progress_towards_friend_effect = {
|
||||
REASON = friend_united_by_faith
|
||||
CHARACTER = scope:same_faith_friend
|
||||
OPINION = default_friend_opinion
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = ignore_3_site_rule_tt
|
||||
add_character_flag = ignore_3_holy_site_rule
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = friend_will_convert_tt
|
||||
scope:same_faith_friend = {
|
||||
add_character_flag = forced_conversion_on_reform
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
zealous = minor_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
shy = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_boldness = 1
|
||||
ai_vengefulness = 1
|
||||
ai_rationality = 1
|
||||
ai_zeal = -2
|
||||
}
|
||||
modifier = {
|
||||
factor = 0
|
||||
short_term_treasury_or_gold < major_treasury_or_gold_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Stay strong, brother. We must not sacrifice our ways
|
||||
option = {
|
||||
name = hold_court.7020.b
|
||||
add_piety = medium_piety_gain
|
||||
add_character_modifier = {
|
||||
modifier = hc_7020_guardian_of_the_old_ways
|
||||
years = 15
|
||||
}
|
||||
scope:same_faith_friend = {
|
||||
add_character_modifier = {
|
||||
modifier = hc_7020_guardian_of_the_old_ways
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
cynical = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_boldness = -1
|
||||
ai_vengefulness = 1
|
||||
ai_zeal = 2.5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# We must join together in faith
|
||||
option = {
|
||||
name = hold_court.7020.c
|
||||
trigger = {
|
||||
NOT = { is_allied_to = scope:same_faith_friend }
|
||||
}
|
||||
create_alliance = {
|
||||
target = scope:same_faith_friend
|
||||
allied_through_owner = root
|
||||
allied_through_target = scope:same_faith_friend
|
||||
}
|
||||
stress_impact = {
|
||||
shy = minor_stress_impact_gain
|
||||
callous = minor_stress_impact_gain
|
||||
sadistic = minor_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_compassion = 1
|
||||
ai_sociability = 1
|
||||
ai_boldness = -1
|
||||
ai_vengefulness = 1
|
||||
ai_zeal = 2.5
|
||||
}
|
||||
}
|
||||
}
|
||||
after = {
|
||||
scope:same_faith_friend = { clear_court_event_participation = yes }
|
||||
# Finish up the chain if relevant.
|
||||
hold_court_queue_post_event_effect = yes
|
||||
}
|
||||
}
|
||||
2134
N3OW/events/activities/hold_court_activity/hold_court_events_joe.txt
Normal file
2134
N3OW/events/activities/hold_court_activity/hold_court_events_joe.txt
Normal file
File diff suppressed because it is too large
Load diff
28549
N3OW/events/activities/hunt_activity/hunt_events.txt
Normal file
28549
N3OW/events/activities/hunt_activity/hunt_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3838
N3OW/events/activities/hunt_activity/jb_hunt_events.txt
Normal file
3838
N3OW/events/activities/hunt_activity/jb_hunt_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1641
N3OW/events/activities/hunt_activity/mpo_hunt_events.txt
Normal file
1641
N3OW/events/activities/hunt_activity/mpo_hunt_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3540
N3OW/events/activities/hunt_activity/mpo_nerge_events.txt
Normal file
3540
N3OW/events/activities/hunt_activity/mpo_nerge_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1715
N3OW/events/activities/hunt_activity/tgp_hunt_events.txt
Normal file
1715
N3OW/events/activities/hunt_activity/tgp_hunt_events.txt
Normal file
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
1305
N3OW/events/activities/pilgrimage_activity/hajj_events.txt
Normal file
1305
N3OW/events/activities/pilgrimage_activity/hajj_events.txt
Normal file
File diff suppressed because it is too large
Load diff
14835
N3OW/events/activities/pilgrimage_activity/pilgrimage_events.txt
Normal file
14835
N3OW/events/activities/pilgrimage_activity/pilgrimage_events.txt
Normal file
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
7328
N3OW/events/activities/playdate_activity/playdate_events.txt
Normal file
7328
N3OW/events/activities/playdate_activity/playdate_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2974
N3OW/events/activities/tour_activity/az_tour_events.txt
Normal file
2974
N3OW/events/activities/tour_activity/az_tour_events.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,802 @@
|
|||
namespace = tour_grounds_events
|
||||
|
||||
############################
|
||||
## Tour Mini-Activity: Tour Grounds
|
||||
############################
|
||||
## Vassal Events
|
||||
## 7000-7999
|
||||
## by Claudia Baldassi
|
||||
############################
|
||||
# tour_grounds_events.7000 - Liege: Vassal accidentally tours you past a room/building they didn't want you to see: it has all the nice things
|
||||
# tour_grounds_events.7001 - Vassal: Try to keep your liege from your secret stash room
|
||||
|
||||
#####################################################################################
|
||||
|
||||
######################
|
||||
## Vassal Events
|
||||
## 7000-7999
|
||||
## by Claudia Baldassi
|
||||
######################
|
||||
|
||||
# Liege: Vassal accidentally tours you past a room/building they didn't want you to see: it has all the nice things they didn't want you to try and tax whilst you're here (e.g., their best horses)
|
||||
|
||||
scripted_trigger tour_grounds_has_artifacts_trigger = {
|
||||
any_character_artifact = {
|
||||
is_equipped = no
|
||||
exists = var:quality
|
||||
var:quality >= 40
|
||||
count >= 2
|
||||
}
|
||||
}
|
||||
|
||||
scripted_trigger tour_grounds_has_food_trigger = {
|
||||
has_trait = gluttonous
|
||||
is_vegetarian_trigger = no
|
||||
}
|
||||
|
||||
scripted_trigger tour_grounds_has_wine_trigger = {
|
||||
OR = {
|
||||
has_trait = drunkard
|
||||
has_trait = lifestyle_reveler
|
||||
}
|
||||
drinks_alcohol_trigger = yes
|
||||
}
|
||||
|
||||
scripted_trigger tour_grounds_has_falcons_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
has_trait = lifestyle_hunter
|
||||
has_trait_xp = {
|
||||
trait = lifestyle_hunter
|
||||
track = falconer
|
||||
value >= trait_second_level
|
||||
}
|
||||
}
|
||||
has_character_modifier = peregrine_falcon
|
||||
}
|
||||
}
|
||||
|
||||
scripted_trigger tour_grounds_has_dogs_trigger = {
|
||||
OR = {
|
||||
has_trait = lifestyle_hunter
|
||||
house ?= { has_house_modifier = hold_court_8140_house_modifier }
|
||||
}
|
||||
}
|
||||
|
||||
scripted_trigger tour_grounds_has_horses_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
has_trait = tourney_participant
|
||||
has_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = horse
|
||||
value >= trait_second_level
|
||||
}
|
||||
}
|
||||
any_owned_story = {
|
||||
type = story_cycle_martial_lifestyle_warhorse
|
||||
}
|
||||
has_character_modifier = warfare_tamer_of_horses_modifier
|
||||
has_character_modifier = horse_story_modifier
|
||||
}
|
||||
}
|
||||
|
||||
scripted_trigger tour_grounds_has_gold_trigger = {
|
||||
OR = {
|
||||
has_trait = greedy
|
||||
gold >= 300
|
||||
}
|
||||
}
|
||||
|
||||
scripted_effect tour_grounds_tax_everything_effect = {
|
||||
pay_short_term_gold = {
|
||||
target = root
|
||||
gold = medium_gold_value
|
||||
}
|
||||
if = {
|
||||
limit = { vassal_contract_obligation_level_can_be_increased = feudal_government_taxes }
|
||||
vassal_contract_increase_obligation_level = feudal_government_taxes
|
||||
}
|
||||
else = {
|
||||
every_sub_realm_county = {
|
||||
add_county_modifier = {
|
||||
modifier = tour_liege_extra_taxation_county_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = annoyed_opinion
|
||||
opinion = -20
|
||||
}
|
||||
}
|
||||
|
||||
tour_grounds_events.7000 = {
|
||||
type = activity_event
|
||||
title = tour_grounds_events.7000.t
|
||||
desc = {
|
||||
desc = tour_grounds_events.7000.desc
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_artifacts_trigger = yes
|
||||
}
|
||||
}
|
||||
desc = tour_grounds_events.7000.desc_artifacts
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_food_trigger = yes
|
||||
}
|
||||
}
|
||||
desc = tour_grounds_events.7000.desc_pantry
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_wine_trigger = yes
|
||||
}
|
||||
}
|
||||
desc = tour_grounds_events.7000.desc_cellar
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_falcons_trigger = yes
|
||||
}
|
||||
}
|
||||
desc = tour_grounds_events.7000.desc_falcons
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_dogs_trigger = yes
|
||||
}
|
||||
}
|
||||
desc = tour_grounds_events.7000.desc_dogs
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_horses_trigger = yes
|
||||
}
|
||||
}
|
||||
desc = tour_grounds_events.7000.desc_horses
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_gold_trigger = yes
|
||||
}
|
||||
}
|
||||
desc = tour_grounds_events.7000.desc_gold
|
||||
}
|
||||
desc = tour_grounds_events.7000.desc_fallback
|
||||
}
|
||||
}
|
||||
theme = tour_grounds
|
||||
cooldown = { years = 1 }
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:stop_host_scope
|
||||
animation = shame
|
||||
}
|
||||
override_background = { reference = corridor_day }
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_artifacts_trigger = yes
|
||||
}
|
||||
}
|
||||
scope:stop_host_scope = {
|
||||
random_character_artifact = {
|
||||
limit = {
|
||||
is_equipped = no
|
||||
exists = var:quality
|
||||
var:quality >= 40
|
||||
}
|
||||
save_scope_as = this_artifact
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Option A: tax EVERYTHING
|
||||
option = {
|
||||
name = tour_grounds_events.7000.a
|
||||
scope:stop_host_scope = {
|
||||
send_interface_toast = {
|
||||
title = tour_grounds_events.7000.a.tt
|
||||
left_icon = root
|
||||
tour_grounds_tax_everything_effect = yes
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:activity = {
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = tour_type_taxation
|
||||
}
|
||||
}
|
||||
}
|
||||
increase_tour_success_effect = { POINTS = 1 }
|
||||
}
|
||||
stress_impact = {
|
||||
generous = medium_stress_impact_gain
|
||||
compassionate = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = 1
|
||||
}
|
||||
modifier = {
|
||||
has_trait = compassionate
|
||||
add = -50
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Option B: commandeer all
|
||||
option = {
|
||||
name = tour_grounds_events.7000.b
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = greedy
|
||||
scope:activity = {
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = tour_type_taxation
|
||||
}
|
||||
}
|
||||
scope:activity = {
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = tour_type_intimidation
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:stop_host_scope = {
|
||||
send_interface_toast = {
|
||||
title = tour_grounds_events.7000.b.tt
|
||||
left_icon = root
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:this_artifact
|
||||
}
|
||||
pay_short_term_gold = {
|
||||
target = root
|
||||
gold = major_gold_value
|
||||
}
|
||||
scope:this_artifact = {
|
||||
set_owner = root
|
||||
}
|
||||
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
OR = {
|
||||
tour_grounds_has_food_trigger = yes
|
||||
tour_grounds_has_wine_trigger = yes
|
||||
tour_grounds_has_falcons_trigger = yes
|
||||
tour_grounds_has_dogs_trigger = yes
|
||||
house ?= { has_house_modifier = hold_court_8140_house_modifier }
|
||||
tour_grounds_has_horses_trigger = yes
|
||||
}
|
||||
}
|
||||
pay_short_term_gold = {
|
||||
target = root
|
||||
gold = major_gold_value
|
||||
}
|
||||
custom_tooltip = tour_grounds_events.7000.b.tt.2
|
||||
}
|
||||
else = {
|
||||
scope:stop_host_scope = {
|
||||
pay_short_term_gold = {
|
||||
target = root
|
||||
gold = massive_gold_value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
OR = {
|
||||
tour_grounds_has_food_trigger = yes
|
||||
tour_grounds_has_wine_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = tours_grounds_luxury_dining_modifier
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
OR = {
|
||||
tour_grounds_has_falcons_trigger = yes
|
||||
tour_grounds_has_dogs_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = tours_grounds_hunting_companions_modifier
|
||||
years = 15
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
has_character_modifier = peregrine_falcon
|
||||
}
|
||||
}
|
||||
add_character_modifier = peregrine_falcon
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
house ?= { has_house_modifier = hold_court_8140_house_modifier }
|
||||
}
|
||||
}
|
||||
house = { add_house_modifier = { modifier = hold_court_8140_house_modifier years = 30 } }
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_horses_trigger = yes
|
||||
}
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = tours_grounds_excellent_horses_modifier
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
scope:stop_host_scope = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = insult_opinion
|
||||
opinion = -40
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:activity = {
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = tour_type_intimidation
|
||||
}
|
||||
}
|
||||
}
|
||||
increase_tour_success_effect = { POINTS = 1 }
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
scope:activity = {
|
||||
has_activity_option = {
|
||||
category = special_type
|
||||
option = tour_type_taxation
|
||||
}
|
||||
}
|
||||
}
|
||||
increase_tour_success_effect = { POINTS = 2 }
|
||||
}
|
||||
stress_impact = {
|
||||
generous = major_stress_impact_gain
|
||||
compassionate = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = 2
|
||||
}
|
||||
modifier = {
|
||||
has_trait = compassionate
|
||||
add = -75
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Option C: common interest
|
||||
option = {
|
||||
name = tour_grounds_events.7000.c
|
||||
trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_food_trigger = yes
|
||||
}
|
||||
}
|
||||
tour_grounds_has_food_trigger = yes
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_wine_trigger = yes
|
||||
}
|
||||
}
|
||||
tour_grounds_has_food_trigger = yes
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_falcons_trigger = yes
|
||||
}
|
||||
}
|
||||
tour_grounds_has_falcons_trigger = yes
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_dogs_trigger = yes
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
tour_grounds_has_dogs_trigger = yes
|
||||
any_owned_story = { type = story_cycle_pet_dog }
|
||||
}
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_horses_trigger = yes
|
||||
}
|
||||
}
|
||||
tour_grounds_has_horses_trigger = yes
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
scope:stop_host_scope = {
|
||||
tour_grounds_has_gold_trigger = yes
|
||||
}
|
||||
}
|
||||
has_trait = greedy
|
||||
}
|
||||
trigger_else = {
|
||||
always = no
|
||||
}
|
||||
}
|
||||
scope:stop_host_scope = {
|
||||
send_interface_toast = {
|
||||
title = tour_grounds_events.7000.c.tt
|
||||
left_icon = root
|
||||
custom_tooltip = tour_grounds_events.7000.c.tt.2
|
||||
add_character_modifier = {
|
||||
modifier = tours_grounds_sharing_tips_with_friend_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
can_set_relation_friend_trigger = { CHARACTER = scope:stop_host_scope }
|
||||
}
|
||||
set_relation_friend = { reason = friend_common_interests target = scope:stop_host_scope }
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = tours_grounds_sharing_tips_with_friend_modifier
|
||||
years = 15
|
||||
}
|
||||
stress_impact = {
|
||||
greedy = medium_stress_impact_gain
|
||||
shy = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = greedy
|
||||
add = -75
|
||||
}
|
||||
modifier = {
|
||||
has_trait = shy
|
||||
add = -50
|
||||
}
|
||||
modifier = {
|
||||
has_trait = gregarious
|
||||
add = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Option D: you saw nothing
|
||||
option = {
|
||||
name = tour_grounds_events.7000.d
|
||||
reverse_add_opinion = {
|
||||
target = scope:stop_host_scope
|
||||
modifier = grateful_opinion
|
||||
opinion = 30
|
||||
}
|
||||
scope:stop_host_scope = {
|
||||
send_interface_toast = {
|
||||
title = tour_grounds_events.7000.d.tt
|
||||
left_icon = root
|
||||
if = {
|
||||
limit = {
|
||||
root = {
|
||||
can_add_hook = {
|
||||
target = scope:stop_host_scope
|
||||
type = favor_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
root = {
|
||||
add_hook = {
|
||||
target = scope:stop_host_scope
|
||||
type = favor_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
greedy = major_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = greedy
|
||||
add = -100
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Vassal: Try to keep your liege from your secret stash room
|
||||
|
||||
tour_grounds_events.7001 = {
|
||||
type = activity_event
|
||||
title = tour_grounds_events.7000.t
|
||||
desc = {
|
||||
desc = tour_grounds_events.7001.desc
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
tour_grounds_has_artifacts_trigger = yes
|
||||
}
|
||||
desc = tour_grounds_events.7001.desc_artifacts
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
tour_grounds_has_food_trigger = yes
|
||||
}
|
||||
desc = tour_grounds_events.7001.desc_pantry
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
tour_grounds_has_wine_trigger = yes
|
||||
}
|
||||
desc = tour_grounds_events.7001.desc_cellar
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
tour_grounds_has_falcons_trigger = yes
|
||||
}
|
||||
desc = tour_grounds_events.7001.desc_falcons
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
tour_grounds_has_dogs_trigger = yes
|
||||
}
|
||||
desc = tour_grounds_events.7001.desc_dogs
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
tour_grounds_has_horses_trigger = yes
|
||||
}
|
||||
desc = tour_grounds_events.7001.desc_horses
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
tour_grounds_has_gold_trigger = yes
|
||||
}
|
||||
desc = tour_grounds_events.7001.desc_gold
|
||||
}
|
||||
desc = tour_grounds_events.7001.desc_fallback
|
||||
}
|
||||
desc = tour_grounds_events.7001.desc_conclusion
|
||||
}
|
||||
theme = tour_grounds
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = shame
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:visiting_liege
|
||||
animation = shock
|
||||
}
|
||||
override_background = { reference = corridor_day }
|
||||
|
||||
trigger = {
|
||||
NOT = { has_character_flag = was_extorted_by_visiting_liege }
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = {
|
||||
OR = {
|
||||
tour_grounds_has_artifacts_trigger = yes
|
||||
tour_grounds_has_food_trigger = yes
|
||||
tour_grounds_has_wine_trigger = yes
|
||||
}
|
||||
add = 1
|
||||
}
|
||||
modifier = {
|
||||
OR = {
|
||||
tour_grounds_has_falcons_trigger = yes
|
||||
tour_grounds_has_dogs_trigger = yes
|
||||
tour_grounds_has_horses_trigger = yes
|
||||
}
|
||||
add = 2
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
add_character_flag = {
|
||||
flag = was_extorted_by_visiting_liege
|
||||
days = 30 #Only once per visit
|
||||
}
|
||||
}
|
||||
|
||||
#Option A: try to distract
|
||||
option = {
|
||||
name = tour_grounds_events.7001.a
|
||||
duel = {
|
||||
skills = { diplomacy intrigue }
|
||||
target = scope:visiting_liege
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = tour_grounds_events.7001.a.success
|
||||
send_interface_toast = {
|
||||
title = tour_grounds_events.7001.a.success.tt
|
||||
left_icon = scope:visiting_liege
|
||||
add_character_modifier = {
|
||||
modifier = tour_grounds_hidden_assets_modifier
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = tour_grounds_events.7001.a.failure
|
||||
custom_tooltip = tour_grounds_events.7001_followup
|
||||
scope:visiting_liege = { trigger_event = tour_grounds_events.7000 }
|
||||
send_interface_toast = {
|
||||
title = tour_grounds_events.7001.a.failure.tt
|
||||
left_icon = scope:visiting_liege
|
||||
}
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = deceitful
|
||||
add = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Option B: Bribe
|
||||
option = {
|
||||
name = tour_grounds_events.7001.b
|
||||
duel = {
|
||||
skills = { stewardship intrigue }
|
||||
target = scope:visiting_liege
|
||||
60 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
modifier = {
|
||||
scope:visiting_liege = { has_trait = greedy }
|
||||
add = 20
|
||||
}
|
||||
desc = tour_grounds_events.7001.b.success
|
||||
send_interface_toast = {
|
||||
title = tour_grounds_events.7001.b.success.tt
|
||||
left_icon = scope:visiting_liege
|
||||
add_character_modifier = {
|
||||
modifier = tour_grounds_hidden_assets_modifier
|
||||
years = 15
|
||||
}
|
||||
pay_short_term_gold = {
|
||||
target = scope:visiting_liege
|
||||
gold = major_gold_value
|
||||
}
|
||||
}
|
||||
scope:visiting_liege = {
|
||||
if = {
|
||||
limit = {
|
||||
is_ai = no
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = tour_grounds_events.7001.b.tt
|
||||
custom_tooltip = tour_grounds_events.7001.b.tt.2
|
||||
show_as_tooltip = {
|
||||
root = {
|
||||
pay_short_term_gold = {
|
||||
target = scope:visiting_liege
|
||||
gold = major_gold_value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = grateful_opinion
|
||||
opinion = 30
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
40 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = tour_grounds_events.7001.a.failure
|
||||
scope:visiting_liege = { trigger_event = tour_grounds_events.7000 }
|
||||
custom_tooltip = tour_grounds_events.7001_followup
|
||||
send_interface_toast = {
|
||||
title = tour_grounds_events.7001.a.failure.tt
|
||||
left_icon = scope:visiting_liege
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
#Option C: I was JUST about to take you there!
|
||||
option = {
|
||||
name = tour_grounds_events.7001.c
|
||||
scope:visiting_liege = { trigger_event = tour_grounds_events.7000 }
|
||||
custom_tooltip = tour_grounds_events.7001_followup
|
||||
if = {
|
||||
limit = {
|
||||
scope:visiting_liege = { is_ai = yes }
|
||||
can_add_hook = {
|
||||
target = scope:visiting_liege
|
||||
type = favor_hook
|
||||
}
|
||||
}
|
||||
add_hook = {
|
||||
target = scope:visiting_liege
|
||||
type = favor_hook
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
has_trait = honest
|
||||
add = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4131
N3OW/events/activities/tour_activity/filippa_tour_general_events.txt
Normal file
4131
N3OW/events/activities/tour_activity/filippa_tour_general_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3547
N3OW/events/activities/tour_activity/tour_general_events.txt
Normal file
3547
N3OW/events/activities/tour_activity/tour_general_events.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,503 @@
|
|||
namespace = tour_general
|
||||
############################
|
||||
## Journal Events
|
||||
## 5000-5999
|
||||
## by James Beaumont
|
||||
############################
|
||||
# tour_general.5000 - Failing to solve the puzzle
|
||||
# tour_general.5010 - Solving the journal
|
||||
# tour_general.5020 - The journal is stolen
|
||||
|
||||
#####################################################################################
|
||||
|
||||
############################
|
||||
## Journal Events
|
||||
## 5000-5999
|
||||
## by James Beaumont
|
||||
############################
|
||||
|
||||
# Failing to get the journal open
|
||||
tour_general.5000 = {
|
||||
type = character_event
|
||||
title = tour_general.5000.title
|
||||
desc = tour_general.5000.desc
|
||||
|
||||
theme = learning
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_rational
|
||||
}
|
||||
artifact = {
|
||||
target = scope:mysterious_journal
|
||||
position = lower_right_portrait
|
||||
}
|
||||
option = { # Drat!
|
||||
name = tour_general.5000.a
|
||||
stress_impact = {
|
||||
base = major_stress_impact_gain
|
||||
patient = minor_stress_impact_loss
|
||||
arrogant = minor_stress_impact_gain
|
||||
stubborn = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 50
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Try again!
|
||||
name = tour_general.5000.b
|
||||
duel = {
|
||||
skill = learning
|
||||
value = high_skill_rating
|
||||
50 = { # You solve the puzzle!
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 0.5
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = open_the_journal_tt
|
||||
trigger_event = tour_general.5010
|
||||
}
|
||||
}
|
||||
50 = { # You fail
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -0.5
|
||||
}
|
||||
show_as_tooltip = {
|
||||
add_stress = major_stress_gain
|
||||
}
|
||||
hidden_effect = {
|
||||
trigger_event = tour_general.5001
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
base = major_stress_impact_gain
|
||||
patient = minor_stress_impact_loss
|
||||
arrogant = minor_stress_impact_loss
|
||||
stubborn = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Failing to get the journal open, again!
|
||||
tour_general.5001 = {
|
||||
type = character_event
|
||||
title = tour_general.5001.title
|
||||
desc = tour_general.5001.desc
|
||||
|
||||
theme = learning
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_rational
|
||||
}
|
||||
artifact = {
|
||||
target = scope:mysterious_journal
|
||||
position = lower_right_portrait
|
||||
}
|
||||
option = { # Drat!
|
||||
name = tour_general.5001.a
|
||||
stress_impact = {
|
||||
base = major_stress_impact_gain
|
||||
patient = minor_stress_impact_loss
|
||||
arrogant = minor_stress_impact_gain
|
||||
stubborn = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 50
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Bust open the damn lock!
|
||||
name = tour_general.5001.b
|
||||
duel = {
|
||||
skill = prowess
|
||||
value = high_skill_rating
|
||||
50 = { # You break it
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
}
|
||||
desc = the_journal_is_destroyed_tt
|
||||
send_interface_toast = {
|
||||
title = the_journal_is_destroyed_tt
|
||||
left_icon = root
|
||||
random_owned_story = {
|
||||
type = story_cycle_mysterious_journal
|
||||
end_story = yes
|
||||
}
|
||||
destroy_artifact = scope:mysterious_journal
|
||||
}
|
||||
}
|
||||
50 = { # You crack it open
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 0
|
||||
}
|
||||
desc = open_the_journal_tt
|
||||
custom_tooltip = {
|
||||
text = more_mysteries_inside_tt
|
||||
trigger_event = tour_general.5010
|
||||
}
|
||||
}
|
||||
50 = { # You are too weak
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
}
|
||||
desc = fail_to_open_journal_tt
|
||||
hidden_effect = {
|
||||
send_interface_toast = {
|
||||
title = fail_to_open_journal_tt
|
||||
left_icon = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_gain
|
||||
patient = medium_stress_impact_gain
|
||||
arrogant = medium_stress_impact_loss
|
||||
stubborn = medium_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# You got the journal open, now to decipher it...
|
||||
scripted_trigger journal_answer_is_1 = {
|
||||
scope:mysterious_journal = {
|
||||
var:answer_variable = 1
|
||||
}
|
||||
}
|
||||
scripted_trigger journal_answer_is_2 = {
|
||||
scope:mysterious_journal = {
|
||||
var:answer_variable = 2
|
||||
}
|
||||
}
|
||||
scripted_trigger journal_answer_is_3 = {
|
||||
scope:mysterious_journal = {
|
||||
var:answer_variable = 3
|
||||
}
|
||||
}
|
||||
scripted_trigger journal_answer_is_4 = {
|
||||
scope:mysterious_journal = {
|
||||
var:answer_variable = 4
|
||||
}
|
||||
}
|
||||
|
||||
tour_general.5010 = {
|
||||
type = character_event
|
||||
title = tour_general.5010.title
|
||||
desc = {
|
||||
desc = tour_general.5010.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { journal_answer_is_1 = yes }
|
||||
desc = tour_general.5010.desc.puzzle.a
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { journal_answer_is_2 = yes }
|
||||
desc = tour_general.5010.desc.puzzle.b
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { journal_answer_is_3 = yes }
|
||||
desc = tour_general.5010.desc.puzzle.c
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { journal_answer_is_4 = yes }
|
||||
desc = tour_general.5010.desc.puzzle.d
|
||||
}
|
||||
}
|
||||
desc = tour_general.5010.desc.outro
|
||||
}
|
||||
|
||||
theme = learning
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = happiness
|
||||
}
|
||||
artifact = {
|
||||
target = scope:mysterious_journal
|
||||
position = lower_right_portrait
|
||||
}
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:mysterious_journal = {
|
||||
NOT = { exists = var:answer_variable }
|
||||
}
|
||||
}
|
||||
hidden_effect = {
|
||||
scope:mysterious_journal = {
|
||||
random_list = {
|
||||
25 = {
|
||||
set_variable = {
|
||||
name = answer_variable
|
||||
value = 1
|
||||
}
|
||||
}
|
||||
25 = {
|
||||
set_variable = {
|
||||
name = answer_variable
|
||||
value = 2
|
||||
}
|
||||
}
|
||||
25 = {
|
||||
#You need to have a title/realm for this to be a relevant reward
|
||||
trigger = { is_landed = yes }
|
||||
set_variable = {
|
||||
name = answer_variable
|
||||
value = 3
|
||||
}
|
||||
}
|
||||
25 = {
|
||||
set_variable = {
|
||||
name = answer_variable
|
||||
value = 4
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
option = { # Answer A
|
||||
name = tour_general.5010.a
|
||||
custom_tooltip = {
|
||||
text = attempt_to_solve_the_cipher_tt
|
||||
if = {
|
||||
limit = {
|
||||
journal_answer_is_1 = yes
|
||||
}
|
||||
trigger_event = tour_general.5011
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 50
|
||||
modifier = {
|
||||
factor = 0
|
||||
journal_answer_is_1 = no
|
||||
}
|
||||
}
|
||||
}
|
||||
option = { # Answer B
|
||||
name = tour_general.5010.b
|
||||
custom_tooltip = {
|
||||
text = attempt_to_solve_the_cipher_tt
|
||||
if = {
|
||||
limit = {
|
||||
journal_answer_is_2 = yes
|
||||
}
|
||||
trigger_event = tour_general.5012
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 50
|
||||
modifier = {
|
||||
factor = 0
|
||||
journal_answer_is_2 = no
|
||||
}
|
||||
}
|
||||
}
|
||||
option = { # Answer C
|
||||
name = tour_general.5010.c
|
||||
trigger = { is_landed = yes }
|
||||
custom_tooltip = {
|
||||
text = attempt_to_solve_the_cipher_tt
|
||||
if = {
|
||||
limit = {
|
||||
journal_answer_is_3 = yes
|
||||
}
|
||||
trigger_event = tour_general.5013
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 50
|
||||
modifier = {
|
||||
factor = 0
|
||||
journal_answer_is_3 = no
|
||||
}
|
||||
}
|
||||
}
|
||||
option = { # Answer D
|
||||
name = tour_general.5010.d
|
||||
custom_tooltip = {
|
||||
text = attempt_to_solve_the_cipher_tt
|
||||
if = {
|
||||
limit = {
|
||||
journal_answer_is_4 = yes
|
||||
}
|
||||
trigger_event = tour_general.5014
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 50
|
||||
modifier = {
|
||||
factor = 0
|
||||
journal_answer_is_4 = no
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Generic solving the puzzle reward
|
||||
scripted_effect generic_journal_reward = {
|
||||
random_owned_story = {
|
||||
type = story_cycle_mysterious_journal
|
||||
set_variable = {
|
||||
name = journal_complete_solved
|
||||
value = yes
|
||||
}
|
||||
}
|
||||
add_prestige = major_prestige_gain
|
||||
add_dynasty_prestige = major_dynasty_prestige_gain
|
||||
}
|
||||
|
||||
# You solved it! It's a book about grotesques!
|
||||
tour_general.5011 = {
|
||||
type = character_event
|
||||
title = tour_general.5011.title
|
||||
desc = tour_general.5011.desc
|
||||
|
||||
theme = learning
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = ecstasy
|
||||
}
|
||||
artifact = {
|
||||
target = scope:mysterious_journal
|
||||
position = lower_right_portrait
|
||||
}
|
||||
immediate = {
|
||||
generic_journal_reward = yes
|
||||
scope:mysterious_journal = {
|
||||
set_artifact_name = artifact_journal_of_grotesques
|
||||
set_artifact_description = artifact_journal_of_grotesques_desc
|
||||
set_artifact_rarity = illustrious
|
||||
remove_artifact_modifier = artifact_stress_gain_1_penalty_modifier
|
||||
add_artifact_modifier = artifact_monthly_prestige_gain_per_dread_add_4_modifier
|
||||
add_artifact_modifier = artifact_dread_gain_mult_4_modifier
|
||||
add_artifact_modifier = artifact_learning_1_modifier
|
||||
add_artifact_modifier = artifact_intrigue_2_modifier
|
||||
}
|
||||
}
|
||||
option = { # Omg that's so cool
|
||||
name = tour_general.5011.a
|
||||
ai_chance = {
|
||||
base = 50
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# You solved it! It's a book about advanced theology!
|
||||
tour_general.5012 = {
|
||||
type = character_event
|
||||
title = tour_general.5012.title
|
||||
desc = tour_general.5012.desc
|
||||
|
||||
theme = learning
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = ecstasy
|
||||
}
|
||||
artifact = {
|
||||
target = scope:mysterious_journal
|
||||
position = lower_right_portrait
|
||||
}
|
||||
immediate = {
|
||||
generic_journal_reward = yes
|
||||
scope:mysterious_journal = {
|
||||
set_artifact_name = artifact_journal_of_theology
|
||||
set_artifact_description = artifact_journal_of_theology_desc
|
||||
set_artifact_rarity = illustrious
|
||||
remove_artifact_modifier = artifact_stress_gain_1_penalty_modifier
|
||||
add_artifact_modifier = artifact_monthly_piety_6_modifier
|
||||
add_artifact_modifier = artifact_learning_2_modifier
|
||||
add_artifact_modifier = artifact_domain_tax_same_faith_mult_4_modifier
|
||||
add_artifact_modifier = artifact_monthly_learning_lifestyle_xp_4_modifier
|
||||
}
|
||||
}
|
||||
option = { # Omg that's so cool
|
||||
name = tour_general.5012.a
|
||||
ai_chance = {
|
||||
base = 50
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# You solved it! It's a secret history of your realm!
|
||||
tour_general.5013 = {
|
||||
type = character_event
|
||||
title = tour_general.5013.title
|
||||
desc = tour_general.5013.desc
|
||||
|
||||
theme = tour_stop
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = ecstasy
|
||||
}
|
||||
artifact = {
|
||||
target = scope:mysterious_journal
|
||||
position = lower_right_portrait
|
||||
}
|
||||
immediate = {
|
||||
generic_journal_reward = yes
|
||||
scope:mysterious_journal = {
|
||||
set_artifact_name = artifact_journal_secret_history
|
||||
set_artifact_description = artifact_journal_secret_history_desc
|
||||
set_artifact_rarity = illustrious
|
||||
remove_artifact_modifier = artifact_stress_gain_1_penalty_modifier
|
||||
add_artifact_modifier = artifact_owned_hostile_scheme_success_chance_add_12_modifier
|
||||
add_artifact_modifier = artifact_monthly_intrigue_lifestyle_xp_4_modifier
|
||||
add_artifact_modifier = artifact_intrigue_2_modifier
|
||||
}
|
||||
}
|
||||
option = { # Omg that's so cool
|
||||
name = tour_general.5013.a
|
||||
ai_chance = {
|
||||
base = 50
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# You solved it! It's a book of martial arts techniques
|
||||
tour_general.5014 = {
|
||||
type = character_event
|
||||
title = tour_general.5014.title
|
||||
desc = tour_general.5014.desc
|
||||
|
||||
theme = tour_stop
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = ecstasy
|
||||
}
|
||||
artifact = {
|
||||
target = scope:mysterious_journal
|
||||
position = lower_right_portrait
|
||||
}
|
||||
immediate = {
|
||||
generic_journal_reward = yes
|
||||
scope:mysterious_journal = {
|
||||
set_artifact_name = artifact_journal_of_martial_arts
|
||||
set_artifact_description = artifact_journal_of_martial_arts_desc
|
||||
set_artifact_rarity = illustrious
|
||||
remove_artifact_modifier = artifact_stress_gain_1_penalty_modifier
|
||||
add_artifact_modifier = artifact_prowess_8_modifier
|
||||
add_artifact_modifier = artifact_monthly_martial_lifestyle_xp_4_modifier
|
||||
add_artifact_modifier = artifact_martial_2_modifier
|
||||
}
|
||||
}
|
||||
option = { # Omg that's so cool
|
||||
name = tour_general.5014.a
|
||||
ai_chance = {
|
||||
base = 50
|
||||
}
|
||||
}
|
||||
}
|
||||
2895
N3OW/events/activities/tour_activity/tour_grounds_events_chad.txt
Normal file
2895
N3OW/events/activities/tour_activity/tour_grounds_events_chad.txt
Normal file
File diff suppressed because it is too large
Load diff
10198
N3OW/events/activities/tour_activity/tour_phase_cultural_festival.txt
Normal file
10198
N3OW/events/activities/tour_activity/tour_phase_cultural_festival.txt
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
11069
N3OW/events/activities/tour_activity/tour_phase_host_a_dinner.txt
Normal file
11069
N3OW/events/activities/tour_activity/tour_phase_host_a_dinner.txt
Normal file
File diff suppressed because it is too large
Load diff
7793
N3OW/events/activities/tour_activity/tour_phase_tour_grounds.txt
Normal file
7793
N3OW/events/activities/tour_activity/tour_phase_tour_grounds.txt
Normal file
File diff suppressed because it is too large
Load diff
2766
N3OW/events/activities/tour_activity/tour_travel_events.txt
Normal file
2766
N3OW/events/activities/tour_activity/tour_travel_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2073
N3OW/events/activities/tour_activity/tour_travel_events_dan.txt
Normal file
2073
N3OW/events/activities/tour_activity/tour_travel_events_dan.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,804 @@
|
|||
namespace = tour_travel
|
||||
############################
|
||||
### Highwaymen on your route
|
||||
### By James Beaumont
|
||||
############################
|
||||
tour_travel.9010 = {
|
||||
type = character_event
|
||||
title = tour_travel.9010.t
|
||||
desc = tour_travel.9010.desc
|
||||
theme = travel_tour
|
||||
left_portrait = {
|
||||
character = root
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
has_trait = craven
|
||||
}
|
||||
animation = fear
|
||||
}
|
||||
triggered_animation = {
|
||||
trigger = { has_trait = brave }
|
||||
animation = personality_bold
|
||||
}
|
||||
animation = thinking
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:travel_leader
|
||||
animation = worry
|
||||
}
|
||||
|
||||
cooldown = { years = 2 }
|
||||
|
||||
trigger = {
|
||||
has_activity_intent = justice_intent
|
||||
root.location.county = {
|
||||
NOT = { county_control = 100 }
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = 2
|
||||
root.location.county = {
|
||||
NOT = { county_control <= 75 }
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 2
|
||||
root.location.county = {
|
||||
NOT = { county_control <= 50 }
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 2
|
||||
root.location.county = {
|
||||
NOT = { county_control <= 25 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
exists = current_travel_plan.travel_leader
|
||||
}
|
||||
current_travel_plan.travel_leader = { save_scope_as = travel_leader }
|
||||
}
|
||||
else = {
|
||||
current_travel_plan = {
|
||||
random_entourage_character = {
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = prowess
|
||||
}
|
||||
}
|
||||
save_scope_as = travel_leader
|
||||
}
|
||||
}
|
||||
}
|
||||
current_travel_plan = {
|
||||
next_destination_province = { save_scope_as = next_destination }
|
||||
}
|
||||
}
|
||||
|
||||
option = { #Just go around them
|
||||
name = tour_travel.9010.a
|
||||
current_travel_plan = {
|
||||
delay_travel_plan = { weeks = 1 }
|
||||
}
|
||||
stress_impact = {
|
||||
craven = minor_stress_impact_loss
|
||||
patient = minor_stress_impact_loss
|
||||
impatient = minor_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
just = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
ai_value_modifier = {
|
||||
ai_energy = 1
|
||||
ai_boldness = -1
|
||||
ai_vengefulness = -1
|
||||
ai_honor = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { #Go in and clear em out!
|
||||
name = tour_travel.9010.b
|
||||
scope:travel_leader = {
|
||||
duel = {
|
||||
skill = prowess
|
||||
value = high_skill_rating
|
||||
# Success.
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = tour_travel.9010.success
|
||||
left_icon = scope:travel_leader
|
||||
location.county = {
|
||||
change_county_control = 20
|
||||
add_county_modifier = {
|
||||
modifier = highwaymen_eliminated_modifier
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# Failure.
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = tour_travel.9010.failure
|
||||
left_icon = scope:travel_leader
|
||||
scope:travel_leader = { increase_wounds_effect = { REASON = fight } }
|
||||
increase_wounds_no_death_effect = { REASON = fight }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
just = minor_stress_impact_loss
|
||||
brave = minor_stress_impact_loss
|
||||
patient = minor_stress_impact_gain
|
||||
craven = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
ai_value_modifier = {
|
||||
ai_energy = -1
|
||||
ai_boldness = 1
|
||||
ai_vengefulness = 1
|
||||
ai_honor = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
############################
|
||||
### Possibly innocent man up for execution
|
||||
### By James Beaumont
|
||||
############################
|
||||
scripted_trigger tour_travel_9020_valid_criminal_trigger = {
|
||||
is_physically_able_adult = yes
|
||||
OR = {
|
||||
any_secret = { is_criminal_for = prev }
|
||||
root = {
|
||||
has_imprisonment_reason = prev
|
||||
}
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = adulterer
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = fornicator
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = sodomite
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = witch
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = cannibal
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = deviant
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = incestuous
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
has_trait = murderer
|
||||
}
|
||||
}
|
||||
|
||||
tour_travel.9020 = {
|
||||
type = character_event
|
||||
title = tour_travel.9020.t
|
||||
desc = {
|
||||
desc = tour_travel.9020.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:accused_character = {
|
||||
tour_travel_9020_valid_criminal_trigger = yes
|
||||
}
|
||||
}
|
||||
desc = tour_travel.9020.desc.outro.guilty
|
||||
}
|
||||
desc = tour_travel.9020.desc.outro
|
||||
}
|
||||
}
|
||||
theme = travel_tour
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_rational
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:accused_character
|
||||
animation = prisonhouse
|
||||
triggered_outfit = {
|
||||
remove_default_outfit = no
|
||||
outfit_tags = { beggar_rags }
|
||||
}
|
||||
}
|
||||
|
||||
cooldown = { years = 2 }
|
||||
|
||||
trigger = {
|
||||
has_activity_intent = justice_intent
|
||||
}
|
||||
immediate = {
|
||||
hidden_effect = {
|
||||
if = {
|
||||
limit = {
|
||||
any_pool_character = {
|
||||
province = root.location
|
||||
}
|
||||
}
|
||||
random_pool_character = {
|
||||
province = root.location
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
factor = 2
|
||||
tour_travel_9020_valid_criminal_trigger = yes
|
||||
}
|
||||
}
|
||||
save_scope_as = accused_character
|
||||
}
|
||||
}
|
||||
else = {
|
||||
create_character = {
|
||||
location = root.capital_province
|
||||
template = generic_peasant_character
|
||||
faith = root.location.faith
|
||||
culture = root.location.culture
|
||||
save_scope_as = accused_character
|
||||
}
|
||||
scope:accused_character = {
|
||||
add_character_flag = {
|
||||
flag = silently_disappear_me
|
||||
years = 1
|
||||
}
|
||||
random_list = {
|
||||
10 = {
|
||||
trigger = {
|
||||
root.faith = { has_doctrine_parameter = deviancy_illegal }
|
||||
}
|
||||
add_trait = deviant
|
||||
}
|
||||
10 = {
|
||||
trigger = {
|
||||
root.faith = { has_doctrine_parameter = witchcraft_illegal }
|
||||
}
|
||||
add_trait = witch
|
||||
}
|
||||
10 = {
|
||||
trigger = {
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = adulterer
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
}
|
||||
add_trait = adulterer
|
||||
}
|
||||
10 = {
|
||||
trigger = {
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = fornicator
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
}
|
||||
add_trait = fornicator
|
||||
}
|
||||
10 = {
|
||||
trigger = {
|
||||
trait_is_criminal_in_faith_trigger = {
|
||||
TRAIT = cannibal
|
||||
FAITH = root.faith
|
||||
GENDER_CHARACTER = this
|
||||
}
|
||||
}
|
||||
add_trait = cannibal
|
||||
}
|
||||
10 = {
|
||||
add_trait = murderer
|
||||
}
|
||||
60 = { # They're innocent
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
decide_court_position_to_give_effect = {
|
||||
CANDIDATE = scope:accused_character
|
||||
EMPLOYER = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Support the execution
|
||||
name = tour_travel.9020.a
|
||||
root.location.county = {
|
||||
change_county_control = minor_county_control_gain
|
||||
}
|
||||
scope:accused_character = {
|
||||
death = {
|
||||
death_reason = death_execution
|
||||
killer = root
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:accused_character = {
|
||||
tour_travel_9020_valid_criminal_trigger = yes
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
arbitrary = minor_stress_impact_loss
|
||||
callous = minor_stress_impact_loss
|
||||
sadistic = minor_stress_impact_loss
|
||||
just = medium_stress_impact_loss
|
||||
forgiving = major_stress_impact_gain
|
||||
compassionate = major_stress_impact_gain
|
||||
}
|
||||
}
|
||||
else = {
|
||||
stress_impact = {
|
||||
arbitrary = minor_stress_impact_loss
|
||||
callous = minor_stress_impact_loss
|
||||
sadistic = minor_stress_impact_loss
|
||||
just = major_stress_impact_gain
|
||||
forgiving = major_stress_impact_gain
|
||||
compassionate = major_stress_impact_gain
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
modifier = {
|
||||
factor = 0
|
||||
tour_travel_9020_valid_criminal_trigger = yes
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = forgiving
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0
|
||||
tour_travel_9020_valid_criminal_trigger = no
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = forgiving
|
||||
has_trait = just
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Let them go
|
||||
name = tour_travel.9020.b
|
||||
root.location.county = {
|
||||
change_county_control = minor_county_control_loss
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:accused_character = {
|
||||
tour_travel_9020_valid_criminal_trigger = yes
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
forgiving = medium_stress_impact_loss
|
||||
compassionate = medium_stress_impact_loss
|
||||
arbitrary = minor_stress_impact_gain
|
||||
callous = minor_stress_impact_gain
|
||||
just = medium_stress_impact_gain
|
||||
}
|
||||
}
|
||||
else = {
|
||||
stress_impact = {
|
||||
just = minor_stress_impact_loss
|
||||
forgiving = minor_stress_impact_loss
|
||||
compassionate = minor_stress_impact_loss
|
||||
arbitrary = minor_stress_impact_gain
|
||||
callous = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
modifier = {
|
||||
factor = 0
|
||||
tour_travel_9020_valid_criminal_trigger = yes
|
||||
OR = {
|
||||
has_trait = arbitrary
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
has_trait = just
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0
|
||||
tour_travel_9020_valid_criminal_trigger = no
|
||||
OR = {
|
||||
has_trait = arbitrary
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Let them serve you as penance
|
||||
name = tour_travel.9020.c
|
||||
trigger = {
|
||||
has_royal_court = yes
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = forgiving
|
||||
has_trait = just
|
||||
}
|
||||
}
|
||||
add_courtier = scope:accused_character
|
||||
hidden_effect = {
|
||||
scope:accused_character = {
|
||||
if = {
|
||||
limit = { exists = scope:activity }
|
||||
add_to_activity_without_travel = scope:activity
|
||||
}
|
||||
}
|
||||
}
|
||||
current_travel_plan = {
|
||||
add_companion = scope:accused_character
|
||||
}
|
||||
add_hook = {
|
||||
type = indebted_hook
|
||||
target = scope:accused_character
|
||||
}
|
||||
distribute_determined_court_position_effect = {
|
||||
CANDIDATE = scope:accused_character
|
||||
EMPLOYER = root
|
||||
}
|
||||
consume_imprisonment_reasons = scope:accused_character
|
||||
if = {
|
||||
limit = {
|
||||
scope:accused_character = {
|
||||
tour_travel_9020_valid_criminal_trigger = yes
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
forgiving = medium_stress_impact_loss
|
||||
compassionate = medium_stress_impact_loss
|
||||
just = medium_stress_impact_loss
|
||||
arbitrary = minor_stress_impact_gain
|
||||
callous = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
else = {
|
||||
stress_impact = {
|
||||
just = major_stress_impact_loss
|
||||
forgiving = major_stress_impact_loss
|
||||
compassionate = major_stress_impact_loss
|
||||
arbitrary = minor_stress_impact_gain
|
||||
callous = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
modifier = {
|
||||
factor = 0
|
||||
tour_travel_9020_valid_criminal_trigger = yes
|
||||
OR = {
|
||||
has_trait = arbitrary
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
has_trait = just
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0
|
||||
tour_travel_9020_valid_criminal_trigger = no
|
||||
OR = {
|
||||
has_trait = arbitrary
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
if = {
|
||||
limit = {
|
||||
is_ai = yes
|
||||
scope:accused_character = {
|
||||
has_character_flag = silently_disappear_me
|
||||
}
|
||||
}
|
||||
scope:accused_character = {
|
||||
silent_disappearance_effect = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
############################
|
||||
### Visit a tavern
|
||||
### By James Beaumont
|
||||
############################
|
||||
tour_travel.9030 = {
|
||||
type = character_event
|
||||
title = tour_travel.9030.t
|
||||
desc = {
|
||||
desc = tour_travel.9030.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
drinks_alcohol_trigger = no
|
||||
}
|
||||
desc = tour_travel.9030.desc.mid.hashish
|
||||
}
|
||||
desc = tour_travel.9030.desc.mid
|
||||
}
|
||||
desc = tour_travel.9030.desc.outro
|
||||
}
|
||||
theme = travel_tour
|
||||
override_background = { reference = bp1_bonfire }
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_rational
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:drunky_entourage
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
drinks_alcohol_trigger = no
|
||||
}
|
||||
animation = admiration
|
||||
}
|
||||
animation = drink_goblet
|
||||
}
|
||||
|
||||
cooldown = { years = 2 }
|
||||
|
||||
trigger = {
|
||||
has_activity_intent = reduce_stress_intent
|
||||
is_adult = yes
|
||||
current_travel_plan = {
|
||||
any_entourage_character = {
|
||||
this != root
|
||||
is_ai = yes
|
||||
is_adult = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
current_travel_plan = {
|
||||
random_entourage_character = {
|
||||
limit = {
|
||||
this != root
|
||||
is_ai = yes
|
||||
is_adult = yes
|
||||
}
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
factor = 10
|
||||
OR = {
|
||||
has_trait = drunkard
|
||||
has_trait = hashishiyah
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 2
|
||||
has_trait = gluttonous
|
||||
}
|
||||
modifier = {
|
||||
factor = 2
|
||||
NOT = { has_trait = temperate }
|
||||
}
|
||||
}
|
||||
save_scope_as = drunky_entourage
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Hell yeah, an easy break
|
||||
name = tour_travel.9030.a
|
||||
current_travel_plan = {
|
||||
delay_travel_plan = { weeks = 1 }
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
drinks_alcohol_trigger = yes
|
||||
}
|
||||
add_character_modifier = {
|
||||
modifier = stress_drinking_binge
|
||||
years = 5
|
||||
}
|
||||
}
|
||||
else = {
|
||||
add_character_modifier = {
|
||||
modifier = hashish_with_friend_modifier
|
||||
years = 5
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
lazy = minor_stress_impact_loss
|
||||
drunkard = minor_stress_impact_loss
|
||||
hashishiyah = minor_stress_impact_loss
|
||||
gluttonous = minor_stress_impact_loss
|
||||
diligent = minor_stress_impact_gain
|
||||
impatient = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = diligent
|
||||
has_trait = impatient
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # I have no time for distractions!
|
||||
name = tour_travel.9030.b
|
||||
stress_impact = {
|
||||
diligent = minor_stress_impact_loss
|
||||
impatient = minor_stress_impact_loss
|
||||
lazy = minor_stress_impact_gain
|
||||
drunkard = minor_stress_impact_gain
|
||||
hashishiyah = minor_stress_impact_gain
|
||||
gluttonous = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = lazy
|
||||
has_trait = drunkard
|
||||
has_trait = hashishiyah
|
||||
has_trait = gluttonous
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
############################
|
||||
### Peasants chatting about their favourite heroes
|
||||
### By James Beaumont
|
||||
############################
|
||||
tour_travel.9040 = {
|
||||
type = character_event
|
||||
title = tour_travel.9040.t
|
||||
desc = tour_travel.9040.desc
|
||||
theme = travel_tour
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_bold
|
||||
triggered_outfit = {
|
||||
remove_default_outfit = no
|
||||
outfit_tags = { beggar_rags }
|
||||
}
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:peasant
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
drinks_alcohol_trigger = no
|
||||
}
|
||||
animation = admiration
|
||||
}
|
||||
animation = drink_goblet
|
||||
}
|
||||
|
||||
cooldown = { years = 2 }
|
||||
|
||||
trigger = {
|
||||
has_activity_intent = spread_legend_intent
|
||||
is_location_valid_for_travel_event_on_land = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
root.location = {
|
||||
save_scope_as = county_scope
|
||||
save_scope_as = background_wilderness_scope # For theme
|
||||
}
|
||||
create_character = {
|
||||
location = scope:county_scope
|
||||
template = drunken_peasant_character
|
||||
culture = scope:county_scope.culture
|
||||
faith = scope:county_scope.faith
|
||||
save_scope_as = peasant
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Let me tell you about my legend :)
|
||||
name = tour_travel.9040.a
|
||||
current_travel_plan = {
|
||||
delay_travel_plan = { weeks = 1 }
|
||||
}
|
||||
duel = {
|
||||
skill = diplomacy
|
||||
target = scope:peasant
|
||||
50 = {
|
||||
desc = tour_travel.9040.a.success
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = tour_travel.9040.a.success
|
||||
left_icon = root
|
||||
right_icon = scope:peasant
|
||||
add_prestige = medium_prestige_gain
|
||||
add_character_modifier = {
|
||||
modifier = ce1_legendary_taverns
|
||||
years = 15
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
desc = tour_travel.9040.a.failure
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = tour_travel.9040.a.failure
|
||||
left_icon = root
|
||||
add_prestige = medium_prestige_loss
|
||||
add_character_modifier = {
|
||||
modifier = ce1_legend_mocked
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Ah, I shan't bother them
|
||||
name = tour_travel.9040.b
|
||||
add_stress = medium_stress_loss
|
||||
ai_chance = {
|
||||
base = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
14196
N3OW/events/activities/tournaments/contest_events.txt
Normal file
14196
N3OW/events/activities/tournaments/contest_events.txt
Normal file
File diff suppressed because it is too large
Load diff
8914
N3OW/events/activities/tournaments/ep2_locale_events.txt
Normal file
8914
N3OW/events/activities/tournaments/ep2_locale_events.txt
Normal file
File diff suppressed because it is too large
Load diff
499
N3OW/events/activities/tournaments/james_tournament_events.txt
Normal file
499
N3OW/events/activities/tournaments/james_tournament_events.txt
Normal file
|
|
@ -0,0 +1,499 @@
|
|||
namespace = tournament_events
|
||||
|
||||
##################################################
|
||||
# You are offered a favour by a pretty person
|
||||
# by James Beaumont
|
||||
# 8000
|
||||
##################################################
|
||||
|
||||
scripted_trigger 8000_valid_to_offer_favor = {
|
||||
is_ai = yes
|
||||
is_adult = yes
|
||||
is_lowborn = no # Prevent random uninteresting pool characters from showing up
|
||||
OR = {
|
||||
AND = {
|
||||
is_married = no
|
||||
is_concubine = no
|
||||
}
|
||||
is_consort_of = root
|
||||
might_cheat_on_every_partner_trigger = yes
|
||||
}
|
||||
NOT = {
|
||||
relation_with_character_is_incestuous_in_faith_trigger = {
|
||||
CHARACTER = root
|
||||
FAITH = root.faith
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
is_attracted_to_gender_of = root
|
||||
has_sexuality = asexual # This is romance and courtship, asexuals should be fine with it most of the time
|
||||
}
|
||||
OR = {
|
||||
AND = {
|
||||
root.faith = { NOT = { has_doctrine_parameter = homosexuality_accepted } }
|
||||
NOT = { sex_same_as = root }
|
||||
}
|
||||
root.faith = { has_doctrine_parameter = homosexuality_accepted }
|
||||
}
|
||||
NOR = {
|
||||
has_relation_soulmate = root
|
||||
# Celibates should abstain always
|
||||
has_trait = celibate
|
||||
# No priests giving favours
|
||||
AND = {
|
||||
is_clergy = yes
|
||||
NOT = { faith = { has_doctrine_parameter = clergy_can_marry } }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tournament_events.8000 = { # Start
|
||||
type = activity_event
|
||||
title = tournament_events.8000.t
|
||||
desc = {
|
||||
desc = tournament_events.8000.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
any_in_list = {
|
||||
list = potential_favour_givers
|
||||
count > 1
|
||||
}
|
||||
}
|
||||
desc = tournament_events.8000.desc.mid.two
|
||||
}
|
||||
desc = tournament_events.8000.desc.mid
|
||||
}
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
NOR = {
|
||||
is_attracted_to_gender_of = scope:favor_giver_1
|
||||
is_attracted_to_gender_of = scope:favor_giver_2
|
||||
has_sexuality = asexual
|
||||
}
|
||||
}
|
||||
desc = tournament_events.8000.desc.outro.homo
|
||||
}
|
||||
}
|
||||
}
|
||||
theme = tournament_locale_camp
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = thinking
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:favor_giver_1
|
||||
animation = flirtation
|
||||
}
|
||||
lower_right_portrait = {
|
||||
character = scope:favor_giver_2
|
||||
animation = flirtation
|
||||
}
|
||||
|
||||
cooldown = { years = 1 }
|
||||
|
||||
trigger = {
|
||||
activity_is_competing_trigger = yes
|
||||
scope:activity = {
|
||||
any_guest_subset_current_phase = { # There is a spectator who fancies you
|
||||
name = spectator
|
||||
8000_valid_to_offer_favor = yes
|
||||
}
|
||||
}
|
||||
NOT = { has_trait = celibate }
|
||||
OR = { # For AI priests in tournaments
|
||||
is_clergy = no
|
||||
faith = { has_doctrine_parameter = clergy_can_marry }
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = {
|
||||
factor = 2
|
||||
has_activity_intent = woo_attendee_intent
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
hidden_effect = {
|
||||
save_scope_as = favor_recipient
|
||||
scope:activity = {
|
||||
every_guest_subset_current_phase = {
|
||||
name = spectator
|
||||
limit = { 8000_valid_to_offer_favor = yes }
|
||||
add_to_list = potential_favour_givers
|
||||
}
|
||||
random_in_list = {
|
||||
list = potential_favour_givers
|
||||
weight = {
|
||||
base = 20
|
||||
modifier = { # If they are wooing you, they're much more likely to do this
|
||||
factor = 100
|
||||
has_activity_intent = woo_attendee_intent
|
||||
intent_target = root
|
||||
}
|
||||
modifier = { # Get their intent target where possible
|
||||
add = 20
|
||||
this = root.intent_target
|
||||
}
|
||||
modifier = { # Get someone fertile for the player
|
||||
add = 20
|
||||
fertility > low_fertility
|
||||
}
|
||||
modifier = { # They love knights and stuff
|
||||
add = 20
|
||||
has_trait = gallant
|
||||
}
|
||||
modifier = {
|
||||
add = ai_honor
|
||||
}
|
||||
modifier = { # Cheaters are possible, but should be less likely
|
||||
add = 20
|
||||
OR = {
|
||||
AND = {
|
||||
is_married = no
|
||||
is_concubine = no
|
||||
}
|
||||
is_consort_of = root
|
||||
is_concubine_of = root
|
||||
}
|
||||
}
|
||||
modifier = { # Get someone interesting
|
||||
add = 20
|
||||
is_claimant = yes
|
||||
}
|
||||
modifier = {
|
||||
add = 20
|
||||
OR = {
|
||||
has_same_sinful_trait = root
|
||||
has_same_virtue_trait = root
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = favor_giver_1
|
||||
hidden_effect = {
|
||||
create_artifact_tournament_favor_effect = {
|
||||
OWNER = scope:favor_giver_1
|
||||
RECIPIENT = root
|
||||
}
|
||||
}
|
||||
scope:newly_created_artifact = { save_scope_as = favor_1 }
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
any_in_list = {
|
||||
list = potential_favour_givers
|
||||
count > 1
|
||||
}
|
||||
}
|
||||
random_in_list = {
|
||||
list = potential_favour_givers
|
||||
limit = {
|
||||
this != scope:favor_giver_1
|
||||
}
|
||||
weight = {
|
||||
base = 20
|
||||
modifier = { # If they are wooing you, they're much more likely to do this
|
||||
factor = 100
|
||||
has_activity_intent = woo_attendee_intent
|
||||
intent_target = root
|
||||
}
|
||||
modifier = { # Get their intent target where possible
|
||||
add = 20
|
||||
this = root.intent_target
|
||||
}
|
||||
modifier = {
|
||||
add = 20
|
||||
fertility > low_fertility
|
||||
}
|
||||
modifier = {
|
||||
add = 20
|
||||
has_trait = gallant
|
||||
}
|
||||
modifier = {
|
||||
add = ai_honor
|
||||
}
|
||||
modifier = {
|
||||
OR = {
|
||||
AND = {
|
||||
is_married = no
|
||||
is_concubine = no
|
||||
}
|
||||
is_consort_of = root
|
||||
is_concubine_of = root
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 20
|
||||
OR = {
|
||||
has_same_sinful_trait = root
|
||||
has_same_virtue_trait = root
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = favor_giver_2
|
||||
hidden_effect = {
|
||||
create_artifact_tournament_favor_effect = {
|
||||
OWNER = scope:favor_giver_2
|
||||
RECIPIENT = root
|
||||
}
|
||||
}
|
||||
scope:newly_created_artifact = { save_scope_as = favor_2 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add_prestige = medium_prestige_gain
|
||||
custom_tooltip = tournament_events.1251.favor_tt
|
||||
}
|
||||
|
||||
option = { # Why, suitor 1 is perfect for me!
|
||||
name = tournament_events.8000.a
|
||||
scope:activity = {
|
||||
add_activity_log_entry = {
|
||||
key = tournament_favor_given_log
|
||||
score = 25
|
||||
tags = { favors good }
|
||||
character = scope:favor_recipient
|
||||
target = scope:favor_giver_1
|
||||
|
||||
# Effects
|
||||
show_as_tooltip = {
|
||||
scope:favor_1 = { set_owner = root }
|
||||
}
|
||||
hidden_effect = {
|
||||
if = {
|
||||
limit = { exists = scope:favor_2 }
|
||||
destroy_artifact = scope:favor_2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
hidden_effect = {
|
||||
scope:favor_1 = { equip_artifact_to_owner_replace = yes }
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
# They are not wooing me
|
||||
scope:favor_giver_1 = {
|
||||
any_scheme = {
|
||||
type = courting
|
||||
scheme_target_character = root
|
||||
}
|
||||
}
|
||||
# I am not wooing them
|
||||
any_scheme = {
|
||||
type = courting
|
||||
scheme_target_character = root
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:favor_giver_1 = {
|
||||
start_scheme = {
|
||||
type = courting
|
||||
target_character = root
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
set_relation_soulmate = {
|
||||
reason = soulmate_tournament
|
||||
target = scope:favor_giver_1
|
||||
}
|
||||
}
|
||||
reverse_add_opinion = {
|
||||
target = scope:favor_giver_1
|
||||
modifier = flattered_opinion
|
||||
opinion = 20
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:favor_giver_2 }
|
||||
reverse_add_opinion = {
|
||||
target = scope:favor_giver_2
|
||||
modifier = rebuffed_opinion
|
||||
opinion = -15
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
gallant = minor_stress_impact_loss
|
||||
arrogant = minor_stress_impact_loss
|
||||
chaste = minor_stress_impact_gain
|
||||
cynical = minor_stress_impact_gain
|
||||
zealous = minor_stress_impact_gain
|
||||
humble = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = chaste
|
||||
has_trait = cynical
|
||||
has_trait = zealous
|
||||
has_trait = humble
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0.5
|
||||
NOT = { # Only 0.5 since gay characters may pretend to be interested in a homophobic environment
|
||||
is_attracted_to_gender_of = scope:favor_giver_1
|
||||
has_sexuality = asexual
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Why, suitor 2 is perfect for me!
|
||||
name = tournament_events.8000.b
|
||||
trigger = {
|
||||
exists = scope:favor_giver_2
|
||||
}
|
||||
scope:activity = {
|
||||
add_activity_log_entry = {
|
||||
key = tournament_favor_given_log
|
||||
score = 25
|
||||
tags = { favors good }
|
||||
character = scope:favor_recipient
|
||||
target = scope:favor_giver_1
|
||||
|
||||
# Effects
|
||||
show_as_tooltip = {
|
||||
scope:favor_2 = { set_owner = root }
|
||||
}
|
||||
hidden_effect = {
|
||||
if = {
|
||||
limit = { exists = scope:favor_1 }
|
||||
destroy_artifact = scope:favor_1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
hidden_effect = {
|
||||
scope:favor_2 = { equip_artifact_to_owner_replace = yes }
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
# They are not wooing me
|
||||
scope:favor_giver_2 = {
|
||||
any_scheme = {
|
||||
type = courting
|
||||
scheme_target_character = root
|
||||
}
|
||||
}
|
||||
# I am not wooing them
|
||||
any_scheme = {
|
||||
type = courting
|
||||
scheme_target_character = root
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:favor_giver_2 = {
|
||||
start_scheme = {
|
||||
type = courting
|
||||
target_character = root
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
set_relation_soulmate = {
|
||||
reason = soulmate_tournament
|
||||
target = scope:favor_giver_2
|
||||
}
|
||||
}
|
||||
reverse_add_opinion = {
|
||||
target = scope:favor_giver_2
|
||||
modifier = flattered_opinion
|
||||
opinion = 20
|
||||
}
|
||||
reverse_add_opinion = {
|
||||
target = scope:favor_giver_1
|
||||
modifier = rebuffed_opinion
|
||||
opinion = -15
|
||||
}
|
||||
stress_impact = {
|
||||
gallant = minor_stress_impact_loss
|
||||
arrogant = minor_stress_impact_loss
|
||||
chaste = minor_stress_impact_gain
|
||||
cynical = minor_stress_impact_gain
|
||||
zealous = minor_stress_impact_gain
|
||||
humble = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = chaste
|
||||
has_trait = cynical
|
||||
has_trait = zealous
|
||||
has_trait = humble
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0.5
|
||||
NOT = {
|
||||
is_attracted_to_gender_of = scope:favor_giver_1
|
||||
has_sexuality = asexual
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Oh bugger off both of you
|
||||
name = tournament_events.8000.c
|
||||
add_prestige = medium_prestige_gain
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
|
||||
reverse_add_opinion = {
|
||||
target = scope:favor_giver_1
|
||||
modifier = rebuffed_opinion
|
||||
opinion = -15
|
||||
}
|
||||
hidden_effect = {
|
||||
if = {
|
||||
limit = { exists = scope:favor_1 }
|
||||
destroy_artifact = scope:favor_1
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:favor_2 }
|
||||
destroy_artifact = scope:favor_2
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:favor_giver_2 }
|
||||
reverse_add_opinion = {
|
||||
target = scope:favor_giver_2
|
||||
modifier = rebuffed_opinion
|
||||
opinion = -15
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
gallant = minor_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
lustful = minor_stress_impact_gain
|
||||
rakish = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = gallant
|
||||
has_trait = arrogant
|
||||
has_trait = lustful
|
||||
has_trait = rakish
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0.5
|
||||
NOT = {
|
||||
is_attracted_to_gender_of = scope:favor_giver_1
|
||||
has_sexuality = asexual
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
604
N3OW/events/activities/tournaments/jason_first_race_event.txt
Normal file
604
N3OW/events/activities/tournaments/jason_first_race_event.txt
Normal file
|
|
@ -0,0 +1,604 @@
|
|||
namespace = jason_first_race_event
|
||||
|
||||
|
||||
##################################################
|
||||
# A Mess of Legs
|
||||
# by Jason Cantalini
|
||||
# 4700
|
||||
##################################################
|
||||
|
||||
scripted_trigger jason_first_race_event_1_opponent_trigger = {
|
||||
is_ai = yes
|
||||
exists = var:contest_aptitude
|
||||
this != root
|
||||
OR = {
|
||||
is_lowborn = no
|
||||
is_landed = no
|
||||
}
|
||||
}
|
||||
|
||||
#Two racers collide with each other
|
||||
jason_first_race_event.1 = {
|
||||
type = activity_event
|
||||
title = jason_first_race_event.1.t
|
||||
desc = {
|
||||
desc = jason_first_race_event.1.desc
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = paranoid
|
||||
has_trait = vengeful
|
||||
has_trait = wrathful
|
||||
has_relation_rival = scope:opponent
|
||||
has_relation_nemesis = scope:opponent
|
||||
}
|
||||
NOR = {
|
||||
has_trait = trusting
|
||||
has_trait = forgiving
|
||||
has_trait = compassionate
|
||||
}
|
||||
}
|
||||
desc = jason_first_race_event.1.desc.suspicious
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = trusting
|
||||
has_trait = forgiving
|
||||
has_trait = compassionate
|
||||
}
|
||||
}
|
||||
desc = jason_first_race_event.1.desc.sympathetic
|
||||
}
|
||||
}
|
||||
}
|
||||
theme = tournament_contest
|
||||
window = widget_activity_locale_fullscreen_event
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = disbelief
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:opponent
|
||||
animation = fear
|
||||
}
|
||||
|
||||
trigger = {
|
||||
exists = var:contest_aptitude
|
||||
scope:activity = {
|
||||
any_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
this = root
|
||||
}
|
||||
any_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
jason_first_race_event_1_opponent_trigger = yes
|
||||
}
|
||||
NOT = {
|
||||
any_attending_character = {
|
||||
is_ai = no
|
||||
this != root
|
||||
}
|
||||
}
|
||||
# Only one event removing competitors should occur
|
||||
any_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
count >= 8
|
||||
}
|
||||
}
|
||||
#Standard checks.
|
||||
NOT = { has_character_flag = horse_race_contest_event_cooldown }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
tournament_pivotal_flavor_variable_effect = { CONTEST = horse_race ID = 10 }
|
||||
add_character_flag = {
|
||||
flag = horse_race_contest_event_cooldown
|
||||
years = 1
|
||||
}
|
||||
tournament_horse_race_fetch_horse_effect = yes
|
||||
scope:activity = {
|
||||
random_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
limit = {
|
||||
jason_first_race_event_1_opponent_trigger = yes
|
||||
}
|
||||
weight = {
|
||||
base = 1
|
||||
activity_recurring_character_weight_modifier = { VALUE = 100 }
|
||||
}
|
||||
save_scope_as = opponent
|
||||
try_to_create_recurring_character_effect = { CHARACTER = root }
|
||||
}
|
||||
}
|
||||
scope:opponent = {
|
||||
tournament_horse_race_fetch_horse_effect = yes
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
|
||||
}
|
||||
root.var:horse_race_jockey = { save_scope_as = jockey }
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
|
||||
}
|
||||
|
||||
# Accuse the other horse's owner of sabotaging you
|
||||
option = {
|
||||
name = jason_first_race_event.1.a
|
||||
flavor = jason_first_race_event.1.a.tt
|
||||
|
||||
progress_towards_rival_effect = {
|
||||
CHARACTER = scope:opponent
|
||||
REASON = rival_race_sabotage_accusation
|
||||
OPINION = -40
|
||||
}
|
||||
|
||||
duel = {
|
||||
skills = { diplomacy intrigue }
|
||||
value = 10
|
||||
#You convince everyone that this affront merits a restart
|
||||
45 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
modifier = {
|
||||
add = 20
|
||||
dread > medium_dread
|
||||
}
|
||||
modifier = {
|
||||
add = 40
|
||||
dread > high_dread
|
||||
}
|
||||
modifier = {
|
||||
add = 50
|
||||
scope:host = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 25
|
||||
highest_held_title_tier = tier_kingdom
|
||||
}
|
||||
modifier = {
|
||||
add = 50
|
||||
highest_held_title_tier = tier_empire
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = jason_first_race_event.1.a.tt.win
|
||||
left_icon = root
|
||||
right_icon = scope:opponent
|
||||
|
||||
tournament_contest_knocked_out_effect = { CHARACTER = scope:opponent }
|
||||
}
|
||||
|
||||
desc = jason_first_race_event.1.a.tt.win
|
||||
}
|
||||
#You sound petty and no one listens
|
||||
55 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = jason_first_race_event.1.a.tt.lose
|
||||
left_icon = root
|
||||
right_icon = scope:opponent
|
||||
|
||||
scope:activity = {
|
||||
add_activity_log_entry = {
|
||||
key = contest_horse_race_collision_log
|
||||
tags = { contest bad }
|
||||
score = 30
|
||||
character = root
|
||||
target = scope:opponent
|
||||
}
|
||||
every_attending_character = {
|
||||
limit = {
|
||||
NOR = {
|
||||
this = root
|
||||
this = scope:opponent
|
||||
}
|
||||
}
|
||||
custom = every_tournament_attendee_tt
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = contempt_opinion
|
||||
opinion = -10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = jason_first_race_event.1.a.tt.lose
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
forgiving = medium_stress_impact_gain
|
||||
trusting = minor_stress_impact_gain
|
||||
compassionate = miniscule_stress_impact_gain
|
||||
wrathful = minor_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
callous = miniscule_stress_impact_loss
|
||||
sadistic = miniscule_stress_impact_loss
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
|
||||
base = 100
|
||||
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = forgiving
|
||||
has_trait = trusting
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -50
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = honest
|
||||
has_trait = shy
|
||||
has_trait = content
|
||||
has_trait = calm
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -50
|
||||
OR = {
|
||||
diplomacy <= low_skill_rating
|
||||
intrigue <= low_skill_rating
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -25
|
||||
OR = {
|
||||
diplomacy < medium_skill_rating
|
||||
intrigue < medium_skill_rating
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -50
|
||||
diplomacy <= decent_skill_rating
|
||||
intrigue <= decent_skill_rating
|
||||
}
|
||||
modifier = {
|
||||
add = 100
|
||||
OR = {
|
||||
diplomacy >= high_skill_rating
|
||||
prowess >= high_skill_rating
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 100
|
||||
OR = {
|
||||
has_trait = vengeful
|
||||
has_trait = arbitrary
|
||||
has_trait = deceitful
|
||||
has_trait = paranoid
|
||||
has_trait = greedy
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 50
|
||||
highest_held_title_tier = tier_kingdom
|
||||
}
|
||||
modifier = {
|
||||
add = 100
|
||||
highest_held_title_tier = tier_empire
|
||||
}
|
||||
modifier = {
|
||||
add = 150
|
||||
scope:host = {
|
||||
this = root
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 75
|
||||
dread > medium_dread
|
||||
}
|
||||
}
|
||||
}
|
||||
# Console your opponent and apologize
|
||||
option = {
|
||||
trigger = {
|
||||
OR = {
|
||||
NOR = {
|
||||
has_relation_rival = scope:opponent
|
||||
has_relation_nemesis = scope:opponent
|
||||
has_trait = paranoid
|
||||
has_trait = vengeful
|
||||
has_trait = wrathful
|
||||
has_trait = sadistic
|
||||
}
|
||||
OR = {
|
||||
has_relation_rival = scope:opponent
|
||||
has_relation_nemesis = scope:opponent
|
||||
OR = {
|
||||
has_trait = trusting
|
||||
has_trait = forgiving
|
||||
has_trait = compassionate
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
name = jason_first_race_event.1.b
|
||||
flavor = jason_first_race_event.1.b.tt
|
||||
scope:activity = {
|
||||
add_activity_log_entry = {
|
||||
key = contest_horse_race_collision_log
|
||||
tags = { contest bad }
|
||||
score = 30
|
||||
character = root
|
||||
target = scope:opponent
|
||||
|
||||
# Effect
|
||||
root = {
|
||||
progress_towards_friend_effect = {
|
||||
CHARACTER = scope:opponent
|
||||
REASON = friend_shared_disappointment
|
||||
OPINION = 40
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
forgiving = minor_stress_impact_loss
|
||||
wrathful = major_stress_impact_gain
|
||||
sadistic = major_stress_impact_gain
|
||||
paranoid = major_stress_impact_gain
|
||||
vengeful = major_stress_impact_gain
|
||||
callous = medium_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = wrathful
|
||||
has_trait = sadistic
|
||||
has_trait = paranoid
|
||||
has_trait = vengeful
|
||||
has_trait = callous
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -50
|
||||
has_trait = arrogant
|
||||
}
|
||||
modifier = {
|
||||
add = 100
|
||||
has_trait = forgiving
|
||||
}
|
||||
}
|
||||
}
|
||||
# Try to encourage your jockey
|
||||
option = {
|
||||
name = jason_first_race_event.1.c
|
||||
flavor = jason_first_race_event.1.c.tt
|
||||
|
||||
duel = {
|
||||
skill = diplomacy
|
||||
value = 10
|
||||
#Your jockey gets back on track
|
||||
45 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
modifier = {
|
||||
has_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = horse
|
||||
value >= 20
|
||||
}
|
||||
add = 20
|
||||
}
|
||||
modifier = {
|
||||
has_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = horse
|
||||
value >= 50
|
||||
}
|
||||
add = 30
|
||||
}
|
||||
modifier = {
|
||||
has_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = horse
|
||||
value >= 80
|
||||
}
|
||||
add = 50
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = jason_first_race_event.1.c.tt.win
|
||||
left_icon = root
|
||||
right_icon = scope:opponent
|
||||
desc = jason_first_race_event.1.c.tt.lose
|
||||
|
||||
create_character_memory = {
|
||||
type = successful_race_rescue
|
||||
}
|
||||
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
|
||||
|
||||
# add horsemanship tournament skill XP
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = tourney_participant
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = horse
|
||||
value = tournament_hastiludes_xp_gain_medium_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
desc = jason_first_race_event.1.c.tt.win
|
||||
}
|
||||
#Your jockey can't hear you
|
||||
55 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
|
||||
send_interface_toast = {
|
||||
title = jason_first_race_event.1.c.tt.lose
|
||||
left_icon = root
|
||||
right_icon = scope:opponent
|
||||
scope:activity = {
|
||||
add_activity_log_entry = {
|
||||
key = contest_horse_race_collision_log
|
||||
tags = { contest bad }
|
||||
score = 30
|
||||
character = root
|
||||
target = scope:opponent
|
||||
}
|
||||
}
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_miniscule }
|
||||
}
|
||||
desc = jason_first_race_event.1.c.tt.lose
|
||||
create_character_memory = {
|
||||
type = trampled_during_race_rescue
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
craven = major_stress_impact_gain
|
||||
sadistic = medium_stress_impact_gain
|
||||
lazy = medium_stress_impact_gain
|
||||
callous = medium_stress_impact_gain
|
||||
vengeful = minor_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = sadistic
|
||||
has_trait = lazy
|
||||
has_trait = craven
|
||||
has_trait = callous
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -50
|
||||
has_trait = vengeful
|
||||
}
|
||||
modifier = {
|
||||
add = -50
|
||||
OR = {
|
||||
diplomacy < mediocre_skill_rating
|
||||
prowess < mediocre_skill_rating
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -25
|
||||
OR = {
|
||||
diplomacy < mediocre_skill_rating
|
||||
prowess < mediocre_skill_rating
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -50
|
||||
diplomacy <= medium_skill_rating
|
||||
prowess <= medium_skill_rating
|
||||
}
|
||||
|
||||
modifier = {
|
||||
add = -50
|
||||
highest_held_title_tier = tier_empire
|
||||
}
|
||||
modifier = {
|
||||
add = 75
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = brave
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 25
|
||||
has_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = horse
|
||||
value >= 50
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 50
|
||||
has_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = horse
|
||||
value >= 100
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 50
|
||||
OR = {
|
||||
diplomacy >= very_high_skill_rating
|
||||
prowess >= very_high_skill_rating
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# Accept this unfortunate loss
|
||||
option = {
|
||||
name = jason_first_race_event.1.d
|
||||
flavor = jason_first_race_event.1.d.tt
|
||||
scope:activity = {
|
||||
add_activity_log_entry = {
|
||||
key = contest_horse_race_collision_log
|
||||
tags = { contest bad }
|
||||
score = 30
|
||||
character = root
|
||||
target = scope:opponent
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
wrathful = medium_stress_impact_gain
|
||||
paranoid = medium_stress_impact_gain
|
||||
compassionate = minor_stress_impact_gain
|
||||
stubborn = minor_stress_impact_gain
|
||||
greedy = minor_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = wrathful
|
||||
has_trait = paranoid
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = -50
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = stubborn
|
||||
has_trait = greedy
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 50
|
||||
OR = {
|
||||
has_trait = calm
|
||||
has_trait = shy
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
5404
N3OW/events/activities/tournaments/jason_locale_events.txt
Normal file
5404
N3OW/events/activities/tournaments/jason_locale_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1097
N3OW/events/activities/tournaments/jason_race_events.txt
Normal file
1097
N3OW/events/activities/tournaments/jason_race_events.txt
Normal file
File diff suppressed because it is too large
Load diff
877
N3OW/events/activities/tournaments/jb_recital_contest_events.txt
Normal file
877
N3OW/events/activities/tournaments/jb_recital_contest_events.txt
Normal file
|
|
@ -0,0 +1,877 @@
|
|||
namespace = contest_events
|
||||
|
||||
###############################
|
||||
###############################
|
||||
### RECITAL - 5000-5499 ###
|
||||
###############################
|
||||
###############################
|
||||
# Complete your own verse!
|
||||
# By James Beaumont
|
||||
contest_events.5000 = {
|
||||
type = activity_event
|
||||
title = contest_events.5000.t
|
||||
desc = contest_events.5000.desc
|
||||
theme = tournament_contest
|
||||
window = widget_activity_locale_fullscreen_event
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = anger
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:enemy
|
||||
animation = schadenfreude
|
||||
}
|
||||
cooldown = { years = 1 }
|
||||
|
||||
trigger = {
|
||||
scope:activity = {
|
||||
any_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
contest_event_general_contestant_valid_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
random_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
limit = { contest_event_general_contestant_valid_trigger = yes }
|
||||
save_scope_as = enemy
|
||||
}
|
||||
}
|
||||
scope:enemy = {
|
||||
select_poem_theme_incompetence_effect = yes
|
||||
select_poem_subject_gender_effect = {
|
||||
SUBJECT = flag:specific
|
||||
SUBJECT_TARGET = root
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Furthermore, I had sex with your mother
|
||||
option = {
|
||||
name = {
|
||||
trigger = {
|
||||
is_attracted_to_men = yes
|
||||
}
|
||||
text = contest_events.5000.shagged_your_dad
|
||||
}
|
||||
name = contest_events.5000.shagged_your_mum
|
||||
|
||||
duel = {
|
||||
skill = intrigue
|
||||
target = scope:enemy
|
||||
50 = {
|
||||
modifier = {
|
||||
factor = 0.5
|
||||
has_trait = chaste
|
||||
}
|
||||
modifier = {
|
||||
factor = 0.1
|
||||
OR = { # Lol, no you didn't
|
||||
has_trait = celibate
|
||||
is_eunuch_trigger = yes
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = attraction
|
||||
}
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.success
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.success
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = tourney_participant
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = wit
|
||||
value = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
modifier = {
|
||||
add = scope:enemy.attraction
|
||||
}
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.failure
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.failure
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
|
||||
}
|
||||
}
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
REASON = rival_recital_insult
|
||||
CHARACTER = scope:enemy
|
||||
OPINION = default_rival_opinion
|
||||
}
|
||||
if = {
|
||||
limit = { is_eunuch_trigger = yes }
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
lustful = minor_stress_impact_loss
|
||||
chaste = medium_stress_impact_gain
|
||||
celibate = medium_stress_impact_gain
|
||||
forgiving = medium_stress_impact_gain
|
||||
compassionate = medium_stress_impact_gain
|
||||
honest = medium_stress_impact_gain
|
||||
}
|
||||
}
|
||||
else = {
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
lustful = minor_stress_impact_loss
|
||||
chaste = medium_stress_impact_gain
|
||||
celibate = medium_stress_impact_gain
|
||||
forgiving = medium_stress_impact_gain
|
||||
compassionate = medium_stress_impact_gain
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = chaste
|
||||
has_trait = celibate
|
||||
has_trait = forgiving
|
||||
has_trait = compassionate
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Call them a ho
|
||||
option = {
|
||||
name = contest_events.5000.licentious
|
||||
duel = {
|
||||
skills = { diplomacy intrigue }
|
||||
target = scope:enemy
|
||||
50 = {
|
||||
modifier = { # The comment actually has a basis
|
||||
factor = 2
|
||||
scope:enemy = {
|
||||
OR = {
|
||||
is_concubine = yes
|
||||
has_trait = rakish
|
||||
has_trait = seducer
|
||||
has_trait = lustful
|
||||
has_trait = deviant
|
||||
has_trait = adulterer
|
||||
has_trait = fornicator
|
||||
has_trait = sodomite
|
||||
}
|
||||
}
|
||||
}
|
||||
modifier = { # It's a bit of a self-burn
|
||||
factor = 0.5
|
||||
root = {
|
||||
OR = {
|
||||
is_concubine = yes
|
||||
has_trait = rakish
|
||||
has_trait = seducer
|
||||
has_trait = lustful
|
||||
has_trait = deviant
|
||||
has_trait = adulterer
|
||||
has_trait = fornicator
|
||||
has_trait = sodomite
|
||||
}
|
||||
}
|
||||
}
|
||||
modifier = { # The crowd doesn't believe being lustful is bad
|
||||
factor = 0.5
|
||||
root.location.county.faith = {
|
||||
trait_is_virtue = lustful
|
||||
}
|
||||
}
|
||||
modifier = { # It is bad for them to be lecherous
|
||||
add = 5
|
||||
scope:enemy = {
|
||||
OR = {
|
||||
AND = {
|
||||
is_female = yes
|
||||
faith = { NOT = { has_doctrine_parameter = adultery_female_accepted } }
|
||||
}
|
||||
AND = {
|
||||
is_male = yes
|
||||
faith = { NOT = { has_doctrine_parameter = adultery_male_accepted } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.success
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.success
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = tourney_participant
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = wit
|
||||
value = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.failure
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.failure
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
|
||||
}
|
||||
}
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
REASON = rival_recital_insult
|
||||
CHARACTER = scope:enemy
|
||||
OPINION = default_rival_opinion
|
||||
}
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
chaste = minor_stress_impact_loss
|
||||
lustful = medium_stress_impact_gain
|
||||
rakish = medium_stress_impact_gain
|
||||
deviant = medium_stress_impact_gain
|
||||
sodomite = medium_stress_impact_gain
|
||||
fornicator = medium_stress_impact_gain
|
||||
adulterer = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = lustful
|
||||
has_trait = rakish
|
||||
has_trait = deviant
|
||||
has_trait = sodomite
|
||||
has_trait = fornicator
|
||||
has_trait = adulterer
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Call them stupid
|
||||
option = {
|
||||
name = contest_events.5000.stupid
|
||||
duel = {
|
||||
skill = learning
|
||||
target = scope:enemy
|
||||
50 = {
|
||||
modifier = { # The comment actually has a basis
|
||||
factor = 2
|
||||
scope:enemy = {
|
||||
OR = {
|
||||
has_trait = dull
|
||||
has_trait = intellect_bad
|
||||
}
|
||||
}
|
||||
}
|
||||
modifier = { # It's a bit of a self-burn
|
||||
factor = 0.5
|
||||
root = {
|
||||
OR = {
|
||||
has_trait = dull
|
||||
has_trait = intellect_bad
|
||||
}
|
||||
}
|
||||
}
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.success
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.success
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = tourney_participant
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = wit
|
||||
value = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.failure
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.failure
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
|
||||
}
|
||||
}
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
REASON = rival_recital_insult
|
||||
CHARACTER = scope:enemy
|
||||
OPINION = default_rival_opinion
|
||||
}
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
chaste = minor_stress_impact_loss
|
||||
dull = medium_stress_impact_gain
|
||||
intellect_bad_1 = medium_stress_impact_gain
|
||||
intellect_bad_2 = medium_stress_impact_gain
|
||||
intellect_bad_3 = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = dull
|
||||
has_trait = intellect_bad
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Call them ugly
|
||||
option = {
|
||||
name = contest_events.5000.ugly
|
||||
duel = {
|
||||
skill = diplomacy
|
||||
target = scope:enemy
|
||||
50 = {
|
||||
modifier = { # The comment actually has a basis
|
||||
factor = 2
|
||||
scope:enemy = {
|
||||
has_trait = beauty_bad
|
||||
}
|
||||
}
|
||||
modifier = { # It's a bit of a self-burn
|
||||
factor = 0.5
|
||||
root = {
|
||||
has_trait = beauty_bad
|
||||
}
|
||||
}
|
||||
modifier = { # You're actually like so hot omg
|
||||
add = attraction
|
||||
}
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.success
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.success
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = tourney_participant
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = wit
|
||||
value = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
modifier = {
|
||||
add = scope:enemy.attraction
|
||||
}
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.failure
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.failure
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
|
||||
}
|
||||
}
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
REASON = rival_recital_insult
|
||||
CHARACTER = scope:enemy
|
||||
OPINION = default_rival_opinion
|
||||
}
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
chaste = minor_stress_impact_loss
|
||||
humble = medium_stress_impact_gain
|
||||
beauty_bad_1 = medium_stress_impact_gain
|
||||
beauty_bad_2 = medium_stress_impact_gain
|
||||
beauty_bad_3 = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = humble
|
||||
has_trait = beauty_bad
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# You speak a different language to your opponent and you have no idea what they just said
|
||||
# By James Beaumont
|
||||
contest_events.5010 = {
|
||||
type = activity_event
|
||||
title = contest_events.5010.t
|
||||
desc = contest_events.5010.desc
|
||||
theme = tournament_contest
|
||||
window = widget_activity_locale_fullscreen_event
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = disbelief
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:enemy
|
||||
animation = schadenfreude
|
||||
}
|
||||
cooldown = { years = 1 }
|
||||
|
||||
trigger = {
|
||||
scope:activity = {
|
||||
any_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
contest_event_general_contestant_valid_trigger = yes
|
||||
NOT = { root = { knows_language_of_culture = prev.culture } }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
random_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
limit = {
|
||||
contest_event_general_contestant_valid_trigger = yes
|
||||
NOT = { root = { knows_language_of_culture = prev.culture } }
|
||||
}
|
||||
save_scope_as = enemy
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Insult them?
|
||||
option = {
|
||||
name = contest_events.5010.a
|
||||
duel = {
|
||||
skill = intrigue
|
||||
target = scope:enemy
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.success
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.success
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = tourney_participant
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = wit
|
||||
value = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.failure
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.failure
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
|
||||
}
|
||||
}
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
REASON = rival_recital_insult
|
||||
CHARACTER = scope:enemy
|
||||
OPINION = default_rival_opinion
|
||||
}
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
forgiving = medium_stress_impact_gain
|
||||
compassionate = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = forgiving
|
||||
has_trait = compassionate
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Try to guess what they meant
|
||||
option = {
|
||||
name = contest_events.5010.b
|
||||
duel = {
|
||||
skill = learning
|
||||
value = high_skill_rating
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.success
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.success
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_major }
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = tourney_participant
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = wit
|
||||
value = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.failure
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.failure
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
dull = medium_stress_impact_gain
|
||||
impatient = medium_stress_impact_gain
|
||||
vengeful = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = dull
|
||||
has_trait = impatient
|
||||
has_trait = vengeful
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Your poem goes well, push your luck?
|
||||
# By James Beaumont
|
||||
contest_events.5020 = {
|
||||
type = activity_event
|
||||
title = contest_events.5020.t
|
||||
desc = contest_events.5020.desc
|
||||
theme = tournament_contest
|
||||
window = widget_activity_locale_fullscreen_event
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = ecstasy
|
||||
}
|
||||
cooldown = { years = 1 }
|
||||
|
||||
trigger = {
|
||||
scope:activity = {
|
||||
any_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
contest_event_general_contestant_valid_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
random_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
limit = { contest_event_general_contestant_valid_trigger = yes }
|
||||
save_scope_as = enemy
|
||||
}
|
||||
}
|
||||
hidden_effect = { # Set up the scopes for the poem loc
|
||||
root = {
|
||||
select_poem_subject_gender_effect = {
|
||||
SUBJECT = flag:specific
|
||||
SUBJECT_TARGET = scope:enemy
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Push your luck
|
||||
option = {
|
||||
name = contest_events.5020.a
|
||||
duel = {
|
||||
skill = diplomacy
|
||||
target = scope:enemy
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.success
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.success
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_massive }
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = tourney_participant
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = wit
|
||||
value = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.failure
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.failure
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_medium }
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
content = medium_stress_impact_gain
|
||||
humble = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = content
|
||||
has_trait = humble
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Play it safe and take a bow
|
||||
option = {
|
||||
name = contest_events.5020.b
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_minor }
|
||||
stress_impact = {
|
||||
ambitious = minor_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
stubborn = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = ambitious
|
||||
has_trait = arrogant
|
||||
has_trait = stubborn
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Your poem goes poorly, try to salvage it?
|
||||
# By James Beaumont
|
||||
contest_events.5030 = {
|
||||
type = activity_event
|
||||
title = contest_events.5030.t
|
||||
desc = contest_events.5030.desc
|
||||
theme = tournament_contest
|
||||
window = widget_activity_locale_fullscreen_event
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = ecstasy
|
||||
}
|
||||
cooldown = { years = 1 }
|
||||
|
||||
trigger = {
|
||||
scope:activity = {
|
||||
any_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
contest_event_general_contestant_valid_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity = {
|
||||
random_guest_subset_current_phase = {
|
||||
name = qualified
|
||||
limit = { contest_event_general_contestant_valid_trigger = yes }
|
||||
save_scope_as = enemy
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Push your luck
|
||||
option = {
|
||||
name = contest_events.5030.a
|
||||
duel = {
|
||||
skill = diplomacy
|
||||
target = scope:enemy
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.success
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.success
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = increase_medium }
|
||||
if = {
|
||||
limit = {
|
||||
has_trait = tourney_participant
|
||||
}
|
||||
add_trait_xp = {
|
||||
trait = tourney_participant
|
||||
track = wit
|
||||
value = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = contest_events.5000.failure
|
||||
send_interface_toast = {
|
||||
title = contest_events.5000.failure
|
||||
right_icon = scope:enemy
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_major }
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
content = medium_stress_impact_gain
|
||||
humble = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = content
|
||||
has_trait = humble
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Play it safe and take a bow
|
||||
option = {
|
||||
name = contest_events.5030.b
|
||||
activity_tournament_change_contestant_score_effect = { SCORE = decrease_minor }
|
||||
stress_impact = {
|
||||
ambitious = minor_stress_impact_gain
|
||||
arrogant = minor_stress_impact_gain
|
||||
stubborn = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = ambitious
|
||||
has_trait = arrogant
|
||||
has_trait = stubborn
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
16155
N3OW/events/activities/tournaments/tournament_events.txt
Normal file
16155
N3OW/events/activities/tournaments/tournament_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1859
N3OW/events/activities/tournaments/veronica_local_events_2.txt
Normal file
1859
N3OW/events/activities/tournaments/veronica_local_events_2.txt
Normal file
File diff suppressed because it is too large
Load diff
3006
N3OW/events/activities/tournaments/veronica_locale_events.txt
Normal file
3006
N3OW/events/activities/tournaments/veronica_locale_events.txt
Normal file
File diff suppressed because it is too large
Load diff
4314
N3OW/events/artifacts/artifact_events.txt
Normal file
4314
N3OW/events/artifacts/artifact_events.txt
Normal file
File diff suppressed because it is too large
Load diff
4625
N3OW/events/birth_events.txt
Normal file
4625
N3OW/events/birth_events.txt
Normal file
File diff suppressed because it is too large
Load diff
292
N3OW/events/blackmail_events.txt
Normal file
292
N3OW/events/blackmail_events.txt
Normal file
|
|
@ -0,0 +1,292 @@
|
|||
#Events for blackmail
|
||||
|
||||
namespace = blackmail
|
||||
|
||||
|
||||
########################
|
||||
# Blackmail Handling
|
||||
# 0001-0999
|
||||
########################
|
||||
|
||||
#Character refuses to be blackmailed
|
||||
blackmail.0001 = {
|
||||
type = character_event
|
||||
title = blackmail.0001.t
|
||||
desc = blackmail.0001.desc
|
||||
theme = intrigue
|
||||
left_portrait = {
|
||||
character = scope:recipient
|
||||
animation = dismissal
|
||||
}
|
||||
|
||||
trigger = {
|
||||
exists = scope:target
|
||||
scope:target = { can_be_exposed_by = root }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_murder
|
||||
}
|
||||
|
||||
after = { remove_variable = currently_blackmailing }
|
||||
|
||||
option = {
|
||||
name = blackmail.0001.a
|
||||
scope:target = {
|
||||
expose_secret = root
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = blackmail.0001.b
|
||||
scope:target = {
|
||||
disable_exposure_by = root
|
||||
}
|
||||
ai_chance = {
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
########################
|
||||
# Blackmail-related stuff
|
||||
# 1000-1999
|
||||
########################
|
||||
|
||||
#Blackmailing someone causes Dread
|
||||
blackmail.1001 = {
|
||||
type = character_event
|
||||
title = blackmail.1001.t
|
||||
desc = blackmail.1001.desc
|
||||
theme = intrigue
|
||||
left_portrait = {
|
||||
character = scope:blackmail_target
|
||||
animation = worry
|
||||
}
|
||||
|
||||
trigger = {
|
||||
is_landed = yes
|
||||
any_vassal = {
|
||||
being_blackmailed_by_root_trigger = yes
|
||||
}
|
||||
NOT = { has_character_flag = had_event_blackmail_1001 }
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_murder
|
||||
add_character_flag = {
|
||||
flag = had_event_blackmail_1001
|
||||
days = 3650
|
||||
}
|
||||
random_vassal = {
|
||||
limit = {
|
||||
root = {
|
||||
OR = {
|
||||
has_hook_of_type = {
|
||||
target = prev
|
||||
type = weak_blackmail_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = prev
|
||||
type = strong_blackmail_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = blackmail_target
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = blackmail.1001.a
|
||||
add_dread = medium_dread_gain
|
||||
stress_impact = {
|
||||
compassionate = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_boldness = 1
|
||||
ai_vengefulness = 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { #Assure your vassals no one has anything to fear
|
||||
name = blackmail.1001.b
|
||||
add_dread = medium_dread_loss
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_gain
|
||||
stubborn = minor_stress_impact_gain
|
||||
callous = medium_stress_impact_gain
|
||||
sadistic = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 50
|
||||
ai_value_modifier = {
|
||||
ai_compassion = 2
|
||||
ai_honor = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#Being under Blackmail causes Stress
|
||||
blackmail.1002 = {
|
||||
type = character_event
|
||||
title = blackmail.1002.t
|
||||
desc = blackmail.1002.desc
|
||||
theme = intrigue
|
||||
left_portrait = {
|
||||
character = scope:blackmailer
|
||||
animation = scheme
|
||||
}
|
||||
|
||||
trigger = {
|
||||
NOT = { has_character_flag = had_event_blackmail_1002 }
|
||||
OR = {
|
||||
any_vassal = {
|
||||
OR = {
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = weak_blackmail_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = strong_blackmail_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
exists = liege
|
||||
is_in_civil_war = no
|
||||
liege = {
|
||||
OR = {
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = weak_blackmail_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = strong_blackmail_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
any_close_or_extended_family_member = {
|
||||
OR = {
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = weak_blackmail_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = strong_blackmail_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = 0.5
|
||||
has_trait = trusting
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_murder
|
||||
add_character_flag = {
|
||||
flag = had_event_blackmail_1002
|
||||
days = 3650
|
||||
}
|
||||
every_vassal = {
|
||||
limit = {
|
||||
OR = {
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = weak_blackmail_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = strong_blackmail_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
add_to_temporary_list = blackmailers
|
||||
}
|
||||
liege = {
|
||||
if = {
|
||||
limit = {
|
||||
is_in_civil_war = no
|
||||
OR = {
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = weak_blackmail_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = strong_blackmail_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
add_to_temporary_list = blackmailers
|
||||
}
|
||||
}
|
||||
every_close_or_extended_family_member = {
|
||||
limit = {
|
||||
OR = {
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = weak_blackmail_hook
|
||||
}
|
||||
has_hook_of_type = {
|
||||
target = root
|
||||
type = strong_blackmail_hook
|
||||
}
|
||||
}
|
||||
}
|
||||
add_to_temporary_list = blackmailers
|
||||
}
|
||||
random_in_list = {
|
||||
list = blackmailers
|
||||
save_scope_as = blackmailer
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = blackmail.1002.a
|
||||
trigger = { NOT = { has_trait = trusting } }
|
||||
show_as_unavailable = { always = yes }
|
||||
stress_impact = {
|
||||
base = medium_stress_gain
|
||||
paranoid = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 1000
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = blackmail.1002.b
|
||||
trigger = {
|
||||
has_trait = trusting
|
||||
}
|
||||
trait = trusting
|
||||
stress_impact = {
|
||||
base = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 1000
|
||||
}
|
||||
}
|
||||
}
|
||||
3589
N3OW/events/board_game_events.txt
Normal file
3589
N3OW/events/board_game_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2316
N3OW/events/bookmark_events.txt
Normal file
2316
N3OW/events/bookmark_events.txt
Normal file
File diff suppressed because it is too large
Load diff
4362
N3OW/events/bp1_dan_events.txt
Normal file
4362
N3OW/events/bp1_dan_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2244
N3OW/events/councillor_task_events/chancellor_task_events.txt
Normal file
2244
N3OW/events/councillor_task_events/chancellor_task_events.txt
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,144 @@
|
|||
|
||||
#Events handling the Spouse Councillor position in the background
|
||||
|
||||
namespace = councillor_spouse_background
|
||||
|
||||
|
||||
#Ongoing event tracking background progress
|
||||
councillor_spouse_background.0001 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
is_alive = yes
|
||||
has_council_position = councillor_spouse
|
||||
any_spouse = {
|
||||
exists = this.cp:councillor_spouse
|
||||
this.cp:councillor_spouse = root
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
is_landed = no
|
||||
is_capable_adult_ai = yes
|
||||
NOT = { is_performing_council_task = task_spouse_default }
|
||||
}
|
||||
#Diplomacy rank up
|
||||
if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_court_politics
|
||||
NOT = { has_trait = diplomat }
|
||||
var:councillor_spouse_lifestyle_progress > councillor_spouse_lifestyle_rank_up_threshold
|
||||
}
|
||||
councillor_spouse_lifestyle_rank_up_effect = {
|
||||
SKILL = diplomacy
|
||||
}
|
||||
}
|
||||
#Martial rank up
|
||||
else_if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_chivalry
|
||||
NOT = { has_trait = strategist }
|
||||
var:councillor_spouse_lifestyle_progress > councillor_spouse_lifestyle_rank_up_threshold
|
||||
}
|
||||
councillor_spouse_lifestyle_rank_up_effect = {
|
||||
SKILL = martial
|
||||
}
|
||||
}
|
||||
#Intrigue rank up
|
||||
else_if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_court_intrigue
|
||||
NOT = { has_trait = schemer }
|
||||
var:councillor_spouse_lifestyle_progress > councillor_spouse_lifestyle_rank_up_threshold
|
||||
}
|
||||
councillor_spouse_lifestyle_rank_up_effect = {
|
||||
SKILL = intrigue
|
||||
}
|
||||
}
|
||||
#Stewardship rank up
|
||||
else_if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_manage_domain
|
||||
NOT = { has_trait = architect }
|
||||
var:councillor_spouse_lifestyle_progress > councillor_spouse_lifestyle_rank_up_threshold
|
||||
}
|
||||
councillor_spouse_lifestyle_rank_up_effect = {
|
||||
SKILL = stewardship
|
||||
}
|
||||
}
|
||||
#Learning rank up
|
||||
else_if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_patronage
|
||||
NOT = { has_trait = scholar }
|
||||
var:councillor_spouse_lifestyle_progress > councillor_spouse_lifestyle_rank_up_threshold
|
||||
}
|
||||
councillor_spouse_lifestyle_rank_up_effect = {
|
||||
SKILL = learning
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:ranked_up }
|
||||
#Prevent further progress from being added once the councillor is at max lifestyle rank:
|
||||
trigger_if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_court_politics
|
||||
}
|
||||
NOT = { has_trait = diplomat }
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_chivalry
|
||||
}
|
||||
NOT = { has_trait = strategist }
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_manage_domain
|
||||
}
|
||||
NOT = { has_trait = architect }
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_patronage
|
||||
}
|
||||
NOT = { has_trait = scholar }
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = {
|
||||
is_performing_council_task = task_court_intrigue
|
||||
}
|
||||
NOT = { has_trait = schemer }
|
||||
}
|
||||
trigger_else = {
|
||||
always = yes
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
has_variable = councillor_spouse_lifestyle_progress
|
||||
}
|
||||
change_variable = {
|
||||
name = councillor_spouse_lifestyle_progress
|
||||
add = councillor_spouse_lifestyle_progress_increase
|
||||
}
|
||||
}
|
||||
else = {
|
||||
set_variable = {
|
||||
name = councillor_spouse_lifestyle_progress
|
||||
value = councillor_spouse_lifestyle_progress_increase
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
clear_saved_scope = ranked_up
|
||||
trigger_event = {
|
||||
id = councillor_spouse_background.0001
|
||||
months = 6
|
||||
}
|
||||
}
|
||||
}
|
||||
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
1686
N3OW/events/councillor_task_events/court_chaplain_task_events.txt
Normal file
1686
N3OW/events/councillor_task_events/court_chaplain_task_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1600
N3OW/events/councillor_task_events/kurultai_task_events.txt
Normal file
1600
N3OW/events/councillor_task_events/kurultai_task_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3139
N3OW/events/councillor_task_events/marshal_task_events.txt
Normal file
3139
N3OW/events/councillor_task_events/marshal_task_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3610
N3OW/events/councillor_task_events/spymaster_task_events.txt
Normal file
3610
N3OW/events/councillor_task_events/spymaster_task_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2997
N3OW/events/councillor_task_events/steward_task_events.txt
Normal file
2997
N3OW/events/councillor_task_events/steward_task_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3898
N3OW/events/court_events/01_ep3_court_events.txt
Normal file
3898
N3OW/events/court_events/01_ep3_court_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3474
N3OW/events/court_events/01_ep3_court_events_3.txt
Normal file
3474
N3OW/events/court_events/01_ep3_court_events_3.txt
Normal file
File diff suppressed because it is too large
Load diff
1074
N3OW/events/court_events/court_events_ceremonial.txt
Normal file
1074
N3OW/events/court_events/court_events_ceremonial.txt
Normal file
File diff suppressed because it is too large
Load diff
14384
N3OW/events/court_events/court_events_general.txt
Normal file
14384
N3OW/events/court_events/court_events_general.txt
Normal file
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue