merge and if its broken its alex fault
This commit is contained in:
parent
b4fd4ffa93
commit
85abae1547
209 changed files with 715970 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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
5172
N3OW/events/activities/coronation_activity/coronation_events.txt
Normal file
5172
N3OW/events/activities/coronation_activity/coronation_events.txt
Normal file
File diff suppressed because it is too large
Load diff
10383
N3OW/events/activities/coronation_activity/coronation_events_1.txt
Normal file
10383
N3OW/events/activities/coronation_activity/coronation_events_1.txt
Normal file
File diff suppressed because it is too large
Load diff
15492
N3OW/events/activities/coronation_activity/coronation_events_6.txt
Normal file
15492
N3OW/events/activities/coronation_activity/coronation_events_6.txt
Normal file
File diff suppressed because it is too large
Load diff
26947
N3OW/events/activities/hold_court_activity/hold_court_events_general.txt
Normal file
26947
N3OW/events/activities/hold_court_activity/hold_court_events_general.txt
Normal file
File diff suppressed because it is too large
Load diff
14839
N3OW/events/activities/pilgrimage_activity/pilgrimage_events.txt
Normal file
14839
N3OW/events/activities/pilgrimage_activity/pilgrimage_events.txt
Normal file
File diff suppressed because it is too large
Load diff
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
10202
N3OW/events/activities/tour_activity/tour_phase_cultural_festival.txt
Normal file
10202
N3OW/events/activities/tour_activity/tour_phase_cultural_festival.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
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
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
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
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
1032
N3OW/events/court_events/court_events_general_1.txt
Normal file
1032
N3OW/events/court_events/court_events_general_1.txt
Normal file
File diff suppressed because it is too large
Load diff
703
N3OW/events/court_maintenance_events.txt
Normal file
703
N3OW/events/court_maintenance_events.txt
Normal file
|
|
@ -0,0 +1,703 @@
|
|||
#Court Maintenance events of various persuasions
|
||||
|
||||
namespace = court_maintenance
|
||||
|
||||
#Children should acquire personality trait events
|
||||
court_maintenance.0003 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
OR = {
|
||||
is_adult = no
|
||||
any_courtier_or_guest = {
|
||||
is_adult = no
|
||||
}
|
||||
any_prisoner = {
|
||||
is_adult = no
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
is_adult = no
|
||||
OR = {
|
||||
age = 9
|
||||
age = 11
|
||||
age = 13
|
||||
age >= 14 #Backup in case something has gone wrong
|
||||
}
|
||||
number_of_personality_traits < childhood_personality_trait_gain_limit
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
age = 9
|
||||
has_variable = reincarnation_of
|
||||
can_become_reincarnation_trigger = yes
|
||||
}
|
||||
trigger_event = child_personality.9900
|
||||
}
|
||||
else = {
|
||||
trigger_event = {
|
||||
on_action = child_personality_gain
|
||||
days = { 1 360 }
|
||||
}
|
||||
}
|
||||
}
|
||||
every_courtier_or_guest = {
|
||||
limit = {
|
||||
is_adult = no
|
||||
OR = {
|
||||
age = 9
|
||||
age = 11
|
||||
age = 13
|
||||
age >= 14 #Backup in case something has gone wrong
|
||||
}
|
||||
number_of_personality_traits < childhood_personality_trait_gain_limit
|
||||
}
|
||||
trigger_event = {
|
||||
on_action = child_personality_gain
|
||||
days = { 1 360 }
|
||||
}
|
||||
}
|
||||
#Small random chance to acquire a fourth personality trait
|
||||
every_courtier_or_guest = {
|
||||
limit = {
|
||||
is_adult = no
|
||||
number_of_personality_traits = childhood_personality_trait_gain_limit
|
||||
number_of_personality_traits < personality_trait_limit
|
||||
}
|
||||
random = {
|
||||
chance = childhood_fourth_personality_trait_chance
|
||||
trigger_event = {
|
||||
on_action = child_personality_gain
|
||||
days = { 1 360 }
|
||||
}
|
||||
}
|
||||
}
|
||||
every_prisoner = {
|
||||
limit = {
|
||||
is_adult = no
|
||||
OR = {
|
||||
age = 9
|
||||
age = 11
|
||||
age = 13
|
||||
age >= 14 #Backup in case something has gone wrong
|
||||
}
|
||||
number_of_personality_traits < childhood_personality_trait_gain_limit
|
||||
}
|
||||
trigger_event = {
|
||||
on_action = child_personality_gain
|
||||
days = { 1 360 }
|
||||
}
|
||||
}
|
||||
#Small random chance to acquire a fourth personality trait
|
||||
every_prisoner = {
|
||||
limit = {
|
||||
is_adult = no
|
||||
number_of_personality_traits = childhood_personality_trait_gain_limit
|
||||
number_of_personality_traits < personality_trait_limit
|
||||
}
|
||||
random = {
|
||||
chance = childhood_fourth_personality_trait_chance
|
||||
trigger_event = {
|
||||
on_action = child_personality_gain
|
||||
days = { 1 360 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
court_maintenance.0005 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
scope:new_employer = {
|
||||
government_has_flag = government_is_holy_order
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
add_trait = order_member
|
||||
}
|
||||
}
|
||||
|
||||
#Absent from your court
|
||||
court_maintenance.0010 = {
|
||||
theme = crown
|
||||
override_background = { reference = council_chamber }
|
||||
type = character_event
|
||||
title = court_maintenance.0010.t
|
||||
left_portrait = {
|
||||
character = scope:messenger
|
||||
animation = worry
|
||||
}
|
||||
|
||||
cooldown = { years = 5 }
|
||||
|
||||
trigger = {
|
||||
always = no # Disabled for now
|
||||
has_royal_court = yes
|
||||
has_dlc_feature = royal_court
|
||||
is_ai = no
|
||||
is_available_adult = yes
|
||||
is_at_war = no
|
||||
}
|
||||
|
||||
desc = {
|
||||
desc = court_maintenance.0010.desc
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:great_cgv_court
|
||||
}
|
||||
desc = court_maintenance.0010.desc.seeking_gainful_employment
|
||||
}
|
||||
desc = court_maintenance.0010.desc.general_ending
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
ordered_independent_ruler = {
|
||||
order_by = court_grandeur_current
|
||||
limit = {
|
||||
faith.religion = root.faith.religion
|
||||
in_diplomatic_range = root
|
||||
this != root
|
||||
}
|
||||
alternative_limit = {
|
||||
this != root
|
||||
in_diplomatic_range = root
|
||||
}
|
||||
alternative_limit = {
|
||||
this != root
|
||||
}
|
||||
save_scope_as = great_cgv_court
|
||||
}
|
||||
random_courtier = {
|
||||
limit = {
|
||||
has_any_court_position = yes
|
||||
}
|
||||
alternative_limit = {
|
||||
is_available_adult = yes
|
||||
}
|
||||
save_scope_as = messenger
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = court_maintenance.0010.a
|
||||
#Open Royal Court
|
||||
custom_tooltip = court_maintenance.0010.a.tooltip
|
||||
open_view_data = {
|
||||
view = royal_court
|
||||
player = root
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = {
|
||||
text = court_maintenance.0010.b.paranoid
|
||||
trigger = { has_trait = paranoid }
|
||||
}
|
||||
name = {
|
||||
text = court_maintenance.0010.b.depressed
|
||||
trigger = { has_trait = depressed }
|
||||
}
|
||||
name = {
|
||||
text = court_maintenance.0010.b.brave
|
||||
trigger = { has_trait = brave }
|
||||
}
|
||||
name = {
|
||||
text = court_maintenance.0010.b
|
||||
trigger = { always = yes }
|
||||
}
|
||||
change_current_court_grandeur = miniscule_court_grandeur_loss
|
||||
if = {
|
||||
limit = { exists = scope:great_cgv_court }
|
||||
custom_tooltip = court_maintenance.0010.b.tooltip
|
||||
}
|
||||
hidden_effect = {
|
||||
if = {
|
||||
limit = { exists = scope:great_cgv_court }
|
||||
random_courtier = {
|
||||
limit = {
|
||||
has_any_court_position = no
|
||||
is_physically_able_ai_adult = yes
|
||||
is_councillor = no
|
||||
NOT = { is_vassal_of = root }
|
||||
NOT = { is_close_family_of = ROOT }
|
||||
}
|
||||
set_employer = scope:great_cgv_court
|
||||
return_to_court = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Gained a Royal Court
|
||||
court_maintenance.0011 = {
|
||||
theme = new_royal_court
|
||||
type = character_event
|
||||
title = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { tgp_is_ceremonial_regent_trigger = yes } # Not 'actual' ruler
|
||||
desc = court_maintenance.0011.t.regent
|
||||
}
|
||||
desc = court_maintenance.0011.t
|
||||
}
|
||||
}
|
||||
window = visit_settlement_window
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { tgp_is_ceremonial_regent_trigger = yes } # Not 'actual' ruler
|
||||
desc = court_maintenance.0011.desc.regent
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { coronation_trigger = yes }
|
||||
desc = court_maintenance.0011.desc.ach
|
||||
}
|
||||
desc = court_maintenance.0011.desc
|
||||
}
|
||||
}
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = war_over_win
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:messenger
|
||||
animation = ecstasy
|
||||
}
|
||||
artifact = { # To display the dynasty banner in the event-window
|
||||
target = scope:dynasty_banner
|
||||
position = lower_center_portrait
|
||||
}
|
||||
artifact = { # To display the house banner in the event-window
|
||||
target = scope:house_banner
|
||||
position = lower_right_portrait
|
||||
}
|
||||
|
||||
trigger = {
|
||||
is_ai = no
|
||||
is_landed = yes
|
||||
has_dlc_feature = royal_court
|
||||
# To avoid farming and duplication
|
||||
OR = {
|
||||
# No owned house banner
|
||||
NOT = {
|
||||
any_character_artifact = {
|
||||
has_variable = banner_house
|
||||
var:banner_house = root.house
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
# Is Dynasty Head
|
||||
OR = {
|
||||
this = dynasty.dynast # Dynasty Head
|
||||
any_parent = { # Parent landless
|
||||
employer = prev
|
||||
dynasty = prev.dynasty
|
||||
this = dynasty.dynast
|
||||
}
|
||||
}
|
||||
# Dynasty banner does not exist
|
||||
NOT = {
|
||||
any_character_artifact = {
|
||||
has_variable = banner_dynasty
|
||||
var:banner_dynasty = root.dynasty
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
tgp_save_realm_ceremonial_liege_effect = yes
|
||||
if = {
|
||||
limit = {
|
||||
coronation_trigger = yes
|
||||
NOT = { has_game_rule = coronation_laws_off }
|
||||
}
|
||||
coronation_reset_realm_law_effect = yes #we need to reset the crown laws immediately, not wait for the next tick
|
||||
set_variable = coronation_discount
|
||||
custom_tooltip = court_maintenance.0011.coronation_discount
|
||||
|
||||
# Coronations law
|
||||
show_as_tooltip = {
|
||||
add_realm_law = uncrowned
|
||||
}
|
||||
|
||||
# Artifact for Coronations setup
|
||||
create_proper_coronation_artifact_setup = yes
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
exists = cp:councillor_chancellor
|
||||
}
|
||||
cp:councillor_chancellor = { save_scope_as = messenger }
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
any_councillor = {
|
||||
is_kurultai_trigger = yes
|
||||
}
|
||||
}
|
||||
random_councillor = {
|
||||
limit = {
|
||||
is_kurultai_trigger = yes
|
||||
}
|
||||
save_scope_as = messenger
|
||||
}
|
||||
}
|
||||
else = {
|
||||
random_vassal = { save_scope_as = messenger }
|
||||
}
|
||||
#House banner
|
||||
if = {
|
||||
limit = {
|
||||
tgp_is_ceremonial_regent_trigger = no
|
||||
NOT = {
|
||||
any_character_artifact = {
|
||||
has_variable = banner_house
|
||||
var:banner_house = root.house
|
||||
}
|
||||
}
|
||||
}
|
||||
set_variable = banner_from_house
|
||||
create_artifact_wall_banner_effect = {
|
||||
OWNER = root
|
||||
CREATOR = scope:messenger
|
||||
TARGET = root.house
|
||||
}
|
||||
if = { # For artifact portraits
|
||||
limit = { exists = scope:newly_created_artifact }
|
||||
scope:newly_created_artifact = { save_scope_as = house_banner }
|
||||
}
|
||||
}
|
||||
#Dynasty banner
|
||||
if = {
|
||||
limit = {
|
||||
tgp_is_ceremonial_regent_trigger = no
|
||||
OR = {
|
||||
this = dynasty.dynast # Dynasty Head
|
||||
any_parent = { # Parent landless
|
||||
employer = root
|
||||
dynasty = root.dynasty
|
||||
this = dynasty.dynast
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
any_character_artifact = {
|
||||
has_variable = banner_dynasty
|
||||
var:banner_dynasty = root.dynasty
|
||||
}
|
||||
}
|
||||
}
|
||||
set_variable = banner_from_dynasty
|
||||
create_artifact_wall_banner_effect = {
|
||||
OWNER = root
|
||||
CREATOR = scope:messenger
|
||||
TARGET = root.dynasty
|
||||
}
|
||||
if = { # For artifact portraits
|
||||
limit = { exists = scope:newly_created_artifact }
|
||||
scope:newly_created_artifact = { save_scope_as = dynasty_banner }
|
||||
}
|
||||
}
|
||||
#Both
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:house_banner
|
||||
exists = scope:dynasty_banner
|
||||
}
|
||||
custom_tooltip = court_maintenance.0011.banner_tooltip
|
||||
}
|
||||
#House
|
||||
else_if = {
|
||||
limit = { exists = scope:house_banner }
|
||||
custom_tooltip = court_maintenance.0011.banner_house_tooltip
|
||||
}
|
||||
#Dynasty
|
||||
else = { custom_tooltip = court_maintenance.0011.banner_dynasty_tooltip }
|
||||
|
||||
# Add extra legitimacy, for the first time they gain the Kingdom title
|
||||
add_legitimacy_effect = { LEGITIMACY = major_legitimacy_gain }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = court_maintenance.0011.coronation
|
||||
custom_tooltip = court_maintenance.0011.coronation.tooltip
|
||||
trigger = {
|
||||
coronation_trigger = yes
|
||||
NOR = {
|
||||
has_character_flag = had_coronation_prompt
|
||||
has_game_rule = coronation_laws_off
|
||||
tgp_is_ceremonial_regent_trigger = yes
|
||||
}
|
||||
}
|
||||
if = { #ai should always go straight for it if they can
|
||||
limit = { is_ai = yes can_host_activity = activity_coronation }
|
||||
ai_attempt_to_host_activity = activity_coronation
|
||||
}
|
||||
else_if = { #if you already have a crown, a window opened for you sire
|
||||
limit = { coronation_has_proper_artifact_trigger = yes is_ai = no }
|
||||
open_view_data = {
|
||||
view = activity_list_detail_host_window
|
||||
data = activity_type:activity_coronation
|
||||
player = root
|
||||
}
|
||||
}
|
||||
else = { #Else we start creating a crown
|
||||
create_proper_coronation_artifact_creation = yes
|
||||
}
|
||||
|
||||
custom_tooltip = court_maintenance.0011.b.tooltip
|
||||
|
||||
ai_chance = { #AI should always start hosting coronations
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = {
|
||||
text = court_maintenance.0011.a
|
||||
trigger = { tgp_is_ceremonial_regent_trigger = no } # Not 'actual' ruler
|
||||
}
|
||||
name = {
|
||||
text = court_maintenance.0011.a.regent
|
||||
trigger = { tgp_is_ceremonial_regent_trigger = yes } # Not 'actual' ruler
|
||||
}
|
||||
#Open Royal Court
|
||||
custom_tooltip = court_maintenance.0011.a.tooltip
|
||||
if = {
|
||||
limit = {
|
||||
coronation_trigger = yes
|
||||
tgp_is_ceremonial_regent_trigger = no # Not 'actual' ruler
|
||||
NOR = {
|
||||
has_character_flag = had_coronation_prompt
|
||||
has_game_rule = coronation_laws_off
|
||||
government_has_flag = government_is_mandala
|
||||
}
|
||||
}
|
||||
custom_tooltip = court_maintenance.0011.b.tooltip.ach
|
||||
}
|
||||
open_view_data = {
|
||||
view = royal_court
|
||||
player = root
|
||||
}
|
||||
}
|
||||
option = {
|
||||
name = court_maintenance.0011.b
|
||||
custom_tooltip = court_maintenance.0011.b.tooltip
|
||||
if = {
|
||||
limit = {
|
||||
coronation_trigger = yes
|
||||
tgp_is_ceremonial_regent_trigger = no # Not 'actual' ruler
|
||||
NOR = {
|
||||
has_character_flag = had_coronation_prompt
|
||||
has_game_rule = coronation_laws_off
|
||||
government_has_flag = government_is_mandala
|
||||
}
|
||||
}
|
||||
custom_tooltip = court_maintenance.0011.b.tooltip.ach
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
add_character_flag = had_coronation_prompt
|
||||
if = {
|
||||
limit = {
|
||||
has_tgp_dlc_trigger = yes
|
||||
government_allows = merit
|
||||
NOT = { has_government = celestial_government } #Created from cycle
|
||||
}
|
||||
create_artifact_dynastic_imperial_seal_effect = {
|
||||
OWNER = root
|
||||
SMITH = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Dynasty Banner improves
|
||||
scripted_trigger dynasty_banner_improve_rarity_trigger = {
|
||||
trigger_if = {
|
||||
limit = { root.dynasty.dynasty_prestige_level = max_dynasty_prestige_level }
|
||||
NOT = { rarity = illustrious }
|
||||
}
|
||||
trigger_else_if = {
|
||||
limit = { root.dynasty.dynasty_prestige_level >= high_dynasty_prestige_level }
|
||||
NOR = {
|
||||
rarity = famed
|
||||
rarity = illustrious
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
root.dynasty.dynasty_prestige_level >= medium_dynasty_prestige_level
|
||||
NOR = {
|
||||
rarity = masterwork
|
||||
rarity = famed
|
||||
rarity = illustrious
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scripted_effect dynasty_banner_improve_rarity_effect = {
|
||||
if = {
|
||||
limit = { scope:target.dynasty_prestige_level = max_dynasty_prestige_level }
|
||||
set_artifact_rarity = illustrious
|
||||
}
|
||||
else_if = {
|
||||
limit = { scope:target.dynasty_prestige_level >= high_dynasty_prestige_level }
|
||||
set_artifact_rarity = famed
|
||||
}
|
||||
else = { set_artifact_rarity = masterwork }
|
||||
hidden_effect = {
|
||||
set_artifact_description = artifact_wall_banner_dynasty_description
|
||||
clear_artifact_modifiers = yes
|
||||
add_scaled_artifact_modifier_grandeur_small_effect = yes
|
||||
add_scaled_artifact_modifier_dynasty_prestige_effect = yes
|
||||
add_scaled_artifact_modifier_prestige_effect = yes
|
||||
add_scaled_artifact_modifier_rulership_effect = yes
|
||||
}
|
||||
}
|
||||
|
||||
court_maintenance.0012 = {
|
||||
theme = new_royal_court
|
||||
type = character_event
|
||||
title = court_maintenance.0012.t
|
||||
desc = {
|
||||
desc = court_maintenance.0012.desc
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { scope:target.dynasty_prestige_level = max_dynasty_prestige_level }
|
||||
desc = court_maintenance.0012.desc_illustrious
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:target.dynasty_prestige_level >= high_dynasty_prestige_level }
|
||||
desc = court_maintenance.0012.desc_masterwork
|
||||
}
|
||||
desc = court_maintenance.0012.desc_famed
|
||||
}
|
||||
}
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_honorable
|
||||
}
|
||||
artifact = { # To display the artifact in the event-window
|
||||
target = scope:banner_scope
|
||||
position = lower_right_portrait
|
||||
}
|
||||
|
||||
trigger = {
|
||||
any_character_artifact = {
|
||||
trigger_if = { # To stop errors
|
||||
limit = { exists = var:banner_dynasty } # is a dynasty banner
|
||||
var:banner_dynasty = root.dynasty # of my dynasty
|
||||
dynasty_banner_improve_rarity_trigger = yes # and should be a higher level
|
||||
}
|
||||
trigger_else = { always = no }
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
dynasty = { save_scope_as = target } # for banner desc
|
||||
# save relevant banners (all just in case)
|
||||
every_character_artifact = {
|
||||
limit = {
|
||||
has_variable = banner_dynasty
|
||||
var:banner_dynasty = root.dynasty
|
||||
dynasty_banner_improve_rarity_trigger = yes
|
||||
}
|
||||
add_to_list = dynasty_banner_list
|
||||
}
|
||||
random_in_list = {
|
||||
list = dynasty_banner_list
|
||||
limit = { is_equipped = yes }
|
||||
alternative_limit = { always = yes }
|
||||
save_scope_as = banner_scope
|
||||
save_scope_as = newly_created_artifact
|
||||
}
|
||||
every_in_list = {
|
||||
list = dynasty_banner_list
|
||||
dynasty_banner_improve_rarity_effect = yes
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = court_maintenance.0012.a
|
||||
}
|
||||
}
|
||||
|
||||
court_maintenance.0013 = {
|
||||
theme = new_royal_court
|
||||
type = character_event
|
||||
title = court_maintenance.0013.t
|
||||
desc = {
|
||||
desc = court_maintenance.0013.desc
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:banner_scope.var:banner_commissioner
|
||||
scope:banner_scope.var:banner_commissioner != root
|
||||
}
|
||||
desc = court_maintenance.0013.desc_creator
|
||||
}
|
||||
desc = court_maintenance.0013.desc_fallback
|
||||
}
|
||||
}
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_honorable
|
||||
}
|
||||
artifact = { # To display the artifact in the event-window
|
||||
target = scope:banner_scope
|
||||
position = lower_right_portrait
|
||||
}
|
||||
|
||||
trigger = {
|
||||
any_character_artifact = { # Has more than one dynasty banner of own dynasty
|
||||
count > 1
|
||||
trigger_if = { # To stop errors
|
||||
limit = { exists = var:banner_dynasty }
|
||||
var:banner_dynasty = root.dynasty
|
||||
}
|
||||
trigger_else = { always = no }
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
every_character_artifact = { # Fetch all dynasty banners
|
||||
limit = {
|
||||
has_variable = banner_dynasty
|
||||
var:banner_dynasty = root.dynasty
|
||||
}
|
||||
add_to_list = dynasty_banner_list
|
||||
}
|
||||
ordered_in_list = { # Save oldest dynasty banner
|
||||
list = dynasty_banner_list
|
||||
order_by = artifact_age
|
||||
save_scope_as = banner_scope
|
||||
}
|
||||
every_in_list = { # Destroy all but oldest dynasty banner
|
||||
list = dynasty_banner_list
|
||||
limit = {
|
||||
this != scope:banner_scope
|
||||
}
|
||||
destroy_artifact = this
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = court_maintenance.0013.a
|
||||
custom_tooltip = court_maintenance.0013.tt
|
||||
|
||||
}
|
||||
}
|
||||
261
N3OW/events/court_position_management_events.txt
Normal file
261
N3OW/events/court_position_management_events.txt
Normal file
|
|
@ -0,0 +1,261 @@
|
|||
# Court Position re-assignment events
|
||||
namespace = court_position_management_event
|
||||
|
||||
# Generic / landed character court position vacated event, offer the up to two best candidates by aptitude
|
||||
court_position_management_event.0001 = {
|
||||
type = character_event
|
||||
title = court_position_management_event.0001.t
|
||||
theme = court
|
||||
|
||||
desc = {
|
||||
desc = court_position_management_event.0001.desc
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:employee = {
|
||||
is_alive = no
|
||||
}
|
||||
}
|
||||
desc = court_position_management_event.0001.desc.dead
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:candidate_1
|
||||
NOT = { exists = scope:candidate_2 }
|
||||
}
|
||||
desc = court_position_management_event.0001.desc.one_candidate
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:candidate_1
|
||||
exists = scope:candidate_2
|
||||
}
|
||||
desc = court_position_management_event.0001.desc.two_candidates
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
NOT = { exists = scope:candidate_1 }
|
||||
NOT = { exists = scope:candidate_2 }
|
||||
}
|
||||
desc = court_position_management_event.0001.desc.no_candidates
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:candidate_1 }
|
||||
NOT = { exists = scope:candidate_2 }
|
||||
}
|
||||
save_scope_as = left_portrait_character
|
||||
}
|
||||
else = {
|
||||
scope:candidate_1 = {
|
||||
save_scope_as = left_portrait_character
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
left_portrait = {
|
||||
character = scope:left_portrait_character
|
||||
|
||||
# If we have no candidates, we're just stand there, thinking
|
||||
triggered_animation = {
|
||||
trigger = { scope:left_portrait_character = root }
|
||||
animation = thinking
|
||||
}
|
||||
}
|
||||
|
||||
right_portrait = scope:candidate_2
|
||||
lower_center_portrait = scope:employee
|
||||
|
||||
# Pick candidate #1
|
||||
option = {
|
||||
name = court_position_management_event.0001.a
|
||||
custom_tooltip = court_position_management_event.0001.a.aptitude
|
||||
trigger = {
|
||||
exists = scope:candidate_1
|
||||
exists = scope:court_position_type
|
||||
}
|
||||
appoint_court_position = {
|
||||
recipient = scope:candidate_1
|
||||
court_position = scope:court_position_type
|
||||
}
|
||||
}
|
||||
|
||||
# Pick candidate #2
|
||||
option = {
|
||||
name = court_position_management_event.0001.b
|
||||
custom_tooltip = court_position_management_event.0001.b.aptitude
|
||||
trigger = {
|
||||
exists = scope:candidate_2
|
||||
}
|
||||
appoint_court_position = {
|
||||
recipient = scope:candidate_2
|
||||
court_position = scope:court_position_type
|
||||
}
|
||||
}
|
||||
|
||||
# Go to a recruitment decision
|
||||
option = {
|
||||
name = court_position_management_event.0001.c
|
||||
custom_tooltip = court_position_management_event.0001.c.tt
|
||||
|
||||
# Court positions that are valid in 'recruit_court_position_decision'
|
||||
trigger = {
|
||||
NOT = { exists = scope:candidate_1 }
|
||||
NOT = { exists = scope:candidate_2 }
|
||||
OR = {
|
||||
scope:court_position_type = court_position_type:travel_leader_court_position
|
||||
scope:court_position_type = court_position_type:court_physician_court_position
|
||||
scope:court_position_type = court_position_type:wet_nurse_court_position
|
||||
scope:court_position_type = court_position_type:charioteer_court_position
|
||||
scope:court_position_type = court_position_type:chief_eunuch_court_position
|
||||
scope:court_position_type = court_position_type:court_gardener_court_position
|
||||
}
|
||||
}
|
||||
|
||||
open_view_data = {
|
||||
view = decision_detail
|
||||
data = decision:recruit_court_position_decision
|
||||
player = root
|
||||
}
|
||||
}
|
||||
|
||||
# I will figure this out myself
|
||||
option = {
|
||||
name = court_position_management_event.0001.d
|
||||
custom_tooltip = court_position_management_event.0001.d.tt
|
||||
|
||||
trigger = {
|
||||
exists = scope:candidate_1
|
||||
}
|
||||
|
||||
open_view_data = {
|
||||
view = appoint_position
|
||||
data = scope:court_position_type
|
||||
player = root
|
||||
}
|
||||
}
|
||||
|
||||
# Leave it open
|
||||
option = {
|
||||
name = court_position_management_event.0001.e
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Landless adventurer court position vacated event, offer the up to two best candidates by aptitude
|
||||
court_position_management_event.0002 = {
|
||||
type = character_event
|
||||
title = court_position_management_event.0002.t
|
||||
theme = landless_adventurer
|
||||
|
||||
desc = {
|
||||
desc = court_position_management_event.0002.desc
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:employee = {
|
||||
is_alive = no
|
||||
}
|
||||
}
|
||||
desc = court_position_management_event.0002.desc.dead
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:candidate_1
|
||||
NOT = { exists = scope:candidate_2 }
|
||||
}
|
||||
desc = court_position_management_event.0002.desc.one_candidate
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:candidate_1
|
||||
exists = scope:candidate_2
|
||||
}
|
||||
desc = court_position_management_event.0002.desc.two_candidates
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
NOT = { exists = scope:candidate_1 }
|
||||
NOT = { exists = scope:candidate_2 }
|
||||
}
|
||||
desc = court_position_management_event.0002.desc.no_candidates
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:candidate_1 }
|
||||
NOT = { exists = scope:candidate_2 }
|
||||
}
|
||||
save_scope_as = left_portrait_character
|
||||
}
|
||||
else = {
|
||||
scope:candidate_1 = {
|
||||
save_scope_as = left_portrait_character
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
left_portrait = {
|
||||
character = scope:left_portrait_character
|
||||
|
||||
# If we have no candidates, we're just stand there, thinking
|
||||
triggered_animation = {
|
||||
trigger = { scope:left_portrait_character = root }
|
||||
animation = thinking
|
||||
}
|
||||
}
|
||||
|
||||
right_portrait = scope:candidate_2
|
||||
lower_center_portrait = scope:employee
|
||||
|
||||
# Pick candidate #1
|
||||
option = {
|
||||
name = court_position_management_event.0002.a
|
||||
custom_tooltip = court_position_management_event.0002.a.aptitude
|
||||
trigger = {
|
||||
exists = scope:candidate_1
|
||||
exists = scope:court_position_type
|
||||
}
|
||||
appoint_court_position = {
|
||||
recipient = scope:candidate_1
|
||||
court_position = scope:court_position_type
|
||||
}
|
||||
}
|
||||
|
||||
# Pick candidate #2
|
||||
option = {
|
||||
name = court_position_management_event.0002.b
|
||||
custom_tooltip = court_position_management_event.0002.b.aptitude
|
||||
trigger = {
|
||||
exists = scope:candidate_2
|
||||
}
|
||||
appoint_court_position = {
|
||||
recipient = scope:candidate_2
|
||||
court_position = scope:court_position_type
|
||||
}
|
||||
}
|
||||
|
||||
# I will figure this out myself
|
||||
option = {
|
||||
name = court_position_management_event.0002.d
|
||||
custom_tooltip = court_position_management_event.0002.d.tt
|
||||
|
||||
trigger = {
|
||||
exists = scope:candidate_1
|
||||
}
|
||||
|
||||
open_view_data = {
|
||||
view = appoint_position
|
||||
data = scope:court_position_type
|
||||
player = root
|
||||
}
|
||||
}
|
||||
|
||||
# Leave it open
|
||||
option = {
|
||||
name = court_position_management_event.0002.e
|
||||
}
|
||||
}
|
||||
2998
N3OW/events/decisions_events/east_europe_events.txt
Normal file
2998
N3OW/events/decisions_events/east_europe_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3311
N3OW/events/decisions_events/iberia_north_africa_events.txt
Normal file
3311
N3OW/events/decisions_events/iberia_north_africa_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2825
N3OW/events/decisions_events/mpo_greatest_of_khans_events.txt
Normal file
2825
N3OW/events/decisions_events/mpo_greatest_of_khans_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3371
N3OW/events/decisions_events/roman_restoration_events.txt
Normal file
3371
N3OW/events/decisions_events/roman_restoration_events.txt
Normal file
File diff suppressed because it is too large
Load diff
9640
N3OW/events/dlc/ach/ach_coronation_events.txt
Normal file
9640
N3OW/events/dlc/ach/ach_coronation_events.txt
Normal file
File diff suppressed because it is too large
Load diff
720
N3OW/events/dlc/ach/ach_maintenance_events.txt
Normal file
720
N3OW/events/dlc/ach/ach_maintenance_events.txt
Normal file
|
|
@ -0,0 +1,720 @@
|
|||
namespace = ach_maintenance_events
|
||||
|
||||
ach_maintenance_events.0001 = { # Clean up of Coronation realm law, will happen 1 tick after you gain the title (due to on_actions)
|
||||
type = character_event
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
coronation_trigger = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
has_game_rule = coronation_laws_off
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
has_variable = crowned_king_var
|
||||
NOT = { has_realm_law = crowned_king }
|
||||
}
|
||||
add_realm_law_skip_effects = crowned_king
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
has_variable = crowned_emperor_var
|
||||
NOT = { has_realm_law = crowned_emperor }
|
||||
}
|
||||
add_realm_law_skip_effects = crowned_emperor
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
NOR = {
|
||||
has_variable = crowned_king_var
|
||||
has_variable = crowned_emperor_var
|
||||
}
|
||||
NOT = { has_realm_law = uncrowned }
|
||||
}
|
||||
add_realm_law_skip_effects = uncrowned
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ach_maintenance_events.0002 = { # ACH Oath synergy culture rewards
|
||||
type = character_event
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
has_variable = mend_the_fracture_oath_target_culture
|
||||
culture ?= {
|
||||
has_cultural_tradition = oath_mend_the_fracture_tradition
|
||||
}
|
||||
top_liege = root
|
||||
var:mend_the_fracture_oath_target_culture = {
|
||||
has_cultural_tradition = oath_mend_the_fracture_tradition
|
||||
NOT = { this = root.culture }
|
||||
any_culture_county = {
|
||||
count >= 3
|
||||
top_liege = root.top_liege
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# calculate the chances of a positive thing happening
|
||||
set_variable = {
|
||||
name = synergy_cultures_chance
|
||||
value = 0.1
|
||||
}
|
||||
set_variable = {
|
||||
name = synergy_cultures_amount
|
||||
value = 0
|
||||
}
|
||||
var:mend_the_fracture_oath_target_culture = {
|
||||
if = {
|
||||
limit = {
|
||||
cultural_acceptance = {
|
||||
target = root.culture
|
||||
value >= 99
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.4
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
cultural_acceptance = {
|
||||
target = root.culture
|
||||
value >= 80
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.3
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
cultural_acceptance = {
|
||||
target = root.culture
|
||||
value >= 60
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.2
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
cultural_acceptance = {
|
||||
target = root.culture
|
||||
value >= 40
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.1
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
culture_head ?= {
|
||||
opinion = {
|
||||
target = root
|
||||
value >= 80
|
||||
}
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.3
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
culture_head ?= {
|
||||
opinion = {
|
||||
target = root
|
||||
value >= 40
|
||||
}
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.2
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
culture_head ?= {
|
||||
opinion = {
|
||||
target = root
|
||||
value >= 20
|
||||
}
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = var:mend_the_fracture_oath_target_culture.culture_head
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
opinion = {
|
||||
target = var:mend_the_fracture_oath_target_culture.culture_head
|
||||
value >= 80
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.3
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
opinion = {
|
||||
target = var:mend_the_fracture_oath_target_culture.culture_head
|
||||
value >= 40
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.2
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
opinion = {
|
||||
target = var:mend_the_fracture_oath_target_culture.culture_head
|
||||
value >= 20
|
||||
}
|
||||
}
|
||||
root = {
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
prestige_level = 5
|
||||
}
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.2
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
prestige_level = 4
|
||||
}
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.15
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
prestige_level = 3
|
||||
}
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.1
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
prestige_level = 2
|
||||
}
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.05
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
prestige_level = 1
|
||||
}
|
||||
change_variable = {
|
||||
name = synergy_cultures_chance
|
||||
add = 0.02
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
var:synergy_cultures_chance >= 1
|
||||
}
|
||||
change_variable = {
|
||||
name = synergy_cultures_amount
|
||||
add = var:synergy_cultures_chance
|
||||
multiply = 2
|
||||
}
|
||||
set_variable = {
|
||||
name = synergy_cultures_chance
|
||||
value = 1
|
||||
}
|
||||
}
|
||||
|
||||
# calculate the amount of a positive things happening
|
||||
var:mend_the_fracture_oath_target_culture = {
|
||||
every_culture_county = {
|
||||
limit = {
|
||||
top_liege = root.top_liege
|
||||
}
|
||||
change_variable = {
|
||||
name = synergy_cultures_amount
|
||||
add = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
change_variable = {
|
||||
name = synergy_cultures_amount
|
||||
multiply = 0.2
|
||||
multiply = var:synergy_cultures_chance
|
||||
min = 1
|
||||
}
|
||||
|
||||
while = {
|
||||
limit = {
|
||||
var:synergy_cultures_amount > 0
|
||||
}
|
||||
random_list = {
|
||||
1 = {
|
||||
culture ?= {
|
||||
random_culture_county = {
|
||||
limit = {
|
||||
NOT = {
|
||||
has_county_modifier = oath_mend_the_fracture_county
|
||||
}
|
||||
holder = root
|
||||
}
|
||||
alternative_limit = {
|
||||
NOT = {
|
||||
has_county_modifier = oath_mend_the_fracture_county
|
||||
}
|
||||
top_liege = root.top_liege
|
||||
}
|
||||
alternative_limit = {
|
||||
NOT = {
|
||||
has_county_modifier = oath_mend_the_fracture_county
|
||||
}
|
||||
}
|
||||
add_county_modifier = {
|
||||
modifier = oath_mend_the_fracture_county
|
||||
years = 2
|
||||
}
|
||||
add_to_list = synergy_culture_counties
|
||||
}
|
||||
}
|
||||
var:mend_the_fracture_oath_target_culture = {
|
||||
random_culture_county = {
|
||||
limit = {
|
||||
NOT = {
|
||||
has_county_modifier = oath_mend_the_fracture_county
|
||||
}
|
||||
holder = root
|
||||
}
|
||||
alternative_limit = {
|
||||
NOT = {
|
||||
has_county_modifier = oath_mend_the_fracture_county
|
||||
}
|
||||
top_liege = root.top_liege
|
||||
}
|
||||
alternative_limit = {
|
||||
NOT = {
|
||||
has_county_modifier = oath_mend_the_fracture_county
|
||||
}
|
||||
}
|
||||
add_county_modifier = {
|
||||
modifier = oath_mend_the_fracture_county
|
||||
years = 3
|
||||
}
|
||||
add_to_list = synergy_culture_counties
|
||||
}
|
||||
}
|
||||
save_scope_as = county_reward
|
||||
}
|
||||
1 = {
|
||||
modifier = {
|
||||
NOT = {
|
||||
root.culture.culture_head ?= root
|
||||
}
|
||||
factor = 0
|
||||
}
|
||||
spawn_army = {
|
||||
name = ach_culture_synergy_troops
|
||||
men_at_arms = {
|
||||
type = accolade_maa_archers
|
||||
stacks = 1
|
||||
}
|
||||
men_at_arms = {
|
||||
type = accolade_maa_skirmishers
|
||||
stacks = 1
|
||||
}
|
||||
location = root.capital_province
|
||||
uses_supply = no
|
||||
inheritable = yes
|
||||
}
|
||||
var:mend_the_fracture_oath_target_culture = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
culture_head ?= root
|
||||
}
|
||||
}
|
||||
}
|
||||
culture_head ?= {
|
||||
spawn_army = {
|
||||
name = ach_culture_synergy_troops
|
||||
men_at_arms = {
|
||||
type = accolade_maa_skirmishers
|
||||
stacks = 1
|
||||
}
|
||||
location = root.capital_province
|
||||
uses_supply = no
|
||||
inheritable = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = army_reward
|
||||
}
|
||||
1 = {
|
||||
modifier = {
|
||||
NOT = {
|
||||
root.culture.culture_head ?= root
|
||||
var:mend_the_fracture_oath_target_culture.culture_head != root
|
||||
}
|
||||
factor = 0
|
||||
}
|
||||
modifier = {
|
||||
opinion = {
|
||||
target = var:mend_the_fracture_oath_target_culture.culture_head
|
||||
value = 100
|
||||
}
|
||||
factor = 0
|
||||
}
|
||||
add_opinion = {
|
||||
target = var:mend_the_fracture_oath_target_culture.culture_head
|
||||
opinion = 20
|
||||
modifier = ach_synergy_culture_opinion
|
||||
}
|
||||
save_scope_as = opinion_reward
|
||||
}
|
||||
}
|
||||
|
||||
change_variable = {
|
||||
name = synergy_cultures_amount
|
||||
subtract = 1
|
||||
}
|
||||
}
|
||||
|
||||
# inform the player about what happened
|
||||
send_interface_message = {
|
||||
title = ach_maintenance_events.0002.title
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:army_reward
|
||||
}
|
||||
custom_tooltip = ach_maintenance_events.0002.army_reward
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:opinion_reward
|
||||
}
|
||||
custom_tooltip = ach_maintenance_events.0002.opinion_reward
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:county_reward
|
||||
}
|
||||
every_in_list = {
|
||||
list = synergy_culture_counties
|
||||
show_as_tooltip = {
|
||||
add_county_modifier = {
|
||||
modifier = oath_mend_the_fracture_county
|
||||
years = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
var:mend_the_fracture_oath_target_culture = {
|
||||
any_culture_county = {
|
||||
holder = {
|
||||
culture = var:mend_the_fracture_oath_target_culture
|
||||
is_ai = no
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
send_interface_message = {
|
||||
title = ach_maintenance_events.0002.title
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:army_reward
|
||||
}
|
||||
custom_tooltip = ach_maintenance_events.0002.army_reward
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:opinion_reward
|
||||
}
|
||||
custom_tooltip = ach_maintenance_events.0002.opinion_reward
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:county_reward
|
||||
}
|
||||
every_in_list = {
|
||||
list = synergy_culture_counties
|
||||
show_as_tooltip = {
|
||||
add_county_modifier = {
|
||||
modifier = oath_mend_the_fracture_county
|
||||
years = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
remove_variable = synergy_cultures_chance
|
||||
remove_variable = synergy_cultures_amount
|
||||
}
|
||||
}
|
||||
|
||||
ach_maintenance_events.0100 = { #Coronation host is ded, notify guests
|
||||
type = character_event
|
||||
title = ach_maintenance_events.0100.t
|
||||
desc = ach_maintenance_events.0100.desc
|
||||
theme = realm
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = shock
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:host
|
||||
animation = dead
|
||||
}
|
||||
|
||||
immediate = {
|
||||
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ach_maintenance_events.0100.a
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ach_maintenance_events.0101 = { #Coronation host has been imprisoned, notify guests
|
||||
type = character_event
|
||||
title = ach_maintenance_events.0101.t
|
||||
desc = ach_maintenance_events.0101.desc
|
||||
theme = realm
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = shock
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:host
|
||||
animation = prisonhouse
|
||||
}
|
||||
|
||||
lower_left_portrait = {
|
||||
character = scope:gaoler
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:host.imprisoner = {
|
||||
save_scope_as = gaoler
|
||||
}
|
||||
}
|
||||
|
||||
trigger = {
|
||||
NOT = { #you know what you did
|
||||
this = scope:host.imprisoner
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ach_maintenance_events.0101.a
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ach_maintenance_events.0102 = { #Coronation host has been imprisoned, notify host and cancellation
|
||||
type = character_event
|
||||
title = ach_maintenance_events.0102.t
|
||||
desc = ach_maintenance_events.0102.desc
|
||||
theme = realm
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = prisonhouse
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:gaoler
|
||||
animation = manic
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:host.imprisoner = {
|
||||
save_scope_as = gaoler
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ach_maintenance_events.0102.a
|
||||
}
|
||||
}
|
||||
|
||||
ach_maintenance_events.0103 = { #No one shows up, notify host
|
||||
type = character_event
|
||||
title = ach_maintenance_events.0103.t
|
||||
desc = ach_maintenance_events.0103.desc
|
||||
theme = realm
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = worry
|
||||
}
|
||||
|
||||
|
||||
immediate = {
|
||||
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ach_maintenance_events.0103.a
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ach_maintenance_events.0104 = { #Officiator ded, host cancelled the coronation, notify guests
|
||||
type = character_event
|
||||
title = ach_maintenance_events.0104.t
|
||||
desc = ach_maintenance_events.0104.desc
|
||||
theme = realm
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = stunned
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:host
|
||||
animation = wailing
|
||||
}
|
||||
|
||||
lower_right_portrait = {
|
||||
character = scope:dead_officiator
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:activity.var:officiator ?= { save_scope_as = dead_officiator }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ach_maintenance_events.0104.a
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ach_maintenance_events.0105 = { #Host excommunicated, notify guests
|
||||
type = character_event
|
||||
title = ach_maintenance_events.0105.t
|
||||
desc = ach_maintenance_events.0105.desc
|
||||
theme = realm
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = worry
|
||||
}
|
||||
|
||||
center_portrait = {
|
||||
character = scope:host
|
||||
animation = shame
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:hof
|
||||
animation = go_to_your_room
|
||||
}
|
||||
|
||||
immediate = {
|
||||
faith.religious_head = { save_scope_as = hof }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ach_maintenance_events.0105.a
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ach_maintenance_events.0106 = { #Host excommunicated, notify host
|
||||
type = character_event
|
||||
title = ach_maintenance_events.0106.t
|
||||
desc = ach_maintenance_events.0106.desc
|
||||
theme = realm
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = shame
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:hof
|
||||
animation = go_to_your_room
|
||||
}
|
||||
|
||||
immediate = {
|
||||
faith.religious_head = { save_scope_as = hof }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ach_maintenance_events.0106.a
|
||||
}
|
||||
|
||||
}
|
||||
2198
N3OW/events/dlc/ach/ach_yearly_events.txt
Normal file
2198
N3OW/events/dlc/ach/ach_yearly_events.txt
Normal file
File diff suppressed because it is too large
Load diff
210
N3OW/events/dlc/bp3/bp3_court_position_events.txt
Normal file
210
N3OW/events/dlc/bp3/bp3_court_position_events.txt
Normal file
|
|
@ -0,0 +1,210 @@
|
|||
namespace = bp3_court_position
|
||||
|
||||
# Court Brewmaster upkeep event
|
||||
bp3_court_position.100 = {
|
||||
type = character_event
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
NOT = { has_variable = experimental_brew_cooldown }
|
||||
exists = court_position:court_brewmaster_court_position
|
||||
has_variable = active_experimental_brew
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Set a cooldown, so it can only happen once every 6 months
|
||||
set_variable = {
|
||||
name = experimental_brew_cooldown
|
||||
days = 179
|
||||
}
|
||||
|
||||
set_variable = {
|
||||
name = experimental_brew_creator
|
||||
value = court_position:court_brewmaster_court_position
|
||||
}
|
||||
|
||||
# Find what kind of drink it is (see 00_court_position_modifiers for a list of modifiers)
|
||||
random_list = {
|
||||
3 = { # Negative Drinks
|
||||
add_character_flag = experimental_brew_negative
|
||||
}
|
||||
1 = { # Childish Drinks
|
||||
trigger = {
|
||||
any_child = {
|
||||
count >= 1
|
||||
is_adult = no
|
||||
age >= 6
|
||||
}
|
||||
}
|
||||
add_character_flag = experimental_brew_childish
|
||||
random_child = {
|
||||
limit = {
|
||||
is_adult = no
|
||||
age >= 6
|
||||
}
|
||||
root = {
|
||||
set_variable = {
|
||||
name = experimental_brew_child
|
||||
value = prev
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10 = { # Positive Drinks
|
||||
add_character_flag = experimental_brew_positive
|
||||
}
|
||||
3 = { # Very Positive Drinks
|
||||
add_character_flag = experimental_brew_very_positive
|
||||
}
|
||||
}
|
||||
|
||||
# Assign modifier and name
|
||||
switch = {
|
||||
trigger = has_character_flag
|
||||
experimental_brew_negative = {
|
||||
random_list = {
|
||||
1 = { # Health
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = small_health_negative
|
||||
}
|
||||
}
|
||||
1 = { # Courtier and Guest Opinion
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = court_guest_opinion_negative
|
||||
}
|
||||
}
|
||||
1 = { # Negative Prestige
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = prestige_negative
|
||||
}
|
||||
}
|
||||
1 = { # Negative Piety
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = piety_negative
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
experimental_brew_childish = {
|
||||
# Child Opinion
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = child_opinion
|
||||
}
|
||||
}
|
||||
experimental_brew_positive = {
|
||||
random_list = {
|
||||
1 = { # Diplomacy
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = diplomacy
|
||||
}
|
||||
}
|
||||
1 = { # Martial
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = martial
|
||||
}
|
||||
}
|
||||
1 = { # Stewardship
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = stewardship
|
||||
}
|
||||
}
|
||||
1 = { # Intrigue
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = intrigue
|
||||
}
|
||||
}
|
||||
1 = { # Learning
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = learning
|
||||
}
|
||||
}
|
||||
1 = { # Prowess
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = prowess
|
||||
}
|
||||
}
|
||||
1 = { # Courtier and Guest Opinion
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = court_guest_opinion_positive
|
||||
}
|
||||
}
|
||||
1 = { # Courtly Opinion
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = courtly_opinion
|
||||
}
|
||||
}
|
||||
1 = { # Prestige
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = prestige_positive
|
||||
}
|
||||
}
|
||||
1 = { # Piety
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = piety_positive
|
||||
}
|
||||
}
|
||||
1 = { # Attraction Opinion
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = attraction_opinion
|
||||
}
|
||||
}
|
||||
1 = { # Fertility
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = fertility
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
experimental_brew_very_positive = {
|
||||
random_list = {
|
||||
1 = { # General Opinion
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = general_opinion
|
||||
}
|
||||
}
|
||||
1 = { # Stress Loss
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = stress_loss
|
||||
}
|
||||
}
|
||||
1 = { # Renown
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = renown
|
||||
}
|
||||
}
|
||||
1 = { # Fascination
|
||||
trigger = {
|
||||
root.culture.culture_head = root
|
||||
}
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = fascination
|
||||
}
|
||||
}
|
||||
1 = { # Monthly Income
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = monthly_income
|
||||
}
|
||||
}
|
||||
1 = { # Health
|
||||
court_brewmaster_assign_modifier_positive_effect = {
|
||||
MODIFIER = small_health_positive
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
### Clean up
|
||||
remove_character_flag = experimental_brew_negative
|
||||
remove_character_flag = experimental_brew_childish
|
||||
remove_character_flag = experimental_brew_positive
|
||||
remove_character_flag = experimental_brew_very_positive
|
||||
remove_variable = experimental_brew_child
|
||||
remove_variable = experimental_brew_creator
|
||||
|
||||
trigger_event = {
|
||||
id = bp3_court_position.100
|
||||
months = 6
|
||||
}
|
||||
}
|
||||
}
|
||||
6813
N3OW/events/dlc/bp3/bp3_journey_events.txt
Normal file
6813
N3OW/events/dlc/bp3/bp3_journey_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2793
N3OW/events/dlc/bp3/bp3_mapmaking.txt
Normal file
2793
N3OW/events/dlc/bp3/bp3_mapmaking.txt
Normal file
File diff suppressed because it is too large
Load diff
2828
N3OW/events/dlc/bp3/bp3_roaming_events.txt
Normal file
2828
N3OW/events/dlc/bp3/bp3_roaming_events.txt
Normal file
File diff suppressed because it is too large
Load diff
4489
N3OW/events/dlc/bp3/bp3_survey_events.txt
Normal file
4489
N3OW/events/dlc/bp3/bp3_survey_events.txt
Normal file
File diff suppressed because it is too large
Load diff
9317
N3OW/events/dlc/ce1/epidemic_events.txt
Normal file
9317
N3OW/events/dlc/ce1/epidemic_events.txt
Normal file
File diff suppressed because it is too large
Load diff
951
N3OW/events/dlc/ce1/epidemic_events_2.txt
Normal file
951
N3OW/events/dlc/ce1/epidemic_events_2.txt
Normal file
|
|
@ -0,0 +1,951 @@
|
|||
namespace = epidemic_events
|
||||
|
||||
epidemic_events.2001 = { #defender trying to status quo the vassal war cuz he's sick
|
||||
type = character_event
|
||||
title = epidemic_events.2001.t
|
||||
desc = epidemic_events.2001.desc
|
||||
theme = plague
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = thinking
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:pleading_vassal
|
||||
animation = beg
|
||||
}
|
||||
lower_right_portrait = {
|
||||
character = scope:attacking_vassal
|
||||
}
|
||||
override_background = {
|
||||
reference = army_camp
|
||||
}
|
||||
override_effect_2d = {
|
||||
reference = fog
|
||||
}
|
||||
cooldown = { years = 30 }
|
||||
|
||||
trigger = {
|
||||
is_available_adult = yes
|
||||
any_vassal = {
|
||||
is_ai = yes
|
||||
is_at_war = yes
|
||||
any_character_war = {
|
||||
primary_attacker = {
|
||||
is_vassal_of = root
|
||||
is_ai = yes
|
||||
}
|
||||
is_defender = prev
|
||||
attacker_war_score > 30
|
||||
}
|
||||
realm_has_any_epidemic = { SIZE = 3 INTENSITY = minor }
|
||||
current_gold_value > minor_gold_value
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
random_vassal = {
|
||||
limit = {
|
||||
is_ai = yes
|
||||
is_at_war = yes
|
||||
any_character_war = {
|
||||
primary_attacker = {
|
||||
is_vassal_of = root
|
||||
is_ai = yes
|
||||
}
|
||||
is_defender = prev
|
||||
attacker_war_score > 30
|
||||
}
|
||||
realm_has_any_epidemic = { SIZE = 2 INTENSITY = minor }
|
||||
current_gold_value > minor_gold_value
|
||||
}
|
||||
save_scope_as = pleading_vassal
|
||||
get_random_realm_epidemic = { INTENSITY = minor }
|
||||
random_character_war = {
|
||||
limit = {
|
||||
primary_attacker = {
|
||||
is_vassal_of = root
|
||||
is_ai = yes
|
||||
}
|
||||
is_defender = prev
|
||||
attacker_war_score > 30
|
||||
}
|
||||
save_scope_as = vassal_war
|
||||
}
|
||||
}
|
||||
scope:vassal_war = {
|
||||
primary_attacker = {
|
||||
save_scope_as = attacking_vassal
|
||||
}
|
||||
}
|
||||
set_variable = {
|
||||
name = gold_transfer_value
|
||||
value = scope:pleading_vassal.current_gold_value
|
||||
}
|
||||
scope:pleading_vassal = {
|
||||
pay_short_term_gold = {
|
||||
target = root
|
||||
gold = current_gold_value
|
||||
}
|
||||
hidden_effect = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { has_trait = scope:epidemic_scope.epidemic_type.epidemic_trait }
|
||||
}
|
||||
random = {
|
||||
chance = 25
|
||||
infect_with_epidemic = scope:epidemic_scope
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { #send a royal order for white peace
|
||||
name = epidemic_events.2001.c
|
||||
|
||||
duel = {
|
||||
skill = diplomacy
|
||||
target = scope:attacking_vassal
|
||||
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 1
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = epidemic_events.2001.c.success
|
||||
left_icon = scope:pleading_vassal
|
||||
right_icon = scope:attacking_vassal
|
||||
scope:vassal_war = {
|
||||
end_war = white_peace
|
||||
}
|
||||
add_legitimacy_effect = { LEGITIMACY = minor_legitimacy_gain }
|
||||
scope:pleading_vassal = {
|
||||
add_opinion = {
|
||||
modifier = thankful_opinion
|
||||
opinion = 30
|
||||
target = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -1
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = epidemic_events.2001.c.failure
|
||||
left_icon = scope:pleading_vassal
|
||||
right_icon = scope:attacking_vassal
|
||||
scope:pleading_vassal = {
|
||||
add_opinion = {
|
||||
modifier = disappointed_opinion
|
||||
opinion = -25
|
||||
target = root
|
||||
}
|
||||
}
|
||||
custom_tooltip = epidemic_events.2001.danger
|
||||
}
|
||||
hidden_effect = {
|
||||
random = {
|
||||
chance = 10
|
||||
trigger_event = {
|
||||
months = 4
|
||||
id = epidemic_events.2002
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
greedy = medium_stress_gain
|
||||
compassionate = medium_stress_loss
|
||||
just = medium_stress_loss
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_compassion = low_chance_impact_positive_ai_value
|
||||
ai_rationality = low_chance_impact_positive_ai_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { #imprison the other guy from traveling to you during a pandemic and wash whatever he touched
|
||||
name = epidemic_events.2001.b
|
||||
flavor = epidemic_events.2001.b.desc
|
||||
|
||||
imprison = {
|
||||
target = scope:pleading_vassal
|
||||
type = dungeon
|
||||
}
|
||||
|
||||
scope:pleading_vassal = {
|
||||
add_opinion = {
|
||||
modifier = angry_opinion
|
||||
opinion = -40
|
||||
target = root
|
||||
}
|
||||
}
|
||||
custom_tooltip = epidemic_events.2001.danger
|
||||
hidden_effect = {
|
||||
random = {
|
||||
chance = 10
|
||||
trigger_event = {
|
||||
months = 4
|
||||
id = epidemic_events.2002
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = low_chance_impact_positive_ai_value
|
||||
ai_rationality = low_chance_impact_positive_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
compassionate = medium_stress_gain
|
||||
just = medium_stress_gain
|
||||
paranoid = major_stress_loss
|
||||
}
|
||||
}
|
||||
|
||||
option = { #pay money to end war
|
||||
name = epidemic_events.2001.a
|
||||
|
||||
scope:vassal_war = {
|
||||
end_war = white_peace
|
||||
}
|
||||
pay_treasury_or_gold = {
|
||||
target = scope:attacking_vassal
|
||||
value = {
|
||||
value = root.var:gold_transfer_value
|
||||
multiply = 0.5
|
||||
}
|
||||
}
|
||||
|
||||
scope:pleading_vassal = {
|
||||
add_opinion = {
|
||||
modifier = thankful_opinion
|
||||
opinion = 30
|
||||
target = root
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = low_chance_impact_negative_ai_value
|
||||
ai_compassion = low_chance_impact_positive_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
greedy = medium_stress_gain
|
||||
compassionate = medium_stress_loss
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
after = {
|
||||
hidden_effect = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:pleading_vassal = {
|
||||
has_trait = scope:epidemic_scope.epidemic_type.epidemic_trait
|
||||
is_imprisoned = no
|
||||
}
|
||||
}
|
||||
random_list = {
|
||||
60 = {
|
||||
random_courtier = {
|
||||
limit = {
|
||||
NOT = { has_trait = scope:epidemic_scope.epidemic_type.epidemic_trait }
|
||||
}
|
||||
save_scope_as = infected_courtier
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = epidemic_events.2001.epidemic_spread.t
|
||||
left_icon = scope:pleading_vassal
|
||||
right_icon = scope:infected_courtier
|
||||
scope:infected_courtier = {
|
||||
infect_with_epidemic = scope:epidemic_scope
|
||||
}
|
||||
}
|
||||
}
|
||||
20 = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { has_trait = scope:epidemic_scope.epidemic_type.epidemic_trait }
|
||||
}
|
||||
}
|
||||
random_courtier = {
|
||||
limit = {
|
||||
NOT = { has_trait = scope:epidemic_scope.epidemic_type.epidemic_trait }
|
||||
}
|
||||
save_scope_as = first_infected_courtier
|
||||
}
|
||||
random_courtier = {
|
||||
limit = {
|
||||
NOT = {
|
||||
has_trait = scope:epidemic_scope.epidemic_type.epidemic_trait
|
||||
scope:first_infected_courtier = this
|
||||
}
|
||||
}
|
||||
save_scope_as = second_infected_courtier
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = epidemic_events.2001.epidemic_spread.t
|
||||
left_icon = scope:second_infected_courtier
|
||||
right_icon = scope:first_infected_courtier
|
||||
scope:first_infected_courtier = {
|
||||
infect_with_epidemic = scope:epidemic_scope
|
||||
}
|
||||
scope:second_infected_courtier = {
|
||||
infect_with_epidemic = scope:epidemic_scope
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
epidemic_events.2002 = {
|
||||
type = character_event
|
||||
title = epidemic_events.2002.t
|
||||
desc = epidemic_events.2002.desc
|
||||
theme = plague
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = stress
|
||||
}
|
||||
lower_left_portrait = scope:attacking_vassal
|
||||
lower_right_portrait = scope:pleading_vassal
|
||||
|
||||
trigger = {
|
||||
exists = scope:epidemic_scope
|
||||
exists = scope:vassal_war
|
||||
is_ai = no
|
||||
}
|
||||
|
||||
override_background = {
|
||||
reference = battlefield
|
||||
}
|
||||
override_effect_2d = {
|
||||
reference = fog
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:epidemic_scope = {
|
||||
outbreak_intensity = minor
|
||||
}
|
||||
}
|
||||
scope:epidemic_scope = {
|
||||
set_epidemic_outbreak_intensity = major
|
||||
}
|
||||
}
|
||||
else = {
|
||||
scope:epidemic_scope = {
|
||||
set_epidemic_outbreak_intensity = apocalyptic
|
||||
}
|
||||
}
|
||||
add_legitimacy = miniscule_legitimacy_loss
|
||||
}
|
||||
|
||||
option = {
|
||||
name = epidemic_events.2002.a
|
||||
stress_impact = {
|
||||
base = minor_stress_gain
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
epidemic_events.2003 = { #maa are dying from war
|
||||
type = character_event
|
||||
title = epidemic_events.2003.t
|
||||
desc = epidemic_events.2003.desc
|
||||
theme = plague
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = stress
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:marshal
|
||||
animation = marshal_shield
|
||||
}
|
||||
|
||||
override_background = {
|
||||
reference = army_camp
|
||||
}
|
||||
|
||||
override_effect_2d = {
|
||||
reference = flies
|
||||
}
|
||||
|
||||
cooldown = { years = 8 }
|
||||
|
||||
trigger = {
|
||||
is_available_adult = yes
|
||||
any_held_county = {
|
||||
any_county_province = {
|
||||
has_stationed_regiment = yes
|
||||
any_province_epidemic = {
|
||||
intensity >= minor
|
||||
}
|
||||
}
|
||||
save_temporary_scope_as = first_county
|
||||
}
|
||||
any_held_county = {
|
||||
this != scope:first_county
|
||||
any_county_province = {
|
||||
has_stationed_regiment = yes
|
||||
any_province_epidemic = {
|
||||
intensity >= minor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exists = cp:councillor_marshal
|
||||
}
|
||||
immediate = {
|
||||
random_held_county = {
|
||||
limit = {
|
||||
any_county_province = {
|
||||
has_stationed_regiment = yes
|
||||
any_province_epidemic = {
|
||||
intensity >= minor
|
||||
}
|
||||
}
|
||||
}
|
||||
random_county_province = {
|
||||
limit = {
|
||||
has_stationed_regiment = yes
|
||||
any_province_epidemic = {
|
||||
intensity >= minor
|
||||
}
|
||||
}
|
||||
save_scope_as = first_epidemic_province
|
||||
random_province_epidemic = {
|
||||
save_scope_as = epidemic_scope
|
||||
}
|
||||
}
|
||||
save_scope_as = first_epidemic_county
|
||||
}
|
||||
random_held_county = {
|
||||
limit = {
|
||||
this != scope:first_epidemic_county
|
||||
any_county_province = {
|
||||
has_stationed_regiment = yes
|
||||
any_province_epidemic = {
|
||||
intensity >= minor
|
||||
}
|
||||
}
|
||||
}
|
||||
random_county_province = {
|
||||
limit = {
|
||||
has_stationed_regiment = yes
|
||||
any_province_epidemic = {
|
||||
intensity >= minor
|
||||
}
|
||||
}
|
||||
save_scope_as = second_epidemic_province
|
||||
}
|
||||
}
|
||||
cp:councillor_marshal = { save_scope_as = marshal }
|
||||
}
|
||||
|
||||
option = { #pay more to get more recruits
|
||||
name = epidemic_events.2003.a
|
||||
|
||||
every_maa_regiment = {
|
||||
change_maa_troops_count = {
|
||||
value = {
|
||||
value = this.maa_current_troops_count
|
||||
multiply = -0.25
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = low_chance_impact_negative_ai_value
|
||||
ai_rationality = low_chance_impact_positive_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
greedy = medium_stress_gain
|
||||
ambitious = medium_stress_loss
|
||||
}
|
||||
}
|
||||
|
||||
option = { #dont care, press peasants as maa
|
||||
name = epidemic_events.2003.b
|
||||
|
||||
scope:first_epidemic_province = {
|
||||
add_province_modifier = {
|
||||
modifier = epidemic_pressed_levies
|
||||
years = 5
|
||||
}
|
||||
}
|
||||
|
||||
scope:second_epidemic_province = {
|
||||
add_province_modifier = {
|
||||
modifier = epidemic_pressed_levies
|
||||
years = 5
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = low_chance_impact_positive_ai_value
|
||||
ai_compassion = low_chance_impact_negative_ai_value
|
||||
ai_rationality = low_chance_impact_positive_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
just = medium_stress_gain
|
||||
}
|
||||
}
|
||||
|
||||
option = { #close the barracks!
|
||||
name = epidemic_events.2003.c
|
||||
|
||||
scope:first_epidemic_province = {
|
||||
add_province_modifier = {
|
||||
modifier = epidemic_closed_barracks
|
||||
years = 5
|
||||
}
|
||||
}
|
||||
|
||||
scope:second_epidemic_province = {
|
||||
add_province_modifier = {
|
||||
modifier = epidemic_closed_barracks
|
||||
years = 5
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_compassion = low_chance_impact_positive_ai_value
|
||||
ai_rationality = low_chance_impact_positive_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
paranoid = medium_stress_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
epidemic_events.2004 = { #Medicinal Jar creation event
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
is_available_adult = yes
|
||||
court_position:court_physician_court_position ?= {
|
||||
is_available_ai_adult = yes
|
||||
culture != root.culture
|
||||
NOT = {
|
||||
has_character_flag = physician_medicinal_jar
|
||||
}
|
||||
}
|
||||
realm_has_any_nearby_epidemic = { SIZE = 4 INTENSITY = minor }
|
||||
}
|
||||
|
||||
cooldown = { years = 160 }
|
||||
|
||||
immediate = {
|
||||
court_position:court_physician_court_position = {
|
||||
save_scope_as = physician
|
||||
}
|
||||
scope:physician = {
|
||||
create_artifact = {
|
||||
name = medicine_jar
|
||||
description = medicine_jar_desc
|
||||
type = miscellaneous
|
||||
visuals = glazed_jar
|
||||
modifier = artifact_epidemic_resistance_1_modifier
|
||||
modifier = artifact_learning_lifestyle_xp_2_modifier
|
||||
save_scope_as = medicine_jar
|
||||
quality = 50
|
||||
}
|
||||
add_character_flag = physician_medicinal_jar
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
scope:physician = {
|
||||
can_equip_artifact = scope:medicine_jar
|
||||
}
|
||||
}
|
||||
scope:medicine_jar = {
|
||||
equip_artifact_to_owner = yes
|
||||
}
|
||||
get_random_nearby_realm_epidemic = { INTENSITY = minor }
|
||||
trigger_event = {
|
||||
days = { 3 7 }
|
||||
id = epidemic_events.2005
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
epidemic_events.2005 = { #Glass jar artifact
|
||||
type = character_event
|
||||
title = epidemic_events.2005.t
|
||||
desc = epidemic_events.2005.desc
|
||||
theme = plague
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_rational
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:physician
|
||||
animation = physician
|
||||
}
|
||||
|
||||
artifact = {
|
||||
target = scope:medicine_jar
|
||||
position = lower_center_portrait
|
||||
}
|
||||
|
||||
override_background = {
|
||||
reference = physicians_study
|
||||
}
|
||||
|
||||
trigger = {
|
||||
scope:physician = { is_alive = yes }
|
||||
}
|
||||
|
||||
option = { #politely ask the physisican to part with the jar
|
||||
name = epidemic_events.2005.a
|
||||
duel = {
|
||||
skill = diplomacy
|
||||
target = scope:physician
|
||||
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 1
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = epidemic_events.2005.a.success
|
||||
left_icon = scope:physician
|
||||
scope:medicine_jar = {
|
||||
set_owner = root
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -1
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = epidemic_events.2005.a.failure
|
||||
left_icon = scope:physician
|
||||
scope:medicine_jar = {
|
||||
add_artifact_modifier = artifact_physician_aptitude_1_modifier
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
craven = minor_stress_loss
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = low_chance_impact_negative_ai_value
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
option = { #violently grab the jar from physician
|
||||
name = epidemic_events.2005.b
|
||||
|
||||
scope:physician = {
|
||||
add_opinion = {
|
||||
modifier = fp3_stole_from_me
|
||||
opinion = -25
|
||||
target = root
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
REASON = rival_stole_artifact
|
||||
CHARACTER = root
|
||||
OPINION = 0
|
||||
}
|
||||
}
|
||||
|
||||
scope:medicine_jar = {
|
||||
set_owner = root
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
temperate = medium_stress_gain
|
||||
just = medium_stress_gain
|
||||
paranoid = medium_stress_loss
|
||||
wrathful = medium_stress_loss
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_greed = low_chance_impact_positive_ai_value
|
||||
ai_energy = low_chance_impact_positive_ai_value
|
||||
ai_rationality = low_chance_impact_negative_ai_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { #let phycisian keep his precious jar
|
||||
name = epidemic_events.2005.c
|
||||
scope:medicine_jar = {
|
||||
add_artifact_modifier = artifact_physician_aptitude_1_modifier
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
temperate = medium_stress_loss
|
||||
just = medium_stress_loss
|
||||
trusting = medium_stress_loss
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 10
|
||||
ai_value_modifier = {
|
||||
ai_compassion = low_chance_impact_positive_ai_value
|
||||
ai_rationality = low_chance_impact_positive_ai_value
|
||||
ai_greed = low_chance_impact_negative_ai_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
epidemic_events.2006 = { #Dancing plague
|
||||
type = character_event
|
||||
title = epidemic_events.2006.t
|
||||
desc = epidemic_events.2006.desc
|
||||
theme = plague
|
||||
override_background = courtyard
|
||||
override_effect_2d = { reference = flies }
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = stress
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:dance_victim
|
||||
animation = dancing_plague
|
||||
}
|
||||
|
||||
trigger = {
|
||||
is_available_adult = yes
|
||||
OR = {
|
||||
is_ai = no
|
||||
this = top_liege
|
||||
}
|
||||
capital_province = {
|
||||
any_province_epidemic = {
|
||||
#epidemic_type = epidemic_type:ergotism
|
||||
intensity < apocalyptic
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
has_character_flag = had_event_dancing_plague
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = { #Since a big outbreak occurred in Aachen 1374
|
||||
add = 9
|
||||
capital_province = {
|
||||
county = title:c_aachen
|
||||
}
|
||||
current_date >= 1370.1.1
|
||||
current_date <= 1380.1.1
|
||||
}
|
||||
modifier = { #Since an outbreak occurred in Erfurt 1247
|
||||
add = 9
|
||||
capital_province = {
|
||||
duchy = title:d_thuringia
|
||||
}
|
||||
current_date >= 1240.1.1
|
||||
current_date <= 1250.1.1
|
||||
}
|
||||
modifier = { #Since an outbreak occurred in Kolbigk 1021
|
||||
add = 9
|
||||
capital_province = {
|
||||
geographical_region = ghw_region_saxony
|
||||
}
|
||||
current_date >= 1020.1.1
|
||||
current_date <= 1030.1.1
|
||||
|
||||
}
|
||||
modifier = { #Since it historically occurred in Europe
|
||||
add = 1
|
||||
capital_province = {
|
||||
geographical_region = world_europe
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
immediate = {
|
||||
capital_province = {
|
||||
random_province_epidemic = {
|
||||
limit = {
|
||||
epidemic_type = epidemic_type:ergotism
|
||||
outbreak_intensity < apocalyptic
|
||||
}
|
||||
save_scope_as = dancing_plague
|
||||
}
|
||||
}
|
||||
create_character = {
|
||||
template = servant_character
|
||||
dynasty = none
|
||||
location = root.capital_province
|
||||
save_scope_as = dance_victim
|
||||
}
|
||||
hidden_effect = {
|
||||
scope:dance_victim = {
|
||||
add_trait = ergotism
|
||||
}
|
||||
}
|
||||
|
||||
scope:dancing_plague = {
|
||||
set_epidemic_outbreak_intensity = apocalyptic
|
||||
}
|
||||
|
||||
add_character_flag = had_event_dancing_plague
|
||||
}
|
||||
|
||||
option = { #let's join the paaartey
|
||||
trigger = {
|
||||
has_trait = eccentric
|
||||
}
|
||||
name = epidemic_events.2006.a
|
||||
add_character_modifier = {
|
||||
modifier = ce1_gone_dancing
|
||||
years = 2
|
||||
}
|
||||
|
||||
hidden_effect = {
|
||||
random = {
|
||||
chance = 10
|
||||
trigger_event = { id = health.1017 days = { 5 15 } } #You contract ergotism
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
eccentric = medium_stress_loss
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
option = { #slay the demon!
|
||||
trigger = {
|
||||
has_trait = zealous
|
||||
}
|
||||
name = epidemic_events.2006.d
|
||||
add_piety = minor_piety_gain
|
||||
|
||||
scope:dance_victim = {
|
||||
death = {
|
||||
death_reason = death_murder
|
||||
killer = root
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
zealous = medium_stress_loss
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 10
|
||||
ai_value_modifier = {
|
||||
ai_compassion = low_chance_impact_negative_ai_value
|
||||
ai_zeal = low_chance_impact_positive_ai_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { #eh, every dance stops eventually, right?
|
||||
name = epidemic_events.2006.b
|
||||
|
||||
capital_county = {
|
||||
add_county_modifier = {
|
||||
modifier = dance_plague_modifier
|
||||
years = 4
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
compassionate = minor_stress_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 10
|
||||
ai_value_modifier = {
|
||||
ai_compassion = low_chance_impact_negative_ai_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { #tie them down! allieviate their pains somehow
|
||||
name = epidemic_events.2006.c
|
||||
|
||||
hidden_effect = {
|
||||
random = {
|
||||
chance = 10
|
||||
trigger_event = { id = health.1017 days = { 5 15 } } #You contract ergotism
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
lustful = medium_stress_loss
|
||||
compassionate = medium_stress_loss
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 10
|
||||
ai_value_modifier = {
|
||||
ai_compassion = low_chance_impact_positive_ai_value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
134
N3OW/events/dlc/ce1/legend_ending_events.txt
Normal file
134
N3OW/events/dlc/ce1/legend_ending_events.txt
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
namespace = story_event_legends
|
||||
|
||||
###################################
|
||||
# Legend Ending Events
|
||||
# 0001 - 0100
|
||||
###################################
|
||||
|
||||
#Heroic Ending Story Event
|
||||
story_event_legends.0001 = {
|
||||
type = character_event
|
||||
window = fullscreen_event
|
||||
title = story_event_legends.0001.t
|
||||
desc = {
|
||||
desc = story_event_legends.0001.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:promoted_legend = { has_legend_chapter = famous_deed }
|
||||
}
|
||||
desc = story_event_legends.0001.desc.famous_deed
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:promoted_legend = { has_legend_chapter = battle }
|
||||
}
|
||||
desc = story_event_legends.0001.desc.battle
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:promoted_legend = { has_legend_chapter = hunt }
|
||||
}
|
||||
desc = story_event_legends.0001.desc.hunt
|
||||
}
|
||||
desc = story_event_legends.0001.desc.fallback
|
||||
}
|
||||
desc = story_event_legends.0001.desc.outro
|
||||
}
|
||||
theme = legend
|
||||
override_background = { reference = ce1_fullscreen_heroic_legend }
|
||||
override_sound = { reference = "event:/DLC/FP4/SFX/UI/Unique/sfx_ui_spread_legend" }
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_legend
|
||||
set_variable = {
|
||||
name = finished_legend_var
|
||||
value = scope:promoted_legend
|
||||
}
|
||||
scope:promoted_legend = { set_variable = my_legend_var }
|
||||
}
|
||||
option = {
|
||||
name = story_event_legends.0001.a
|
||||
clicksound = "event:/DLC/FP2/SFX/UI/fp2_struggle_start_select"
|
||||
}
|
||||
}
|
||||
|
||||
#Legitimizing Ending Story Event
|
||||
story_event_legends.0002 = {
|
||||
type = character_event
|
||||
window = fullscreen_event
|
||||
title = story_event_legends.0002.t
|
||||
desc = {
|
||||
desc = story_event_legends.0002.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:promoted_legend = { has_legend_chapter = famous_deed }
|
||||
}
|
||||
desc = story_event_legends.0002.desc.famous_deed
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:promoted_legend = { has_legend_chapter = battle }
|
||||
}
|
||||
desc = story_event_legends.0002.desc.battle
|
||||
}
|
||||
desc = story_event_legends.0002.desc.fallback
|
||||
}
|
||||
desc = story_event_legends.0002.desc.outro
|
||||
}
|
||||
theme = legend
|
||||
override_background = { reference = ce1_fullscreen_legitimizing_legend }
|
||||
override_sound = { reference = "event:/DLC/FP4/SFX/UI/Unique/sfx_ui_spread_legend" }
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_legend
|
||||
set_variable = {
|
||||
name = finished_legend_var
|
||||
value = scope:promoted_legend
|
||||
}
|
||||
scope:promoted_legend = { set_variable = my_legend_var }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = story_event_legends.0002.a
|
||||
clicksound = "event:/DLC/FP2/SFX/UI/fp2_struggle_start_select"
|
||||
}
|
||||
}
|
||||
|
||||
#Holy Ending Story Event
|
||||
story_event_legends.0003 = {
|
||||
type = character_event
|
||||
window = fullscreen_event
|
||||
title = story_event_legends.0003.t
|
||||
desc = {
|
||||
desc = story_event_legends.0003.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:promoted_legend = { has_legend_chapter = famous_deed }
|
||||
}
|
||||
desc = story_event_legends.0001.desc.famous_deed
|
||||
}
|
||||
desc = story_event_legends.0001.desc.fallback
|
||||
}
|
||||
desc = story_event_legends.0003.desc.outro
|
||||
}
|
||||
theme = legend
|
||||
override_background = { reference = ce1_fullscreen_holy_legend }
|
||||
override_sound = { reference = "event:/DLC/FP4/SFX/UI/Unique/sfx_ui_spread_legend" }
|
||||
|
||||
immediate = {
|
||||
play_music_cue = mx_cue_legend
|
||||
set_variable = {
|
||||
name = finished_legend_var
|
||||
value = scope:promoted_legend
|
||||
}
|
||||
scope:promoted_legend = { set_variable = my_legend_var }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = story_event_legends.0003.a
|
||||
clicksound = "event:/DLC/FP2/SFX/UI/fp2_struggle_start_select"
|
||||
}
|
||||
}
|
||||
790
N3OW/events/dlc/ce1/legend_events.txt
Normal file
790
N3OW/events/dlc/ce1/legend_events.txt
Normal file
|
|
@ -0,0 +1,790 @@
|
|||
namespace = legend_events
|
||||
|
||||
############################
|
||||
## Legend Spawn Events
|
||||
## 0001-1000
|
||||
## by James Beaumont
|
||||
############################
|
||||
|
||||
# legend_events.0001 - Chronicler gives you a legend seed
|
||||
# legend_events.0010 - Chronicler convinces someone to promote your legend
|
||||
# legend_events.0020 - Hold Court presentation of a legend seed
|
||||
|
||||
# Chronicler gives you a legend seed :D
|
||||
legend_events.0001 = {
|
||||
type = character_event
|
||||
title = legend_events.0001.t
|
||||
desc = {
|
||||
desc = legend_events.0001.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:slew_dragon
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.slew_dragon
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:ancestral_saint
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.ancestral_saint
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:old_godly_descent
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.old_godly_descent
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:raised_by_animals
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.raised_by_animals
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:auspicious_stars
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.auspicious_stars
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:virgin_birth
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.virgin_birth
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:spoke_to_angels
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.spoke_to_angels
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:fought_the_devil
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.fought_the_devil
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:exotic_backstory
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.exotic_backstory
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
var:legend_seed_to_give = flag:ancient_people
|
||||
}
|
||||
desc = legend_events.0001.desc.mid.ancient_people
|
||||
}
|
||||
}
|
||||
desc = legend_events.0001.desc.outro
|
||||
}
|
||||
theme = legend
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_honorable
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:chronicler
|
||||
animation = chancellor
|
||||
}
|
||||
lower_center_portrait = {
|
||||
trigger = {
|
||||
exists = scope:legend_character
|
||||
}
|
||||
character = scope:legend_character
|
||||
}
|
||||
|
||||
# The Court Chronicler needs to be alive
|
||||
trigger = {
|
||||
scope:chronicler = {
|
||||
is_alive = yes
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
random_list = { # Determine the seed to hand out
|
||||
10 = { # Ancestor killed a dragon
|
||||
trigger = {
|
||||
any_ancestor = {
|
||||
even_if_dead = yes
|
||||
is_adult = yes
|
||||
is_alive = no
|
||||
}
|
||||
NOT = { has_game_rule = historical_legends_only }
|
||||
}
|
||||
random_ancestor = {
|
||||
even_if_dead = yes
|
||||
limit = {
|
||||
is_adult = yes
|
||||
is_alive = no
|
||||
}
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = prowess
|
||||
}
|
||||
modifier = {
|
||||
add = martial
|
||||
}
|
||||
}
|
||||
save_scope_as = legend_character
|
||||
}
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:slew_dragon
|
||||
}
|
||||
}
|
||||
10 = { # Ancestor was/should be a saint
|
||||
trigger = {
|
||||
any_ancestor = {
|
||||
even_if_dead = yes
|
||||
is_adult = yes
|
||||
is_alive = no
|
||||
}
|
||||
NOT = { has_game_rule = historical_legends_only }
|
||||
}
|
||||
random_ancestor = {
|
||||
even_if_dead = yes
|
||||
limit = {
|
||||
is_adult = yes
|
||||
is_alive = no
|
||||
}
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = learning
|
||||
}
|
||||
modifier = {
|
||||
factor = 3
|
||||
OR = {
|
||||
num_virtuous_traits = {
|
||||
target = root.faith
|
||||
value >= 1
|
||||
}
|
||||
has_trait = saint
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0.1
|
||||
OR = {
|
||||
num_sinful_traits = {
|
||||
target = root.faith
|
||||
value >= 1
|
||||
}
|
||||
has_trait = excommunicated
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = legend_character
|
||||
}
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:ancestral_saint
|
||||
}
|
||||
}
|
||||
10 = { # I am descended from an old God
|
||||
trigger = {
|
||||
NOT = { religion = { is_in_family = rf_pagan } }
|
||||
any_ancestor = {
|
||||
even_if_dead = yes
|
||||
is_alive = no
|
||||
religion = { is_in_family = rf_pagan }
|
||||
}
|
||||
NOT = { has_game_rule = historical_legends_only }
|
||||
}
|
||||
random_ancestor = {
|
||||
even_if_dead = yes
|
||||
limit = {
|
||||
religion = { is_in_family = rf_pagan }
|
||||
is_alive = no
|
||||
}
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = learning
|
||||
}
|
||||
modifier = {
|
||||
factor = 3
|
||||
OR = {
|
||||
num_virtuous_traits = {
|
||||
target = root.faith
|
||||
value >= 1
|
||||
}
|
||||
has_trait = saint
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 0.1
|
||||
OR = {
|
||||
num_sinful_traits = {
|
||||
target = root.faith
|
||||
value >= 1
|
||||
}
|
||||
has_trait = excommunicated
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = legend_character
|
||||
}
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:old_godly_descent
|
||||
}
|
||||
}
|
||||
10 = { # I was raised by dangerous animals
|
||||
trigger = {
|
||||
NOT = { has_game_rule = historical_legends_only }
|
||||
}
|
||||
select_local_animal_effect = { TYPE = dangerous }
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:raised_by_animals
|
||||
}
|
||||
}
|
||||
10 = { # Born under auspicious stars
|
||||
trigger = {
|
||||
NOT = { has_game_rule = historical_legends_only }
|
||||
}
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:auspicious_stars
|
||||
}
|
||||
}
|
||||
10 = { # Virgin birth
|
||||
trigger = {
|
||||
has_any_bastard_trait_trigger = yes
|
||||
NOT = { has_game_rule = historical_legends_only }
|
||||
}
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:virgin_birth
|
||||
}
|
||||
}
|
||||
10 = { # Spoke to an angel
|
||||
trigger = {
|
||||
religion_has_angels_trigger = yes
|
||||
NOT = { has_game_rule = historical_legends_only }
|
||||
}
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:spoke_to_angels
|
||||
}
|
||||
}
|
||||
10 = { # Fought a demon
|
||||
trigger = {
|
||||
NOT = { has_game_rule = historical_legends_only }
|
||||
}
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:fought_the_devil
|
||||
}
|
||||
}
|
||||
10 = { # Exotic backstory
|
||||
get_appropriate_exotic_location = yes
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:exotic_backstory
|
||||
}
|
||||
}
|
||||
10 = { # Ancient people
|
||||
trigger = {
|
||||
# The ancient cultures we have for now aren't appropriate for these regions
|
||||
root.culture = {
|
||||
NOR = {
|
||||
culture_overlaps_geographical_region = world_burma
|
||||
culture_overlaps_geographical_region = custom_arakan_mountains
|
||||
culture_overlaps_geographical_region = world_tibet
|
||||
}
|
||||
}
|
||||
}
|
||||
get_appropriate_ancient_people = yes
|
||||
set_variable = {
|
||||
name = legend_seed_to_give
|
||||
value = flag:ancient_people
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Wowie zowie, really?
|
||||
name = legend_events.0001.a
|
||||
if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:slew_dragon
|
||||
}
|
||||
create_legend_seed = {
|
||||
type = heroic
|
||||
quality = famed
|
||||
chronicle = beast_slayer
|
||||
properties = {
|
||||
beast = flag:dragon
|
||||
location = root.location
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:ancestral_saint
|
||||
}
|
||||
create_legend_seed = {
|
||||
type = holy
|
||||
quality = famed
|
||||
chronicle = saintly_deed
|
||||
properties = {
|
||||
ancestor = scope:legend_character
|
||||
religion = root.religion
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:old_godly_descent
|
||||
}
|
||||
generate_religion_descent_effect = {
|
||||
RELIGION = scope:legend_character.religion
|
||||
GOD = high_god
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:raised_by_animals
|
||||
}
|
||||
create_legend_seed = {
|
||||
type = heroic
|
||||
quality = famed
|
||||
chronicle = raised_by_animals
|
||||
properties = {
|
||||
beast = var:animal_type
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:auspicious_stars
|
||||
}
|
||||
create_legend_seed = {
|
||||
type = holy
|
||||
quality = famed
|
||||
chronicle = sacred_birth
|
||||
properties = {
|
||||
reason = flag:auspicious
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:virgin_birth
|
||||
}
|
||||
create_legend_seed = {
|
||||
type = holy
|
||||
quality = famed
|
||||
chronicle = sacred_birth
|
||||
properties = {
|
||||
reason = flag:virgin
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:spoke_to_angels
|
||||
}
|
||||
create_legend_seed = {
|
||||
type = holy
|
||||
quality = famed
|
||||
chronicle = divine_intervention
|
||||
properties = {
|
||||
god = flag:the_angels
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:fought_the_devil
|
||||
}
|
||||
create_legend_seed = {
|
||||
type = holy
|
||||
quality = famed
|
||||
chronicle = fought_devil
|
||||
properties = {
|
||||
faith = root.faith
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:exotic_backstory
|
||||
}
|
||||
create_legend_seed = {
|
||||
type = heroic
|
||||
quality = famed
|
||||
chronicle = exotic_backstory
|
||||
properties = {
|
||||
location = scope:exotic_location
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
exists = var:legend_seed_to_give
|
||||
var:legend_seed_to_give = flag:ancient_people
|
||||
}
|
||||
create_legend_seed = {
|
||||
type = legitimizing
|
||||
quality = famed
|
||||
chronicle = ancient_people
|
||||
properties = {
|
||||
culture = scope:ancient_culture
|
||||
title = root.primary_title
|
||||
original_region = var:original_region
|
||||
}
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
option = { # I don't want this legend
|
||||
name = legend_events.0001.b
|
||||
ai_chance = {
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Chronicler convinces someone to promote your legend
|
||||
legend_events.0010 = {
|
||||
type = character_event
|
||||
title = legend_events.0010.t
|
||||
desc = legend_events.0010.desc
|
||||
theme = legend
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_honorable
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:chronicler
|
||||
animation = chancellor
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:potential_promoter
|
||||
animation = chancellor
|
||||
}
|
||||
|
||||
option = { # Diplo duel option
|
||||
name = legend_events.0010.a
|
||||
duel = {
|
||||
skill = diplomacy
|
||||
target = scope:potential_promoter
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
modifier = { # Reluctant to drop their existing legend
|
||||
scope:potential_promoter = { exists = promoted_legend }
|
||||
factor = 0.5
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = legend_events.0010.a.success
|
||||
scope:potential_promoter = {
|
||||
set_promoted_legend = root.promoted_legend
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
modifier = { # Reluctant to drop their existing legend
|
||||
scope:potential_promoter = { exists = promoted_legend }
|
||||
factor = 2
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = legend_events.0010.a.failure
|
||||
add_prestige = minor_prestige_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = { # I'd have better odds with option B
|
||||
intrigue > diplomacy
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Lie
|
||||
name = legend_events.0010.b
|
||||
duel = {
|
||||
skill = intrigue
|
||||
target = scope:potential_promoter
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
modifier = { # Reluctant to drop their existing legend
|
||||
scope:potential_promoter = { exists = promoted_legend }
|
||||
factor = 0.5
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = legend_events.0010.a.success
|
||||
scope:potential_promoter = {
|
||||
set_promoted_legend = root.promoted_legend
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
modifier = { # Reluctant to drop their existing legend
|
||||
scope:potential_promoter = { exists = promoted_legend }
|
||||
factor = 2
|
||||
}
|
||||
send_interface_toast = {
|
||||
title = legend_events.0010.a.failure
|
||||
add_prestige = minor_prestige_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
honest = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = { # I'd have better odds with option A
|
||||
intrigue < diplomacy
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Nah not interested, go away.
|
||||
name = legend_events.0010.c
|
||||
ai_chance = {
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
legend_events.0020 = { #hold court presentation of a potential seed
|
||||
type = court_event
|
||||
title = legend_events.0020.t
|
||||
desc = legend_events.0020.desc
|
||||
|
||||
theme = legend
|
||||
court_scene = {
|
||||
button_position_character = scope:seed_presenter
|
||||
court_event_force_open = yes
|
||||
show_timeout_info = no
|
||||
should_pause_time = yes
|
||||
roles = {
|
||||
scope:seed_presenter = {
|
||||
group = petitioners_group
|
||||
animation = personality_rational
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
widget = {
|
||||
gui = "event_window_widget_event_chain_progress"
|
||||
container = "custom_widgets_container"
|
||||
controller = event_chain_progress
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = {
|
||||
factor = 2
|
||||
court_grandeur_current_level > court_grandeur_minimum_expected_level
|
||||
}
|
||||
# Court weightings.
|
||||
ep1_weight_up_for_court_type_modifier = { COURT_TYPE = court_diplomatic }
|
||||
}
|
||||
|
||||
trigger = {
|
||||
any_pool_guest = {
|
||||
count >= 1
|
||||
is_available_adult = yes
|
||||
has_court_event_flag = no
|
||||
culture != root.culture
|
||||
opinion = {
|
||||
target = root
|
||||
value >= high_positive_opinion
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
has_personal_legend_seed = heroic
|
||||
has_personal_legend_seed = holy
|
||||
has_personal_legend_seed = legitimizing
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
random_pool_guest = {
|
||||
limit = {
|
||||
is_available_adult = yes
|
||||
has_court_event_flag = no
|
||||
culture != root.culture
|
||||
opinion = {
|
||||
target = root
|
||||
value >= high_positive_opinion
|
||||
}
|
||||
}
|
||||
save_scope_as = seed_presenter
|
||||
court_event_character_flag_effect = yes
|
||||
}
|
||||
|
||||
hold_court_queue_next_event_effect = yes
|
||||
}
|
||||
|
||||
option = { #yes, it is my about my dynasty and I shall prove it!
|
||||
name = legend_events.0020.a
|
||||
legend_seed_great_deed_dynasty_effect = yes
|
||||
culture = {
|
||||
change_cultural_acceptance = {
|
||||
target = scope:seed_presenter.culture
|
||||
value = miniscule_positive_culture_acceptance
|
||||
desc = cultural_acceptance_gain_hold_court_event_outcome
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
ambitious = minor_stress_loss
|
||||
}
|
||||
ai_chance = { #we want AI to have seeds
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
option = { #yes, it is about me ruling the title and I shall prove it!
|
||||
name = legend_events.0020.b
|
||||
legend_seed_great_deed_title_effect = {
|
||||
TITLE = root.primary_title
|
||||
}
|
||||
culture = {
|
||||
change_cultural_acceptance = {
|
||||
target = scope:seed_presenter.culture
|
||||
value = miniscule_positive_culture_acceptance
|
||||
desc = cultural_acceptance_gain_hold_court_event_outcome
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
ambitious = minor_stress_loss
|
||||
}
|
||||
ai_chance = { #we want AI to have seeds
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
option = { #no, I don't need to humor your culture fairy tales
|
||||
name = legend_events.0020.c
|
||||
add_prestige = medium_prestige_gain
|
||||
dynasty = {
|
||||
add_dynasty_prestige = minor_dynasty_prestige_gain
|
||||
}
|
||||
culture = {
|
||||
change_cultural_acceptance = {
|
||||
target = scope:seed_presenter.culture
|
||||
value = low_negative_culture_acceptance
|
||||
desc = cultural_acceptance_gain_hold_court_event_outcome
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
ambitious = minor_stress_gain
|
||||
compassionate = minor_stress_gain
|
||||
callous = medium_stress_loss
|
||||
sadistic = medium_stress_loss
|
||||
}
|
||||
ai_chance = { #we want AI to have seeds
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
scope:seed_presenter = {
|
||||
clear_court_event_participation = yes
|
||||
}
|
||||
# Finish up the chain if relevant.
|
||||
hold_court_queue_post_event_effect = yes
|
||||
}
|
||||
}
|
||||
|
||||
legend_events.1000 = {
|
||||
type = letter_event
|
||||
opening = { desc = legend_events.1000.t }
|
||||
desc = legend_events.1000.desc
|
||||
sender = scope:legend_owner
|
||||
|
||||
immediate = {
|
||||
scope:legend = {
|
||||
legend_owner = { save_scope_as = legend_owner }
|
||||
}
|
||||
}
|
||||
|
||||
option = { #I did a silly
|
||||
name = legend_events.1000.a
|
||||
pay_short_term_gold = {
|
||||
target = scope:legend_owner
|
||||
gold = medium_gold_value
|
||||
}
|
||||
stress_impact = {
|
||||
deceitful = major_stress_impact_loss
|
||||
honest = medium_stress_impact_gain
|
||||
just = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
option = { #If you have really high Intrigue you get away with paying just half
|
||||
name = legend_events.1000.b
|
||||
trigger = {
|
||||
intrigue >= very_high_skill_rating
|
||||
}
|
||||
#trait = deceitful
|
||||
pay_short_term_gold = {
|
||||
target = scope:legend_owner
|
||||
gold = {
|
||||
value = medium_gold_value
|
||||
multiply = 0.5
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
deceitful = massive_stress_impact_loss
|
||||
honest = major_stress_impact_gain
|
||||
just = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
remove_variable = accepted_promote_legend_var
|
||||
}
|
||||
}
|
||||
4507
N3OW/events/dlc/ce1/legend_spread_events_8.txt
Normal file
4507
N3OW/events/dlc/ce1/legend_spread_events_8.txt
Normal file
File diff suppressed because it is too large
Load diff
8131
N3OW/events/dlc/ce1/legend_spread_events_nick.txt
Normal file
8131
N3OW/events/dlc/ce1/legend_spread_events_nick.txt
Normal file
File diff suppressed because it is too large
Load diff
3067
N3OW/events/dlc/ce1/legend_spread_events_veronica.txt
Normal file
3067
N3OW/events/dlc/ce1/legend_spread_events_veronica.txt
Normal file
File diff suppressed because it is too large
Load diff
32
N3OW/events/dlc/ce1/legitimacy_events.txt
Normal file
32
N3OW/events/dlc/ce1/legitimacy_events.txt
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
namespace = legitimacy_events
|
||||
|
||||
############################
|
||||
## Legitimacy Maintenance Events
|
||||
## 0001-1000
|
||||
## by Joe Parkin
|
||||
############################
|
||||
|
||||
# legitimacy_events.0001 - Debug event for testing base legitimacy values with breakdowns of sources
|
||||
|
||||
legitimacy_events.0001 = {
|
||||
type = character_event
|
||||
title = LOREM_IPSUM_TITLE
|
||||
desc = LOREM_IPSUM_DESCRIPTION
|
||||
theme = realm
|
||||
orphan = yes
|
||||
left_portrait = root
|
||||
|
||||
trigger = {
|
||||
exists = dynasty
|
||||
# Exclude unplayable for now
|
||||
NOR = {
|
||||
government_has_flag = government_is_republic
|
||||
government_has_flag = government_is_theocracy
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
add_legitimacy = base_legitimacy_value
|
||||
custom_tooltip = base_legitimacy_debug_tt
|
||||
}
|
||||
}
|
||||
1479
N3OW/events/dlc/ce1/physician_epidemic_events.txt
Normal file
1479
N3OW/events/dlc/ce1/physician_epidemic_events.txt
Normal file
File diff suppressed because it is too large
Load diff
719
N3OW/events/dlc/ep1/ep1_character_interaction_events.txt
Normal file
719
N3OW/events/dlc/ep1/ep1_character_interaction_events.txt
Normal file
|
|
@ -0,0 +1,719 @@
|
|||
namespace = ep1_character_interaction
|
||||
|
||||
##################################################
|
||||
#
|
||||
# Character Interaction Events
|
||||
#
|
||||
# 0001 - 0010 Indebt Guest
|
||||
##################################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##################################################
|
||||
# CHARACTER INTERACTION EVENTS
|
||||
|
||||
##################################################
|
||||
# A Sensible Recompense
|
||||
# by Ewan Cowhig Croft
|
||||
# 0001 - 0010
|
||||
##################################################
|
||||
|
||||
scripted_trigger ep1_character_interaction_0001_valid_hostile_relation_trigger = {
|
||||
# Must be at a court of some kind *other* than your own.
|
||||
exists = host
|
||||
scope:actor != host
|
||||
# And not in scope:actor's prison.
|
||||
NOR = {
|
||||
imprisoner ?= scope:actor
|
||||
}
|
||||
# Double check that this'd be an appropriate court to send a plant.
|
||||
save_temporary_scope_as = current_target
|
||||
scope:actor = {
|
||||
OR = {
|
||||
# Either you've got a scheme on the go...
|
||||
any_scheme = {
|
||||
hostile_scheme_trigger = yes
|
||||
scheme_target_character = scope:current_target
|
||||
}
|
||||
# ... or you could start one.
|
||||
can_start_hostile_scheme_against_trigger = { TARGET = scope:current_target}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scripted_trigger ep1_character_interaction_0001_valid_rival_trigger = {
|
||||
ep1_character_interaction_0001_valid_hostile_relation_trigger = yes
|
||||
OR = {
|
||||
NOT = { exists = scope:actor_nemesis }
|
||||
this != scope:actor_nemesis
|
||||
}
|
||||
}
|
||||
|
||||
scripted_effect ep1_character_interaction_0001_move_character_and_family_effect = {
|
||||
scope:recipient = {
|
||||
# Whatever else happens, just move them.
|
||||
scope:actor = { remove_courtier_or_guest = scope:recipient }
|
||||
$DESTINATION$ = { add_courtier = scope:recipient }
|
||||
# If they have any family, quietly send them along too.
|
||||
hidden_effect = {
|
||||
if = {
|
||||
limit = {
|
||||
any_traveling_family_member = { }
|
||||
}
|
||||
every_traveling_family_member = {
|
||||
save_temporary_scope_as = family_to_shunt
|
||||
scope:actor = { remove_courtier_or_guest = scope:family_to_shunt }
|
||||
$DESTINATION$ = { add_courtier = scope:family_to_shunt }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Trick a guest into a debt & turn them into an agent.
|
||||
ep1_character_interaction.0001 = {
|
||||
type = character_event
|
||||
title = ep1_character_interaction.0001.t
|
||||
desc = {
|
||||
desc = ep1_character_interaction.0001.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:lustful }
|
||||
desc = ep1_character_interaction.0001.desc.lustful
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:chaste }
|
||||
desc = ep1_character_interaction.0001.desc.chaste
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:gluttonous }
|
||||
desc = ep1_character_interaction.0001.desc.gluttonous
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:temperate }
|
||||
desc = ep1_character_interaction.0001.desc.temperate
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:greedy }
|
||||
desc = ep1_character_interaction.0001.desc.greedy
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:generous }
|
||||
desc = ep1_character_interaction.0001.desc.generous
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:lazy }
|
||||
desc = ep1_character_interaction.0001.desc.lazy
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:diligent }
|
||||
desc = ep1_character_interaction.0001.desc.diligent
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:wrathful }
|
||||
desc = ep1_character_interaction.0001.desc.wrathful
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:calm }
|
||||
desc = ep1_character_interaction.0001.desc.calm
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:patient }
|
||||
desc = ep1_character_interaction.0001.desc.patient
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:impatient }
|
||||
desc = ep1_character_interaction.0001.desc.impatient
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:arrogant }
|
||||
desc = ep1_character_interaction.0001.desc.arrogant
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:humble }
|
||||
desc = ep1_character_interaction.0001.desc.humble
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:deceitful }
|
||||
desc = ep1_character_interaction.0001.desc.deceitful
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:honest }
|
||||
desc = ep1_character_interaction.0001.desc.honest
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:craven }
|
||||
desc = ep1_character_interaction.0001.desc.craven
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:brave }
|
||||
desc = ep1_character_interaction.0001.desc.brave
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:shy }
|
||||
desc = ep1_character_interaction.0001.desc.shy
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:gregarious }
|
||||
desc = ep1_character_interaction.0001.desc.gregarious
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:ambitious }
|
||||
desc = ep1_character_interaction.0001.desc.ambitious
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:content }
|
||||
desc = ep1_character_interaction.0001.desc.content
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:arbitrary }
|
||||
desc = ep1_character_interaction.0001.desc.arbitrary
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:just }
|
||||
desc = ep1_character_interaction.0001.desc.just
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:cynical }
|
||||
desc = ep1_character_interaction.0001.desc.cynical
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:zealous }
|
||||
desc = ep1_character_interaction.0001.desc.zealous
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:paranoid }
|
||||
desc = ep1_character_interaction.0001.desc.paranoid
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:trusting }
|
||||
desc = ep1_character_interaction.0001.desc.trusting
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:compassionate }
|
||||
desc = ep1_character_interaction.0001.desc.compassionate
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:callous }
|
||||
desc = ep1_character_interaction.0001.desc.callous
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:sadistic }
|
||||
desc = ep1_character_interaction.0001.desc.sadistic
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:stubborn }
|
||||
desc = ep1_character_interaction.0001.desc.stubborn
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:fickle }
|
||||
desc = ep1_character_interaction.0001.desc.fickle
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:vengeful }
|
||||
desc = ep1_character_interaction.0001.desc.vengeful
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:forgiving }
|
||||
desc = ep1_character_interaction.0001.desc.forgiving
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:fallback_1 }
|
||||
desc = ep1_character_interaction.0001.desc.fallback_1
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:fallback_2 }
|
||||
desc = ep1_character_interaction.0001.desc.fallback_2
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:fallback_3 }
|
||||
desc = ep1_character_interaction.0001.desc.fallback_3
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:fallback_4 }
|
||||
desc = ep1_character_interaction.0001.desc.fallback_4
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:false_flag_type = flag:fallback_5 }
|
||||
desc = ep1_character_interaction.0001.desc.fallback_5
|
||||
}
|
||||
}
|
||||
desc = ep1_character_interaction.0001.desc.outro
|
||||
}
|
||||
theme = intrigue_skulduggery_focus
|
||||
left_portrait = {
|
||||
character = scope:actor
|
||||
animation = schadenfreude
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:recipient
|
||||
animation = fear
|
||||
}
|
||||
lower_center_portrait = scope:actor_nemesis
|
||||
lower_right_portrait = scope:actor_rival
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
immediate = {
|
||||
# Apply the interaction's effects.
|
||||
indebt_guest_interaction_accepted_effect = yes
|
||||
# Roll the offending crime.
|
||||
## Percentages even throughout: we're not fussed about which result you roll.
|
||||
scope:recipient = {
|
||||
random_list = {
|
||||
# lustful
|
||||
100 = {
|
||||
trigger = { has_trait = lustful }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:lustful
|
||||
}
|
||||
}
|
||||
# chaste
|
||||
100 = {
|
||||
trigger = { has_trait = chaste }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:chaste
|
||||
}
|
||||
}
|
||||
# gluttonous
|
||||
100 = {
|
||||
trigger = { has_trait = gluttonous }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:gluttonous
|
||||
}
|
||||
}
|
||||
# temperate
|
||||
100 = {
|
||||
trigger = { has_trait = temperate }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:temperate
|
||||
}
|
||||
}
|
||||
# greedy
|
||||
100 = {
|
||||
trigger = { has_trait = greedy }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:greedy
|
||||
}
|
||||
}
|
||||
# generous
|
||||
100 = {
|
||||
trigger = { has_trait = generous }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:generous
|
||||
}
|
||||
}
|
||||
# lazy
|
||||
100 = {
|
||||
trigger = { has_trait = lazy }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:lazy
|
||||
}
|
||||
}
|
||||
# diligent
|
||||
100 = {
|
||||
trigger = { has_trait = diligent }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:diligent
|
||||
}
|
||||
}
|
||||
# wrathful
|
||||
100 = {
|
||||
trigger = { has_trait = wrathful }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:wrathful
|
||||
}
|
||||
}
|
||||
# calm
|
||||
100 = {
|
||||
trigger = { has_trait = calm }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:calm
|
||||
}
|
||||
}
|
||||
# patient
|
||||
100 = {
|
||||
trigger = { has_trait = patient }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:patient
|
||||
}
|
||||
}
|
||||
# impatient
|
||||
100 = {
|
||||
trigger = { has_trait = impatient }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:impatient
|
||||
}
|
||||
}
|
||||
# arrogant
|
||||
100 = {
|
||||
trigger = { has_trait = arrogant }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:arrogant
|
||||
}
|
||||
}
|
||||
# humble
|
||||
100 = {
|
||||
trigger = { has_trait = humble }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:humble
|
||||
}
|
||||
}
|
||||
# deceitful
|
||||
100 = {
|
||||
trigger = { has_trait = deceitful }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:deceitful
|
||||
}
|
||||
}
|
||||
# honest
|
||||
100 = {
|
||||
trigger = { has_trait = honest }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:honest
|
||||
}
|
||||
}
|
||||
# craven
|
||||
100 = {
|
||||
trigger = { has_trait = craven }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:craven
|
||||
}
|
||||
}
|
||||
# brave
|
||||
100 = {
|
||||
trigger = { has_trait = brave }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:brave
|
||||
}
|
||||
}
|
||||
# shy
|
||||
100 = {
|
||||
trigger = { has_trait = shy }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:shy
|
||||
}
|
||||
}
|
||||
# gregarious
|
||||
100 = {
|
||||
trigger = { has_trait = gregarious }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:gregarious
|
||||
}
|
||||
}
|
||||
# ambitious
|
||||
100 = {
|
||||
trigger = { has_trait = ambitious }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:ambitious
|
||||
}
|
||||
}
|
||||
# content
|
||||
100 = {
|
||||
trigger = { has_trait = content }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:content
|
||||
}
|
||||
}
|
||||
# arbitrary
|
||||
100 = {
|
||||
trigger = { has_trait = arbitrary }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:arbitrary
|
||||
}
|
||||
}
|
||||
# just
|
||||
100 = {
|
||||
trigger = { has_trait = just }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:just
|
||||
}
|
||||
}
|
||||
# cynical
|
||||
100 = {
|
||||
trigger = { has_trait = cynical }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:cynical
|
||||
}
|
||||
}
|
||||
# zealous
|
||||
100 = {
|
||||
trigger = { has_trait = zealous }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:zealous
|
||||
}
|
||||
}
|
||||
# paranoid
|
||||
100 = {
|
||||
trigger = { has_trait = paranoid }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:paranoid
|
||||
}
|
||||
}
|
||||
# trusting
|
||||
100 = {
|
||||
trigger = { has_trait = trusting }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:trusting
|
||||
}
|
||||
}
|
||||
# compassionate
|
||||
100 = {
|
||||
trigger = { has_trait = compassionate }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:compassionate
|
||||
}
|
||||
}
|
||||
# callous
|
||||
100 = {
|
||||
trigger = { has_trait = callous }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:callous
|
||||
}
|
||||
}
|
||||
# sadistic
|
||||
100 = {
|
||||
trigger = { has_trait = sadistic }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:sadistic
|
||||
}
|
||||
}
|
||||
# stubborn
|
||||
100 = {
|
||||
trigger = { has_trait = stubborn }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:stubborn
|
||||
}
|
||||
}
|
||||
# fickle
|
||||
100 = {
|
||||
trigger = { has_trait = fickle }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:fickle
|
||||
}
|
||||
}
|
||||
# vengeful
|
||||
100 = {
|
||||
trigger = { has_trait = vengeful }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:vengeful
|
||||
}
|
||||
}
|
||||
# forgiving
|
||||
100 = {
|
||||
trigger = { has_trait = forgiving }
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:forgiving
|
||||
}
|
||||
}
|
||||
# fallback_1
|
||||
100 = {
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:fallback_1
|
||||
}
|
||||
}
|
||||
# fallback_2
|
||||
100 = {
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:fallback_2
|
||||
}
|
||||
}
|
||||
# fallback_3
|
||||
100 = {
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:fallback_3
|
||||
}
|
||||
}
|
||||
# fallback_4
|
||||
100 = {
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:fallback_4
|
||||
}
|
||||
}
|
||||
# fallback_5
|
||||
100 = {
|
||||
save_scope_value_as = {
|
||||
name = false_flag_type
|
||||
value = flag:fallback_5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# Sort scopes for event options.
|
||||
scope:actor = {
|
||||
# If scope:actor has a nemesis, save them for loc.
|
||||
if = {
|
||||
limit = {
|
||||
any_relation = {
|
||||
type = nemesis
|
||||
count >= 1
|
||||
ep1_character_interaction_0001_valid_hostile_relation_trigger = yes
|
||||
}
|
||||
}
|
||||
random_relation = {
|
||||
type = nemesis
|
||||
limit = { ep1_character_interaction_0001_valid_hostile_relation_trigger = yes }
|
||||
save_scope_as = actor_nemesis
|
||||
}
|
||||
}
|
||||
# If scope:actor has any valid rivals, pick a random one for option B.
|
||||
if = {
|
||||
limit = {
|
||||
any_relation = {
|
||||
type = rival
|
||||
count >= 1
|
||||
ep1_character_interaction_0001_valid_rival_trigger = yes
|
||||
}
|
||||
}
|
||||
random_relation = {
|
||||
type = rival
|
||||
# Prefer rivals that are targets of hostile schemes.
|
||||
limit = {
|
||||
any_targeting_scheme = {
|
||||
scheme_owner = scope:actor
|
||||
is_hostile = yes
|
||||
}
|
||||
ep1_character_interaction_0001_valid_rival_trigger = yes
|
||||
}
|
||||
# Failing that, rivals who are targets of any schemes.
|
||||
alternative_limit = {
|
||||
any_targeting_scheme = {
|
||||
scheme_owner = scope:actor
|
||||
is_hostile = no
|
||||
}
|
||||
ep1_character_interaction_0001_valid_rival_trigger = yes
|
||||
}
|
||||
# Otherwise just any rando rival who could be schemed against.
|
||||
alternative_limit = { ep1_character_interaction_0001_valid_rival_trigger = yes }
|
||||
save_scope_as = actor_rival
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# *Cackling* Oh yes, [actor_nemesis.GetFirstName] will never see this coming!
|
||||
option = {
|
||||
name = ep1_character_interaction.0001.a
|
||||
trigger = { exists = scope:actor_nemesis }
|
||||
|
||||
# Quietly add scope:recipient as a courtier of scope:actor_nemesis.
|
||||
ep1_character_interaction_0001_move_character_and_family_effect = { DESTINATION = scope:actor_nemesis }
|
||||
|
||||
stress_impact = {
|
||||
patient = miniscule_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
impatient = medium_stress_impact_gain
|
||||
trusting = major_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
# If valid, this should always be the choice selected.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
# Excellent! Now, you will deliver yourself to [actor_rival.GetFirstNamePossessive] court...
|
||||
option = {
|
||||
name = ep1_character_interaction.0001.b
|
||||
trigger = { exists = scope:actor_rival }
|
||||
|
||||
# Quietly add scope:recipient as a courtier of scope:actor_rival.
|
||||
ep1_character_interaction_0001_move_character_and_family_effect = { DESTINATION = scope:actor_rival }
|
||||
|
||||
stress_impact = {
|
||||
patient = miniscule_stress_impact_loss
|
||||
vengeful = minor_stress_impact_loss
|
||||
impatient = medium_stress_impact_gain
|
||||
trusting = major_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
# Never pick this option...
|
||||
base = 0
|
||||
# ... unless there's no nemesis, in which case it should be the default.
|
||||
modifier = {
|
||||
add = 100
|
||||
NOT = { exists = scope:actor_rival }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Now, begone till I have need of you.
|
||||
option = {
|
||||
name = ep1_character_interaction.0001.c
|
||||
|
||||
# Boot 'em out.
|
||||
hidden_effect = {
|
||||
scope:recipient = { select_and_move_to_pool_effect = yes }
|
||||
}
|
||||
show_as_tooltip = {
|
||||
remove_courtier_or_guest = scope:recipient
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
shy = minor_stress_impact_loss
|
||||
gregarious = minor_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
# AI should never be taking this without a nemesis, but if they do, it doesn't matter where they send scope:recipient.
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
|
||||
# Naturally, you will stay where I can keep an eye on you.
|
||||
option = {
|
||||
name = ep1_character_interaction.0001.d
|
||||
|
||||
# Status quo: no extra changes here.
|
||||
|
||||
# No stress impact necessary for the fallback option.
|
||||
ai_chance = {
|
||||
# AI should never be taking this without a nemesis, but if they do, it doesn't matter where they send scope:recipient.
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
552
N3OW/events/dlc/ep1/ep1_court_position_events.txt
Normal file
552
N3OW/events/dlc/ep1/ep1_court_position_events.txt
Normal file
|
|
@ -0,0 +1,552 @@
|
|||
namespace = court_position
|
||||
|
||||
################################
|
||||
# FLAVOR EVENTS
|
||||
# 1001 - 8999
|
||||
################################
|
||||
|
||||
|
||||
|
||||
#############################
|
||||
# MURDER SAVE EVENTS
|
||||
# 9001 - 9199
|
||||
# by Linnéa Thimrén
|
||||
#############################
|
||||
|
||||
###############
|
||||
# SAVED BY FOOD TASTER
|
||||
|
||||
# FOR MURDERER: Saved from poisoned food by food taster
|
||||
# by Linnéa Thimrén
|
||||
court_position.9001 = {
|
||||
type = character_event
|
||||
window = scheme_failed_event
|
||||
title = court_position.9001.t
|
||||
desc = {
|
||||
desc = court_position.9001.desc
|
||||
triggered_desc = {
|
||||
trigger = { exists = local_var:food_taster_dies }
|
||||
desc = court_position.9001.food_taster_dies
|
||||
}
|
||||
}
|
||||
theme = murder_scheme
|
||||
left_portrait = {
|
||||
character = scope:owner
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = fear
|
||||
}
|
||||
animation = stress
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:food_taster
|
||||
animation = poison
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:target
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = rage
|
||||
}
|
||||
animation = paranoia
|
||||
}
|
||||
override_background = { reference = feast }
|
||||
widget = {
|
||||
gui = "event_window_widget_scheme"
|
||||
container = "custom_widgets_container"
|
||||
}
|
||||
|
||||
trigger = {
|
||||
scope:target = {
|
||||
employs_court_position = food_taster_court_position
|
||||
any_court_position_holder = {
|
||||
type = food_taster_court_position
|
||||
foodtaster_will_actually_do_job_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:target = {
|
||||
random_court_position_holder = {
|
||||
type = food_taster_court_position
|
||||
limit = { is_physically_able = yes }
|
||||
save_scope_as = food_taster
|
||||
}
|
||||
}
|
||||
murder_failure_effect = yes
|
||||
hidden_effect = {
|
||||
random = {
|
||||
chance = 75
|
||||
set_local_variable = {
|
||||
name = food_taster_dies
|
||||
value = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = murder_save.0001.a
|
||||
scope:scheme = { end_scheme = yes }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = murder_save.0001.b
|
||||
restart_murder_scheme_effect = yes
|
||||
}
|
||||
|
||||
after = {
|
||||
# Fire the rest of the outcome.
|
||||
scope:target = { trigger_event = court_position.9002 }
|
||||
if = {
|
||||
limit = { exists = local_var:food_taster_dies }
|
||||
show_as_tooltip = {
|
||||
murder_interception_handle_extra_deaths_effect = {
|
||||
VICTIM = scope:food_taster
|
||||
REASON = death_poison
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# FOR TARGET: Food taster dies to poison
|
||||
court_position.9002 = {
|
||||
type = character_event
|
||||
window = scheme_target_event
|
||||
title = court_position.9001.t
|
||||
desc = {
|
||||
desc = court_position.9002.desc
|
||||
triggered_desc = {
|
||||
trigger = { exists = local_var:food_taster_dies }
|
||||
desc = court_position.9002.food_taster_dies
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
desc = court_position.9002.owner_discovered
|
||||
}
|
||||
}
|
||||
theme = murder_scheme
|
||||
left_portrait = {
|
||||
character = scope:target
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = rage
|
||||
}
|
||||
animation = paranoia
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:food_taster
|
||||
animation = poison
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:owner_to_reveal
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = fear
|
||||
}
|
||||
animation = stress
|
||||
}
|
||||
|
||||
immediate = {
|
||||
set_variable = {
|
||||
name = block_death_event_from
|
||||
value = scope:food_taster
|
||||
days = 3
|
||||
}
|
||||
# Handle the death of the food taster, if necessary
|
||||
if = {
|
||||
limit = { exists = local_var:food_taster_dies }
|
||||
murder_interception_handle_extra_deaths_effect = {
|
||||
VICTIM = scope:food_taster
|
||||
REASON = death_poison
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Who could do such a thing?
|
||||
option = {
|
||||
name = murder_save.1001.a
|
||||
trigger = {
|
||||
NOT = { exists = scope:scheme_discovered }
|
||||
}
|
||||
custom_tooltip = murder_save.failure_unknown_owner_tt
|
||||
}
|
||||
|
||||
# Vengeance!
|
||||
option = {
|
||||
name = murder_save.1001.b
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
custom_tooltip = murder_save.failure_known_owner_tt
|
||||
}
|
||||
|
||||
after = {
|
||||
add_character_modifier = {
|
||||
modifier = watchful_modifier
|
||||
days = watchful_modifier_duration
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###############
|
||||
# SAVED BY CUP-BEARER
|
||||
|
||||
# FOR MURDERER: Saved from poisoned drink by cup-bearer
|
||||
# by Linnéa Thimrén
|
||||
court_position.9011 = {
|
||||
type = character_event
|
||||
window = scheme_failed_event
|
||||
title = court_position.9011.t
|
||||
desc = {
|
||||
desc = court_position.9011.desc
|
||||
triggered_desc = {
|
||||
trigger = { exists = local_var:cupbearer_dies }
|
||||
desc = court_position.9011.cupbearer_dies
|
||||
}
|
||||
}
|
||||
theme = murder_scheme
|
||||
left_portrait = {
|
||||
character = scope:owner
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = fear
|
||||
}
|
||||
animation = stress
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:food_taster
|
||||
animation = poison
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:target
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = rage
|
||||
}
|
||||
animation = paranoia
|
||||
}
|
||||
widget = {
|
||||
gui = "event_window_widget_scheme"
|
||||
container = "custom_widgets_container"
|
||||
}
|
||||
|
||||
trigger = {
|
||||
scope:target = {
|
||||
employs_court_position = cupbearer_court_position
|
||||
any_court_position_holder = {
|
||||
type = cupbearer_court_position
|
||||
cupbearer_will_actually_do_job_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:target = {
|
||||
random_court_position_holder = {
|
||||
type = cupbearer_court_position
|
||||
limit = { is_physically_able = yes }
|
||||
save_scope_as = cupbearer
|
||||
}
|
||||
}
|
||||
murder_failure_effect = yes
|
||||
hidden_effect = {
|
||||
random = {
|
||||
chance = 75
|
||||
set_local_variable = {
|
||||
name = cupbearer_dies
|
||||
value = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = murder_save.0001.a
|
||||
scope:scheme = { end_scheme = yes }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = murder_save.0001.b
|
||||
restart_murder_scheme_effect = yes
|
||||
}
|
||||
|
||||
after = {
|
||||
# Fire the rest of the outcome.
|
||||
scope:target = { trigger_event = court_position.9012 }
|
||||
if = {
|
||||
limit = { exists = local_var:cupbearer_dies }
|
||||
show_as_tooltip = {
|
||||
murder_interception_handle_extra_deaths_effect = {
|
||||
VICTIM = scope:cupbearer
|
||||
REASON = death_poison
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# FOR TARGET: Cup-bearer dies to poison
|
||||
court_position.9012 = {
|
||||
type = character_event
|
||||
window = scheme_target_event
|
||||
title = court_position.9011.t
|
||||
desc = {
|
||||
desc = court_position.9012.desc
|
||||
triggered_desc = {
|
||||
trigger = { exists = local_var:cupbearer_dies }
|
||||
desc = court_position.9012.cupbearer_dies
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
desc = court_position.9002.owner_discovered
|
||||
}
|
||||
}
|
||||
theme = murder_scheme
|
||||
left_portrait = {
|
||||
character = scope:target
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = rage
|
||||
}
|
||||
animation = paranoia
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:food_taster
|
||||
animation = poison
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:owner_to_reveal
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = fear
|
||||
}
|
||||
animation = stress
|
||||
}
|
||||
|
||||
immediate = {
|
||||
set_variable = {
|
||||
name = block_death_event_from
|
||||
value = scope:cupbearer
|
||||
days = 3
|
||||
}
|
||||
# Handle the death of the cupbearer, if necessary
|
||||
if = {
|
||||
limit = { exists = local_var:cupbearer_dies }
|
||||
murder_interception_handle_extra_deaths_effect = {
|
||||
VICTIM = scope:cupbearer
|
||||
REASON = death_poison
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Who could do such a thing?
|
||||
option = {
|
||||
name = murder_save.1001.a
|
||||
trigger = {
|
||||
NOT = { exists = scope:scheme_discovered }
|
||||
}
|
||||
custom_tooltip = murder_save.failure_unknown_owner_tt
|
||||
}
|
||||
|
||||
# Vengeance!
|
||||
option = {
|
||||
name = murder_save.1001.b
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
custom_tooltip = murder_save.failure_known_owner_tt
|
||||
}
|
||||
|
||||
after = {
|
||||
add_character_modifier = {
|
||||
modifier = watchful_modifier
|
||||
days = watchful_modifier_duration
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
###############
|
||||
# SAVED BY BODYGUARD
|
||||
|
||||
# FOR MURDERER: Saved from assassin by bodyguard
|
||||
# by Linnéa Thimrén
|
||||
court_position.9021 = {
|
||||
type = character_event
|
||||
window = scheme_failed_event
|
||||
title = court_position.9021.t
|
||||
desc = {
|
||||
desc = court_position.9021.desc
|
||||
triggered_desc = {
|
||||
trigger = { exists = local_var:bodyguard_dies }
|
||||
desc = court_position.9021.bodyguard_dies
|
||||
}
|
||||
}
|
||||
theme = murder_scheme
|
||||
left_portrait = {
|
||||
character = scope:owner
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = fear
|
||||
}
|
||||
animation = stress
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:bodyguard
|
||||
triggered_animation = {
|
||||
trigger = { is_alive = no }
|
||||
animation = map_fear
|
||||
}
|
||||
animation = random_weapon_aggressive
|
||||
camera = camera_event_center_pointing_left
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:target
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = rage
|
||||
}
|
||||
animation = paranoia
|
||||
}
|
||||
widget = {
|
||||
gui = "event_window_widget_scheme"
|
||||
container = "custom_widgets_container"
|
||||
}
|
||||
|
||||
trigger = {
|
||||
scope:target = {
|
||||
employs_court_position = bodyguard_court_position
|
||||
any_court_position_holder = {
|
||||
type = bodyguard_court_position
|
||||
bodyguard_will_actually_do_job_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:target = {
|
||||
random_court_position_holder = {
|
||||
type = bodyguard_court_position
|
||||
limit = { is_physically_able = yes }
|
||||
save_scope_as = bodyguard
|
||||
}
|
||||
}
|
||||
murder_failure_effect = yes
|
||||
hidden_effect = {
|
||||
random = {
|
||||
chance = 75
|
||||
set_local_variable = {
|
||||
name = bodyguard_dies
|
||||
value = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = murder_save.0001.a
|
||||
scope:scheme = { end_scheme = yes }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = murder_save.0001.b
|
||||
restart_murder_scheme_effect = yes
|
||||
}
|
||||
|
||||
after = {
|
||||
# Fire the rest of the outcome.
|
||||
scope:target = { trigger_event = court_position.9022 }
|
||||
if = {
|
||||
limit = { exists = local_var:bodyguard_dies }
|
||||
show_as_tooltip = {
|
||||
murder_interception_handle_extra_deaths_effect = {
|
||||
VICTIM = scope:bodyguard
|
||||
REASON = death_murder
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# FOR TARGET: Bodyguard dies to assassin
|
||||
court_position.9022 = {
|
||||
type = character_event
|
||||
window = scheme_target_event
|
||||
title = court_position.9021.t
|
||||
desc = {
|
||||
desc = court_position.9022.desc
|
||||
triggered_desc = {
|
||||
trigger = { exists = local_var:bodyguard_dies }
|
||||
desc = court_position.9022.bodyguard_dies
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
desc = court_position.9002.owner_discovered
|
||||
}
|
||||
}
|
||||
theme = murder_scheme
|
||||
left_portrait = {
|
||||
character = scope:target
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = rage
|
||||
}
|
||||
animation = paranoia
|
||||
}
|
||||
center_portrait = {
|
||||
character = scope:bodyguard
|
||||
triggered_animation = {
|
||||
trigger = { is_alive = no }
|
||||
animation = map_fear
|
||||
}
|
||||
animation = random_weapon_aggressive
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:owner_to_reveal
|
||||
triggered_animation = {
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
animation = fear
|
||||
}
|
||||
animation = stress
|
||||
}
|
||||
|
||||
immediate = {
|
||||
set_variable = {
|
||||
name = block_death_event_from
|
||||
value = scope:bodyguard
|
||||
days = 3
|
||||
}
|
||||
# Handle the death of the bodyguard, if necessary
|
||||
if = {
|
||||
limit = { exists = local_var:bodyguard_dies }
|
||||
murder_interception_handle_extra_deaths_effect = {
|
||||
VICTIM = scope:bodyguard
|
||||
REASON = death_murder
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Who could do such a thing?
|
||||
option = {
|
||||
name = murder_save.1001.a
|
||||
trigger = {
|
||||
NOT = { exists = scope:scheme_discovered }
|
||||
}
|
||||
custom_tooltip = murder_save.failure_unknown_owner_tt
|
||||
}
|
||||
|
||||
# Vengeance!
|
||||
option = {
|
||||
name = murder_save.1001.b
|
||||
trigger = { exists = scope:scheme_discovered }
|
||||
custom_tooltip = murder_save.failure_known_owner_tt
|
||||
}
|
||||
|
||||
after = {
|
||||
add_character_modifier = {
|
||||
modifier = watchful_modifier
|
||||
days = watchful_modifier_duration
|
||||
}
|
||||
}
|
||||
}
|
||||
575
N3OW/events/dlc/ep1/ep1_decision_events.txt
Normal file
575
N3OW/events/dlc/ep1/ep1_decision_events.txt
Normal file
|
|
@ -0,0 +1,575 @@
|
|||
namespace = ep1_decision
|
||||
|
||||
##################################################
|
||||
#
|
||||
# Royal Court Court Grandeur Level & Amenity Decisions Events
|
||||
#
|
||||
# COURT GRANDEUR LEVELS
|
||||
# 0001 - 0010 Host Fundraiser
|
||||
# 0011 - 0020 Host Summit
|
||||
#
|
||||
# AMENITIES
|
||||
# 0101 - 0110 Order Mass Eviction
|
||||
# 0111 - 0120 Commission Exotic Bedchamber
|
||||
##################################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##################################################
|
||||
# COURT GRANDEUR LEVELS
|
||||
ep1_decision.0201 = {
|
||||
type = character_event
|
||||
title = ep1_decision.0201.t
|
||||
desc = ep1_decision.0201.desc
|
||||
theme = education
|
||||
left_portrait = scope:good_linguist
|
||||
lower_left_portrait = scope:cheap_linguist
|
||||
right_portrait = scope:medium_linguist
|
||||
lower_right_portrait = scope:scholarly_linguist
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
immediate = {
|
||||
### Save cultures and languages
|
||||
# Find 1st culture that speaks target language natively
|
||||
random_culture_global = {
|
||||
limit = {
|
||||
exists = culture_head
|
||||
scope:target_court_language = { has_court_language_of_culture = prev }
|
||||
}
|
||||
save_scope_as = ling_cul_1
|
||||
}
|
||||
# Save liege as example to fetch faiths if relevant
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:language_scheme_type
|
||||
liege = { has_court_language_of_culture = root.liege.culture }
|
||||
}
|
||||
liege = { save_scope_as = ling_cul_1_ruler }
|
||||
}
|
||||
# Otherwise find random cul_1 ruler
|
||||
else = {
|
||||
linguist_random_realm_effect = { CULTURE = ling_cul_1 }
|
||||
}
|
||||
# Find 2nd culture that speaks target language natively
|
||||
if = {
|
||||
limit = {
|
||||
any_culture_global = {
|
||||
exists = culture_head
|
||||
scope:target_court_language = { has_court_language_of_culture = prev }
|
||||
THIS != scope:ling_cul_1
|
||||
}
|
||||
}
|
||||
random_culture_global = {
|
||||
limit = {
|
||||
exists = culture_head
|
||||
scope:target_court_language = { has_court_language_of_culture = prev }
|
||||
THIS != scope:ling_cul_1
|
||||
}
|
||||
save_scope_as = ling_cul_2
|
||||
}
|
||||
}
|
||||
# If none, duplicate 1st
|
||||
else = {
|
||||
scope:ling_cul_1 = { save_scope_as = ling_cul_2 }
|
||||
}
|
||||
# Save random ruler of cul 2 to find faith
|
||||
linguist_random_realm_effect = { CULTURE = ling_cul_2 }
|
||||
# Save own culture
|
||||
culture = { save_scope_as = ling_cul_3 }
|
||||
# Bonus languages good linguists may know in addition to root and target
|
||||
linguist_bonus_culture_effect = { CULTURE = ling_cul_1 }
|
||||
linguist_bonus_culture_effect = { CULTURE = ling_cul_2 }
|
||||
linguist_bonus_culture_effect = { CULTURE = ling_cul_3 }
|
||||
#### Create Linguists
|
||||
hidden_effect = {
|
||||
# Poor Linguist
|
||||
if = {
|
||||
limit = { has_trait = greedy }
|
||||
create_character = {
|
||||
dynasty = none
|
||||
template = court_linguist_cheap_template
|
||||
location = root.capital_province
|
||||
save_scope_as = cheap_linguist
|
||||
}
|
||||
}
|
||||
# Average Linguist
|
||||
create_character = {
|
||||
dynasty = none
|
||||
template = court_linguist_medium_template
|
||||
location = root.capital_province
|
||||
save_scope_as = medium_linguist
|
||||
}
|
||||
# Good Linguist
|
||||
create_character = {
|
||||
dynasty = none
|
||||
template = court_linguist_good_template
|
||||
culture = scope:ling_cul_2
|
||||
faith = scope:ling_cul_2_ruler.faith
|
||||
location = root.capital_province
|
||||
save_scope_as = good_linguist
|
||||
}
|
||||
# Scholarly Linguist
|
||||
if = {
|
||||
limit = { has_trait = scholar }
|
||||
create_character = {
|
||||
dynasty = none
|
||||
template = court_linguist_good_template
|
||||
culture = scope:ling_cul_1
|
||||
faith = scope:ling_cul_1_ruler.faith
|
||||
location = root.capital_province
|
||||
trait = scholar
|
||||
save_scope_as = scholarly_linguist
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:ling_cul_2_bonus
|
||||
NOT = {
|
||||
scope:scholarly_linguist = { knows_language_of_culture = scope:ling_cul_2_bonus }
|
||||
}
|
||||
}
|
||||
scope:scholarly_linguist = { learn_language_of_culture = scope:ling_cul_2_bonus }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Expensive linguist, great teacher
|
||||
option = {
|
||||
name = ep1_decision.0201.a
|
||||
pay_short_term_gold = {
|
||||
target = scope:good_linguist
|
||||
gold = medium_gold_value
|
||||
}
|
||||
learn_language_linguist_effect = { LINGUIST = scope:good_linguist }
|
||||
stress_impact = {
|
||||
greedy = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
short_term_gold < medium_gold_value
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Cheaper linguist; less learning, not a good teacher
|
||||
option = {
|
||||
name = ep1_decision.0201.b
|
||||
pay_short_term_gold = {
|
||||
target = scope:medium_linguist
|
||||
gold = minor_gold_value
|
||||
}
|
||||
learn_language_linguist_effect = { LINGUIST = scope:medium_linguist }
|
||||
stress_impact = {
|
||||
greedy = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
short_term_gold < minor_gold_value_check
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# I know a good tutor through scholarly circles!
|
||||
option = {
|
||||
name = ep1_decision.0201.c
|
||||
trait = scholar
|
||||
trigger = { has_trait = scholar }
|
||||
learn_language_linguist_effect = { LINGUIST = scope:scholarly_linguist }
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
# I'm cheap, get me anyone who can vaguely speak my language
|
||||
option = {
|
||||
name = ep1_decision.0201.d
|
||||
trait = greedy
|
||||
trigger = { has_trait = greedy }
|
||||
learn_language_linguist_effect = { LINGUIST = scope:cheap_linguist }
|
||||
ai_chance = {
|
||||
base = 1000
|
||||
modifier = { # Don't do it if you can hire the cool guy
|
||||
has_trait = scholar
|
||||
factor = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# On seconds thoughts, I won't hire a linguist at all...
|
||||
option = {
|
||||
name = ep1_decision.0201.e
|
||||
ai_chance = {
|
||||
base = 0
|
||||
modifier = {
|
||||
short_term_gold < minor_gold_value_check
|
||||
NOR = {
|
||||
has_trait = scholar
|
||||
has_trait = greedy
|
||||
}
|
||||
add = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
every_in_list = {
|
||||
list = court_linguist_list
|
||||
limit = {
|
||||
NOT = { is_courtier_of = root }
|
||||
}
|
||||
silent_disappearance_effect = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##################################################
|
||||
# AMENITIES
|
||||
|
||||
##################################################
|
||||
# Out with the Old
|
||||
# by Ewan Cowhig Croft
|
||||
# 0101 - 0110
|
||||
##################################################
|
||||
|
||||
# Pay a little prestige to boot out all the guests from your palace.
|
||||
ep1_decision.0101 = {
|
||||
type = character_event
|
||||
title = ep1_decision.0101.t
|
||||
desc = ep1_decision.0101.desc
|
||||
theme = court
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_rational
|
||||
}
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
immediate = {
|
||||
# Grab the capital for easy loc.
|
||||
capital_barony = { save_scope_as = capital }
|
||||
}
|
||||
|
||||
# Scope:capital is not an inn. Away, leeches!
|
||||
option = {
|
||||
name = ep1_decision.0101.a
|
||||
|
||||
# Evict your guests.
|
||||
order_mass_eviction_decision_guests_only_effect = yes
|
||||
|
||||
stress_impact = {
|
||||
shy = minor_stress_impact_loss
|
||||
gregarious = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
# AI cannot access this event.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
# Everyone who doesn't have a job or a close blood tie, *out*!
|
||||
option = {
|
||||
name = ep1_decision.0101.b
|
||||
trigger = {
|
||||
# If you have no spare rooms at all, you can dismiss useless courtiers for a bit extra.
|
||||
amenity_level = {
|
||||
target = court_lodging_standards
|
||||
value <= low_amenity_level
|
||||
}
|
||||
}
|
||||
|
||||
# Charge an extra premium.
|
||||
add_prestige = {
|
||||
value = order_mass_eviction_decision_cost_value
|
||||
multiply = -1
|
||||
}
|
||||
# Evict your guests *&* courtiers.
|
||||
order_mass_eviction_decision_courtiers_&_guests_effect = yes
|
||||
|
||||
stress_impact = {
|
||||
shy = medium_stress_impact_loss
|
||||
gregarious = major_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
# AI cannot access this event.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
# On seconds thoughts, this is unbecoming...
|
||||
option = {
|
||||
name = ep1_decision.0101.c
|
||||
|
||||
# Return invested prestige.
|
||||
hidden_effect = { add_prestige_no_experience = order_mass_eviction_decision_cost_value }
|
||||
# & reset the cooldown.
|
||||
remove_decision_cooldown = order_mass_eviction_decision
|
||||
|
||||
# No stress impact for cancelling out of the decision.
|
||||
ai_chance = {
|
||||
# AI cannot access this event.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Grandiose Decor
|
||||
# by Ewan Cowhig Croft
|
||||
# 0111 - 0120
|
||||
##################################################
|
||||
|
||||
# For technical reasons, this trigger can't be the same as exoticise_a_grand_hall_decision_list_builder_guts_trigger, but maintains (almost) technical parity with it.
|
||||
scripted_trigger ep1_decision_0111_list_builder_guts_trigger = {
|
||||
# Is the title presently active?
|
||||
is_title_created = yes
|
||||
# Filter out anyone already in the list.
|
||||
NOT = { is_in_list = royal_courts_list }
|
||||
# Check assorted holder things.
|
||||
holder = {
|
||||
# Filter out anyone who has the right rank but lacks a mechanical royal court.
|
||||
has_royal_court = yes
|
||||
this != root
|
||||
# Can the two communicate?
|
||||
in_diplomatic_range = root
|
||||
}
|
||||
}
|
||||
|
||||
scripted_effect ep1_decision_0111_apply_hall_effect = {
|
||||
# Add mutual opinion for each non-AI involved with the interaction.
|
||||
$CHOICE$ = {
|
||||
if = {
|
||||
limit = { is_ai = yes }
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = flattered_opinion
|
||||
opinion = 30
|
||||
}
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = { is_ai = yes }
|
||||
add_opinion = {
|
||||
target = $CHOICE$
|
||||
modifier = impressed_opinion
|
||||
opinion = 30
|
||||
}
|
||||
}
|
||||
# Gain a fraction of the CGV difference.
|
||||
change_current_court_grandeur = $CHOICE$.ep1_decision_0111_proportional_cgv_gain_value
|
||||
# Pay prestige proportional to how much CGV is gained.
|
||||
add_prestige = $CHOICE$.ep1_decision_0111_proportional_prestige_cost_value
|
||||
# Hand over a lil participation prestige for $CHOICE$ so that they know someone thinks their court is rad.
|
||||
$CHOICE$ = {
|
||||
send_interface_toast = {
|
||||
title = ep1_decision.0111.toast.t
|
||||
left_icon = root
|
||||
# Give a little more for emperors doing this.
|
||||
if = {
|
||||
limit = { $CHOICE$.primary_title.tier >= tier_empire }
|
||||
add_prestige = medium_prestige_gain
|
||||
}
|
||||
# Otherwise, just a few crumbs of prestige.
|
||||
else = { add_prestige = minor_prestige_gain }
|
||||
}
|
||||
}
|
||||
|
||||
# Stress impact handled in the scripted effect, since it'll always be the same for each char.
|
||||
stress_impact = {
|
||||
architect = minor_stress_impact_loss
|
||||
humble = medium_stress_impact_loss
|
||||
arrogant = major_stress_impact_gain
|
||||
}
|
||||
}
|
||||
|
||||
# Arrange for a major room to be remodelled with decor inspired by a more grandiose culture.
|
||||
ep1_decision.0111 = {
|
||||
type = character_event
|
||||
title = ep1_decision.0111.t
|
||||
desc = ep1_decision.0111.desc
|
||||
theme = court
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = throne_room_conversation_4
|
||||
}
|
||||
lower_left_portrait = scope:option_1
|
||||
lower_center_portrait = scope:option_2
|
||||
lower_right_portrait = scope:option_3
|
||||
|
||||
immediate = {
|
||||
# Build a list of suitable courts.
|
||||
## We add the title rather than the characters to the list for a cleaner debug tooltip in-game.
|
||||
every_empire = {
|
||||
limit = { ep1_decision_0111_list_builder_guts_trigger = yes }
|
||||
# Rack 'em up.
|
||||
add_to_list = royal_courts_list
|
||||
}
|
||||
every_kingdom = {
|
||||
limit = { ep1_decision_0111_list_builder_guts_trigger = yes }
|
||||
# Rack 'em up.
|
||||
add_to_list = royal_courts_list
|
||||
}
|
||||
# Then, filter through the list and grab appropriate options.
|
||||
ordered_in_list = {
|
||||
list = royal_courts_list
|
||||
max = 4
|
||||
check_range_bounds = no
|
||||
order_by = {
|
||||
# Use CGV as a base.
|
||||
add = holder.court_grandeur_current
|
||||
# Weight up for neighbouring realms.
|
||||
if = {
|
||||
limit = {
|
||||
holder = {
|
||||
OR = {
|
||||
any_neighboring_and_across_water_realm_same_rank_owner = { this = root }
|
||||
any_neighboring_and_across_water_top_liege_realm_owner = { this = root }
|
||||
}
|
||||
}
|
||||
}
|
||||
multiply = 5
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:option_1 }
|
||||
}
|
||||
holder = { save_scope_as = option_1 }
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
holder = { this = scope:option_1 }
|
||||
exists = scope:option_2
|
||||
}
|
||||
}
|
||||
holder = { save_scope_as = option_2 }
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
NOT = {
|
||||
holder = { this = scope:option_1 }
|
||||
holder = { this = scope:option_2 }
|
||||
exists = scope:option_3
|
||||
}
|
||||
}
|
||||
holder = { save_scope_as = option_3 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Scope:option_1 is a grand, grand place.
|
||||
option = {
|
||||
name = {
|
||||
trigger = { scope:option_1.court_grandeur_current > root.court_grandeur_current }
|
||||
text = ep1_decision.0111.a.greater_cgv
|
||||
}
|
||||
name = {
|
||||
trigger = { always = yes }
|
||||
text = ep1_decision.0111.a.lesser_cgv
|
||||
}
|
||||
trigger = { exists = scope:option_1 }
|
||||
|
||||
# Build a hall in the relevant scope's style.
|
||||
ep1_decision_0111_apply_hall_effect = { CHOICE = scope:option_1 }
|
||||
|
||||
# Stress_impact block handled in the scripted effect.
|
||||
ai_chance = {
|
||||
# Generally equal likelihood for each option.
|
||||
base = 100
|
||||
# Otherwise, people want to model themselves after characters they like.
|
||||
#opinion_modifier = { opinion_target = scope:option_1 }
|
||||
}
|
||||
}
|
||||
|
||||
# I find the architecture of scope:option_2 enthralling!
|
||||
option = {
|
||||
name = {
|
||||
trigger = { scope:option_2.court_grandeur_current > root.court_grandeur_current }
|
||||
text = ep1_decision.0111.b.greater_cgv
|
||||
}
|
||||
name = {
|
||||
trigger = { always = yes }
|
||||
text = ep1_decision.0111.b.lesser_cgv
|
||||
}
|
||||
trigger = { exists = scope:option_2 }
|
||||
|
||||
# Build a hall in the relevant scope's style.
|
||||
ep1_decision_0111_apply_hall_effect = { CHOICE = scope:option_2 }
|
||||
|
||||
# Stress_impact block handled in the scripted effect.
|
||||
ai_chance = {
|
||||
# Generally equal likelihood for each option.
|
||||
base = 100
|
||||
# Otherwise, people want to model themselves after characters they like.
|
||||
#opinion_modifier = { opinion_target = scope:option_2 }
|
||||
}
|
||||
}
|
||||
|
||||
# Perhaps a scope:option_3ikkan lounge?
|
||||
option = {
|
||||
name = {
|
||||
trigger = { scope:option_3.court_grandeur_current > root.court_grandeur_current }
|
||||
text = ep1_decision.0111.c.greater_cgv
|
||||
}
|
||||
name = {
|
||||
trigger = { always = yes }
|
||||
text = ep1_decision.0111.c.lesser_cgv
|
||||
}
|
||||
trigger = { exists = scope:option_3 }
|
||||
|
||||
# Build a hall in the relevant scope's style.
|
||||
ep1_decision_0111_apply_hall_effect = { CHOICE = scope:option_3 }
|
||||
|
||||
# Stress_impact block handled in the scripted effect.
|
||||
ai_chance = {
|
||||
# Generally equal likelihood for each option.
|
||||
base = 100
|
||||
# Otherwise, people want to model themselves after characters they like.
|
||||
#opinion_modifier = { opinion_target = scope:option_3 }
|
||||
}
|
||||
}
|
||||
|
||||
# These all seem quite foreign...
|
||||
option = {
|
||||
name = ep1_decision.0111.d
|
||||
|
||||
# Refund the gold paid; we mention this in a tooltip so that it's a bit less noticeable.
|
||||
hidden_effect = { add_gold = var:exoticise_a_grand_hall_decision_refund_value }
|
||||
custom_tooltip = ep1_decision.0111.d.tt
|
||||
# Take the decision off cooldown.
|
||||
remove_decision_cooldown = exoticise_a_grand_hall_decision
|
||||
|
||||
# No stress impact for cancelling out.
|
||||
ai_chance = {
|
||||
# If the AI has gotten this far, they should pick an option.
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
# Whatever else happens, clear the refund value.
|
||||
remove_variable = exoticise_a_grand_hall_decision_refund_value
|
||||
}
|
||||
}
|
||||
|
||||
6004
N3OW/events/dlc/ep1/ep1_flavor_events.txt
Normal file
6004
N3OW/events/dlc/ep1/ep1_flavor_events.txt
Normal file
File diff suppressed because it is too large
Load diff
23811
N3OW/events/dlc/ep1/ep1_fund_inspiration_events.txt
Normal file
23811
N3OW/events/dlc/ep1/ep1_fund_inspiration_events.txt
Normal file
File diff suppressed because it is too large
Load diff
483
N3OW/events/dlc/ep1/ep1_fund_inspiration_events_oltner.txt
Normal file
483
N3OW/events/dlc/ep1/ep1_fund_inspiration_events_oltner.txt
Normal file
|
|
@ -0,0 +1,483 @@
|
|||
namespace = fund_inspiration
|
||||
|
||||
# Adventurer fights a bandit
|
||||
# Adventurer travels through beast-infested terrain
|
||||
|
||||
# Adventurer fights a bandit
|
||||
fund_inspiration.9000 = {
|
||||
type = character_event
|
||||
title = fund_inspiration.9000.t
|
||||
desc = fund_inspiration.9000.desc
|
||||
theme = war
|
||||
|
||||
left_portrait = {
|
||||
character = scope:adventurer
|
||||
animation = worry
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:bandit
|
||||
animation = throne_room_one_handed_passive_1
|
||||
}
|
||||
|
||||
override_background = {
|
||||
reference = wilderness_scope
|
||||
}
|
||||
|
||||
cooldown = { years = 5 }
|
||||
|
||||
trigger = {
|
||||
exists = scope:inspiration
|
||||
scope:inspiration_owner = {
|
||||
exists = var:adventure_destination
|
||||
exists = var:adventure_type
|
||||
NOR = {
|
||||
has_character_flag = fund_adventure_inspiration_event_cooldown
|
||||
}
|
||||
exists = location
|
||||
any_pool_character = {
|
||||
province = scope:inspiration_owner.location
|
||||
is_available_ai_adult = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:inspiration_owner = {
|
||||
save_scope_as = adventurer
|
||||
location.barony.title_province = { save_scope_as = background_wilderness_scope }
|
||||
random_pool_character = {
|
||||
province = location.barony.title_province
|
||||
limit = {
|
||||
is_available_ai_adult = yes
|
||||
}
|
||||
weight = {
|
||||
base = 10
|
||||
modifier = {
|
||||
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = THIS }
|
||||
add = 100
|
||||
}
|
||||
}
|
||||
save_scope_as = bandit
|
||||
}
|
||||
}
|
||||
}
|
||||
option = {
|
||||
name = fund_inspiration.9000.a
|
||||
|
||||
scope:adventurer = {
|
||||
duel = {
|
||||
skill = intrigue
|
||||
target = scope:bandit
|
||||
2 = {
|
||||
desc = fund_inspiration.9000.a.critical_success
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
}
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9000.a.critical_success
|
||||
left_icon = scope:adventurer
|
||||
scope:inspiration = { change_inspiration_progress = 2 }
|
||||
scope:bandit = {
|
||||
pay_short_term_gold = {
|
||||
target = root
|
||||
gold = medium_gold_value
|
||||
}
|
||||
}
|
||||
hidden_effect = { # The adventurer also gains some gold!
|
||||
scope:bandit = {
|
||||
pay_short_term_gold = {
|
||||
target = scope:adventurer
|
||||
gold = medium_gold_value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8 = {
|
||||
desc = fund_inspiration.9000.a.success
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
}
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9000.a.success
|
||||
left_icon = scope:adventurer
|
||||
scope:inspiration = { change_inspiration_progress = 1 }
|
||||
}
|
||||
}
|
||||
}
|
||||
8 = {
|
||||
desc = fund_inspiration.9000.a.failure
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -1
|
||||
}
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9000.a.failure
|
||||
left_icon = scope:adventurer
|
||||
scope:adventurer = {
|
||||
increase_wounds_effect = { REASON = fight }
|
||||
}
|
||||
scope:inspiration = { change_inspiration_progress = -2 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 4
|
||||
modifier = {
|
||||
add = scope:adventurer.intrigue
|
||||
}
|
||||
modifier = {
|
||||
add = {
|
||||
value = scope:bandit.intrigue
|
||||
multiply = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
option = {
|
||||
name = fund_inspiration.9000.b
|
||||
|
||||
scope:adventurer = {
|
||||
duel = {
|
||||
skill = prowess
|
||||
target = scope:bandit
|
||||
1 = {
|
||||
desc = fund_inspiration.9000.b.critical_success
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
}
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9000.b.critical_success
|
||||
left_icon = scope:adventurer
|
||||
scope:adventurer = {
|
||||
if = {
|
||||
limit = {
|
||||
NOR = {
|
||||
has_trait = compassionate
|
||||
ai_compassion >= high_positive_ai_value
|
||||
}
|
||||
}
|
||||
hidden_effect = {
|
||||
scope:bandit = {
|
||||
death = {
|
||||
death_reason = death_duel
|
||||
killer = scope:adventurer
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_tooltip = fund_inspiration.9000.b.boil_skull
|
||||
scope:inspiration_owner = {
|
||||
change_artifact_quality_effect = { AMOUNT = 4 }
|
||||
}
|
||||
root = {
|
||||
hidden_effect_new_object = {
|
||||
create_artifact_pedestal_human_skull_effect = {
|
||||
OWNER = root
|
||||
CREATOR = scope:adventurer
|
||||
DESKULLED = scope:bandit
|
||||
}
|
||||
scope:newly_created_artifact = {
|
||||
set_artifact_description = artifact_bandit_skull
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
scope:bandit = {
|
||||
death = {
|
||||
death_reason = death_duel
|
||||
killer = scope:adventurer
|
||||
}
|
||||
scope:inspiration_owner = {
|
||||
change_artifact_quality_effect = { AMOUNT = 4 }
|
||||
}
|
||||
scope:inspiration = { change_inspiration_progress = 1 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11 = {
|
||||
desc = fund_inspiration.9000.b.success
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
}
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9000.b.success
|
||||
left_icon = scope:adventurer
|
||||
scope:adventurer = {
|
||||
scope:bandit = {
|
||||
increase_wounds_effect = { REASON = fight }
|
||||
}
|
||||
scope:inspiration_owner = {
|
||||
change_artifact_quality_effect = { AMOUNT = 2 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8 = {
|
||||
desc = fund_inspiration.9000.b.failure
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -1
|
||||
}
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9000.b.failure
|
||||
left_icon = scope:adventurer
|
||||
scope:adventurer = {
|
||||
increase_wounds_effect = { REASON = fight }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1 = {
|
||||
desc = fund_inspiration.9000.b.critical_failure
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -1
|
||||
}
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9000.b.critical_failure
|
||||
left_icon = scope:adventurer
|
||||
scope:adventurer = {
|
||||
death = {
|
||||
death_reason = death_duel
|
||||
killer = scope:bandit
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 4
|
||||
modifier = {
|
||||
add = scope:adventurer.prowess
|
||||
}
|
||||
modifier = {
|
||||
add = {
|
||||
value = scope:bandit.prowess
|
||||
multiply = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
option = {
|
||||
name = fund_inspiration.9000.c
|
||||
pay_short_term_gold = {
|
||||
target = scope:bandit
|
||||
gold = minor_gold_value
|
||||
}
|
||||
ai_chance = {
|
||||
base = 8
|
||||
|
||||
modifier = {
|
||||
factor = 2
|
||||
ai_compassion >= medium_positive_ai_value
|
||||
}
|
||||
|
||||
modifier = {
|
||||
factor = 0.1
|
||||
OR = {
|
||||
has_trait = stubborn
|
||||
has_trait = wrathful
|
||||
has_trait = greedy
|
||||
}
|
||||
}
|
||||
|
||||
modifier = {
|
||||
factor = 0
|
||||
gold < 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Adventurer travels through beast-infested terrain
|
||||
fund_inspiration.9100 = {
|
||||
type = character_event
|
||||
title = fund_inspiration.9100.t
|
||||
desc = fund_inspiration.9100.desc
|
||||
theme = war
|
||||
|
||||
left_portrait = {
|
||||
character = scope:adventurer
|
||||
scripted_animation = duel_wield_weapon
|
||||
}
|
||||
|
||||
override_background = {
|
||||
reference = wilderness_scope
|
||||
}
|
||||
|
||||
cooldown = { years = 5 }
|
||||
|
||||
trigger = {
|
||||
exists = scope:inspiration
|
||||
scope:inspiration_owner = {
|
||||
exists = var:adventure_destination
|
||||
exists = var:adventure_type
|
||||
NOR = {
|
||||
has_character_flag = fund_adventure_inspiration_event_cooldown
|
||||
has_trait = humble
|
||||
has_trait = content
|
||||
}
|
||||
exists = location
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
scope:inspiration_owner = {
|
||||
save_scope_as = adventurer
|
||||
location.barony.title_province = { save_scope_as = background_wilderness_scope }
|
||||
scope:adventurer = {
|
||||
select_local_animal_effect = { TYPE = dangerous } # Save scope to limit possible animals: any/big/small/dangerous/harmless/prowling
|
||||
}
|
||||
}
|
||||
}
|
||||
option = {
|
||||
name = fund_inspiration.9100.a
|
||||
|
||||
scope:adventurer = {
|
||||
duel = {
|
||||
skill = learning
|
||||
value = 8
|
||||
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
|
||||
|
||||
desc = fund_inspiration.9100.a.success
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9100.a.success
|
||||
left_icon = scope:adventurer
|
||||
scope:inspiration = { change_inspiration_progress = 2 }
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
|
||||
desc = fund_inspiration.9100.a.failure
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9100.a.failure
|
||||
left_icon = scope:adventurer
|
||||
root = {
|
||||
scope:adventurer = {
|
||||
increase_wounds_effect = { REASON = fight }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 4
|
||||
modifier = {
|
||||
add = scope:adventurer.learning
|
||||
}
|
||||
}
|
||||
}
|
||||
option = {
|
||||
name = fund_inspiration.9100.b
|
||||
|
||||
scope:adventurer = {
|
||||
duel = {
|
||||
skill = prowess
|
||||
value = 8
|
||||
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
|
||||
|
||||
desc = fund_inspiration.9100.b.success
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9100.b.success
|
||||
left_icon = scope:adventurer
|
||||
scope:inspiration_owner = {
|
||||
change_artifact_quality_effect = { AMOUNT = 3 }
|
||||
}
|
||||
scope:inspiration = { change_inspiration_progress = 1 }
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
|
||||
desc = fund_inspiration.9100.b.failure
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
title = fund_inspiration.9100.b.failure
|
||||
left_icon = scope:adventurer
|
||||
scope:adventurer = {
|
||||
increase_wounds_effect = { REASON = fight }
|
||||
random = {
|
||||
chance = 25
|
||||
custom_tooltip = fund_inspiration.9100.b.maimed
|
||||
hidden_effect = {
|
||||
maimed_in_battle_effect = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 4
|
||||
modifier = {
|
||||
add = scope:adventurer.prowess
|
||||
}
|
||||
}
|
||||
}
|
||||
option = {
|
||||
name = fund_inspiration.9100.c
|
||||
|
||||
scope:inspiration = { change_inspiration_progress = -1 }
|
||||
|
||||
ai_chance = {
|
||||
base = 4
|
||||
|
||||
modifier = {
|
||||
factor = 2
|
||||
ai_compassion >= medium_positive_ai_value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
146
N3OW/events/dlc/ep1/ep1_inspiration_system_events.txt
Normal file
146
N3OW/events/dlc/ep1/ep1_inspiration_system_events.txt
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
namespace = inspiration_system
|
||||
|
||||
##################################################
|
||||
# Inspiration Generation
|
||||
# Checks how many inspirations currently exist and, if there are not enough, generates new ones for pool characters.
|
||||
# by Sean Hughes
|
||||
# 0005
|
||||
##################################################
|
||||
|
||||
inspiration_system.0005 = {
|
||||
scope = none
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
has_ep1_dlc_trigger = yes
|
||||
|
||||
num_world_inspired_characters_value < ideal_total_world_inspirations
|
||||
}
|
||||
|
||||
immediate = {
|
||||
set_local_variable = {
|
||||
name = try_create_inspiration_attempts
|
||||
value = max_new_inspirations_per_year_value
|
||||
}
|
||||
|
||||
while = {
|
||||
limit = {
|
||||
AND = {
|
||||
local_var:try_create_inspiration_attempts > 0
|
||||
num_world_inspired_characters_value < ideal_total_world_inspirations
|
||||
}
|
||||
}
|
||||
grant_new_inspiration_in_world_effect = yes
|
||||
change_local_variable = {
|
||||
name = try_create_inspiration_attempts
|
||||
subtract = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Inspired Character Maintenance
|
||||
# Every Royal Court owner occasionally checks guests who have an Inspiration and, if unsponsored, moves them to a different Royal Court
|
||||
# by Sean Hughes
|
||||
# 1001-1101
|
||||
##################################################
|
||||
|
||||
inspiration_system.1001 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
has_ep1_dlc_trigger = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
every_pool_guest = {
|
||||
limit = {
|
||||
exists = inspiration
|
||||
NOR = {
|
||||
# Inspiration is not currently being sponsored
|
||||
inspiration = { exists = inspiration_sponsor }
|
||||
# Has not arrived at our court in the last X months (defined in 00_ep1_script_values.txt )
|
||||
has_character_flag = inspired_character_recent_arrival
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
inspiration = {
|
||||
days_since_creation > 3650
|
||||
}
|
||||
}
|
||||
# Destroy our inspiration, since nobody seems interested in sponsoring it.
|
||||
trigger_event = inspiration_system.1101
|
||||
}
|
||||
else = {
|
||||
# Look for a new royal court to visit.
|
||||
inspired_character_seek_out_new_royal_court_effect = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# After going an extended period of time without being recruited or having their Inspiration sponsored, characters lose it in order to make room for new Inspired characters in the pool.
|
||||
inspiration_system.1101 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
destroy_inspiration = inspiration
|
||||
move_to_pool = yes
|
||||
|
||||
# Unrealized potential is tough on people.
|
||||
random_list = {
|
||||
25 = {
|
||||
add_trait = depressed_1
|
||||
add_stress = minor_stress_gain
|
||||
}
|
||||
25 = {
|
||||
trigger = { can_be_drunkard = yes }
|
||||
add_trait = drunkard
|
||||
add_stress = minor_stress_gain
|
||||
}
|
||||
25 = {
|
||||
trigger = { can_be_hashishiyah = yes }
|
||||
add_trait = hashishiyah
|
||||
add_stress = minor_stress_gain
|
||||
}
|
||||
50 = {
|
||||
add_stress = major_stress_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inspiration_system.1200 = { # Courtier becomes Adventurer
|
||||
type = character_event
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
scope:antiquarian_from_task ?= {
|
||||
has_court_position = antiquarian_court_position
|
||||
}
|
||||
scope:adventure_target ?= {
|
||||
is_physically_able_adult = yes
|
||||
NOR = {
|
||||
exists = inspiration
|
||||
has_court_position = antiquarian_court_position
|
||||
}
|
||||
adventure_inspiration_average_skill_value >= medium_inspiration_skill
|
||||
host ?= root
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
send_interface_toast = {
|
||||
type = msg_court_inspiration
|
||||
left_icon = scope:adventure_target
|
||||
right_icon = scope:antiquarian_from_task
|
||||
title = antiquarian_inspired_adventurer_message
|
||||
desc = antiquarian_inspired_adventurer_effect
|
||||
scope:adventure_target = {
|
||||
create_inspiration = adventure_inspiration
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1200
N3OW/events/dlc/ep2/ep2_accolade_events.txt
Normal file
1200
N3OW/events/dlc/ep2/ep2_accolade_events.txt
Normal file
File diff suppressed because it is too large
Load diff
14526
N3OW/events/dlc/ep2/ep2_tournament_events.txt
Normal file
14526
N3OW/events/dlc/ep2/ep2_tournament_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1845
N3OW/events/dlc/ep2/wedding_events/ep2_bloody_wedding_events.txt
Normal file
1845
N3OW/events/dlc/ep2/wedding_events/ep2_bloody_wedding_events.txt
Normal file
File diff suppressed because it is too large
Load diff
23494
N3OW/events/dlc/ep2/wedding_events/ep2_wedding_events.txt
Normal file
23494
N3OW/events/dlc/ep2/wedding_events/ep2_wedding_events.txt
Normal file
File diff suppressed because it is too large
Load diff
6109
N3OW/events/dlc/ep2/wedding_events/ep2_wedding_events_ewan.txt
Normal file
6109
N3OW/events/dlc/ep2/wedding_events/ep2_wedding_events_ewan.txt
Normal file
File diff suppressed because it is too large
Load diff
696
N3OW/events/dlc/ep3/ep3_admin_events.txt
Normal file
696
N3OW/events/dlc/ep3/ep3_admin_events.txt
Normal file
|
|
@ -0,0 +1,696 @@
|
|||
namespace = ep3_admin_events
|
||||
|
||||
# Event to notify you that your liege has changed government and is no longer admin
|
||||
ep3_admin_events.0001 = {
|
||||
type = character_event
|
||||
title = ep3_admin_events.0001.t
|
||||
desc = {
|
||||
desc = ep3_admin_events.0001.intro # Fallback
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:tribal_gov }
|
||||
desc = ep3_admin_events.0001.tribal
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:feudal_gov }
|
||||
desc = ep3_admin_events.0001.feudal
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:clan_gov }
|
||||
desc = ep3_admin_events.0001.clan
|
||||
}
|
||||
desc = ep3_admin_events.0001.fallback
|
||||
}
|
||||
}
|
||||
theme = administrative
|
||||
left_portrait = {
|
||||
character = root
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = stubborn
|
||||
has_trait = paranoid
|
||||
}
|
||||
}
|
||||
animation = worry
|
||||
}
|
||||
animation = thinking
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:scribe
|
||||
animation = chancellor
|
||||
}
|
||||
lower_right_portrait = scope:liege
|
||||
|
||||
trigger = {
|
||||
is_landed = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
liege = {
|
||||
save_scope_as = liege
|
||||
switch = {
|
||||
trigger = government_has_flag
|
||||
government_is_tribal = {
|
||||
save_scope_as = tribal_gov
|
||||
}
|
||||
government_is_feudal = {
|
||||
save_scope_as = feudal_gov
|
||||
}
|
||||
government_is_clan = {
|
||||
save_scope_as = clan_gov
|
||||
}
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
NOR = {
|
||||
exists = scope:tribal_gov
|
||||
exists = scope:feudal_gov
|
||||
exists = scope:clan_gov
|
||||
}
|
||||
}
|
||||
save_scope_as = feudal_gov
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = cp:councillor_chancellor
|
||||
cp:councillor_chancellor = { is_available_healthy_ai_adult = yes }
|
||||
}
|
||||
cp:councillor_chancellor = { save_scope_as = scribe }
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
any_courtier = { is_available_healthy_ai_adult = yes }
|
||||
}
|
||||
ordered_courtier = {
|
||||
limit = {
|
||||
is_available_healthy_ai_adult = yes
|
||||
}
|
||||
order_by = diplomacy
|
||||
save_scope_as = scribe
|
||||
}
|
||||
}
|
||||
else = {
|
||||
create_character = {
|
||||
location = root.capital_province
|
||||
template = diplomacy_foreign_affairs_focus_friend_template
|
||||
faith = scope:liege.capital_county.faith
|
||||
culture = scope:liege.capital_county.culture
|
||||
save_scope_as = scribe
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:scribe = {
|
||||
assign_quirk_effect = yes
|
||||
}
|
||||
|
||||
admin_change_government_effect = yes
|
||||
}
|
||||
|
||||
option = { # I love change
|
||||
name = ep3_admin_events.0001.a
|
||||
|
||||
add_character_modifier = {
|
||||
modifier = ep3_admin_change_love
|
||||
years = 15
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
lazy = medium_stress_impact_loss
|
||||
craven = medium_stress_impact_gain
|
||||
stubborn = medium_stress_impact_gain
|
||||
paranoid = medium_stress_impact_gain
|
||||
diligent = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = craven
|
||||
has_trait = stubborn
|
||||
has_trait = paranoid
|
||||
has_trait = diligent
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 2
|
||||
has_trait = lazy
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # I hate this
|
||||
name = ep3_admin_events.0001.b
|
||||
|
||||
add_character_modifier = {
|
||||
modifier = ep3_admin_change_hate
|
||||
years = 15
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
diligent = medium_stress_impact_loss
|
||||
brave = medium_stress_impact_gain
|
||||
lazy = medium_stress_impact_gain
|
||||
trusting = medium_stress_impact_gain
|
||||
fickle = medium_stress_impact_gain
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = brave
|
||||
has_trait = lazy
|
||||
has_trait = trusting
|
||||
has_trait = fickle
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
factor = 2
|
||||
has_trait = diligent
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # I don't care
|
||||
name = ep3_admin_events.0001.c
|
||||
|
||||
ai_chance = {
|
||||
base = 200
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ep3_admin_events.0002 = {
|
||||
type = character_event
|
||||
title = ep3_admin_events.0002.t
|
||||
desc = {
|
||||
first_valid = {
|
||||
triggered_desc = { # Liege
|
||||
trigger = { scope:previous_governor ?= root.liege }
|
||||
desc = ep3_admin_events.0002.liege
|
||||
}
|
||||
triggered_desc = { # Same house died
|
||||
trigger = {
|
||||
scope:previous_governor ?= {
|
||||
is_alive = no
|
||||
house = root.house
|
||||
}
|
||||
}
|
||||
desc = ep3_admin_events.0002.house_dead
|
||||
}
|
||||
triggered_desc = { # Same house fired
|
||||
trigger = {
|
||||
scope:previous_governor ?= {
|
||||
is_alive = yes
|
||||
house = root.house
|
||||
}
|
||||
}
|
||||
desc = ep3_admin_events.0002.house_alive
|
||||
}
|
||||
triggered_desc = { # Diff house died
|
||||
trigger = {
|
||||
scope:previous_governor ?= { is_alive = no }
|
||||
}
|
||||
desc = ep3_admin_events.0002.dead
|
||||
}
|
||||
triggered_desc = { # Diff house fired
|
||||
trigger = {
|
||||
scope:previous_governor ?= { is_alive = yes }
|
||||
}
|
||||
desc = ep3_admin_events.0002.alive
|
||||
}
|
||||
desc = ep3_admin_events.0002.new
|
||||
}
|
||||
first_valid = {
|
||||
triggered_desc = { # Same house
|
||||
trigger = { scope:previous_governor.house ?= root.house }
|
||||
desc = ep3_admin_events.0002.house
|
||||
}
|
||||
}
|
||||
#desc = double_line_break
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:appointment_succession }
|
||||
desc = ep3_admin_events.0002.appointment_succession
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:appointment }
|
||||
desc = ep3_admin_events.0002.appointment
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:conquest }
|
||||
desc = ep3_admin_events.0002.conquest
|
||||
}
|
||||
}
|
||||
desc = ep3_admin_events.0002.desc
|
||||
}
|
||||
theme = administrative
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = chancellor
|
||||
}
|
||||
lower_center_portrait = scope:previous_governor
|
||||
lower_right_portrait = {
|
||||
character = root.liege
|
||||
trigger = {
|
||||
root.liege != scope:previous_governor
|
||||
}
|
||||
}
|
||||
cooldown = { days = 1 }
|
||||
|
||||
trigger = {
|
||||
this != top_liege
|
||||
any_held_title = {
|
||||
tier = root.highest_held_title_tier
|
||||
is_landless_type_title = no
|
||||
is_noble_family_title = no
|
||||
}
|
||||
NOT = { has_character_flag = successful_governorship_elevation }
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Byzantine_Flavor/ep3_mx_sting_byzantineflavor_become_governor"
|
||||
ordered_held_title = {
|
||||
limit = {
|
||||
tier = root.highest_held_title_tier
|
||||
is_landless_type_title = no
|
||||
is_noble_family_title = no
|
||||
}
|
||||
save_scope_as = governor_title
|
||||
previous_holder ?= { save_scope_as = previous_governor }
|
||||
if = {
|
||||
limit = {
|
||||
recent_history = { type = appointment_succession days = 1 }
|
||||
}
|
||||
save_scope_as = appointment_succession
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
recent_history = { type = appointment days = 1 }
|
||||
}
|
||||
save_scope_as = appointment
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
recent_history = { type = conquest days = 1 }
|
||||
}
|
||||
save_scope_as = conquest
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ep3_admin_events.0002.prosperity
|
||||
trigger = {
|
||||
is_landed = yes
|
||||
government_has_flag = government_has_merit
|
||||
}
|
||||
flavor = building_buildings_give_merit_tt
|
||||
custom_tooltip = ep3_admin_events.0002.tt
|
||||
add_character_modifier = {
|
||||
modifier = tgp_diligent_governor_modifier
|
||||
years = 3
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
lazy = medium_stress_impact_gain
|
||||
diligent = miniscule_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ep3_admin_events.0002.inspection
|
||||
trigger = {
|
||||
is_landed = yes
|
||||
government_has_flag = government_has_merit
|
||||
any_held_title = {
|
||||
tier = tier_county
|
||||
is_landless_type_title = no
|
||||
count >= 1
|
||||
}
|
||||
}
|
||||
flavor = inspections_give_merit_tt
|
||||
custom_tooltip = ep3_admin_events.0002.tt
|
||||
custom_tooltip = ep3_admin_events.0002.tt_inspection
|
||||
|
||||
add_character_flag = free_inspection
|
||||
|
||||
stress_impact = {
|
||||
lazy = medium_stress_impact_gain
|
||||
diligent = miniscule_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ep3_admin_events.0002.a
|
||||
custom_tooltip = ep3_admin_events.0002.tt
|
||||
stress_impact = {
|
||||
base = miniscule_stress_impact_loss
|
||||
}
|
||||
}
|
||||
|
||||
after = {
|
||||
if = {
|
||||
limit = {
|
||||
is_ai = yes
|
||||
}
|
||||
domicile ?= {
|
||||
move_domicile = root.capital_province
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Your admin liege changed government, and you have to do so as well
|
||||
ep3_admin_events.0003 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
government_allows = administrative
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Let's evaluate and see which event you should get
|
||||
if = { # If you are still landed and remain a vassal
|
||||
limit = {
|
||||
is_landed = yes
|
||||
liege != root
|
||||
}
|
||||
trigger_event = ep3_admin_events.0001
|
||||
}
|
||||
else_if = { # You are still landed and become independent
|
||||
limit = {
|
||||
is_landed = yes
|
||||
liege = root
|
||||
}
|
||||
trigger_event = ep3_admin_events.0005
|
||||
}
|
||||
else_if = { # You became unlanded - Let's go on an adventure!
|
||||
limit = { # Assuming you are a player
|
||||
is_landed = no
|
||||
}
|
||||
trigger_event = ep3_admin_events.0004
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Event to make admin into adventurers
|
||||
ep3_admin_events.0004 = {
|
||||
type = character_event
|
||||
title = ep3_admin_events.0004.t
|
||||
desc = {
|
||||
desc = ep3_admin_events.0004.desc
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
exists = scope:reacting_spouse
|
||||
scope:reacting_spouse = {
|
||||
OR = {
|
||||
has_trait = gluttonous
|
||||
has_trait = greedy
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = ep3_admin_events.0004.desc_spouse_very_upset
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:reacting_spouse }
|
||||
desc = ep3_admin_events.0004.desc_spouse_upset
|
||||
}
|
||||
}
|
||||
}
|
||||
theme = landless_adventurer
|
||||
override_background = { reference = estate }
|
||||
left_portrait = {
|
||||
character = root
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = eccentric
|
||||
has_trait = brave
|
||||
}
|
||||
}
|
||||
#animation = delirium
|
||||
animation = disappointed
|
||||
}
|
||||
animation = disbelief
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:reacting_spouse
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = gluttonous
|
||||
has_trait = greedy
|
||||
}
|
||||
}
|
||||
animation = crying
|
||||
}
|
||||
animation = worry
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = { # Destroy your noble family title if you have one
|
||||
limit = {
|
||||
any_held_title = {
|
||||
is_noble_family_title = yes
|
||||
}
|
||||
}
|
||||
every_held_title = {
|
||||
limit = {
|
||||
is_noble_family_title = yes
|
||||
}
|
||||
save_temporary_scope_as = family_title
|
||||
prev = { destroy_title = scope:family_title }
|
||||
}
|
||||
}
|
||||
if = { # Become an adventurer
|
||||
limit = { is_ai = no }
|
||||
create_landless_adventurer_title_effect = {
|
||||
REASON = flag:runaway_allowed
|
||||
FLAVOR_CHAR = root
|
||||
}
|
||||
hidden_effect = {
|
||||
contract_passive_spawn_effect = {
|
||||
SPAWN_CONTRACTS = 5
|
||||
}
|
||||
}
|
||||
}
|
||||
if = { # If you are married, let's save your spouse as a scope for some added flavor
|
||||
limit = {
|
||||
is_married = yes
|
||||
any_spouse = {
|
||||
employer = root
|
||||
}
|
||||
}
|
||||
random_spouse = {
|
||||
limit = { employer = root }
|
||||
save_scope_as = reacting_spouse
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = {
|
||||
trigger = {
|
||||
exists = scope:reacting_spouse
|
||||
scope:reacting_spouse = {
|
||||
OR = {
|
||||
has_trait = gluttonous
|
||||
has_trait = greedy
|
||||
}
|
||||
}
|
||||
}
|
||||
text = ep3_admin_events.0004.a
|
||||
}
|
||||
name = {
|
||||
trigger = {
|
||||
exists = scope:reacting_spouse
|
||||
scope:reacting_spouse = {
|
||||
NOR = {
|
||||
has_trait = gluttonous
|
||||
has_trait = greedy
|
||||
}
|
||||
}
|
||||
}
|
||||
text = ep3_admin_events.0004.b
|
||||
}
|
||||
name = {
|
||||
trigger = {
|
||||
NOT = { exists = scope:reacting_spouse }
|
||||
}
|
||||
text = ep3_admin_events.0004.c
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Notification event that you became independent
|
||||
ep3_admin_events.0005 = {
|
||||
type = character_event
|
||||
title = ep3_admin_events.0005.t
|
||||
desc = {
|
||||
desc = ep3_admin_events.0005.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { exists = scope:still_admin }
|
||||
desc = ep3_admin_events.0005.desc_still_admin
|
||||
}
|
||||
desc = ep3_admin_events.0005.desc_lost_admin
|
||||
}
|
||||
}
|
||||
theme = administrative
|
||||
left_portrait = {
|
||||
character = root
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = fickle
|
||||
has_trait = lazy
|
||||
has_trait = paranoid
|
||||
}
|
||||
}
|
||||
animation = stress
|
||||
}
|
||||
animation = interested
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:messenger
|
||||
animation = chancellor
|
||||
}
|
||||
lower_right_portrait = scope:gov_liege
|
||||
|
||||
immediate = {
|
||||
# Let's find a character to bring us these news
|
||||
if = {
|
||||
limit = {
|
||||
exists = cp:councillor_chancellor
|
||||
cp:councillor_chancellor = { is_available_healthy_ai_adult = yes }
|
||||
}
|
||||
cp:councillor_chancellor = { save_scope_as = messenger }
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
any_courtier = { is_available_healthy_ai_adult = yes }
|
||||
}
|
||||
ordered_courtier = {
|
||||
limit = {
|
||||
is_available_healthy_ai_adult = yes
|
||||
}
|
||||
order_by = diplomacy
|
||||
save_scope_as = messenger
|
||||
}
|
||||
}
|
||||
else = {
|
||||
create_character = {
|
||||
location = root.capital_province
|
||||
template = diplomacy_foreign_affairs_focus_friend_template
|
||||
faith = root.capital_county.faith
|
||||
culture = root.capital_county.culture
|
||||
save_scope_as = messenger
|
||||
}
|
||||
}
|
||||
|
||||
# Show this to make it clear to the player that you became independent
|
||||
show_as_tooltip = {
|
||||
create_title_and_vassal_change = {
|
||||
type = independency
|
||||
save_scope_as = change
|
||||
add_claim_on_loss = no
|
||||
}
|
||||
becomes_independent = { change = scope:change }
|
||||
resolve_title_and_vassal_change = scope:change
|
||||
}
|
||||
if = { # You are allowed to keep admin as your government
|
||||
limit = {
|
||||
highest_held_title_tier >= tier_kingdom
|
||||
culture ?= { has_cultural_parameter = can_adopt_administrative_government_as_kingdom_tier }
|
||||
}
|
||||
save_scope_as = still_admin
|
||||
}
|
||||
else = { # You change your government
|
||||
admin_change_government_effect = yes
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ep3_admin_events.0005.a
|
||||
# We handle everything in the immediate
|
||||
}
|
||||
}
|
||||
|
||||
# Reception Hall domicile upgrade provides legitimacy
|
||||
# We put it in a delayed event to make sure that we can notify the player of the effect, so they can see it
|
||||
ep3_admin_events.0010 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
save_scope_as = legitimacy_gainer
|
||||
|
||||
# We first send the notification of the legitimacy being granted
|
||||
house = {
|
||||
every_house_member = {
|
||||
limit = { is_ai = no }
|
||||
send_interface_message = {
|
||||
type = event_toast_effect_good
|
||||
title = ep3_dynasty_legacy_gain_legitimacy_effect_title
|
||||
left_icon = root
|
||||
right_icon = root.primary_title
|
||||
show_as_tooltip = {
|
||||
scope:legitimacy_gainer = { add_legitimacy = house.var:ep3_legacy_legitimacy_counter }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Then we add the actual legitimacy
|
||||
add_legitimacy = house.var:ep3_legacy_legitimacy_counter
|
||||
|
||||
# Finally, let's reset the counter according to building level
|
||||
house = {
|
||||
if = {
|
||||
limit = {
|
||||
house_head.domicile ?= { has_domicile_parameter = reception_hall_legitimacy_loss_04 }
|
||||
}
|
||||
change_variable = {
|
||||
name = ep3_legacy_legitimacy_counter
|
||||
multiply = 0.75
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
house_head.domicile ?= { has_domicile_parameter = reception_hall_legitimacy_loss_03 }
|
||||
}
|
||||
change_variable = {
|
||||
name = ep3_legacy_legitimacy_counter
|
||||
multiply = 0.5
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
house_head.domicile ?= { has_domicile_parameter = reception_hall_legitimacy_loss_02 }
|
||||
}
|
||||
change_variable = {
|
||||
name = ep3_legacy_legitimacy_counter
|
||||
multiply = 0.25
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
house_head.domicile ?= { has_domicile_parameter = reception_hall_legitimacy_loss_01 }
|
||||
}
|
||||
change_variable = {
|
||||
name = ep3_legacy_legitimacy_counter
|
||||
multiply = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
332
N3OW/events/dlc/ep3/ep3_akolouthos_events.txt
Normal file
332
N3OW/events/dlc/ep3/ep3_akolouthos_events.txt
Normal file
|
|
@ -0,0 +1,332 @@
|
|||
namespace = ep3_akolouthos_events
|
||||
|
||||
# Varangian-eligible courtier gains Varangian or Varangian gains Loyal
|
||||
ep3_akolouthos_events.1000 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
OR = {
|
||||
# A varangian who isn't loyal
|
||||
any_courtier = {
|
||||
has_trait = varangian
|
||||
NOT = { has_trait = loyal }
|
||||
}
|
||||
#An eligible Varangian who doesn't have the trait
|
||||
any_courtier = {
|
||||
NOT = { has_trait = varangian }
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = 1
|
||||
any_court_position_holder = {
|
||||
type = bodyguard_court_position
|
||||
NOT = { has_trait = varangian }
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 1
|
||||
any_court_position_holder = {
|
||||
type = bodyguard_court_position
|
||||
NOT = { has_trait = loyal }
|
||||
has_trait = varangian
|
||||
}
|
||||
}
|
||||
modifier = {
|
||||
add = 1
|
||||
any_court_position_holder = {
|
||||
type = akolouthos_court_position
|
||||
NOT = { has_trait = varangian }
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
random_court_position_holder = {
|
||||
type = akolouthos_court_position
|
||||
save_scope_as = akolouthos
|
||||
}
|
||||
#Most important that Varangian Akolouthos becomes Varangian
|
||||
if = {
|
||||
limit = {
|
||||
any_court_position_holder = {
|
||||
type = akolouthos_court_position
|
||||
NOT = { has_trait = varangian }
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
}
|
||||
random_court_position_holder = {
|
||||
type = akolouthos_court_position
|
||||
limit = {
|
||||
NOT = { has_trait = varangian }
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
save_scope_as = trait_getter
|
||||
}
|
||||
ep3_send_akolouthos_message_varangian = yes
|
||||
}
|
||||
#Second-most important: Varangian bodyguard becomes Varangian
|
||||
else_if = {
|
||||
limit = {
|
||||
any_court_position_holder = {
|
||||
type = bodyguard_court_position
|
||||
NOT = { has_trait = varangian }
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
}
|
||||
random_court_position_holder = {
|
||||
type = bodyguard_court_position
|
||||
limit = {
|
||||
NOT = { has_trait = varangian }
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
save_scope_as = trait_getter
|
||||
}
|
||||
ep3_send_akolouthos_message_varangian = yes
|
||||
}
|
||||
#Then either add loyal to a Varangian bodyguard or to Akolouthos
|
||||
else_if = {
|
||||
limit = {
|
||||
OR = {
|
||||
any_court_position_holder = {
|
||||
type = bodyguard_court_position
|
||||
has_trait = varangian
|
||||
NOT = { has_trait = loyal }
|
||||
}
|
||||
any_court_position_holder = {
|
||||
type = akolouthos_court_position
|
||||
has_trait = varangian
|
||||
NOT = { has_trait = loyal }
|
||||
}
|
||||
}
|
||||
}
|
||||
random_list = {
|
||||
#Add loyal to a Varangian bodyguard
|
||||
10 = {
|
||||
trigger = {
|
||||
any_court_position_holder = {
|
||||
type = bodyguard_court_position
|
||||
has_trait = varangian
|
||||
NOT = { has_trait = loyal }
|
||||
}
|
||||
}
|
||||
random_court_position_holder = {
|
||||
type = bodyguard_court_position
|
||||
limit = {
|
||||
has_trait = varangian
|
||||
NOT = { has_trait = loyal }
|
||||
}
|
||||
save_scope_as = trait_getter
|
||||
}
|
||||
ep3_send_akolouthos_message_loyal = yes
|
||||
}
|
||||
#Add loyal to a Varangian akolouthos
|
||||
10 = {
|
||||
trigger = {
|
||||
any_court_position_holder = {
|
||||
type = akolouthos_court_position
|
||||
has_trait = varangian
|
||||
NOT = { has_trait = loyal }
|
||||
}
|
||||
}
|
||||
random_court_position_holder = {
|
||||
type = akolouthos_court_position
|
||||
limit = {
|
||||
has_trait = varangian
|
||||
NOT = { has_trait = loyal }
|
||||
}
|
||||
save_scope_as = trait_getter
|
||||
}
|
||||
ep3_send_akolouthos_message_loyal = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
#Add Varangian to some non-Varangian Varangian
|
||||
else_if = {
|
||||
limit = {
|
||||
any_courtier = {
|
||||
NOT = { has_trait = varangian }
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
}
|
||||
random_courtier = {
|
||||
limit = {
|
||||
NOT = { has_trait = varangian }
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
save_scope_as = trait_getter
|
||||
}
|
||||
ep3_send_akolouthos_message_varangian = yes
|
||||
}
|
||||
#Add loyal to some non-bodyguard Varangian
|
||||
else = {
|
||||
random_courtier = {
|
||||
limit = {
|
||||
has_trait = varangian
|
||||
NOT = { has_trait = loyal }
|
||||
}
|
||||
save_scope_as = trait_getter
|
||||
}
|
||||
ep3_send_akolouthos_message_loyal = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Akolouthos recruits Varangian
|
||||
ep3_akolouthos_events.1001 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
#Don't really need this if root is swarming in Varangians already
|
||||
NOT = {
|
||||
any_courtier_or_guest = {
|
||||
count >= 8
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
#Weigh up chances if Varangians are needed to fill posts
|
||||
modifier = {
|
||||
add = 1
|
||||
NOT = {
|
||||
any_courtier_or_guest = {
|
||||
count >= 3
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
random_court_position_holder = {
|
||||
type = akolouthos_court_position
|
||||
save_scope_as = akolouthos
|
||||
}
|
||||
#Find a candidate in the local pool
|
||||
if = {
|
||||
limit = {
|
||||
is_landed = yes
|
||||
any_pool_character = {
|
||||
province = root.capital_province
|
||||
ep3_varangian_trigger = yes
|
||||
prowess > low_skill_rating
|
||||
}
|
||||
}
|
||||
random_pool_character = {
|
||||
province = root.capital_province
|
||||
limit = {
|
||||
ep3_varangian_trigger = yes
|
||||
prowess > low_skill_rating
|
||||
}
|
||||
save_scope_as = new_varangian
|
||||
}
|
||||
scope:new_varangian = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { has_trait = varangian }
|
||||
}
|
||||
hidden_effect = {
|
||||
add_trait = varangian
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#Find a candidate in pools of akolouthos's culture
|
||||
else_if = {
|
||||
limit = {
|
||||
scope:akolouthos = {
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
exists = scope:akolouthos.culture.culture_head
|
||||
scope:akolouthos.culture.culture_head = {
|
||||
is_landed = yes
|
||||
}
|
||||
any_pool_character = {
|
||||
province = scope:akolouthos.culture.culture_head.capital_province
|
||||
ep3_varangian_trigger = yes
|
||||
prowess >= low_skill_rating
|
||||
}
|
||||
}
|
||||
scope:akolouthos.culture.culture_head = {
|
||||
save_scope_as = akolouthos_culture_head
|
||||
}
|
||||
random_pool_character = {
|
||||
province = scope:akolouthos_culture_head.capital_province
|
||||
limit = {
|
||||
ep3_varangian_trigger = yes
|
||||
prowess > low_skill_rating
|
||||
}
|
||||
save_scope_as = new_varangian
|
||||
}
|
||||
scope:new_varangian = {
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { has_trait = varangian }
|
||||
}
|
||||
hidden_effect = {
|
||||
add_trait = varangian
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#Create a candidate
|
||||
else_if = {
|
||||
limit = {
|
||||
scope:akolouthos = {
|
||||
ep3_varangian_trigger = yes
|
||||
}
|
||||
}
|
||||
create_character = {
|
||||
template = varangian_template
|
||||
location = root.location
|
||||
culture = scope:akolouthos.culture
|
||||
faith = scope:akolouthos.faith
|
||||
dynasty = none
|
||||
save_scope_as = new_varangian
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
current_date < 990
|
||||
}
|
||||
#Norse
|
||||
create_character = {
|
||||
template = varangian_template
|
||||
location = root.location
|
||||
culture = culture:norse
|
||||
faith = root.faith
|
||||
dynasty = none
|
||||
save_scope_as = new_varangian
|
||||
}
|
||||
}
|
||||
else = {
|
||||
#Anglo-Saxon
|
||||
create_character = {
|
||||
template = varangian_template
|
||||
location = root.location
|
||||
culture = culture:anglo_saxon
|
||||
faith = root.faith
|
||||
dynasty = none
|
||||
save_scope_as = new_varangian
|
||||
}
|
||||
}
|
||||
send_interface_message = {
|
||||
type = event_martial_good_with_text
|
||||
title = ep3_akolouthos_events.1001
|
||||
desc = ep3_akolouthos_events.1001_notification_tooltip
|
||||
tooltip = akolouthos_effect_tooltip
|
||||
left_icon = scope:new_varangian
|
||||
right_icon = scope:akolouthos
|
||||
add_courtier = scope:new_varangian
|
||||
}
|
||||
}
|
||||
}
|
||||
3727
N3OW/events/dlc/ep3/ep3_camp_party_events.txt
Normal file
3727
N3OW/events/dlc/ep3/ep3_camp_party_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1528
N3OW/events/dlc/ep3/ep3_camp_temperament_events.txt
Normal file
1528
N3OW/events/dlc/ep3/ep3_camp_temperament_events.txt
Normal file
File diff suppressed because it is too large
Load diff
10151
N3OW/events/dlc/ep3/ep3_contract_events.txt
Normal file
10151
N3OW/events/dlc/ep3/ep3_contract_events.txt
Normal file
File diff suppressed because it is too large
Load diff
173
N3OW/events/dlc/ep3/ep3_councillor_events.txt
Normal file
173
N3OW/events/dlc/ep3/ep3_councillor_events.txt
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
########################
|
||||
# EP3 Councillors Events
|
||||
########################
|
||||
namespace = ep3_councillor_event
|
||||
|
||||
# Spouse increases your Influence
|
||||
ep3_councillor_event.0001 = {
|
||||
hidden = yes
|
||||
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
valid_spouse_councillor_trigger = yes
|
||||
government_allows = administrative
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
councillor_spouse_limited_skill_rating_modifier = {
|
||||
SKILL = intrigue
|
||||
SCALE = 1
|
||||
SKILL_RATING = spouse_skill_rating_1
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
cp:councillor_spouse = {
|
||||
save_scope_as = councillor
|
||||
}
|
||||
send_interface_message = {
|
||||
type = msg_spouse_task_good
|
||||
title = ep3_councillor_event.0001.t
|
||||
desc = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:councillor = { diplomacy < average_skill_level }
|
||||
}
|
||||
desc = spouse_task_diplomacy_good_unskilled_notification_tooltip
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:councillor = { diplomacy >= average_skill_level }
|
||||
}
|
||||
desc = spouse_task_diplomacy_good_skilled_notification_tooltip
|
||||
}
|
||||
}
|
||||
|
||||
right_icon = scope:councillor
|
||||
|
||||
change_influence = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:councillor = {
|
||||
culture = { has_cultural_tradition = tradition_ep3_palace_politics }
|
||||
}
|
||||
}
|
||||
add = medium_influence_gain
|
||||
}
|
||||
else = {
|
||||
add = minor_influence_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Spouse increases your candidate score for a title if you are in to inherit
|
||||
ep3_councillor_event.0002 = {
|
||||
hidden = yes
|
||||
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
valid_spouse_councillor_trigger = yes
|
||||
government_allows = administrative
|
||||
top_liege = {
|
||||
any_sub_realm_title = {
|
||||
tier >= tier_duchy
|
||||
is_noble_family_title = no
|
||||
holder = { government_allows = administrative }
|
||||
any_title_heir = {
|
||||
prev = { # For getting the correct title
|
||||
place_in_line_of_succession = {
|
||||
target = prev # And again for going back and getting the correct character
|
||||
value <= 3
|
||||
}
|
||||
}
|
||||
this = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight_multiplier = {
|
||||
base = 1
|
||||
councillor_spouse_limited_skill_rating_modifier = {
|
||||
SKILL = diplomacy
|
||||
SCALE = 1
|
||||
SKILL_RATING = spouse_skill_rating_1
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
cp:councillor_spouse = {
|
||||
save_scope_as = councillor
|
||||
}
|
||||
top_liege = {
|
||||
random_sub_realm_title = {
|
||||
limit = {
|
||||
tier >= tier_duchy
|
||||
is_noble_family_title = no
|
||||
holder = { government_allows = administrative }
|
||||
any_title_heir = {
|
||||
prev = {
|
||||
place_in_line_of_succession = {
|
||||
target = prev
|
||||
value <= 3
|
||||
}
|
||||
}
|
||||
this = root
|
||||
}
|
||||
}
|
||||
save_scope_as = target_title
|
||||
}
|
||||
}
|
||||
save_scope_value_as = {
|
||||
name = improved_candidate_score
|
||||
value = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:councillor = {
|
||||
culture = { has_cultural_tradition = tradition_ep3_palace_politics }
|
||||
}
|
||||
}
|
||||
add = 15
|
||||
}
|
||||
else = {
|
||||
add = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
send_interface_message = {
|
||||
type = msg_spouse_task_good
|
||||
title = ep3_councillor_event.0002.t
|
||||
desc = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:councillor = { diplomacy < average_skill_level }
|
||||
}
|
||||
desc = spouse_task_diplomacy_good_unskilled_notification_tooltip
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:councillor = { diplomacy >= average_skill_level }
|
||||
}
|
||||
desc = spouse_task_diplomacy_good_skilled_notification_tooltip
|
||||
}
|
||||
}
|
||||
|
||||
right_icon = scope:councillor
|
||||
left_icon = scope:target_title
|
||||
|
||||
custom_tooltip = ep3_councillor_event.0002.desc
|
||||
|
||||
scope:target_title = {
|
||||
change_appointment_investment = {
|
||||
target = root
|
||||
value = scope:improved_candidate_score
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8076
N3OW/events/dlc/ep3/ep3_decisions_events.txt
Normal file
8076
N3OW/events/dlc/ep3/ep3_decisions_events.txt
Normal file
File diff suppressed because it is too large
Load diff
7034
N3OW/events/dlc/ep3/ep3_emperor_yearly_2.txt
Normal file
7034
N3OW/events/dlc/ep3/ep3_emperor_yearly_2.txt
Normal file
File diff suppressed because it is too large
Load diff
1947
N3OW/events/dlc/ep3/ep3_emperor_yearly_3.txt
Normal file
1947
N3OW/events/dlc/ep3/ep3_emperor_yearly_3.txt
Normal file
File diff suppressed because it is too large
Load diff
2206
N3OW/events/dlc/ep3/ep3_emperor_yearly_8.txt
Normal file
2206
N3OW/events/dlc/ep3/ep3_emperor_yearly_8.txt
Normal file
File diff suppressed because it is too large
Load diff
1879
N3OW/events/dlc/ep3/ep3_eparch_events.txt
Normal file
1879
N3OW/events/dlc/ep3/ep3_eparch_events.txt
Normal file
File diff suppressed because it is too large
Load diff
9178
N3OW/events/dlc/ep3/ep3_governor_yearly_3.txt
Normal file
9178
N3OW/events/dlc/ep3/ep3_governor_yearly_3.txt
Normal file
File diff suppressed because it is too large
Load diff
4489
N3OW/events/dlc/ep3/ep3_governor_yearly_8.txt
Normal file
4489
N3OW/events/dlc/ep3/ep3_governor_yearly_8.txt
Normal file
File diff suppressed because it is too large
Load diff
4609
N3OW/events/dlc/ep3/ep3_interactions_events.txt
Normal file
4609
N3OW/events/dlc/ep3/ep3_interactions_events.txt
Normal file
File diff suppressed because it is too large
Load diff
22296
N3OW/events/dlc/ep3/ep3_laamp_decision_events.txt
Normal file
22296
N3OW/events/dlc/ep3/ep3_laamp_decision_events.txt
Normal file
File diff suppressed because it is too large
Load diff
9054
N3OW/events/dlc/ep3/ep3_laamp_events.txt
Normal file
9054
N3OW/events/dlc/ep3/ep3_laamp_events.txt
Normal file
File diff suppressed because it is too large
Load diff
3979
N3OW/events/dlc/ep3/ep3_laamp_events_8.txt
Normal file
3979
N3OW/events/dlc/ep3/ep3_laamp_events_8.txt
Normal file
File diff suppressed because it is too large
Load diff
1118
N3OW/events/dlc/ep3/ep3_laamp_flavor.txt
Normal file
1118
N3OW/events/dlc/ep3/ep3_laamp_flavor.txt
Normal file
File diff suppressed because it is too large
Load diff
328
N3OW/events/dlc/ep3/ep3_laamp_flavor_oltner.txt
Normal file
328
N3OW/events/dlc/ep3/ep3_laamp_flavor_oltner.txt
Normal file
|
|
@ -0,0 +1,328 @@
|
|||
namespace = ep3_laamp_flavor_oltner
|
||||
|
||||
scripted_trigger suitable_pool_marriage_trigger = {
|
||||
save_temporary_scope_as = pool_marriage_target
|
||||
is_physically_able_adult = yes
|
||||
allowed_to_marry_character_gender_trigger = { CHARACTER = $FOLLOWER_TARGET$ }
|
||||
$FOLLOWER_TARGET$ ?= { allowed_to_marry_character_gender_trigger = { CHARACTER = prev } }
|
||||
are_characters_sensible_lovers_trigger = { INSTIGATING_LOVER = $FOLLOWER_TARGET$ TARGET_OF_LOVE = scope:pool_marriage_target }
|
||||
is_married = no
|
||||
can_marry_trigger = yes
|
||||
is_concubine = no
|
||||
NOT = {
|
||||
exists = betrothed
|
||||
}
|
||||
has_no_particular_noble_roots_trigger = yes
|
||||
}
|
||||
|
||||
scripted_trigger suitable_follower_marriage_character_trigger = {
|
||||
is_physically_able_adult = yes
|
||||
this != root
|
||||
is_married = no
|
||||
can_marry_trigger = yes
|
||||
is_concubine = no
|
||||
age <= 50
|
||||
health >= fine_health
|
||||
NOR = {
|
||||
house = root.house
|
||||
is_close_family_of = root
|
||||
exists = betrothed
|
||||
has_relation_rival = root
|
||||
}
|
||||
save_temporary_scope_as = entourage_member
|
||||
any_pool_character = {
|
||||
province = root.location
|
||||
age <= 40
|
||||
health >= fine_health
|
||||
suitable_pool_marriage_trigger = { FOLLOWER_TARGET = scope:entourage_member }
|
||||
}
|
||||
}
|
||||
|
||||
# A Follower's Heart
|
||||
ep3_laamp_flavor_oltner.0001 = {
|
||||
type = character_event
|
||||
title = ep3_laamp_flavor_oltner.3001.t
|
||||
desc = ep3_laamp_flavor_oltner.3001.desc
|
||||
theme = marriage
|
||||
override_background = { reference = market_scope }
|
||||
left_portrait = {
|
||||
character = scope:entourage_to_marry_2
|
||||
animation = beg
|
||||
camera = camera_event_very_left
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:marriage_material
|
||||
animation = dismissal
|
||||
camera = camera_event_right_pointing_left
|
||||
}
|
||||
cooldown = { years = 10 }
|
||||
|
||||
trigger = {
|
||||
has_government = landless_adventurer_government
|
||||
location = {
|
||||
has_holding = yes
|
||||
}
|
||||
any_courtier = {
|
||||
suitable_follower_marriage_character_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
save_scope_as = root_char
|
||||
random_courtier = {
|
||||
limit = {
|
||||
suitable_follower_marriage_character_trigger = yes
|
||||
}
|
||||
save_scope_as = entourage_to_marry_2
|
||||
}
|
||||
random_pool_character = {
|
||||
province = root.location
|
||||
limit = {
|
||||
suitable_pool_marriage_trigger = { FOLLOWER_TARGET = scope:entourage_to_marry_2 }
|
||||
}
|
||||
save_scope_as = marriage_material
|
||||
}
|
||||
location.county.title_province = { save_scope_as = background_market_scope }
|
||||
}
|
||||
|
||||
option = { # Tell them to pay it themselves
|
||||
name = ep3_laamp_flavor_oltner.0001.a
|
||||
|
||||
trigger = {
|
||||
scope:entourage_to_marry_2.gold >= {
|
||||
add = scope:marriage_material.sum_of_all_skills_and_prowess_value
|
||||
}
|
||||
}
|
||||
|
||||
scope:entourage_to_marry_2 = {
|
||||
remove_short_term_gold = {
|
||||
add = scope:marriage_material.sum_of_all_skills_value
|
||||
add = scope:marriage_material.prowess
|
||||
}
|
||||
}
|
||||
|
||||
add_courtier = scope:marriage_material
|
||||
scope:entourage_to_marry_2 = {
|
||||
if = {
|
||||
limit = {
|
||||
is_female = yes
|
||||
is_lowborn = no
|
||||
scope:marriage_material = {
|
||||
is_lowborn = yes
|
||||
}
|
||||
}
|
||||
marry_matrilineal = scope:marriage_material
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
is_male = yes
|
||||
is_lowborn = yes
|
||||
scope:marriage_material = {
|
||||
is_lowborn = no
|
||||
}
|
||||
}
|
||||
marry_matrilineal = scope:marriage_material
|
||||
}
|
||||
else = {
|
||||
marry = scope:marriage_material
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Pay the dowry
|
||||
name = ep3_laamp_flavor_oltner.0001.b
|
||||
stress_impact = {
|
||||
generous = massive_stress_impact_loss
|
||||
greedy = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
remove_short_term_gold = {
|
||||
add = scope:marriage_material.sum_of_all_skills_and_prowess_value
|
||||
}
|
||||
|
||||
add_courtier = scope:marriage_material
|
||||
scope:entourage_to_marry_2 = {
|
||||
if = {
|
||||
limit = {
|
||||
is_female = yes
|
||||
is_lowborn = no
|
||||
scope:marriage_material = {
|
||||
is_lowborn = yes
|
||||
}
|
||||
}
|
||||
marry_matrilineal = scope:marriage_material
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
is_male = yes
|
||||
is_lowborn = yes
|
||||
scope:marriage_material = {
|
||||
is_lowborn = no
|
||||
}
|
||||
}
|
||||
marry_matrilineal = scope:marriage_material
|
||||
}
|
||||
else = {
|
||||
marry = scope:marriage_material
|
||||
}
|
||||
progress_towards_friend_effect = {
|
||||
CHARACTER = root
|
||||
OPINION = 0
|
||||
REASON = friend_helped_me_marry
|
||||
}
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = grateful_opinion
|
||||
opinion = 50
|
||||
}
|
||||
}
|
||||
|
||||
scope:marriage_material = { save_scope_as = relationship_reason_involved_character }
|
||||
|
||||
clear_saved_scope = relationship_reason_involved_character
|
||||
|
||||
ai_chance = {
|
||||
base = 10
|
||||
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = greedy
|
||||
gold <= {
|
||||
add = scope:marriage_material.sum_of_all_skills_and_prowess_value
|
||||
multiply = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Convince them to run away with you
|
||||
name = ep3_laamp_flavor_oltner.0001.c
|
||||
skill = intrigue
|
||||
stress_impact = {
|
||||
generous = medium_stress_impact_gain
|
||||
}
|
||||
|
||||
duel = {
|
||||
skill = intrigue
|
||||
value = high_skill_rating
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = ep3_laamp_flavor_oltner.0001.c.success
|
||||
send_interface_toast = {
|
||||
title = ep3_laamp_flavor_oltner.0001.c.success
|
||||
left_icon = scope:entourage_to_marry_2
|
||||
right_icon = scope:marriage_material
|
||||
add_courtier = scope:marriage_material
|
||||
scope:entourage_to_marry_2 = {
|
||||
if = {
|
||||
limit = {
|
||||
is_female = yes
|
||||
is_lowborn = no
|
||||
scope:marriage_material = {
|
||||
is_lowborn = yes
|
||||
}
|
||||
}
|
||||
marry_matrilineal = scope:marriage_material
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
is_male = yes
|
||||
is_lowborn = yes
|
||||
scope:marriage_material = {
|
||||
is_lowborn = no
|
||||
}
|
||||
}
|
||||
marry_matrilineal = scope:marriage_material
|
||||
}
|
||||
else = {
|
||||
marry = scope:marriage_material
|
||||
}
|
||||
progress_towards_friend_effect = {
|
||||
CHARACTER = root
|
||||
OPINION = 0
|
||||
REASON = friend_helped_me_marry
|
||||
}
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = grateful_opinion
|
||||
opinion = 50
|
||||
}
|
||||
}
|
||||
|
||||
scope:marriage_material = { save_scope_as = relationship_reason_involved_character }
|
||||
clear_saved_scope = relationship_reason_involved_character
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = ep3_laamp_flavor_oltner.0001.c.failure
|
||||
send_interface_toast = {
|
||||
title = ep3_laamp_flavor_oltner.0001.c.failure
|
||||
left_icon = scope:entourage_to_marry_2
|
||||
right_icon = scope:marriage_material
|
||||
scope:entourage_to_marry_2 = {
|
||||
add_stress = medium_stress_gain
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = disappointed_opinion
|
||||
opinion = -30
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = {
|
||||
base = 10
|
||||
|
||||
modifier = {
|
||||
factor = 0
|
||||
has_trait = generous
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Ignore your follower
|
||||
name = ep3_laamp_flavor_oltner.0001.d
|
||||
stress_impact = {
|
||||
compassionate = medium_stress_impact_gain
|
||||
generous = medium_stress_impact_gain
|
||||
callous = minor_stress_impact_loss
|
||||
sadistic = minor_stress_impact_loss
|
||||
chaste = minor_stress_impact_loss
|
||||
shy = minor_stress_impact_loss
|
||||
}
|
||||
scope:entourage_to_marry_2 = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = heartbroken_opinion
|
||||
opinion = -30
|
||||
}
|
||||
}
|
||||
ai_chance = {
|
||||
base = 10
|
||||
|
||||
modifier = {
|
||||
factor = 0
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = generous
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
23648
N3OW/events/dlc/ep3/ep3_laamp_flavour_ewan_events.txt
Normal file
23648
N3OW/events/dlc/ep3/ep3_laamp_flavour_ewan_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1157
N3OW/events/dlc/ep3/ep3_laamps_provisions.txt
Normal file
1157
N3OW/events/dlc/ep3/ep3_laamps_provisions.txt
Normal file
File diff suppressed because it is too large
Load diff
2280
N3OW/events/dlc/ep3/ep3_landless_admin_events.txt
Normal file
2280
N3OW/events/dlc/ep3/ep3_landless_admin_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2038
N3OW/events/dlc/ep3/ep3_powerful_families_8.txt
Normal file
2038
N3OW/events/dlc/ep3/ep3_powerful_families_8.txt
Normal file
File diff suppressed because it is too large
Load diff
521
N3OW/events/dlc/ep3/ep3_roman_restoration_events.txt
Normal file
521
N3OW/events/dlc/ep3/ep3_roman_restoration_events.txt
Normal file
|
|
@ -0,0 +1,521 @@
|
|||
namespace = ep3_roman_restoration
|
||||
|
||||
#######################################
|
||||
###
|
||||
### EP3 RESTORE ROME STORY CYCLE EVENTS
|
||||
### by Chad Uhl
|
||||
###
|
||||
### 0100 Justinian's Dream
|
||||
### 0101-0109 Rome Reformed Notifications
|
||||
### 0300-0590 Post-Restoration Difficulties
|
||||
###
|
||||
#######################################
|
||||
|
||||
# Justinian's Dream
|
||||
# Event fired on story cycle setup informing the player that they can form the roman empire
|
||||
ep3_roman_restoration.0001 = {
|
||||
type = character_event
|
||||
title = ep3_roman_restoration.0001.t
|
||||
desc = ep3_roman_restoration.0001.desc
|
||||
theme = emperor
|
||||
|
||||
override_background = {
|
||||
trigger = { capital_county = title:c_byzantion }
|
||||
reference = ep3_constantinople
|
||||
}
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = emotion_thinking_scepter
|
||||
}
|
||||
|
||||
trigger = {
|
||||
NOT = { has_global_variable = flag_restored_roman_empire }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ep3_roman_restoration.0001.a
|
||||
custom_tooltip = ep3_roman_restoration.0001.a.tt
|
||||
decision:restore_roman_empire_decision = {
|
||||
open_view_data = {
|
||||
view = decision_detail
|
||||
player = root
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Should I LARP or nah?
|
||||
ep3_roman_restoration.0100 = {
|
||||
type = character_event
|
||||
window = fullscreen_event
|
||||
title = ep3_roman_restoration.0100.t
|
||||
desc = ep3_roman_restoration.0100.desc
|
||||
theme = emperor
|
||||
override_background = { reference = ep3_fullscreen_restore_rome }
|
||||
|
||||
immediate = {
|
||||
save_scope_as = scoped_emperor
|
||||
}
|
||||
|
||||
option = { # LARP (Hard Mode)
|
||||
name = ep3_roman_restoration.0100.a
|
||||
custom_tooltip = ep3_roman_restoration.hard_mode
|
||||
custom_tooltip = ep3_roman_restoration.end_hard_mode
|
||||
custom_tooltip = ep3_roman_restoration.invasion_cb
|
||||
every_held_title = {
|
||||
limit = {
|
||||
is_head_of_faith = yes
|
||||
}
|
||||
root = {
|
||||
destroy_title = prev
|
||||
}
|
||||
}
|
||||
set_character_faith = faith:hellenic_pagan
|
||||
primary_title = { set_state_faith = faith:hellenic_pagan }
|
||||
every_held_title = {
|
||||
custom = custom.every_held_county
|
||||
title_tier = county
|
||||
set_county_faith = faith:hellenic_pagan
|
||||
}
|
||||
every_vassal = {
|
||||
custom = custom.every_vassal
|
||||
limit = {
|
||||
NOT = {
|
||||
any_held_title = {
|
||||
is_head_of_faith = yes # you cannot convert the Ecumenical Patriarch, sorry
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = may_choose_to_convert_hellenic_desc
|
||||
run_interaction = { # We use the same interaction as when creating a new faith to keep a consistent behaviour, since that is essentially what you're doing here
|
||||
interaction = ask_for_conversion_interaction
|
||||
actor = root
|
||||
recipient = this
|
||||
execute_threshold = accept
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = ep3_roman_restoration.household_gods_tenet
|
||||
set_global_variable = household_gods_tenet_unlocked
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = uses_custom_caesar_flavourization_tt
|
||||
set_variable = uses_custom_caesar_flavourization
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
any_owned_story = { type = ep3_story_cycle_restoring_rome }
|
||||
}
|
||||
random_owned_story = {
|
||||
type = ep3_story_cycle_restoring_rome
|
||||
set_variable = roman_empire_hard_mode
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Roleplay option (become Hellenic without Hard Mode)
|
||||
name = ep3_roman_restoration.0100.c
|
||||
custom_tooltip = ep3_roman_restoration.easy_mode
|
||||
every_held_title = {
|
||||
limit = {
|
||||
is_head_of_faith = yes
|
||||
}
|
||||
root = {
|
||||
destroy_title = prev
|
||||
}
|
||||
}
|
||||
set_character_faith = faith:hellenic_pagan
|
||||
primary_title = { set_state_faith = faith:hellenic_pagan }
|
||||
every_held_title = {
|
||||
custom = custom.every_held_county
|
||||
title_tier = county
|
||||
set_county_faith = faith:hellenic_pagan
|
||||
}
|
||||
every_vassal = {
|
||||
custom = custom.every_vassal
|
||||
limit = {
|
||||
NOT = {
|
||||
any_held_title = {
|
||||
is_head_of_faith = yes # you cannot convert the Ecumenical Patriarch, sorry
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = may_choose_to_convert_hellenic_desc
|
||||
run_interaction = { # We use the same interaction as when creating a new faith to keep a consistent behaviour, since that is essentially what you're doing here
|
||||
interaction = ask_for_conversion_interaction
|
||||
actor = root
|
||||
recipient = this
|
||||
execute_threshold = accept
|
||||
}
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = ep3_roman_restoration.household_gods_tenet
|
||||
set_global_variable = household_gods_tenet_unlocked
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = uses_custom_caesar_flavourization_tt
|
||||
set_variable = uses_custom_caesar_flavourization
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Easy Mode
|
||||
name = ep3_roman_restoration.0100.b
|
||||
custom_tooltip = ep3_roman_restoration.easy_mode
|
||||
}
|
||||
|
||||
after = {
|
||||
create_roman_empire_scripted_effect = yes
|
||||
set_nickname_effect = { NICKNAME = nick_the_glorious }
|
||||
# Send narrative fluff to other players (if any).
|
||||
every_player = {
|
||||
limit = { this != root }
|
||||
trigger_event = ep3_roman_restoration.0101
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Some chucklefuck restored Rome
|
||||
ep3_roman_restoration.0101 = {
|
||||
type = character_event
|
||||
window = fullscreen_event
|
||||
title = roman_restoration.0002.t
|
||||
desc = {
|
||||
desc = ep3_roman_restoration.0101.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { scope:scoped_emperor.primary_title.state_faith ?= faith:hellenic_pagan }
|
||||
desc = ep3_roman_restoration.0101.hellenic
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:scoped_emperor.primary_title.state_faith ?= faith:orthodox }
|
||||
desc = ep3_roman_restoration.0101.orthodox
|
||||
}
|
||||
desc = ep3_roman_restoration.0101.fallback
|
||||
}
|
||||
desc = ep3_roman_restoration.0101.outro
|
||||
}
|
||||
theme = emperor
|
||||
override_background = { reference = ep3_fullscreen_restore_rome }
|
||||
|
||||
immediate = {
|
||||
#Same-faith non-empire tier rulers are over-awed.
|
||||
if = {
|
||||
limit = { faith = scope:scoped_emperor.primary_title.state_faith }
|
||||
play_music_cue = "mx_cue_epic_sacral_moment"
|
||||
}
|
||||
#Otherwise, this is a tacit statement of imperial threat.
|
||||
else = { play_music_cue = "mx_cue_combat_2" }
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ep3_roman_restoration.0101.a
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#######################################
|
||||
### POST-ROME DIFFICULTIES
|
||||
|
||||
# Your inefficient governor messed up, causing mass loss in popular opinion. Can you fix it?
|
||||
ep3_roman_restoration.0300 = {
|
||||
type = character_event
|
||||
title = ep3_roman_restoration.0300.t
|
||||
desc = ep3_roman_restoration.0300.desc
|
||||
theme = emperor
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = anger
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:inefficient_governor
|
||||
animation = shock
|
||||
}
|
||||
|
||||
cooldown = { years = 20 }
|
||||
|
||||
immediate = {
|
||||
ordered_vassal = {
|
||||
limit = {
|
||||
is_governor = yes
|
||||
is_ai = yes
|
||||
}
|
||||
order_by = { # Mostly sort by governor efficiency
|
||||
value = governor_efficiency
|
||||
multiply = -10
|
||||
# Prefer governors with a larger realm size for more difficulty
|
||||
add = sub_realm_size
|
||||
}
|
||||
save_scope_as = inefficient_governor
|
||||
}
|
||||
custom_tooltip = ep3_roman_restoration.0300.efficiency
|
||||
}
|
||||
|
||||
option = { # Stewardship Challenge
|
||||
name = ep3_roman_restoration.0300.a
|
||||
duel = {
|
||||
skill = stewardship
|
||||
value = excellent_skill_level
|
||||
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = ep3_roman_restoration.0300.a.success
|
||||
left_icon = scope:inefficient_governor
|
||||
right_icon = scope:inefficient_governor.primary_title
|
||||
|
||||
scope:inefficient_governor = {
|
||||
every_sub_realm_county = {
|
||||
custom = ep3_roman_restoration.0300.every_sub_realm_county
|
||||
add_county_modifier = {
|
||||
modifier = restore_rome_recuperated_county_opinion_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_bad
|
||||
title = ep3_roman_restoration.0300.a.failure
|
||||
left_icon = scope:inefficient_governor
|
||||
right_icon = scope:inefficient_governor.primary_title
|
||||
|
||||
scope:inefficient_governor = {
|
||||
every_sub_realm_county = {
|
||||
custom = ep3_roman_restoration.0300.every_sub_realm_county
|
||||
add_county_modifier = {
|
||||
modifier = restore_rome_devastated_county_opinion_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Fire the Governor
|
||||
name = ep3_roman_restoration.0300.b
|
||||
change_influence = massive_influence_loss
|
||||
save_scope_as = actor
|
||||
scope:inefficient_governor = {
|
||||
save_scope_as = recipient
|
||||
primary_title = { save_scope_as = landed_title }
|
||||
}
|
||||
save_scope_value_as = {
|
||||
name = hook
|
||||
value = no
|
||||
}
|
||||
scope:inefficient_governor = {
|
||||
every_sub_realm_county = {
|
||||
custom = ep3_roman_restoration.0300.every_sub_realm_county
|
||||
add_county_modifier = {
|
||||
modifier = restore_rome_recuperated_county_opinion_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
force_step_down_landed_titles = yes
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Opt-Out
|
||||
name = ep3_roman_restoration.0300.c
|
||||
|
||||
scope:inefficient_governor = {
|
||||
every_sub_realm_county = {
|
||||
custom = ep3_roman_restoration.0300.every_sub_realm_county
|
||||
add_county_modifier = {
|
||||
modifier = restore_rome_lowered_county_opinion_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
base = medium_stress_impact_loss
|
||||
lazy = minor_stress_impact_loss
|
||||
diligent = medium_stress_impact_gain
|
||||
ambitious = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Every 10-30 years, a random kingdom will raid you
|
||||
ep3_roman_restoration.0500 = {
|
||||
type = character_event
|
||||
title = ep3_roman_restoration.0500.t
|
||||
desc = ep3_roman_restoration.0500.desc
|
||||
theme = emperor
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = emotion_thinking_scepter
|
||||
}
|
||||
|
||||
right_portrait = {
|
||||
character = scope:marshal
|
||||
animation = inspect_weapon
|
||||
}
|
||||
|
||||
lower_center_portrait = scope:target_kingdom
|
||||
|
||||
cooldown = { years = { 10 30 } }
|
||||
|
||||
trigger = {
|
||||
exists = cp:councillor_marshal
|
||||
any_neighboring_top_liege_realm_owner = {
|
||||
is_ai = yes
|
||||
is_at_war = no
|
||||
primary_title = { tier >= tier_kingdom }
|
||||
NOR = {
|
||||
is_allied_to = root
|
||||
any_truce_target = { this = root }
|
||||
has_relation_friend = root
|
||||
has_relation_lover = root
|
||||
}
|
||||
any_top_realm_border_county = {
|
||||
any_neighboring_county = {
|
||||
holder.top_liege = root
|
||||
NOT = {
|
||||
title_province = { has_province_modifier = recently_looted_modifier }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
cp:councillor_marshal = { save_scope_as = marshal }
|
||||
ordered_neighboring_top_liege_realm_owner = {
|
||||
limit = {
|
||||
is_ai = yes
|
||||
is_at_war = no
|
||||
primary_title = { tier >= tier_kingdom }
|
||||
any_top_realm_border_county = {
|
||||
any_neighboring_county = {
|
||||
holder.top_liege = root
|
||||
NOT = {
|
||||
title_province = { has_province_modifier = recently_looted_modifier }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
order_by = {
|
||||
value = 1
|
||||
add = { # inverted opinion since we're looking for ppl who hate you
|
||||
value = "opinion(root)"
|
||||
multiply = -1
|
||||
}
|
||||
if = {
|
||||
limit = { can_raid_trigger = yes }
|
||||
add = 50
|
||||
}
|
||||
}
|
||||
save_scope_as = target_kingdom
|
||||
}
|
||||
scope:target_kingdom = {
|
||||
random_top_realm_border_county = {
|
||||
limit = {
|
||||
any_neighboring_county = {
|
||||
holder.top_liege = root
|
||||
NOT = {
|
||||
title_province = { has_province_modifier = recently_looted_modifier }
|
||||
}
|
||||
}
|
||||
}
|
||||
random_neighboring_county = {
|
||||
limit = {
|
||||
holder.top_liege = root
|
||||
NOT = {
|
||||
title_province = { has_province_modifier = recently_looted_modifier }
|
||||
}
|
||||
}
|
||||
save_scope_as = target_county
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = {
|
||||
name = ep3_roman_restoration.0500.a
|
||||
}
|
||||
|
||||
after = {
|
||||
scope:target_kingdom = {
|
||||
start_war = {
|
||||
cb = ep3_roman_empire_border_war
|
||||
target = root
|
||||
target_title = scope:target_county
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Special Bubonic Plague Spawns - Commented out and disabled because this is not very fun
|
||||
#ep3_roman_restoration.0510 = {
|
||||
# hidden = yes
|
||||
#
|
||||
# immediate = {
|
||||
# random_realm_county = {
|
||||
# limit = { exists = holder }
|
||||
# holder = { save_scope_as = target_holder }
|
||||
# save_scope_as = infected_county
|
||||
# title_province = {
|
||||
# save_scope_as = target_province
|
||||
# create_epidemic_outbreak = {
|
||||
# type = bubonic_plague
|
||||
# intensity = major
|
||||
# save_scope_as = epidemic
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
# trigger_event = epidemic_events.1100
|
||||
# }
|
||||
#}
|
||||
|
||||
# Mongol Invasion Spawns
|
||||
ep3_roman_restoration.0520 = {
|
||||
scope = none
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
NOR = {
|
||||
has_global_variable = mongols_have_appeared
|
||||
any_player = {
|
||||
THIS = culture:mongol.culture_head
|
||||
realm_size >= 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
set_global_variable = {
|
||||
name = mongols_have_appeared
|
||||
value = yes
|
||||
}
|
||||
debug_log = "Mongols appeared!"
|
||||
debug_log_date = yes
|
||||
spawn_temujin_character_effect = yes
|
||||
scope:temujin = {
|
||||
save_scope_as = story_owner
|
||||
create_story = story_mongol_invasion
|
||||
}
|
||||
}
|
||||
}
|
||||
6578
N3OW/events/dlc/ep3/ep3_story_cycle_admin_eunuch_events.txt
Normal file
6578
N3OW/events/dlc/ep3/ep3_story_cycle_admin_eunuch_events.txt
Normal file
File diff suppressed because it is too large
Load diff
4234
N3OW/events/dlc/ep3/ep3_story_cycle_grand_ambitions_events.txt
Normal file
4234
N3OW/events/dlc/ep3/ep3_story_cycle_grand_ambitions_events.txt
Normal file
File diff suppressed because it is too large
Load diff
4688
N3OW/events/dlc/ep3/ep3_story_cycle_harrying_of_the_north_events.txt
Normal file
4688
N3OW/events/dlc/ep3/ep3_story_cycle_harrying_of_the_north_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2639
N3OW/events/dlc/ep3/ep3_story_cycle_violet_poet_events.txt
Normal file
2639
N3OW/events/dlc/ep3/ep3_story_cycle_violet_poet_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1429
N3OW/events/dlc/ep3/ep3_travel_events_3.txt
Normal file
1429
N3OW/events/dlc/ep3/ep3_travel_events_3.txt
Normal file
File diff suppressed because it is too large
Load diff
528
N3OW/events/dlc/ep3/ep3_travel_events_8.txt
Normal file
528
N3OW/events/dlc/ep3/ep3_travel_events_8.txt
Normal file
|
|
@ -0,0 +1,528 @@
|
|||
namespace = ep3_travel_events
|
||||
|
||||
##################################################
|
||||
# EP3 Travel Events
|
||||
# by James Beaumont
|
||||
#
|
||||
# 8000-8009 To Belong Somewhere
|
||||
|
||||
scripted_trigger ep3_travel_8000_valid_prince = {
|
||||
is_courtier_of = $PARENT$
|
||||
is_adult = yes
|
||||
age <= 25
|
||||
is_married = no
|
||||
could_marry_character_trigger = { CHARACTER = $CHILD$ }
|
||||
save_temporary_scope_as = temp_prospective_prince
|
||||
matching_gender_and_sexuality_trigger = {
|
||||
CHARACTER_1 = scope:temp_prospective_prince
|
||||
CHARACTER_2 = $CHILD$
|
||||
}
|
||||
trait_compatibility = {
|
||||
target = $CHILD$
|
||||
value >= medium_positive_trait_compatibility
|
||||
}
|
||||
}
|
||||
|
||||
scripted_effect ep3_travel_8000_a = {
|
||||
scope:prince_parent = { add_courtier = scope:romantic_child }
|
||||
marry_on_realm_law = {
|
||||
SPOUSE_1 = scope:prospective_prince
|
||||
SPOUSE_2 = scope:romantic_child
|
||||
}
|
||||
}
|
||||
|
||||
# To Belong Somewhere
|
||||
# Young adult child falls in love and wants to stop travelling with you
|
||||
ep3_travel_events.8000 = {
|
||||
type = character_event
|
||||
title = ep3_travel_events.8000.t
|
||||
desc = {
|
||||
desc = ep3_travel_events.8000.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:romantic_child = {
|
||||
ai_boldness >= medium_positive_ai_value
|
||||
}
|
||||
}
|
||||
desc = ep3_travel_events.8000.desc.mid2.bold_child
|
||||
}
|
||||
desc = ep3_travel_events.8000.desc.mid2.timid_child
|
||||
}
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_relation_rival = scope:romantic_child
|
||||
opinion = {
|
||||
target = scope:romantic_child
|
||||
value = low_negative_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = ep3_travel_events.8000.outro.dislikes_child
|
||||
}
|
||||
desc = ep3_travel_events.8000.outro
|
||||
}
|
||||
}
|
||||
theme = travel
|
||||
left_portrait = {
|
||||
character = root
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
has_trait = family_first
|
||||
has_trait = diligent
|
||||
has_trait = stubborn
|
||||
}
|
||||
}
|
||||
animation = anger
|
||||
}
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = gallant
|
||||
}
|
||||
}
|
||||
animation = wedding_happy_cry
|
||||
}
|
||||
animation = worry
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:romantic_child
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
ai_boldness >= medium_positive_ai_value
|
||||
}
|
||||
animation = beg
|
||||
}
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
ai_boldness < medium_positive_ai_value
|
||||
}
|
||||
animation = sadness
|
||||
}
|
||||
}
|
||||
lower_right_portrait = {
|
||||
character = scope:prospective_prince
|
||||
}
|
||||
cooldown = { years = 75 }
|
||||
trigger = {
|
||||
has_government = landless_adventurer_government
|
||||
is_available_travelling = yes
|
||||
is_location_valid_for_travel_event_on_land = yes
|
||||
root.location.county.holder = { save_temporary_scope_as = temp_prince_parent }
|
||||
any_child = {
|
||||
is_courtier_of = root
|
||||
is_adult = yes
|
||||
age <= 25 # An adult but still young
|
||||
save_temporary_scope_as = temp_child
|
||||
scope:temp_prince_parent = {
|
||||
any_child = {
|
||||
ep3_travel_8000_valid_prince = {
|
||||
PARENT = scope:temp_prince_parent
|
||||
CHILD = scope:temp_child
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
immediate = {
|
||||
save_scope_as = laamp
|
||||
location = {
|
||||
save_scope_as = location
|
||||
county.holder = { save_scope_as = prince_parent }
|
||||
}
|
||||
random_child = {
|
||||
limit = {
|
||||
is_courtier_of = root
|
||||
is_adult = yes
|
||||
age <= 25
|
||||
save_temporary_scope_as = temp_child
|
||||
scope:prince_parent = {
|
||||
any_child = {
|
||||
ep3_travel_8000_valid_prince = {
|
||||
PARENT = scope:prince_parent
|
||||
CHILD = scope:temp_child
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_as = romantic_child
|
||||
scope:prince_parent = {
|
||||
random_child = {
|
||||
limit = {
|
||||
ep3_travel_8000_valid_prince = {
|
||||
PARENT = scope:prince_parent
|
||||
CHILD = scope:romantic_child
|
||||
}
|
||||
}
|
||||
save_scope_as = prospective_prince
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:romantic_child = {
|
||||
set_relation_soulmate = {
|
||||
target = scope:prospective_prince
|
||||
reason = soulmate_laamp_adventure
|
||||
}
|
||||
}
|
||||
}
|
||||
# Goodbye Susan
|
||||
option = {
|
||||
name = ep3_travel_events.8000.a
|
||||
show_as_tooltip = {
|
||||
ep3_travel_8000_a = yes
|
||||
}
|
||||
hidden_effect = {
|
||||
scope:prince_parent = {
|
||||
trigger_event = {
|
||||
id = ep3_travel_events.8001
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:romantic_child = {
|
||||
progress_towards_friend_effect = {
|
||||
CHARACTER = root
|
||||
OPINION = 50
|
||||
REASON = friend_let_me_go
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
callous = minor_stress_impact_gain
|
||||
sadistic = minor_stress_impact_gain
|
||||
family_first = minor_stress_impact_gain
|
||||
diligent = minor_stress_impact_gain
|
||||
stubborn = minor_stress_impact_gain
|
||||
content = minor_stress_impact_loss
|
||||
compassionate = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = -1.5
|
||||
ai_compassion = 1.5
|
||||
}
|
||||
}
|
||||
}
|
||||
# Convince the young prince/princess to come with you!
|
||||
option = {
|
||||
name = ep3_travel_events.8000.b
|
||||
trigger = {
|
||||
scope:prince_parent = { is_ai = yes }
|
||||
has_trait = eccentric
|
||||
}
|
||||
add_courtier = scope:prospective_prince
|
||||
marry_spouse_1_dominant = {
|
||||
SPOUSE_1 = scope:romantic_child
|
||||
SPOUSE_2 = scope:prospective_prince
|
||||
}
|
||||
scope:prince_parent = {
|
||||
progress_towards_rival_effect = {
|
||||
CHARACTER = root
|
||||
OPINION = -50
|
||||
REASON = rival_laamp_stole_my_child
|
||||
}
|
||||
}
|
||||
scope:romantic_child = {
|
||||
progress_towards_friend_effect = {
|
||||
CHARACTER = root
|
||||
OPINION = 50
|
||||
REASON = friend_let_me_go
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
content = minor_stress_impact_gain
|
||||
honest = minor_stress_impact_gain
|
||||
gallant = minor_stress_impact_gain
|
||||
compassionate = minor_stress_impact_loss
|
||||
deceitful = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = -1.5
|
||||
ai_vengefulness = 1.5
|
||||
ai_compassion = 1.5
|
||||
}
|
||||
}
|
||||
}
|
||||
# Come along now child
|
||||
option = {
|
||||
name = ep3_travel_events.8000.c
|
||||
if = {
|
||||
limit = {
|
||||
scope:romantic_child = {
|
||||
ai_boldness >= medium_positive_ai_value
|
||||
}
|
||||
}
|
||||
reverse_add_opinion = {
|
||||
target = scope:romantic_child
|
||||
modifier = hate_opinion
|
||||
opinion = -25
|
||||
}
|
||||
}
|
||||
else = {
|
||||
reverse_add_opinion = {
|
||||
target = scope:romantic_child
|
||||
modifier = disappointed_opinion
|
||||
opinion = -10
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
content = minor_stress_impact_gain
|
||||
honest = minor_stress_impact_gain
|
||||
gallant = minor_stress_impact_gain
|
||||
compassionate = minor_stress_impact_loss
|
||||
deceitful = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = 1.5
|
||||
ai_vengefulness = 1.5
|
||||
ai_compassion = -1.5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Roots of My Own
|
||||
# Holder response
|
||||
ep3_travel_events.8001 = {
|
||||
type = character_event
|
||||
title = ep3_travel_events.8001.t
|
||||
desc = ep3_travel_events.8001.desc
|
||||
theme = family
|
||||
left_portrait = {
|
||||
character = root
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = callous
|
||||
has_trait = sadistic
|
||||
has_trait = family_first
|
||||
has_trait = diligent
|
||||
has_trait = stubborn
|
||||
}
|
||||
}
|
||||
animation = anger
|
||||
}
|
||||
triggered_animation = {
|
||||
trigger = {
|
||||
OR = {
|
||||
has_trait = compassionate
|
||||
has_trait = gallant
|
||||
}
|
||||
}
|
||||
animation = wedding_happy_cry
|
||||
}
|
||||
animation = worry
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:prospective_prince
|
||||
animation = beg
|
||||
}
|
||||
lower_right_portrait = {
|
||||
character = scope:romantic_child
|
||||
}
|
||||
immediate = {
|
||||
show_as_tooltip = {
|
||||
scope:romantic_child = {
|
||||
set_relation_soulmate = {
|
||||
target = scope:prospective_prince
|
||||
reason = soulmate_laamp_adventure
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# A fine match!
|
||||
option = {
|
||||
name = ep3_travel_events.8001.a
|
||||
ep3_travel_8000_a = yes
|
||||
stress_impact = {
|
||||
callous = minor_stress_impact_gain
|
||||
sadistic = minor_stress_impact_gain
|
||||
family_first = minor_stress_impact_gain
|
||||
diligent = minor_stress_impact_gain
|
||||
stubborn = minor_stress_impact_gain
|
||||
content = minor_stress_impact_loss
|
||||
compassionate = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = -1.5
|
||||
ai_compassion = 1.5
|
||||
}
|
||||
}
|
||||
}
|
||||
# I forbid this wedding!
|
||||
option = {
|
||||
name = ep3_travel_events.8001.b
|
||||
if = {
|
||||
limit = {
|
||||
scope:prospective_prince = {
|
||||
ai_boldness >= medium_positive_ai_value
|
||||
}
|
||||
}
|
||||
reverse_add_opinion = {
|
||||
target = scope:prospective_prince
|
||||
modifier = hate_opinion
|
||||
opinion = -25
|
||||
}
|
||||
}
|
||||
else = {
|
||||
reverse_add_opinion = {
|
||||
target = scope:prospective_prince
|
||||
modifier = disappointed_opinion
|
||||
opinion = -10
|
||||
}
|
||||
}
|
||||
hidden_effect = {
|
||||
scope:laamp = {
|
||||
trigger_event = {
|
||||
id = ep3_travel_events.8002
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
content = minor_stress_impact_gain
|
||||
honest = minor_stress_impact_gain
|
||||
gallant = minor_stress_impact_gain
|
||||
compassionate = minor_stress_impact_loss
|
||||
deceitful = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = 1.5
|
||||
ai_vengefulness = 1.5
|
||||
ai_compassion = -1.5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# In Another Time
|
||||
# Laamp notification
|
||||
ep3_travel_events.8002 = {
|
||||
type = character_event
|
||||
title = ep3_travel_events.8002.t
|
||||
desc = ep3_travel_events.8002.desc
|
||||
theme = family
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = disappointed
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:romantic_child
|
||||
animation = grief
|
||||
}
|
||||
# I'm sorry my dear
|
||||
option = {
|
||||
name = ep3_travel_events.8002.a
|
||||
reverse_add_opinion = {
|
||||
target = scope:romantic_child
|
||||
modifier = love_opinion
|
||||
opinion = 25
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Won't Be Missed
|
||||
# Do some graverobbing?
|
||||
ep3_travel_events.8010 = {
|
||||
type = character_event
|
||||
title = ep3_travel_events.8010.t
|
||||
desc = ep3_travel_events.8010.desc
|
||||
theme = travel
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = survey
|
||||
}
|
||||
override_background = { reference = ce1_catacombs }
|
||||
cooldown = { years = 15 }
|
||||
trigger = {
|
||||
is_landless_ruler = yes
|
||||
is_available_travelling = yes
|
||||
location = { has_holding = no }
|
||||
is_location_valid_for_travel_event_on_land = yes
|
||||
}
|
||||
immediate = {
|
||||
location = { save_scope_as = location }
|
||||
}
|
||||
# Oh boy, goodies!
|
||||
option = {
|
||||
name = ep3_travel_events.8010.a
|
||||
duel = {
|
||||
skill = intrigue
|
||||
value = medium_skill_rating
|
||||
25 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
min = 5
|
||||
send_interface_toast = {
|
||||
title = ep3_travel_events.8010.a.win
|
||||
left_icon = root
|
||||
add_gold = medium_gold_value
|
||||
}
|
||||
}
|
||||
25 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
min = 5
|
||||
send_interface_toast = {
|
||||
title = ep3_travel_events.8010.a.lose
|
||||
left_icon = root
|
||||
reverse_add_opinion = {
|
||||
target = location.county.holder
|
||||
modifier = graverobber_opinion
|
||||
years = 20
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stress_impact = {
|
||||
eccentric = medium_stress_impact_gain
|
||||
lazy = minor_stress_impact_gain
|
||||
ambitious = minor_stress_impact_loss
|
||||
}
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_boldness = 1.5
|
||||
ai_rationality = 1.5
|
||||
ai_greed = 1.5
|
||||
}
|
||||
}
|
||||
}
|
||||
# I'm not risking that!
|
||||
option = {
|
||||
name = ep3_travel_events.8010.b
|
||||
stress_impact = {
|
||||
content = minor_stress_impact_loss
|
||||
ambitious = minor_stress_impact_gain
|
||||
}
|
||||
add_piety = miniscule_piety_gain
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_boldness = -1.5
|
||||
ai_rationality = -1.5
|
||||
ai_greed = -1.5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4301
N3OW/events/dlc/ep3/ep3_travel_option_events.txt
Normal file
4301
N3OW/events/dlc/ep3/ep3_travel_option_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2616
N3OW/events/dlc/ep3/ep3_wedding_events.txt
Normal file
2616
N3OW/events/dlc/ep3/ep3_wedding_events.txt
Normal file
File diff suppressed because it is too large
Load diff
267
N3OW/events/dlc/ep3/ep3_yearly_1.txt
Normal file
267
N3OW/events/dlc/ep3/ep3_yearly_1.txt
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
namespace = ep3_yearly
|
||||
|
||||
scripted_effect transfer_warhorse_story_effect = {
|
||||
$OWNER$ = {
|
||||
random_owned_story = {
|
||||
type = story_cycle_martial_lifestyle_warhorse
|
||||
make_story_owner = $TARGET$
|
||||
}
|
||||
}
|
||||
$TARGET$ = {
|
||||
add_character_modifier = { modifier = horse_story_modifier }
|
||||
add_character_flag = had_warhorse_story
|
||||
set_variable = {
|
||||
name = warhorse_modifier_level
|
||||
value = $OWNER$.var:warhorse_modifier_level
|
||||
}
|
||||
}
|
||||
$OWNER$ = {
|
||||
hidden_effect = {
|
||||
remove_character_modifier = horse_story_modifier
|
||||
remove_variable = warhorse_modifier_level
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Jealous of another governor with the Warhorse event chain
|
||||
ep3_yearly.1010 = {
|
||||
type = character_event
|
||||
title = ep3_yearly.1010.t
|
||||
desc = {
|
||||
desc = ep3_yearly.1010.intro
|
||||
triggered_desc = {
|
||||
trigger = { culture = culture:greek }
|
||||
desc = ep3_yearly.1010.greek_flavor
|
||||
}
|
||||
desc = ep3_yearly.1010.outro
|
||||
}
|
||||
theme = administrative
|
||||
override_background = { reference = courtyard }
|
||||
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = thinking
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:horse_owner
|
||||
animation = jockey_walk
|
||||
camera = camera_event_horse_right
|
||||
}
|
||||
lower_left_portrait = cp:councillor_spymaster
|
||||
|
||||
trigger = {
|
||||
is_ai = no
|
||||
is_governor = yes
|
||||
NOT = { owns_story_of_type = story_cycle_martial_lifestyle_warhorse }
|
||||
liege = {
|
||||
any_vassal = {
|
||||
this != root
|
||||
is_available_ai_adult = yes
|
||||
is_governor = yes
|
||||
any_owned_story = {
|
||||
type = story_cycle_martial_lifestyle_warhorse
|
||||
exists = var:horse_gender
|
||||
exists = var:story_cycle_horse_name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
liege = {
|
||||
random_vassal = {
|
||||
limit = {
|
||||
this != root
|
||||
is_available_ai_adult = yes
|
||||
owns_story_of_type = story_cycle_martial_lifestyle_warhorse
|
||||
}
|
||||
save_scope_as = horse_owner
|
||||
}
|
||||
}
|
||||
cp:councillor_spymaster ?= { save_scope_as = spymaster }
|
||||
}
|
||||
|
||||
option = { # Offer to buy the horse
|
||||
name = ep3_yearly.1010.a
|
||||
show_as_unavailable = {
|
||||
gold >= 75
|
||||
}
|
||||
random_list = {
|
||||
50 = {
|
||||
show_chance = no
|
||||
desc = ep3_yearly.1010.a.tt.success
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = ep3_yearly.1010.a.tt.success
|
||||
left_icon = root
|
||||
right_icon = scope:horse_owner
|
||||
remove_short_term_gold = major_gold_value
|
||||
custom_tooltip = ep3_yearly.1010.tt
|
||||
transfer_warhorse_story_effect = {
|
||||
OWNER = scope:horse_owner
|
||||
TARGET = root
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
show_chance = no
|
||||
desc = ep3_yearly.1010.a.tt.failure
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_bad
|
||||
title = ep3_yearly.1010.a.tt.failure
|
||||
left_icon = root
|
||||
right_icon = scope:horse_owner
|
||||
change_influence = medium_influence_loss
|
||||
add_prestige = medium_prestige_loss
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Convince the governor that you deserve the horse because of your influence
|
||||
name = ep3_yearly.1010.b
|
||||
change_influence = massive_influence_loss
|
||||
if = {
|
||||
limit = { influence_level >= 3 }
|
||||
transfer_warhorse_story_effect = {
|
||||
OWNER = scope:horse_owner
|
||||
TARGET = root
|
||||
}
|
||||
}
|
||||
else = {
|
||||
duel = {
|
||||
skill = diplomacy
|
||||
value = high_skill_rating
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = ep3_yearly.1010.b.tt.success
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = ep3_yearly.1010.b.tt.success
|
||||
left_icon = root
|
||||
right_icon = scope:horse_owner
|
||||
custom_tooltip = ep3_yearly.1010.tt
|
||||
transfer_warhorse_story_effect = {
|
||||
OWNER = scope:horse_owner
|
||||
TARGET = root
|
||||
}
|
||||
add_diplomacy_lifestyle_xp = medium_lifestyle_xp
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = ep3_yearly.1010.b.tt.failure
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_bad
|
||||
title = ep3_yearly.1010.b.tt.failure
|
||||
left_icon = root
|
||||
right_icon = scope:horse_owner
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Ask your spymaster to steal the horse for you
|
||||
trigger = { exists = cp:councillor_spymaster }
|
||||
name = ep3_yearly.1010.c
|
||||
flavor = ep3_yearly.1010.c.flavor
|
||||
cp:councillor_spymaster = {
|
||||
duel = {
|
||||
skill = intrigue
|
||||
value = scope:horse_owner.intrigue
|
||||
40 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = 3.5
|
||||
min = -49
|
||||
}
|
||||
desc = ep3_yearly.1010.c.tt.success
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = ep3_yearly.1010.c.tt.success
|
||||
left_icon = root
|
||||
right_icon = scope:horse_owner
|
||||
custom_tooltip = ep3_yearly.1010.tt
|
||||
transfer_warhorse_story_effect = {
|
||||
OWNER = scope:horse_owner
|
||||
TARGET = root
|
||||
}
|
||||
add_intrigue_lifestyle_xp = medium_lifestyle_xp
|
||||
}
|
||||
}
|
||||
}
|
||||
60 = {
|
||||
compare_modifier = {
|
||||
value = scope:duel_value
|
||||
multiplier = -3.5
|
||||
min = -49
|
||||
}
|
||||
desc = ep3_yearly.1010.c.tt.failure
|
||||
root = {
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_bad
|
||||
title = ep3_yearly.1010.c.tt.failure
|
||||
left_icon = root
|
||||
right_icon = scope:horse_owner
|
||||
progress_towards_rival_effect = {
|
||||
REASON = rival_lands_stolen
|
||||
CHARACTER = scope:horse_owner
|
||||
OPINION = default_rival_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # If I can't have it, neither can you
|
||||
name = ep3_yearly.1010.d
|
||||
flavor = ep3_yearly.1010.d.tt
|
||||
random_list = {
|
||||
50 = {
|
||||
desc = ep3_yearly.1010.d.success
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = ep3_yearly.1010.d.success
|
||||
custom_tooltip = ep3_yearly.1010.d.dead_horse
|
||||
scope:horse_owner = {
|
||||
random_owned_story = {
|
||||
type = story_cycle_martial_lifestyle_warhorse
|
||||
end_story = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50 = {
|
||||
desc = ep3_yearly.1010.d.failure
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_bad
|
||||
title = ep3_yearly.1010.d.failure
|
||||
custom_tooltip = ep3_yearly.1010.d.dead_horse
|
||||
scope:horse_owner = {
|
||||
random_owned_story = {
|
||||
type = story_cycle_martial_lifestyle_warhorse
|
||||
end_story = yes
|
||||
}
|
||||
}
|
||||
progress_towards_rival_effect = {
|
||||
REASON = rival_lands_stolen
|
||||
CHARACTER = scope:horse_owner
|
||||
OPINION = default_rival_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
9
N3OW/events/dlc/ep3/ep3_yearly_3.txt
Normal file
9
N3OW/events/dlc/ep3/ep3_yearly_3.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
namespace = ep3_yearly
|
||||
|
||||
ep3_yearly.3000 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
ep3_ai_castration_effect = yes
|
||||
}
|
||||
}
|
||||
2222
N3OW/events/dlc/fp1/fp1_jomsvikings_events.txt
Normal file
2222
N3OW/events/dlc/fp1/fp1_jomsvikings_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1423
N3OW/events/dlc/fp1/fp1_major_decision_events.txt
Normal file
1423
N3OW/events/dlc/fp1/fp1_major_decision_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2726
N3OW/events/dlc/fp1/fp1_other_decision_events.txt
Normal file
2726
N3OW/events/dlc/fp1/fp1_other_decision_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1113
N3OW/events/dlc/fp1/fp1_scandinavian_adventurer_events.txt
Normal file
1113
N3OW/events/dlc/fp1/fp1_scandinavian_adventurer_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1426
N3OW/events/dlc/fp1/fp1_shieldmaiden_events.txt
Normal file
1426
N3OW/events/dlc/fp1/fp1_shieldmaiden_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2494
N3OW/events/dlc/fp1/fp1_trade_events.txt
Normal file
2494
N3OW/events/dlc/fp1/fp1_trade_events.txt
Normal file
File diff suppressed because it is too large
Load diff
971
N3OW/events/dlc/fp1/fp1_trial_by_combat_events.txt
Normal file
971
N3OW/events/dlc/fp1/fp1_trial_by_combat_events.txt
Normal file
|
|
@ -0,0 +1,971 @@
|
|||
namespace = fp1_tbc
|
||||
|
||||
##################################################
|
||||
# #Scope:actor-side Events
|
||||
# 0001 - 0040 Bout Maintenance & Setup
|
||||
# 0041 - 0060 Scope:actor Results
|
||||
#
|
||||
# #Scope:recipient-side Events
|
||||
# 0101 - 0110 Champion Selection
|
||||
# 0111 - 0130 Scope:recipient Results
|
||||
##################################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##################################################
|
||||
# SCOPE:ACTOR-SIDE EVENTS
|
||||
|
||||
##################################################
|
||||
# Bout Maintenance & Setup
|
||||
# by Ewan Cowhig Croft
|
||||
# 0001 - 0040
|
||||
##################################################
|
||||
|
||||
# Everything is set for the bout to begin!
|
||||
fp1_tbc.0001 = {
|
||||
type = character_event
|
||||
window = duel_event
|
||||
title = fp1_tbc.0001.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0001.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0001.desc.recipient_fighting
|
||||
}
|
||||
desc = fp1_tbc.0001.desc.recipient_has_champion
|
||||
}
|
||||
desc = fp1_tbc.0001.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:actor
|
||||
scripted_animation = duel_wield_weapon
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:champion
|
||||
scripted_animation = duel_wield_weapon
|
||||
}
|
||||
override_background = { reference = terrain_scope }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# If, for any reason, scope:recipient has died or been imprisoned, then the bout is cancelled.
|
||||
scope:recipient = {
|
||||
is_alive = yes
|
||||
is_imprisoned = no
|
||||
}
|
||||
# Check that scope:actor is still in a valid state to fight.
|
||||
trial_by_combat_shown_and_not_invalid_trigger = yes
|
||||
# And scope:champion likewise.
|
||||
scope:champion = {
|
||||
OR = {
|
||||
this = scope:recipient
|
||||
eligible_knight_to_champion_trial_by_combat_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
on_trigger_fail = {
|
||||
# Inform both parties that the duel has invalidated.
|
||||
scope:actor = {
|
||||
send_interface_toast = {
|
||||
title = fp1_tbc.0001.trigger_failure.actor
|
||||
left_icon = scope:recipient
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
send_interface_toast = {
|
||||
title = fp1_tbc.0001.trigger_failure.recipient
|
||||
left_icon = scope:actor
|
||||
}
|
||||
}
|
||||
# Reset scope:actor's cooldowns against scope:recipient.
|
||||
scope:actor = {
|
||||
remove_interaction_cooldown = challenge_to_trial_by_combat_interaction
|
||||
remove_interaction_cooldown_against = {
|
||||
interaction = challenge_to_trial_by_combat_interaction
|
||||
target = scope:recipient
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_music_cue = "mx_cue_combat_stinger"
|
||||
# Nab scope:champion's location for terrain.
|
||||
scope:champion.location = {
|
||||
save_scope_as = background_terrain_scope
|
||||
# And scope:champion's location name for loc.
|
||||
barony = { save_scope_as = duel_location }
|
||||
}
|
||||
}
|
||||
|
||||
# Almost there.
|
||||
option = {
|
||||
name = fp1_tbc.0001.a
|
||||
|
||||
# Inform scope:actor that the bout will begin immediately.
|
||||
custom_tooltip = fp1_tbc.0001.a.tt
|
||||
# Configure the bout.
|
||||
## Tribals strip to the waist.
|
||||
single_combat_apply_default_shirtlessness_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
## Deadly fights.
|
||||
if = {
|
||||
limit = { scope:tbc_death = yes }
|
||||
configure_start_single_combat_effect = {
|
||||
SC_INITIATOR = scope:actor
|
||||
SC_ATTACKER = scope:actor
|
||||
SC_DEFENDER = scope:champion
|
||||
FATALITY = always
|
||||
FIXED = no
|
||||
LOCALE = terrain_scope
|
||||
OUTPUT_EVENT = fp1_tbc.0011
|
||||
INVALIDATION_EVENT = fp1_tbc.0021
|
||||
}
|
||||
}
|
||||
## Non-deadly fights.
|
||||
else = {
|
||||
configure_start_single_combat_effect = {
|
||||
SC_INITIATOR = scope:actor
|
||||
SC_ATTACKER = scope:actor
|
||||
SC_DEFENDER = scope:champion
|
||||
FATALITY = no
|
||||
FIXED = no
|
||||
LOCALE = terrain_scope
|
||||
OUTPUT_EVENT = fp1_tbc.0011
|
||||
INVALIDATION_EVENT = fp1_tbc.0021
|
||||
}
|
||||
}
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scripted_effect fp1_tbc_non_lethal_results_effect = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:recipient = { is_alive = yes }
|
||||
}
|
||||
# TbC ends in cash settlement.
|
||||
if = {
|
||||
limit = { scope:tbc_gold = yes }
|
||||
fp1_tbc_gold_effect = {
|
||||
TBC_VICTOR = scope:actor
|
||||
TBC_LOSER = scope:recipient
|
||||
}
|
||||
}
|
||||
# TbC ends in favour settlement.
|
||||
if = {
|
||||
limit = { scope:tbc_weak_hook = yes }
|
||||
fp1_tbc_hook_effect = {
|
||||
TBC_VICTOR = scope:actor
|
||||
TBC_LOSER = scope:recipient
|
||||
}
|
||||
}
|
||||
# TbC ends in mandated humiliation.
|
||||
if = {
|
||||
limit = { scope:tbc_humiliation = yes }
|
||||
fp1_tbc_humiliation_effect = {
|
||||
TBC_LOSER = scope:recipient
|
||||
TBC_VICTOR = scope:actor
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scripted_effect fp1_tbc_consume_imprisonment_reasons_effect = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = { is_alive = yes }
|
||||
scope:recipient = { is_alive = yes }
|
||||
}
|
||||
scope:actor = { consume_imprisonment_reasons = scope:recipient }
|
||||
}
|
||||
}
|
||||
|
||||
# Bout has ended, inform affected parties.
|
||||
fp1_tbc.0011 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
# If any clothes were stripped, put 'em back on.
|
||||
single_combat_clean_shirtlessness_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
# Did scope:actor win?
|
||||
if = {
|
||||
limit = { scope:sc_victor = scope:actor }
|
||||
# Apply effects; we do this separately so that there's not a weird day's delay.
|
||||
fp1_tbc_non_lethal_results_effect = yes
|
||||
# And send out the ending events.
|
||||
scope:actor = {
|
||||
trigger_event = {
|
||||
id = fp1_tbc.0041
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
trigger_event = {
|
||||
id = fp1_tbc.0121
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
# Or was it scope:champion?
|
||||
else_if = {
|
||||
limit = { scope:sc_victor = scope:champion }
|
||||
# If scope:actor is still alive, they gain stress.
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = { is_alive = yes }
|
||||
}
|
||||
fp1_tbc_actor_defeated_effect = {
|
||||
TBC_LOSER = scope:actor
|
||||
TBC_VICTOR = scope:recipient
|
||||
}
|
||||
}
|
||||
# And send out the ending events.
|
||||
scope:actor = {
|
||||
trigger_event = {
|
||||
id = fp1_tbc.0051
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
trigger_event = {
|
||||
id = fp1_tbc.0111
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
# If both parties are alive, and aren't good losers/don't have good reasons to forgive each other, then we mark them as potential rivals.
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = {
|
||||
is_alive = yes
|
||||
NOR = {
|
||||
has_trait = humble
|
||||
has_trait = content
|
||||
has_trait = just
|
||||
has_trait = forgiving
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
is_alive = yes
|
||||
NOR = {
|
||||
has_trait = humble
|
||||
has_trait = content
|
||||
has_trait = just
|
||||
has_trait = forgiving
|
||||
}
|
||||
can_set_relation_potential_rival_trigger = { CHARACTER = scope:actor }
|
||||
}
|
||||
}
|
||||
scope:actor = { set_relation_potential_rival = scope:recipient }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Bout has invalidated, inform affected parties.
|
||||
fp1_tbc.0021 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
# Put your shirts back on.
|
||||
single_combat_clean_shirtlessness_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:recipient
|
||||
}
|
||||
# Inform both parties that the duel has invalidated.
|
||||
scope:actor = {
|
||||
send_interface_toast = {
|
||||
title = fp1_tbc.0021.trigger_failure.actor
|
||||
left_icon = scope:recipient
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
send_interface_toast = {
|
||||
title = fp1_tbc.0021.trigger_failure.recipient
|
||||
left_icon = scope:actor
|
||||
}
|
||||
}
|
||||
# Reset scope:actor's cooldowns against scope:recipient.
|
||||
scope:actor = {
|
||||
remove_interaction_cooldown = challenge_to_trial_by_combat_interaction
|
||||
remove_interaction_cooldown_against = {
|
||||
interaction = challenge_to_trial_by_combat_interaction
|
||||
target = scope:recipient
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Scope:recipient has declined.
|
||||
fp1_tbc.0031 = {
|
||||
type = letter_event
|
||||
opening = fp1_tbc.0031.opening
|
||||
desc = fp1_tbc.0031.desc
|
||||
sender = scope:recipient
|
||||
|
||||
option = { name = fp1_tbc.0031.a }
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Scope:actor Results
|
||||
# by Ewan Cowhig Croft
|
||||
# 0041 - 0060
|
||||
##################################################
|
||||
|
||||
# Scope:actor has won the bout.
|
||||
fp1_tbc.0041 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0041.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0041.desc.intro
|
||||
# Scope:champion died in the fighting; no need to loc for a separate scope:champion, as they can't fight to the death.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:champion = { is_alive = no }
|
||||
}
|
||||
desc = fp1_tbc.0041.desc.opponent_died
|
||||
}
|
||||
# Scope:champion is still alive.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:champion = { is_alive = yes}
|
||||
}
|
||||
desc = {
|
||||
first_valid = {
|
||||
# Scope:recipient fought for themselves.
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0041.desc.opponent_lives.recipient_fighting
|
||||
}
|
||||
# Scope:recipient had a designated champion instead.
|
||||
desc = fp1_tbc.0041.desc.opponent_lives.recipient_has_champion
|
||||
}
|
||||
}
|
||||
}
|
||||
# Reward, if anything.
|
||||
first_valid = {
|
||||
# Gold.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_gold = yes }
|
||||
desc = fp1_tbc.0041.desc.reward.gold
|
||||
}
|
||||
# Weak hook.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_weak_hook = yes }
|
||||
desc = fp1_tbc.0041.desc.reward.weak_hook
|
||||
}
|
||||
# Humiliation.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_humiliation = yes }
|
||||
desc = fp1_tbc.0041.desc.reward.humiliation
|
||||
}
|
||||
# No outcome for death, since that's handled more succinctly above.
|
||||
}
|
||||
desc = fp1_tbc.0041.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:actor
|
||||
animation = personality_bold
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:recipient
|
||||
animation = shock
|
||||
}
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# Juuuust need to double-check that they're actually alive.
|
||||
is_alive = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Show duel results from the player's POV.
|
||||
show_as_tooltip = { fp1_tbc_non_lethal_results_effect = yes }
|
||||
# Sadly, we have to apply some effects here instead of in the initial output event in order to not break tooltips.
|
||||
single_combat_have_slain_kin_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
fp1_tbc_consume_imprisonment_reasons_effect = yes
|
||||
}
|
||||
|
||||
# The bout closes.
|
||||
option = {
|
||||
name = fp1_tbc.0041.a
|
||||
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Scope:actor has lost the bout.
|
||||
fp1_tbc.0051 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0051.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0051.desc.intro
|
||||
# Scope:actor is still alive (alternatives not included because, well...).
|
||||
first_valid = {
|
||||
# Scope:recipient fought for themselves.
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0051.desc.opponent_lives.recipient_fighting
|
||||
}
|
||||
# Scope:recipient had a designated champion instead.
|
||||
desc = fp1_tbc.0051.desc.opponent_lives.recipient_has_champion
|
||||
}
|
||||
desc = fp1_tbc.0051.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:actor
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:recipient
|
||||
animation = personality_bold
|
||||
}
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# Juuuust need to double-check that they're actually alive.
|
||||
is_alive = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Show duel results from the player's POV.
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = { is_alive = yes }
|
||||
}
|
||||
fp1_tbc_actor_defeated_effect = {
|
||||
TBC_LOSER = scope:actor
|
||||
TBC_VICTOR = scope:recipient
|
||||
}
|
||||
}
|
||||
show_as_tooltip = {
|
||||
fp1_tbc_consume_imprisonment_reasons_effect = yes
|
||||
single_combat_have_slain_kin_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# The bout closes.
|
||||
option = {
|
||||
name = fp1_tbc.0051.a
|
||||
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# SCOPE:RECIPIENT-SIDE EVENTS
|
||||
|
||||
##################################################
|
||||
# Champion Selection
|
||||
# by Ewan Cowhig Croft
|
||||
# 0101 - 0110
|
||||
##################################################
|
||||
|
||||
scripted_trigger fp1_tbc_knights_with_high_opinion_filter_trigger = {
|
||||
# Has a ludicrously high opinion of scope:recipient.
|
||||
opinion = {
|
||||
target = scope:recipient
|
||||
value >= 95
|
||||
}
|
||||
# And isn't one of the other knights presented.
|
||||
NOR = {
|
||||
AND = {
|
||||
exists = scope:knight_best
|
||||
this = scope:knight_best
|
||||
}
|
||||
AND = {
|
||||
exists = scope:knight_exotic
|
||||
this = scope:knight_exotic
|
||||
}
|
||||
AND = {
|
||||
exists = scope:knight_alternative
|
||||
this = scope:knight_alternative
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Scope:recipient has accepted a challenge to a Trial-by-Combat & must designate a champion due to ineligibility.
|
||||
fp1_tbc.0101 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0101.t
|
||||
desc = fp1_tbc.0101.desc
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:recipient
|
||||
animation = disbelief
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:knight_best
|
||||
animation = personality_honorable
|
||||
}
|
||||
lower_left_portrait = scope:knight_alternative
|
||||
lower_center_portrait = scope:knight_exotic
|
||||
lower_right_portrait = scope:knight_opinion
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_music_cue = "mx_cue_prison"
|
||||
|
||||
# First, grab all available knights that are suitable for the Trial-by-Combat.
|
||||
every_knight = {
|
||||
limit = {
|
||||
eligible_knight_to_champion_trial_by_combat_trigger = yes
|
||||
NOT = {
|
||||
has_court_position = champion_court_position #EP1: Pluck out the champion title holder
|
||||
}
|
||||
}
|
||||
add_to_list = fp1_tbc_valid_knights_list
|
||||
}
|
||||
# Then, sort through the list, selecting the knight with the highest prowess.
|
||||
ordered_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
order_by = prowess
|
||||
save_scope_as = knight_best
|
||||
}
|
||||
# After that, we grab the most interesting knight (looking at assorted prowess-ish pecial traits and factoring for those) who isn't scope:knight_best.
|
||||
ordered_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
limit = {
|
||||
NOT = {
|
||||
exists = scope:knight_best
|
||||
this = scope:knight_best
|
||||
}
|
||||
has_relevant_special_single_combat_trait_trigger = yes
|
||||
}
|
||||
order_by = sce_has_single_combat_special_traits_value
|
||||
save_scope_as = knight_exotic
|
||||
}
|
||||
#EP1: Fetch your champion if they exist
|
||||
if = {
|
||||
limit = {
|
||||
employs_court_position = champion_court_position
|
||||
any_court_position_holder = {
|
||||
type = champion_court_position
|
||||
is_physically_able_adult = yes # eligible_knight_to_champion_trial_by_combat_trigger checks for prowess, and its not mandatory that the champ has high value
|
||||
}
|
||||
}
|
||||
random_court_position_holder = {
|
||||
type = champion_court_position
|
||||
save_scope_as = knight_alternative #same scope name is used due to limited portrait logic
|
||||
}
|
||||
}
|
||||
# Then take the second highest-prowess knight who isn't scope:knight_best or scope:knight_exotic.
|
||||
# EP1: Only do this if the court position of champion isn't already filled
|
||||
ordered_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
limit = {
|
||||
NOR = {
|
||||
this = scope:knight_best
|
||||
AND = {
|
||||
exists = scope:knight_exotic
|
||||
this = scope:knight_exotic
|
||||
}
|
||||
}
|
||||
NOT = { employs_court_position = champion_court_position }
|
||||
}
|
||||
order_by = prowess
|
||||
save_scope_as = knight_alternative
|
||||
}
|
||||
# Next, if we've got any knight who isn't scope:knight_best, scope:knight_exotic, or scope:knight_alternative, and who would literally murder for you, we grab them.
|
||||
if = {
|
||||
limit = {
|
||||
any_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
fp1_tbc_knights_with_high_opinion_filter_trigger = yes
|
||||
}
|
||||
}
|
||||
# First, add them to a sub-list.
|
||||
every_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
limit = { fp1_tbc_knights_with_high_opinion_filter_trigger = yes }
|
||||
add_to_list = fp1_tbc_high_opinion_knights_list
|
||||
}
|
||||
# Next, try to pluck out knightly soulmates.
|
||||
if = {
|
||||
limit = {
|
||||
any_in_list = {
|
||||
list = fp1_tbc_high_opinion_knights_list
|
||||
any_relation = {
|
||||
type = soulmate
|
||||
this = scope:recipient
|
||||
}
|
||||
}
|
||||
}
|
||||
random_in_list = {
|
||||
list = fp1_tbc_high_opinion_knights_list
|
||||
limit = {
|
||||
any_relation = {
|
||||
type = soulmate
|
||||
this = scope:recipient
|
||||
}
|
||||
}
|
||||
save_scope_as = knight_opinion
|
||||
}
|
||||
}
|
||||
# Otherwise, order by prowess and select the best.
|
||||
else = {
|
||||
ordered_in_list = {
|
||||
list = fp1_tbc_high_opinion_knights_list
|
||||
order_by = prowess
|
||||
save_scope_as = knight_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
# Finally, if shenanigans have somehow deprived us of a scope:knight_best, then we want to generate someone to fill that minimum slot.
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:knight_best }
|
||||
}
|
||||
create_character = {
|
||||
gender_female_chance = root_soldier_female_chance
|
||||
location = scope:recipient.capital_province
|
||||
template = new_warrior_character
|
||||
faith = scope:recipient.capital_county.faith
|
||||
culture = scope:recipient.capital_county.culture
|
||||
save_scope_as = knight_best
|
||||
}
|
||||
add_courtier = scope:knight_best
|
||||
}
|
||||
}
|
||||
|
||||
# Take the most skilled knight.
|
||||
option = {
|
||||
name = fp1_tbc.0101.a
|
||||
|
||||
trigger = {
|
||||
exists = scope:knight_best
|
||||
}
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_best = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_tbc.0101.a.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_best
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = 0.75
|
||||
ai_boldness = -0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# EP1: Take your already designated champion
|
||||
option = {
|
||||
name = fp1_ep1_tbc.0101.e
|
||||
trigger = {
|
||||
exists = scope:knight_alternative
|
||||
scope:knight_alternative = { has_court_position = champion_court_position }
|
||||
}
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_alternative = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_ep1_tbc.0101.e.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_alternative
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = 0.75
|
||||
ai_boldness = -0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Take the next most skilled knight.
|
||||
option = {
|
||||
name = fp1_tbc.0101.b
|
||||
trigger = {
|
||||
exists = scope:knight_alternative
|
||||
scope:knight_alternative = { NOT = { has_court_position = champion_court_position } }
|
||||
}
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_alternative = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_tbc.0101.b.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_alternative
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
# There's no reason for the AI to ever take this option, we offer it entirely for players who dislike/wish to preserve their best knight.
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
|
||||
# Take the knight with the most special traits that *isn't* the most skilled knight.
|
||||
option = {
|
||||
name = fp1_tbc.0101.c
|
||||
trigger = { exists = scope:knight_opinion }
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_exotic = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_tbc.0101.c.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_exotic
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = 0.5
|
||||
ai_boldness = 0.25
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Take the knight who likes me the most.
|
||||
option = {
|
||||
name = fp1_tbc.0101.d
|
||||
trigger = { exists = scope:knight_opinion}
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_opinion = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_tbc.0101.d.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_opinion
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_sociability = 0.5
|
||||
ai_rationality = -0.75
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Then, we skip over to scope:actor to inform them what's up.
|
||||
after = {
|
||||
# Clean up any errant scopes we no longer need to avoid debug bloat.
|
||||
clear_saved_scope = knight_best
|
||||
if = {
|
||||
limit = { exists = scope:knight_exotic }
|
||||
clear_saved_scope = knight_exotic
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:knight_alternative }
|
||||
clear_saved_scope = knight_alternative
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:knight_opinion }
|
||||
clear_saved_scope = knight_opinion
|
||||
}
|
||||
# And transition.
|
||||
scope:actor = { trigger_event = fp1_tbc.0001 }
|
||||
}
|
||||
}
|
||||
|
||||
fp1_tbc.0102 = {
|
||||
desc = debug_main
|
||||
theme = prison
|
||||
|
||||
option = {
|
||||
name = interaction_debug_main
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Scope:recipient Results
|
||||
# by Ewan Cowhig Croft
|
||||
# 0111 - 0130
|
||||
##################################################
|
||||
|
||||
# Scope:recipient has won the bout.
|
||||
fp1_tbc.0111 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0111.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0111.desc.intro
|
||||
# Scope:actor died in the fighting; we don't account for
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:actor = { is_alive = no }
|
||||
}
|
||||
desc = fp1_tbc.0111.desc.opponent_died.recipient_fighting
|
||||
}
|
||||
# Scope:actor is still alive.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:actor = { is_alive = yes}
|
||||
}
|
||||
desc = {
|
||||
first_valid = {
|
||||
# Scope:recipient fought for themselves.
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0111.desc.opponent_lives.recipient_fighting
|
||||
}
|
||||
# Scope:recipient had a designated champion instead.
|
||||
desc = fp1_tbc.0111.desc.opponent_lives.recipient_has_champion
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = fp1_tbc.0111.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:recipient
|
||||
animation = personality_bold
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:actor
|
||||
animation = shock
|
||||
}
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# Juuuust need to double-check that they're actually alive.
|
||||
is_alive = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Show duel results from the player's POV.
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = { is_alive = yes }
|
||||
}
|
||||
fp1_tbc_actor_defeated_effect = {
|
||||
TBC_LOSER = scope:actor
|
||||
TBC_VICTOR = scope:recipient
|
||||
}
|
||||
}
|
||||
# Sadly, we have to apply some effects here instead of in the initial output event in order to not break tooltips.
|
||||
single_combat_have_slain_kin_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
fp1_tbc_consume_imprisonment_reasons_effect = yes
|
||||
}
|
||||
|
||||
# The bout closes.
|
||||
option = {
|
||||
name = fp1_tbc.0111.a
|
||||
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Scope:recipient has lost the bout.
|
||||
fp1_tbc.0121 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0121.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0121.desc.intro
|
||||
# We don't need to account for scope:champion dying in the fighting; if it was scope:recipient, then they're dead, and a separate champion cannot be challenged to a fight to the death.
|
||||
# Scope:champion is still alive.
|
||||
first_valid = {
|
||||
# Scope:recipient fought for themselves.
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0121.desc.champion_lives.recipient_fighting
|
||||
}
|
||||
# Scope:recipient had a designated champion instead.
|
||||
desc = fp1_tbc.0121.desc.champion_lives.recipient_has_champion
|
||||
}
|
||||
# Reward, if anything.
|
||||
first_valid = {
|
||||
# Gold.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_gold = yes }
|
||||
desc = fp1_tbc.0121.desc.reward.gold
|
||||
}
|
||||
# Weak hook.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_weak_hook = yes }
|
||||
desc = fp1_tbc.0121.desc.reward.weak_hook
|
||||
}
|
||||
# Humiliation.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_humiliation = yes }
|
||||
desc = fp1_tbc.0121.desc.reward.humiliation
|
||||
}
|
||||
# No outcome for death, since that's handled more succinctly above.
|
||||
}
|
||||
desc = fp1_tbc.0121.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:recipient
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:actor
|
||||
animation = personality_bold
|
||||
}
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# Juuuust need to double-check that they're actually alive.
|
||||
is_alive = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Show duel results from the player's POV.
|
||||
show_as_tooltip = { fp1_tbc_non_lethal_results_effect = yes }
|
||||
# Sadly, we have to apply some effects here instead of in the initial output event in order to not break tooltips.
|
||||
fp1_tbc_consume_imprisonment_reasons_effect = yes
|
||||
}
|
||||
|
||||
# The bout closes.
|
||||
option = {
|
||||
name = fp1_tbc.0121.a
|
||||
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
29
N3OW/events/dlc/fp1/fp1_varangian_adventure_events.txt
Normal file
29
N3OW/events/dlc/fp1/fp1_varangian_adventure_events.txt
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
namespace = fp1_varangian_adventures
|
||||
|
||||
##################################################
|
||||
# #Maintenance Events
|
||||
# 0001 - 0010 Boost attacker control after the war.
|
||||
##################################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##################################################
|
||||
# #Maintenance Events
|
||||
|
||||
##################################################
|
||||
# Boost Attacker Control
|
||||
# by Ewan Cowhig Croft
|
||||
# 0001 - 0010
|
||||
##################################################
|
||||
|
||||
# Boost control in newly conquered lands.
|
||||
fp1_varangian_adventures.0001 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
every_realm_county = { change_county_control = 50 }
|
||||
}
|
||||
}
|
||||
16884
N3OW/events/dlc/fp1/fp1_yearly_events.txt
Normal file
16884
N3OW/events/dlc/fp1/fp1_yearly_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2687
N3OW/events/dlc/fp1/fp1_yearly_events_oltner.txt
Normal file
2687
N3OW/events/dlc/fp1/fp1_yearly_events_oltner.txt
Normal file
File diff suppressed because it is too large
Load diff
552
N3OW/events/dlc/fp2/fp2_el_cid_events.txt
Normal file
552
N3OW/events/dlc/fp2/fp2_el_cid_events.txt
Normal file
|
|
@ -0,0 +1,552 @@
|
|||
namespace = fp2_struggle
|
||||
|
||||
######################################
|
||||
# EL CID'S BIZARRE ADVENTURE SYSTEM
|
||||
# By Hugo Cortell
|
||||
######################################
|
||||
fp2_struggle.2045 = {
|
||||
hidden = yes
|
||||
|
||||
trigger = {
|
||||
is_landless_adventurer = no
|
||||
}
|
||||
|
||||
immediate = {
|
||||
if = { # Startup changes (give the cid his full nickname when he starts adventuring)
|
||||
limit = { NOT = { has_character_flag = has_already_begun_travelling } }
|
||||
|
||||
remove_nickname = yes
|
||||
give_nickname = nick_the_cid_campeador
|
||||
add_character_flag = has_already_begun_travelling # Prevents yearly pulse from stacking up requests
|
||||
add_character_flag = blocked_from_leaving # Prevents el cid from vacationing in far away lands
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = { NOT = { has_character_flag = finished_el_cids_travels } } # In case several requests for the event are stacked up
|
||||
if = { # Being a guest is used as a boolean to check if the character is in an "evaluation" phase or already in a court. DO NOT USE THE GUEST SYSTEM FOR THIS.
|
||||
limit = {
|
||||
OR = {
|
||||
is_pool_guest = yes
|
||||
is_pool_character = yes
|
||||
is_foreign_court_guest = yes
|
||||
}
|
||||
}
|
||||
random_county_in_region = { # Naturally biased in favor of larger states
|
||||
limit = { exists = holder.liege }
|
||||
weight = {
|
||||
base = 1
|
||||
modifier = {
|
||||
add = 10
|
||||
holder.liege = { has_relation_friend = root }
|
||||
}
|
||||
modifier = {
|
||||
add = 30
|
||||
holder.liege = { has_relation_best_friend = root }
|
||||
}
|
||||
compare_modifier = {
|
||||
value = holder.prestige_level
|
||||
multiplier = 1.5
|
||||
}
|
||||
}
|
||||
region = world_europe_west_iberia # Locks el cid's forced travels to iberia
|
||||
holder.liege = { trigger_event = fp2_struggle.2051 }
|
||||
}
|
||||
}
|
||||
else = {
|
||||
if = {
|
||||
limit = { exists = liege }
|
||||
liege = { trigger_event = fp2_struggle.2050 } # This is you, you get the event, while el cid gets the "system event"
|
||||
}
|
||||
else = {
|
||||
employer = { trigger_event = fp2_struggle.2050 } # ditto
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#############################################################
|
||||
# Unease About El Sidi
|
||||
# By The Content Design Team (And scripted by Hugo Cortell)
|
||||
#############################################################
|
||||
|
||||
scripted_trigger el_cid_too_important_trigger = {
|
||||
OR = {
|
||||
any_extended_family_member = { this = scope:fp2_2050_el_cid }
|
||||
scope:fp2_2050_el_cid = { is_vassal_of = ROOT }
|
||||
has_relation_best_friend = scope:fp2_2050_el_cid
|
||||
is_spouse_of = scope:fp2_2050_el_cid
|
||||
}
|
||||
}
|
||||
|
||||
fp2_struggle.2050 = {
|
||||
type = character_event
|
||||
title = {
|
||||
random_valid = {
|
||||
triggered_desc = { # Muslim Titles
|
||||
trigger = { religion = religion:islam_religion }
|
||||
desc = {
|
||||
random_valid = {
|
||||
desc = fp2_struggle.2050.t_muslim_one
|
||||
desc = fp2_struggle.2050.t_muslim_two
|
||||
desc = fp2_struggle.2050.t_muslim_three
|
||||
desc = fp2_struggle.2050.t_muslim_four
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
triggered_desc = { # Generic (Christian, nickname-like) Titles
|
||||
trigger = { NOT = { religion = religion:islam_religion } }
|
||||
desc = {
|
||||
random_valid = {
|
||||
desc = fp2_struggle.2050.t_generic_one
|
||||
desc = fp2_struggle.2050.t_generic_two
|
||||
desc = fp2_struggle.2050.t_generic_three
|
||||
desc = fp2_struggle.2050.t_generic_four
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = { # See immediate for flags
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:generic_court }
|
||||
desc = fp2_struggle.2050.desc_court
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:jelly_knights }
|
||||
desc = fp2_struggle.2050.desc_knights
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:upset_nobles }
|
||||
desc = fp2_struggle.2050.desc_nobles
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:faith_discomfort }
|
||||
desc = fp2_struggle.2050.desc_faith
|
||||
}
|
||||
desc = board_games.0001.desc.i_am_winning.trait.rowdy # Theoretically impossible to trigger, but if something breaks, players will see this and report it for sure
|
||||
}
|
||||
}
|
||||
|
||||
theme = corruption
|
||||
override_background = { reference = throne_room }
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_rational
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:fp2_2050_el_cid
|
||||
animation = throne_room_two_handed_passive_1
|
||||
}
|
||||
|
||||
immediate = {
|
||||
character:107590 = { save_scope_as = fp2_2050_el_cid }
|
||||
|
||||
random_list = { # Spin the wheel to decide who and why wishes ill on el cid
|
||||
10 = { # Generic "the court thinks he is bad"
|
||||
save_scope_value_as = {
|
||||
name = fp2_2050_reason_for_kicking_out_el_cid
|
||||
value = flag:generic_court
|
||||
}
|
||||
}
|
||||
10 = { # Your knights are all sore losers
|
||||
modifier = {
|
||||
add = 30
|
||||
any_knight = {
|
||||
OR = {
|
||||
has_relation_rival = scope:fp2_2050_el_cid
|
||||
has_relation_nemesis = scope:fp2_2050_el_cid
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_value_as = {
|
||||
name = fp2_2050_reason_for_kicking_out_el_cid
|
||||
value = flag:jelly_knights
|
||||
}
|
||||
}
|
||||
10 = { # Nobles dislike upstart poor people
|
||||
modifier = {
|
||||
add = 30
|
||||
any_vassal = {
|
||||
OR = {
|
||||
has_relation_rival = scope:fp2_2050_el_cid
|
||||
has_relation_nemesis = scope:fp2_2050_el_cid
|
||||
}
|
||||
}
|
||||
}
|
||||
save_scope_value_as = {
|
||||
name = fp2_2050_reason_for_kicking_out_el_cid
|
||||
value = flag:upset_nobles
|
||||
}
|
||||
}
|
||||
10 = { # Generic faith concerns from your bishop
|
||||
save_scope_value_as = {
|
||||
name = fp2_2050_reason_for_kicking_out_el_cid
|
||||
value = flag:faith_discomfort
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Family, Friend or Vassal
|
||||
name = fp2_struggle.2050.a
|
||||
|
||||
trigger = { el_cid_too_important_trigger = yes }
|
||||
|
||||
hidden_effect = {
|
||||
scope:fp2_2050_el_cid = { add_character_flag = finished_el_cids_travels } # At this point we can imagine that this character has settled, this stops the cycle to prevent spam
|
||||
}
|
||||
|
||||
custom_tooltip = fp2_struggle.2050.a.serve_tooltip
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = fp2_struggle.2050.a.notif.t
|
||||
right_icon = scope:fp2_2050_el_cid
|
||||
|
||||
reverse_add_opinion = {
|
||||
target = scope:fp2_2050_el_cid
|
||||
modifier = stood_by_me_opinion
|
||||
opinion = 10
|
||||
years = 20
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
fickle = minor_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = { base = 1000 }
|
||||
}
|
||||
|
||||
option = { # No, I stand by my knight and he can stay!
|
||||
name = fp2_struggle.2050.b
|
||||
|
||||
trigger = {
|
||||
is_ai = no
|
||||
NOT = { scope:fp2_2050_el_cid = { is_vassal_of = ROOT } }
|
||||
}
|
||||
|
||||
custom_tooltip = fp2_struggle.2050.a.serve_tooltip
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = fp2_struggle.2050.a.notif.t
|
||||
right_icon = scope:fp2_2050_el_cid
|
||||
|
||||
if = {
|
||||
limit = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:generic_court }
|
||||
add_character_modifier = {
|
||||
modifier = fp2_kept_accused_traitor_in_court_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:jelly_knights }
|
||||
add_character_modifier = {
|
||||
modifier = fp2_kept_op_knight_in_court_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:upset_nobles }
|
||||
add_character_modifier = {
|
||||
modifier = fp2_kept_upstart_knight_in_court_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = { scope:fp2_2050_reason_for_kicking_out_el_cid = flag:faith_discomfort }
|
||||
add_character_modifier = {
|
||||
modifier = fp2_kept_godless_mercenary_in_court_modifier
|
||||
years = 10
|
||||
}
|
||||
}
|
||||
|
||||
reverse_add_opinion = {
|
||||
target = scope:fp2_2050_el_cid
|
||||
modifier = stood_by_me_opinion
|
||||
opinion = 10
|
||||
years = 20
|
||||
}
|
||||
scope:fp2_2050_el_cid = {
|
||||
trigger_event = {
|
||||
id = fp2_struggle.2045
|
||||
years = { 4 12 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
fickle = minor_stress_impact_gain
|
||||
}
|
||||
}
|
||||
|
||||
option = { # Okay, please do not give me malus
|
||||
name = fp2_struggle.2050.c
|
||||
|
||||
trigger = {
|
||||
NOT = { scope:fp2_2050_el_cid = { is_vassal_of = ROOT } }
|
||||
}
|
||||
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_bad
|
||||
title = fp2_struggle.2051.t
|
||||
right_icon = scope:fp2_2050_el_cid
|
||||
|
||||
scope:fp2_2050_el_cid = {
|
||||
move_to_pool = yes
|
||||
trigger_event = {
|
||||
id = fp2_struggle.2045
|
||||
days = { 1 4 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = {
|
||||
generous = minor_stress_impact_gain
|
||||
}
|
||||
|
||||
ai_chance = { base = 1 }
|
||||
}
|
||||
|
||||
option = { # Vanish el cid, even though he is your vassal (suggested by Max)
|
||||
name = fp2_struggle.2050.c
|
||||
|
||||
trigger = {
|
||||
is_ai = no
|
||||
scope:fp2_2050_el_cid = { is_vassal_of = ROOT }
|
||||
}
|
||||
|
||||
# The only reason to ever select this option is to gain those "repossessed" lands, but it is very mean.
|
||||
# It will give you tyranny, but it won't directly anger your vassals as they are *narratively* the reason why this is happening.
|
||||
# The primary reason this exists is to prevent ludonarrative dissonance with the event's description. It is less resource intensive than making new loc.
|
||||
|
||||
# We set the tyranny and opinion loss based on how much was lost (Placed outside the toast to prevent clutter)
|
||||
add_tyranny = {
|
||||
value = medium_tyranny_gain
|
||||
multiply = scope:fp2_2050_el_cid.primary_title.tier
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = { can_set_relation_rival_trigger = { CHARACTER = scope:fp2_2050_el_cid } }
|
||||
set_relation_rival = scope:fp2_2050_el_cid
|
||||
}
|
||||
if = { # This is not out of order, it is WAD. If can_set_relation_rival_trigger fails, you just lose a friend but not gain a rival.
|
||||
limit = { has_relation_friend = scope:fp2_2050_el_cid }
|
||||
remove_relation_friend = scope:fp2_2050_el_cid
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = { scope:fp2_2050_el_cid.primary_title.tier < tier_kingdom }
|
||||
scope:fp2_2050_el_cid = {
|
||||
add_opinion = {
|
||||
modifier = betrayed_me_opinion
|
||||
target = root
|
||||
opinion = -100
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
scope:fp2_2050_el_cid = {
|
||||
add_opinion = {
|
||||
modifier = betrayed_me_opinion
|
||||
target = root
|
||||
opinion = -200
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
create_title_and_vassal_change = { # This tells the engine to start paying closer attention to title changes (and not butt in)
|
||||
type = revoked
|
||||
save_scope_as = change
|
||||
}
|
||||
scope:fp2_2050_el_cid = {
|
||||
every_held_title = {
|
||||
change_title_holder = {
|
||||
holder = root
|
||||
change = scope:change
|
||||
}
|
||||
}
|
||||
}
|
||||
resolve_title_and_vassal_change = scope:change # Tells the engine that it is safe to go about its buisness with titles
|
||||
|
||||
show_as_tooltip = { scope:fp2_2050_el_cid = { move_to_pool = yes } } # Just jomini things~
|
||||
hidden_effect = { # Prevents rendering of toast on option highlight
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_bad
|
||||
title = fp2_struggle.2051.t
|
||||
right_icon = scope:fp2_2050_el_cid
|
||||
|
||||
show_as_tooltip = { # Condensed version to fit into the toast
|
||||
if = {
|
||||
limit = { scope:fp2_2050_el_cid.primary_title.tier > tier_duchy }
|
||||
scope:fp2_2050_el_cid = {
|
||||
if = {
|
||||
limit = { has_relation_nemesis = ROOT }
|
||||
set_relation_nemesis = ROOT
|
||||
}
|
||||
add_opinion = {
|
||||
modifier = betrayed_me_opinion
|
||||
target = root
|
||||
opinion = -200
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
if = {
|
||||
limit = { has_relation_rival = ROOT }
|
||||
set_relation_rival = ROOT
|
||||
}
|
||||
add_opinion = {
|
||||
modifier = betrayed_me_opinion
|
||||
target = root
|
||||
opinion = -100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Standard stuff
|
||||
scope:fp2_2050_el_cid = {
|
||||
move_to_pool = yes
|
||||
trigger_event = {
|
||||
id = fp2_struggle.2045
|
||||
days = { 1 4 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stress_impact = { # This kind of action comes with quite a bit of stress
|
||||
generous = minor_stress_impact_gain
|
||||
brave = medium_stress_impact_gain
|
||||
forgiving = major_stress_impact_gain
|
||||
gregarious = medium_stress_impact_gain
|
||||
honest = minor_stress_impact_gain
|
||||
humble = medium_stress_impact_gain
|
||||
just = major_stress_impact_gain
|
||||
trusting = medium_stress_impact_gain
|
||||
compassionate = major_stress_impact_gain
|
||||
august = minor_stress_impact_gain
|
||||
gallant = medium_stress_impact_gain
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
############################################################
|
||||
# El Cid Arrives At Your Court
|
||||
# By The Content Design Team (And scripted by Hugo Cortell)
|
||||
############################################################
|
||||
fp2_struggle.2051 = {
|
||||
type = character_event
|
||||
title = fp2_struggle.2051.t
|
||||
desc = fp2_struggle.2051.desc
|
||||
|
||||
theme = vassal
|
||||
override_background = { reference = throne_room }
|
||||
left_portrait = {
|
||||
character = root
|
||||
animation = personality_rational
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:fp2_2050_el_cid
|
||||
animation = throne_room_one_handed_passive_1
|
||||
}
|
||||
|
||||
immediate = {
|
||||
character:107590 = { save_scope_as = fp2_2050_el_cid }
|
||||
add_visiting_courtier = scope:fp2_2050_el_cid
|
||||
}
|
||||
|
||||
option = { # You will enjoy a high position at my court!
|
||||
name = fp2_struggle.2051.a
|
||||
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = fp2_struggle.2050.a.notif.t
|
||||
right_icon = scope:fp2_2050_el_cid
|
||||
|
||||
pay_treasury_or_gold = {
|
||||
target = scope:fp2_2050_el_cid
|
||||
value = medium_treasury_or_gold_value
|
||||
}
|
||||
add_courtier = scope:fp2_2050_el_cid
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = { exists = cp:councillor_marshal }
|
||||
fire_councillor = cp:councillor_marshal
|
||||
}
|
||||
assign_councillor_type = {
|
||||
type = councillor_marshal
|
||||
target = scope:fp2_2050_el_cid
|
||||
}
|
||||
|
||||
scope:fp2_2050_el_cid = {
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = hired_me_opinion
|
||||
opinion = 20
|
||||
}
|
||||
add_opinion = {
|
||||
target = root
|
||||
modifier = given_luxuries_opinion
|
||||
opinion = 10
|
||||
}
|
||||
|
||||
trigger_event = {
|
||||
id = fp2_struggle.2045
|
||||
years = { 4 12 }
|
||||
}
|
||||
}
|
||||
|
||||
trigger = { is_ai = no }
|
||||
}
|
||||
|
||||
option = { # Welcome or whatever
|
||||
name = fp2_struggle.2051.b
|
||||
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_good
|
||||
title = fp2_struggle.2050.a.notif.t
|
||||
right_icon = scope:fp2_2050_el_cid
|
||||
|
||||
pay_treasury_or_gold = {
|
||||
target = scope:fp2_2050_el_cid
|
||||
value = minor_treasury_or_gold_value
|
||||
}
|
||||
add_courtier = scope:fp2_2050_el_cid
|
||||
}
|
||||
scope:fp2_2050_el_cid = {
|
||||
trigger_event = {
|
||||
id = fp2_struggle.2045
|
||||
years = { 4 10 }
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = { base = 65 }
|
||||
}
|
||||
|
||||
option = { # Away with you vile beggar!
|
||||
name = fp2_struggle.2051.c
|
||||
|
||||
send_interface_toast = {
|
||||
type = event_toast_effect_bad
|
||||
title = fp2_struggle.2051.t
|
||||
right_icon = scope:fp2_2050_el_cid
|
||||
|
||||
custom_tooltip = fp2_struggle.2050.c.notif
|
||||
scope:fp2_2050_el_cid = {
|
||||
move_to_pool = yes
|
||||
trigger_event = {
|
||||
id = fp2_struggle.2045
|
||||
days = { 1 4 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ai_chance = { base = 45 }
|
||||
}
|
||||
}
|
||||
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