so much event updating

This commit is contained in:
trashmasteruni 2026-04-25 13:36:44 +02:00
parent c4b6d9bdeb
commit 811167944e
135 changed files with 4885 additions and 297691 deletions

View file

@ -1,14 +1,49 @@
=== Structure ===  Structure ===
Note: this is very very incomplete... Note: May not be exhaustive.
event_namespace.42 = { Event IDs are namespaced. In each events file, define a namespace once at the top:
type = character_event/letter_event/court_event/activity_event # Default to character, what type of event this is namespace = my_events
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. Then define events as:
window = window_name # Optional, what special event file and widget in gui/event_windows should this event use, only used for character events my_events.1001 = { ... }
# If you have a cooldown, the recipient will get a variable saved with that duration. The variable name will be the event ID my_events.1001 = {
# Anything that checks that an event is legal to fire will also check that the recipient doesn't have that variable type = character_event/letter_event/court_event/activity_event # Optional, defaults to character_event
scope = scope_type # Overrides the events root scope. Optional, defaults to character scope. Use scope = none for no root scope, scope = artifact for events centered around artifacts, etc.
# Optional custom event window name.
# For character/letter events this is the popup window in gui/event_windows.
# For activity events this is used by activity event inserts.
window = window_name
# anonymous_letter_event - letter_event, but without sender portrait and sigil widget
# big_event_window - used for task_contracts, bookmark events, decision outcomes, story cycles, black plague, etc.
# character_event - default
# duel_event - used in single combat events
# fullscreen_event - use splash screen queue
# letter_event - used for responses to character_interactions, between characters that are not in the same location
# scheme_conclusion_window - big_event_window, however we always use one of the sub-types:
# scheme_failed_event - scheme_conclusion_window, but with failure header
# scheme_preparations_event - scheme_conclusion_window, but with scheme_preparation widget
# scheme_successful_event - scheme_conclusion_window, but with successful header
# scheme_conclusion_event_no_header
# scheme_conclusion_window, but without header
#visit_settlement_window - big_event_window, used by laamp visit settlement decision
# Basic event text/effects (commonly used)
title = my_event_title # Dynamic Description syntax, see bottom of document
desc = my_event_desc # Dynamic Description syntax, see bottom of document
trigger = { ... }
immediate = { ... }
after = { ... }
hidden = yes/no # If yes, no event window is shown
major = yes/no
major_trigger = { ... }
# Non-character scoped events generally need to be hidden or major.
# If you have a cooldown, the recipient root gets a saved variable with that duration.
# The variable name is based on the event ID.
# Trigger legality checks include cooldown.
cooldown = { cooldown = {
days/weeks/months/years = script value days/weeks/months/years = script value
} }
@ -23,89 +58,112 @@ event_namespace.42 = {
lower_left_portrait = X lower_left_portrait = X
lower_center_portrait = X lower_center_portrait = X
lower_right_portrait = X lower_right_portrait = X
sender = X # for letter events, required sender = X # required for letter events
# X can be one of: # X can be one of:
X = event target X = event target
X = { X = {
character = event target 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 trigger = ... # optional, controls visibility for this portrait in the scope of the portrait character
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. animation = animation name # optional default animation, used if no triggered animations pass their trigger. See animations.txt for all possible animations, in-game: toggle event tools in the event or open portrait editor through the console.
scripted_animation = key_of_scripted_animation # optional, instead of 'animation' you can also define a 'scripted_animation' scripted_animation = key_of_scripted_animation # optional alternative to animation
# A list of triggered animations. The first triggered animation that passes the trigger check will be used. # First triggered animation whose trigger passes is used.
triggered_animation = { triggered_animation = {
trigger = ... trigger = ...
animation = animation name animation = animation name
# Instead of 'animation' you can also define a 'scripted_animation' # Or use scripted_animation instead of animation
scripted_animation = key_of_scripted_animation scripted_animation = key_of_scripted_animation
camera = camera_name # optional, overrides portrait camera when chosen
### 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 = ... triggered_animation = ...
# A list of triggered outfits. The first triggered otfit that passes the trigger check will be used. # First triggered outfit whose trigger passes is used.
triggered_outfit = { triggered_outfit = {
trigger = ... trigger = ...
outfit_tags = ... outfit_tags = ...
remove_default_outfit = ... remove_default_outfit = ...
hide_info = ...
} }
triggered_outfit = ... triggered_outfit = ...
# Override camera to be used instead of the normal event ones # Optional portrait behavior toggles
camera = camera_key camera = camera_key
override_imprisonment_visuals = yes/no
animate_if_dead = yes/no
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) 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) 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) 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 # Specify an artifact to appear in the event on the specified position
artifact = { artifact = {
target = event target target = event target
position = lower_left_portrait/lower_center_portrait/lower_right_portrait position = lower_left_portrait/lower_center_portrait/lower_right_portrait
# Can't be in the same position as a portrait # Cannot share the same position as a portrait
trigger = ... # Optional, as for character portraits trigger = ... # Optional, as for portraits
} }
# This will be run if a queued event (or one triggered immediately from script) does not fulfil its trigger # Letter events should define an opening text
# Events failing to trigger from an on-action will *not* run this opening = my_letter_opening # Localization key or dynamic desc block
# Court events may define court scene behavior
court_scene = {
button_position_character = scope:a_character
court_owner = scope:a_character
court_event_force_open = yes/no
show_timeout_info = yes/no
should_pause_time = yes/no
roles = {
scope:a_character = {
role = some_court_scene_role # or group = some_court_scene_group
animation = some_animation
scripted_animation = some_scripted_animation
}
}
}
# Runs if a queued/instant event fails trigger checks.
# Events selected from on_actions are filtered by validity before queuing, so this is typically not run for that path.
on_trigger_fail = { on_trigger_fail = {
some effect some effect
} }
# Specify custom widgets to embed in the event. See section about Custom Widgets below. # Specify custom widgets to embed in the event. See Custom Widgets below.
widgets = { widgets = {
widget = { widget = {
# Trigger that controls the availability of the widget. Scope: same as the event, after immediate effect. Default: always = yes # Scope: event scope after immediate effect. Default: always = yes
is_shown = {} is_shown = {}
# Name of the widget to use. Must be at the path <event_window_widgets>/<widget_name>.gui # Widget file at <event_window_widgets>/<widget_name>.gui
gui = "<widget_name>" gui = "<widget_name>"
# Name of the widget where this custome widget will be insert # Parent container widget name in the event window
container = "<container_widget_name>" container = "<container_widget_name>"
# Some widgets require a custom controller (see below). Default: default
# Controller syntax:
# Simple form:
controller = <controller_type> 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: {} # Structured form (used by some controllers, e.g. text):
# controller = {
# type = <controller_type>
# data = { ... }
# }
# Optional scope setup effect for controller expectations
setup_scope = {} setup_scope = {}
} }
} }
widget = { ... } # alternative syntax for a single widget. Follows the same info as the widget in the widgets parameter widget = { ... } # alternative syntax for one widget
option = { # An option the player/AI can pick option = { # An option the player/AI can pick
# Localization key for the event option button text # Localization key or dynamic name block
name = X name = X # Dynamic Description syntax, see bottom of document
# The effects that will be run when picking the options. Written directly here with no label # Effects run when this option is picked (inline, no label)
X.. X..
# A trigger that has to be fulfilled for this option to be valid. # Trigger required for option to be valid
trigger = {} trigger = {}
# If the event is invalid, but this trigger is valid, then the option will be shown (but disabled). # If the option 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. # 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 = {} show_as_unavailable = {}
@ -113,9 +171,19 @@ event_namespace.42 = {
highlight_portrait = scope:a_character 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 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
skill = diplomacy/martial/stewardship/intrigue/learning/prowess # Marks this option as skill-relevant in unlock reason UI (if shown); you still have to specify the skill and level in the trigger to unlock it
trait = some_trait # Marks this option as trait-relevant in unlock reason UI (if shown); you still have to specify the trait in the trigger to unlock it
# Parameters to impact the way ai-characters pick options to resolve their events # Misc option behavior
# We have 2 mutually exclusive parameters; ai_chance, and ai_will_select where the only difference is the syntax for calculating the value show_unlock_reason = yes/no # Controls whether unlock reason UI is shown for this option
is_cancel_option = yes/no # Marks this option as a cancel/back-out style option (used by some widgets/controllers)
clicksound = "sound_event" # Sound to play when selecting this option
fallback = yes/no # If no regular options are valid, fallback options are considered
exclusive = yes/no # If any exclusive option is valid, non-exclusive options are ignored
# 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.
# In practice if both are present, ai_will_select is used.
ai_chance = { # See common/scripted_modifiers/_scripted_modifiers.info for more details ai_chance = { # See common/scripted_modifiers/_scripted_modifiers.info for more details
base = 10 base = 10
modifier = { modifier = {
@ -145,20 +213,20 @@ event_namespace.42 = {
} }
} }
theme = "" # Theme to use in the event. For a list, check: 00_event_themes.txt 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. 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 in the theme will be checked after.
trigger = {} # Receives the event scope to check if it's valid. trigger = {} # Receives the event scope to check if it's valid.
reference = "" # Path to the texture 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. 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 in the theme will be checked after.
trigger = {} # Receives the event scope to check if it's valid. trigger = {} # Receives the event scope to check if it's valid.
reference = "" # Path to the texture 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. 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 in the theme will be checked after.
trigger = {} # Receives the event scope to check if it's valid. trigger = {} # Receives the event scope to check if it's valid.
reference = "" # key to the effect 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. 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 in the theme will be checked after.
trigger = {} # Receives the event scope to check if it's valid. trigger = {} # Receives the event scope to check if it's valid.
reference = "" # Path to the texture reference = "" # Path to the texture
} }
@ -166,10 +234,11 @@ event_namespace.42 = {
trigger = {} trigger = {}
reference = "" 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. 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 in the theme will be checked after.
trigger = {} # Receives the event scope to check if it's valid. trigger = {} # Receives the event scope to check if it's valid.
reference = "" # Reference of the sound reference = "" # Reference of the sound
} }
orphan = yes # The game will not log an error about this event being unreferenced. Useful for debug events orphan = yes # The game will not log an error about this event being unreferenced. Useful for debug events
} }
@ -189,7 +258,139 @@ Controller Type | Data Context Name | Notes
------------------------+----------------------------------------+------------------------------------------------------------------------------------------------------------- ------------------------+----------------------------------------+-------------------------------------------------------------------------------------------------------------
default | EventWindowWidget | Default controller, no special behavior default | EventWindowWidget | Default controller, no special behavior
name_character | EventWindowWidgetNameCharacter | Changes a character's name. Scope must have the name_character_target saved scope. 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. text | EventWindowWidgetEnterText | Saves some text onto the character. May use controller = { type = text data = { ... } } and setup_scope for text_target.
event_chain_progress | EventWindowWidgetChainProgress | Displays progress through an event chain, needs event_chain_length and event_chain_progress scope values set 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 struggle_info | EventWindowCustomWidgetStruggleInfo | Displays information for the struggle, needs "start" scope value set
situation_info | EventWindowCustomWidgetSituationInfo | Displays information for the situation situation_info | EventWindowCustomWidgetSituationInfo | Displays information for the situation
=== Dynamic Description Appendix ===
Dynamic descriptions are supported by event `title`, `desc`, `opening`, and option `name` (with special notes for option names below).
They resolve localization keys at runtime using current event scopes.
High-level behavior:
- A plain localization key is valid:
- `desc = my_event.desc`
- A block is also valid:
- `desc = { ... }`
- In blocks, entries are evaluated in script order.
- Each selected piece is appended to the final text with automatic spacing between pieces.
- Missing localization keys are logged as errors.
Core block members (CDynamicDescription):
1) `desc`
- Appends text to output.
- Accepts either a key or another nested dynamic description block.
Example:
desc = {
desc = my_event.intro
desc = my_event.outro
}
2) `triggered_desc`
- Conditional description node.
- Body may only contain:
- `trigger = { ... }` (optional; if omitted, always valid)
- `desc = <loc_key>` or `desc = { ... }`
- If trigger passes, its `desc` content is appended.
Example:
triggered_desc = {
trigger = { has_trait = brave }
desc = my_event.brave_line
}
3) `first_valid`
- Checks child entries in order.
- Uses only the first child whose validity is true.
- Typical fallback pattern is placing a plain `desc = some_fallback_key` last.
Example:
first_valid = {
triggered_desc = {
trigger = { has_trait = brave }
desc = my_event.brave
}
triggered_desc = {
trigger = { has_trait = craven }
desc = my_event.craven
}
desc = my_event.fallback
}
4) `random_valid`
- Collects all valid children, then picks random entries from that set.
- Default picks: `count = 1`
- Optional: `count = N` picks up to N unique valid children (no replacement).
- If fewer than N are valid, all valid children are used.
- Chosen entries are appended by the random order.
Example:
random_valid = {
count = 2
desc = my_event.random_a
triggered_desc = {
trigger = { has_trait = patient }
desc = my_event.random_b
}
desc = my_event.random_c
}
5) `switch`
- Value-based branching for description selection.
- Structure:
- `trigger = <simple-assign trigger type>`
- `<case_value> = <loc_key or nested block>`
- `fallback = <loc_key or nested block>` (optional)
- First matching case is used.
- If no case matches and no `fallback` exists, nothing is appended.
- Case values are written as keys/tokens that match what the switch trigger returns.
Example:
switch = {
trigger = scope:rite_memory.var:rites_of_passage_type
flag:dueling_rite_memory = { desc = bp2_yearly.7029.desc_duel }
flag:scarification_rite_memory = { desc = bp2_yearly.7029.desc_scarification }
fallback = { desc = bp2_yearly.7029.desc }
}
Composition and nesting:
- Nodes can be nested arbitrarily (`desc` in `desc`, `first_valid` inside `random_valid`, etc.).
Option name specifics:
- Option names support two forms:
- `name = my_option_text_key`
- `name = { text = <loc_key or dynamic description block> trigger = { ... } }`
- `trigger` inside `name = { ... }` gates whether that name candidate is available.
- Multiple `name = { ... }` blocks are allowed per option.
- If more than one candidate is valid, one valid candidate is chosen randomly.
- If none are valid, first defined candidate is used as fallback.
- Important limitation: name candidates are separate sibling `name` entries; you cannot nest multiple `name` nodes inside one `name` block.
Known-good vanilla patterns to copy:
- Multi-chunk nested assembly with `random_valid`, `first_valid`, and `triggered_desc`:
- `game/events/board_game_events.txt` (e.g. event `board_games.0041`)
- `game/events/relations_events/adultery_events.txt` (e.g. event `adultery.4001`)
- Standard fallback chain in `first_valid`:
- `game/events/relations_events/adultery_events.txt` (e.g. event `adultery.1006`)
- Letter `opening` using dynamic desc block:
- `game/events/interaction_events/marriage_interaction_events.txt` (e.g. event `marriage_interaction.0001`)
- Dynamic description `switch`:
- `game/events/dlc/bp2/bp2_yearly_7.txt` (e.g. event `bp2_yearly.7029`)
Practical authoring checklist:
- Always include a safe fallback path (`desc` fallback in `first_valid`, or `fallback` in `switch`).
- Keep localization keys flat and explicit; nesting controls selection, loc does the prose.
- When building long descriptions, split into semantic chunks and compose with nested blocks.
- Prefer `first_valid` for deterministic branching and `random_valid` for variation.
- For option names, prefer multiple gated `name` entries over overly complex single-entry nesting.
COMMON GOTCHA WHEN BUILDING DYNAMIC DESCRIPTIONS, FOR INTERNAL DESIGNERS: If you're building a complex loc string that includes dialogue, it's common to end up with keys that contains an odd number of citation marks. In these cases you may need to escape the odd citation marks using double-backslash to pass the sanity checking git hook before you commit your work. E.g.:
my_cool_event_desc.intro: "The guy says, \\"Hey "
my_cool_event_desc.intro.friend: "friend"
my_cool_event_desc.intro.buddy: "buddy"
my_cool_event_desc.intro.idiot: "idiot"
my_cool_event_desc.intro.outro: ", watch where you're going!\\" I pay him no mind and continue on my way."

View file

@ -150,742 +150,3 @@ accolade.0002 = {
} }
} }
} }
#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
}
}
}
}

View file

@ -891,8 +891,6 @@ coronation_events.0100 = {
trigger_event = coronation_events.0110 trigger_event = coronation_events.0110
} }
} }
# Cleanup of variable checks
remove_variable = learning_oath_1_university_exists
if = { if = {
limit = { limit = {
@ -1071,7 +1069,30 @@ coronation_events.0110 = {
} }
# Other # Other
desc = coronation_events.0110.desc.fallback triggered_desc = {
trigger = {
scope:host = {
ai_compassion >= low_positive_ai_value
}
}
desc = coronation_events.0110.desc.fallback_compassionate
}
triggered_desc = {
trigger = {
scope:host = {
ai_honor > low_positive_ai_value
}
}
desc = coronation_events.0110.desc.fallback_honorable
}
triggered_desc = {
trigger = {
scope:host = {
ai_energy < low_negative_ai_value
}
}
desc = coronation_events.0110.desc.fallback_feckless
}
} }
desc = coronation_events.0110.desc.outro desc = coronation_events.0110.desc.outro
} }
@ -1410,54 +1431,89 @@ coronation_events.0175 = {
trigger = scope:find_oath trigger = scope:find_oath
flag:diplomacy_oath_1 = { flag:diplomacy_oath_1 = {
coronation_oath_reward_effect = { VARIABLE = diplomacy_oath_1 } coronation_oath_reward_effect = { VARIABLE = diplomacy_oath_1 }
add_character_modifier = oath_of_alliances
} }
flag:diplomacy_oath_2 = { flag:diplomacy_oath_2 = {
coronation_oath_reward_effect = { VARIABLE = diplomacy_oath_2 } coronation_oath_reward_effect = { VARIABLE = diplomacy_oath_2 }
add_character_modifier = oath_of_children
} }
flag:martial_oath_1 = { flag:martial_oath_1 = {
coronation_oath_reward_effect = { VARIABLE = martial_oath_1 } coronation_oath_reward_effect = { VARIABLE = martial_oath_1 }
add_character_modifier = oath_of_reconquest
} }
flag:martial_oath_2 = { flag:martial_oath_2 = {
coronation_oath_reward_effect = { VARIABLE = martial_oath_2 } coronation_oath_reward_effect = { VARIABLE = martial_oath_2 }
add_character_modifier = oath_of_conquest
} }
flag:stewardship_oath_1 = { flag:stewardship_oath_1 = {
coronation_oath_reward_effect = { VARIABLE = stewardship_oath_1 } coronation_oath_reward_effect = { VARIABLE = stewardship_oath_1 }
add_character_modifier = oath_of_peace
} }
flag:stewardship_oath_2 = { flag:stewardship_oath_2 = {
coronation_oath_reward_effect = { VARIABLE = stewardship_oath_2 } coronation_oath_reward_effect = { VARIABLE = stewardship_oath_2 }
add_character_modifier = oath_of_buildings
} }
flag:learning_oath_1 = { flag:learning_oath_1 = {
coronation_oath_reward_effect = { VARIABLE = learning_oath_1 } coronation_oath_reward_effect = { VARIABLE = learning_oath_1 }
} }
flag:purge_pretenders_oath = { flag:purge_pretenders_oath = {
coronation_oath_reward_effect = { VARIABLE = purge_pretenders_oath } coronation_oath_reward_effect = { VARIABLE = purge_pretenders_oath }
add_character_modifier = oath_of_purge_pretenders
if = {
limit = {
government_has_flag = government_is_administrative
}
house ?= {
add_house_modifier = oath_of_purge_pretenders_house
}
}
} }
flag:end_the_struggle_oath = { flag:end_the_struggle_oath = {
coronation_oath_reward_effect = { VARIABLE = end_the_struggle_oath } coronation_oath_reward_effect = { VARIABLE = end_the_struggle_oath }
add_character_modifier = oath_of_end_the_struggle
} }
flag:greatest_hunter_oath = { flag:greatest_hunter_oath = {
coronation_oath_reward_effect = { VARIABLE = greatest_hunter_oath } coronation_oath_reward_effect = { VARIABLE = greatest_hunter_oath }
add_character_modifier = oath_greatest_hunter
} }
flag:heir_preparation_oath = { flag:heir_preparation_oath = {
coronation_oath_reward_effect = { VARIABLE = heir_preparation_oath } coronation_oath_reward_effect = { VARIABLE = heir_preparation_oath }
add_character_modifier = oath_heir_preparation
primary_heir ?= {
add_character_modifier = oath_heir_preparation_heir
}
} }
flag:install_claimants_oath = { flag:install_claimants_oath = {
coronation_oath_reward_effect = { VARIABLE = install_claimants_oath } coronation_oath_reward_effect = { VARIABLE = install_claimants_oath }
add_character_modifier = oath_install_claimants
} }
flag:mend_the_fracture_oath = { flag:mend_the_fracture_oath = {
coronation_oath_reward_effect = { VARIABLE = mend_the_fracture_oath } coronation_oath_reward_effect = { VARIABLE = mend_the_fracture_oath }
add_character_modifier = oath_mend_the_fracture
culture = {
add_culture_tradition = oath_mend_the_fracture_tradition
}
var:mend_the_fracture_oath_target_culture = {
add_culture_tradition = oath_mend_the_fracture_tradition
}
} }
flag:provide_for_the_warriors_oath = { flag:provide_for_the_warriors_oath = {
coronation_oath_reward_effect = { VARIABLE = provide_for_the_warriors_oath } coronation_oath_reward_effect = { VARIABLE = provide_for_the_warriors_oath }
add_character_modifier = oath_provide_for_the_warriors
} }
flag:provide_for_the_faithful_oath = { flag:provide_for_the_faithful_oath = {
coronation_oath_reward_effect = { VARIABLE = provide_for_the_faithful_oath } coronation_oath_reward_effect = { VARIABLE = provide_for_the_faithful_oath }
add_character_modifier = oath_provide_for_the_faithful
} }
flag:provide_for_the_poor_oath = { flag:provide_for_the_poor_oath = {
coronation_oath_reward_effect = { VARIABLE = provide_for_the_poor_oath } coronation_oath_reward_effect = { VARIABLE = provide_for_the_poor_oath }
add_character_modifier = oath_provide_for_the_poor
} }
flag:repent_oath = { flag:repent_oath = {
coronation_oath_reward_effect = { VARIABLE = repent_oath } coronation_oath_reward_effect = { VARIABLE = repent_oath }
add_character_modifier = oath_repent
} }
} }
} }
@ -1801,11 +1857,7 @@ coronation_events.0205 = {
trigger = { trigger = {
current_year > 1000 current_year > 1000
location.barony = title:b_krakow location.barony = title:b_krakow
OR = { scope:host.faith.religion = religion:christianity_religion
scope:host.faith.religion = religion:eastern_orthodox_religion
scope:host.faith.religion = religion:catholic_religion
scope:host.faith.religion = religion:protestant_religion
}
} }
desc = coronation_events.0205.wawel desc = coronation_events.0205.wawel
} }
@ -2110,6 +2162,7 @@ coronation_events.0205 = {
geographical_region = graphical_india geographical_region = graphical_india
culture ?= { has_building_gfx = iranian_building_gfx } culture ?= { has_building_gfx = iranian_building_gfx }
culture ?= { has_building_gfx = indian_building_gfx } culture ?= { has_building_gfx = indian_building_gfx }
culture ?= { has_building_gfx = tibetan_building_gfx }
AND = { AND = {
geographical_region = world_europe_west_iberia geographical_region = world_europe_west_iberia
faith ?= { religion = religion:islam_religion } faith ?= { religion = religion:islam_religion }
@ -2175,6 +2228,7 @@ coronation_events.0205 = {
save_scope_as = value_target save_scope_as = value_target
} }
activity_location = { save_scope_as = location } activity_location = { save_scope_as = location }
activity_host = { save_scope_as = bg_override_char }
#Guards for orderly east asian ceremonies in the palace #Guards for orderly east asian ceremonies in the palace
if = { if = {
limit = { limit = {
@ -5019,19 +5073,19 @@ coronation_events.0312 = { #Guest ending event
trigger = { trigger = {
exists = scope:high_magnificence exists = scope:high_magnificence
} }
desc = coronation_events.0310.desc.high_magnificence desc = coronation_events.0312.desc.high_magnificence
} }
triggered_desc = { triggered_desc = {
trigger = { trigger = {
exists = scope:mid_magnificence exists = scope:mid_magnificence
} }
desc = coronation_events.0310.desc.mid_magnificence desc = coronation_events.0312.desc.mid_magnificence
} }
triggered_desc = { triggered_desc = {
trigger = { trigger = {
exists = scope:low_magnificence exists = scope:low_magnificence
} }
desc = coronation_events.0310.desc.low_magnificence desc = coronation_events.0312.desc.low_magnificence
} }
} }
} }
@ -5170,3 +5224,30 @@ coronation_events.0400 = { # HoF supports anointment
} }
} }
} }
#Invalidated from host's primary title change
coronation_events.0401 = {
type = letter_event
opening = {
desc = coronation_events.0401.opening
}
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:host = {
highest_held_title_tier >= tier_kingdom
}
}
desc = coronation_events.0401.desc
}
desc = coronation_events.0401.desc_title_loss
}
}
sender = scope:host
option = {
name = coronation_events.0401.a
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -911,7 +911,7 @@ hold_court.1021 = {
scripted_trigger hold_court_3000_vassal_trigger = { scripted_trigger hold_court_3000_vassal_trigger = {
basic_is_available_ai = yes basic_is_available_ai = yes
is_adult = yes is_adult = yes
short_term_gold >= standard_activity_cost short_term_gold >= standard_activity_base_cost
has_court_event_flag = no has_court_event_flag = no
NOT = { NOT = {
has_hook_of_type = { has_hook_of_type = {
@ -1024,7 +1024,7 @@ hold_court.3000 = {
} }
pay_short_term_gold = { pay_short_term_gold = {
target = root target = root
gold = standard_activity_cost gold = standard_activity_base_cost
} }
} }
custom_tooltip = hold_court.3000.a.tt custom_tooltip = hold_court.3000.a.tt
@ -1080,7 +1080,7 @@ hold_court.3000 = {
} }
pay_short_term_gold = { pay_short_term_gold = {
target = root target = root
gold = standard_activity_cost gold = standard_activity_base_cost
} }
} }
custom_tooltip = hold_court.3000.a.tt custom_tooltip = hold_court.3000.a.tt
@ -2751,6 +2751,7 @@ hold_court.3060 = {
opinion = 20 opinion = 20
} }
fire_councillor = scope:cp_steward fire_councillor = scope:cp_steward
scope:cp_steward_replacement = { set_employer = prev }
assign_councillor_type = { assign_councillor_type = {
type = councillor_steward type = councillor_steward
target = scope:cp_steward_replacement target = scope:cp_steward_replacement
@ -3101,11 +3102,6 @@ hold_court.3090 = {
desc = cultural_acceptance_gain_hold_court_event_outcome desc = cultural_acceptance_gain_hold_court_event_outcome
} }
} }
reverse_add_opinion = {
modifier = pleased_opinion
target = scope:different_culture_vassal
opinion = 20
}
if = { if = {
limit = { limit = {
any_vassal = { any_vassal = {
@ -3119,17 +3115,22 @@ hold_court.3090 = {
culture = scope:different_culture_vassal.culture culture = scope:different_culture_vassal.culture
} }
add_opinion = { add_opinion = {
target = root
opinion = 5
modifier = respect_opinion modifier = respect_opinion
target = root
opinion = 5
} }
} }
} }
reverse_add_opinion = {
modifier = pleased_opinion
target = scope:different_culture_vassal
opinion = 20
}
stress_impact = { stress_impact = {
greedy = medium_stress_loss greedy = medium_stress_gain
arrogant = medium_stress_loss arrogant = medium_stress_gain
generous = medium_stress_gain generous = medium_stress_loss
humble = medium_stress_gain humble = medium_stress_loss
} }
ai_chance = { ai_chance = {
@ -4023,11 +4024,11 @@ hold_court.4600 = {
has_trait = sadistic has_trait = sadistic
AND = { AND = {
is_witch_trigger = yes is_witch_trigger = yes
trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = witch GENDER_CHARACTER = root } trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = trait:witch GENDER_CHARACTER = root }
} }
AND = { AND = {
is_cannibal_trigger = yes is_cannibal_trigger = yes
trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = cannibal GENDER_CHARACTER = root } trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = trait:cannibal GENDER_CHARACTER = root }
} }
} }
OR = { # I care about dread OR = { # I care about dread
@ -6211,6 +6212,7 @@ hold_court.6040 = {
title = hold_court_6040_b_generic title = hold_court_6040_b_generic
add_learning_skill = 1 add_learning_skill = 1
add_prestige = minor_prestige_gain add_prestige = minor_prestige_gain
random_dummy_gender_effect = yes
create_artifact_book_effect = { create_artifact_book_effect = {
OWNER = root OWNER = root
CREATOR = scope:dummy_gender CREATOR = scope:dummy_gender
@ -8299,22 +8301,28 @@ hold_court.6100 = {
immediate = { immediate = {
random_vassal = { random_vassal = {
limit = { vassal_war_char_trigger = yes } limit = {
vassal_war_char_trigger = yes
any_character_war = { vassal_war_conflict_trigger = yes }
}
random_character_war = { random_character_war = {
limit = { vassal_war_conflict_trigger = yes } limit = { vassal_war_conflict_trigger = yes }
save_scope_as = vassal_war save_scope_as = vassal_war
} }
} }
scope:vassal_war = { scope:vassal_war = {
primary_attacker = { casus_belli = {
primary_attacker = {
court_event_character_flag_effect = yes
save_scope_as = 6100_vassal_1 save_scope_as = 6100_vassal_1
court_event_character_flag_effect = yes }
primary_defender = {
court_event_character_flag_effect = yes
save_scope_as = 6100_vassal_2
}
} }
primary_defender = {
save_scope_as = 6100_vassal_2
court_event_character_flag_effect = yes
}
} }
if = { if = {
limit = { limit = {
employs_court_position = court_jester_court_position employs_court_position = court_jester_court_position
@ -10185,7 +10193,16 @@ hold_court.6140 = {
scripted_trigger hold_court_6160_valid_bankrupt_vassal_trigger = { scripted_trigger hold_court_6160_valid_bankrupt_vassal_trigger = {
has_court_event_flag = no has_court_event_flag = no
is_available_ai_adult = yes is_available_ai_adult = yes
gold < 0 OR = {
AND = {
has_treasury = yes
treasury < 0
}
AND = {
has_treasury = no
gold < 0
}
}
} }
scripted_trigger hold_court_6160_valid_hook_trigger = { scripted_trigger hold_court_6160_valid_hook_trigger = {
@ -10382,12 +10399,12 @@ hold_court.6160 = {
limit = { limit = {
is_ai = yes is_ai = yes
} }
short_term_gold >= major_gold_value short_term_treasury_or_gold >= major_gold_value
} }
} }
pay_short_term_gold = { pay_treasury_or_gold = {
target = scope:6160_vassal target = scope:6160_vassal
gold = medium_gold_value value = medium_treasury_or_gold_value
} }
add_hook = { add_hook = {
type = indebted_hook type = indebted_hook
@ -10404,7 +10421,7 @@ hold_court.6160 = {
ai_chance = { ai_chance = {
base = 100 base = 100
modifier = { modifier = {
gold < medium_gold_value short_term_treasury_or_gold < medium_treasury_or_gold_value
add = -95 add = -95
} }
modifier = { modifier = {
@ -10428,15 +10445,15 @@ hold_court.6160 = {
limit = { limit = {
is_ai = yes is_ai = yes
} }
short_term_gold >= major_gold_value short_term_treasury_or_gold >= major_gold_value
} }
} }
scope:6160_vassal = { scope:6160_vassal = {
remove_hook = { target = root } remove_hook = { target = root }
} }
pay_short_term_gold = { pay_treasury_or_gold = {
target = scope:6160_vassal target = scope:6160_vassal
gold = medium_gold_value value = medium_treasury_or_gold_value
} }
reverse_add_opinion = { reverse_add_opinion = {
target = scope:6160_vassal target = scope:6160_vassal
@ -10449,7 +10466,7 @@ hold_court.6160 = {
ai_chance = { ai_chance = {
base = 120 base = 120
modifier = { modifier = {
gold < medium_gold_value short_term_treasury_or_gold < medium_treasury_or_gold_value
add = -95 add = -95
} }
modifier = { modifier = {
@ -10477,12 +10494,12 @@ hold_court.6160 = {
limit = { limit = {
is_ai = yes is_ai = yes
} }
short_term_gold >= major_gold_value short_term_treasury_or_gold >= major_treasury_or_gold_value
} }
} }
pay_short_term_gold = { pay_treasury_or_gold = {
target = scope:6160_vassal target = scope:6160_vassal
gold = medium_gold_value value = medium_treasury_or_gold_value
} }
add_prestige = major_prestige_gain add_prestige = major_prestige_gain
change_current_court_grandeur = medium_court_grandeur_gain change_current_court_grandeur = medium_court_grandeur_gain
@ -10499,7 +10516,7 @@ hold_court.6160 = {
ai_chance = { ai_chance = {
base = 100 base = 100
modifier = { modifier = {
gold < medium_gold_value treasury_or_gold < medium_treasury_or_gold_value
add = -95 add = -95
} }
modifier = { modifier = {
@ -10530,12 +10547,12 @@ hold_court.6160 = {
limit = { limit = {
is_ai = yes is_ai = yes
} }
short_term_gold >= major_gold_value short_term_treasury_or_gold >= major_treasury_or_gold_value
} }
} }
pay_short_term_gold = { pay_treasury_or_gold = {
target = scope:6160_vassal target = scope:6160_vassal
gold = major_gold_value value = major_treasury_or_gold_value
} }
add_piety = major_piety_gain add_piety = major_piety_gain
change_current_court_grandeur = major_court_grandeur_gain change_current_court_grandeur = major_court_grandeur_gain
@ -10555,7 +10572,7 @@ hold_court.6160 = {
ai_chance = { ai_chance = {
base = 100 base = 100
modifier = { modifier = {
gold < major_gold_value short_term_treasury_or_gold < major_treasury_or_gold_value
add = -95 add = -95
} }
modifier = { modifier = {
@ -10586,7 +10603,7 @@ hold_court.6160 = {
limit = { limit = {
is_ai = yes is_ai = yes
} }
short_term_gold >= major_gold_value short_term_treasury_or_gold >= major_treasury_or_gold_value
} }
} }
if = { if = {
@ -10626,7 +10643,7 @@ hold_court.6160 = {
ai_chance = { ai_chance = {
base = 120 base = 120
modifier = { modifier = {
gold < medium_treasury_or_gold_value short_term_treasury_or_gold < medium_treasury_or_gold_value
add = -95 add = -95
} }
modifier = { modifier = {
@ -10654,7 +10671,7 @@ hold_court.6160 = {
ai_chance = { ai_chance = {
base = 100 base = 100
modifier = { modifier = {
gold < medium_gold_value short_term_treasury_or_gold < medium_treasury_or_gold_value
add = 95 add = 95
} }
modifier = { modifier = {
@ -17135,8 +17152,9 @@ hold_court.8090 = {
} }
} }
scope:vassal = { scope:vassal = {
court_position_generator_effect = { VAR = target EMPLOYER = root } court_position_generator_effect = { VAR = target EMPLOYER = root ONLY_EMPTY = no }
court_position_generator_effect = { VAR = backup EMPLOYER = root } # SECONDARY OPTIONS SHOULD BE EMPTY
court_position_generator_effect = { VAR = backup EMPLOYER = root ONLY_EMPTY = yes }
} }
# Trigger next event in chain. # Trigger next event in chain.
hold_court_queue_next_event_effect = yes hold_court_queue_next_event_effect = yes
@ -23104,6 +23122,9 @@ hold_court.8180 = {
any_character_artifact = { exists = yes } any_character_artifact = { exists = yes }
} }
ordered_character_artifact = { ordered_character_artifact = {
limit = {
artifact_can_be_gift_to_trigger = { RECIPIENT = root }
}
order_by = artifact_rarity order_by = artifact_rarity
save_scope_as = vassal_artifact save_scope_as = vassal_artifact
} }
@ -24868,6 +24889,7 @@ scripted_trigger hold_court_8210_vassal_trigger = {
any_held_title = { any_held_title = {
title_tier = county title_tier = county
any_neighboring_county = { any_neighboring_county = {
NOT = { this = root.capital_county }
holder = { holder = {
this = root this = root
NOR = { NOR = {

View file

@ -286,8 +286,8 @@ scripted_trigger pilgrimage_0500_valid_holy_site_trigger = {
NOR = { NOR = {
this = root.location.barony this = root.location.barony
AND = { AND = {
exists = capital_province exists = root.capital_province
this = capital_province.barony this = root.capital_province.barony
} }
} }
} }
@ -1900,7 +1900,7 @@ pilgrimage.1130 = {
pilgrimage_1130_anti_character_trigger = yes pilgrimage_1130_anti_character_trigger = yes
is_of_major_interest_to_root_trigger = yes is_of_major_interest_to_root_trigger = yes
} }
limit = { alternative_limit = {
pilgrimage_1130_anti_character_trigger = yes pilgrimage_1130_anti_character_trigger = yes
is_of_minor_interest_to_root_trigger = yes is_of_minor_interest_to_root_trigger = yes
} }
@ -2934,12 +2934,14 @@ pilgrimage.2005 = {
character = scope:rude_pilgrim character = scope:rude_pilgrim
animation = laugh animation = laugh
} }
cooldown = { years = 2 } cooldown = { years = 5 }
trigger = { trigger = {
is_location_valid_for_travel_event_on_land = yes is_location_valid_for_travel_event_on_land = yes
current_travel_plan ?= { current_travel_plan ?= {
any_entourage_character = { any_entourage_character = {
is_physically_able_ai_adult = yes is_physically_able_ai_adult = yes
has_no_particular_noble_roots_trigger = yes
is_ruler = no
this != root this != root
NOT = { is_courtier_of = root } NOT = { is_courtier_of = root }
} }
@ -2951,6 +2953,8 @@ pilgrimage.2005 = {
random_entourage_character = { random_entourage_character = {
limit = { limit = {
is_physically_able_ai_adult = yes is_physically_able_ai_adult = yes
has_no_particular_noble_roots_trigger = yes
is_ruler = no
this != root this != root
NOT = { is_courtier_of = root } NOT = { is_courtier_of = root }
} }
@ -4721,7 +4725,7 @@ pilgrimage.2030 = {
option = { option = {
name = pilgrimage.2030.c name = pilgrimage.2030.c
trigger = { has_activity_intent = reflection_intent } trigger = { has_activity_intent = reflection_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
bonus_to_all_types_effect = yes bonus_to_all_types_effect = yes
add_piety = miniscule_piety_gain add_piety = miniscule_piety_gain
if = { if = {
@ -5420,7 +5424,7 @@ pilgrimage.2101 = {
limit = { limit = {
NOT = { NOT = {
government_has_flag = government_is_mandala government_has_flag = government_is_mandala
house ?= { has_house_power_parameter = aspect_of_creation } house ?= { has_house_aspiration_parameter = aspect_of_creation }
} }
} }
random = { random = {
@ -5480,7 +5484,7 @@ pilgrimage.2101 = {
limit = { limit = {
NOT = { NOT = {
government_has_flag = government_is_mandala government_has_flag = government_is_mandala
house ?= { has_house_power_parameter = aspect_of_creation } house ?= { has_house_aspiration_parameter = aspect_of_creation }
} }
} }
random = { random = {
@ -5686,6 +5690,7 @@ pilgrimage.2501 = {
immediate = { immediate = {
create_character = { create_character = {
age = 31 age = 31
dynasty = none
gender_female_chance = 0.5 gender_female_chance = 0.5
trait = education_intrigue_1 trait = education_intrigue_1
trait = stubborn trait = stubborn
@ -6335,6 +6340,7 @@ pilgrimage.3001 = {
desc = pilgrimage.3001.desc desc = pilgrimage.3001.desc
theme = travel_pilgrimage theme = travel_pilgrimage
override_background = { reference = terrain_travel } override_background = { reference = terrain_travel }
widget = { gui = event_window_widget_vfx_rain_storm container = foreground_shader_vfx_container }
left_portrait = { left_portrait = {
character = root character = root
triggered_animation = { triggered_animation = {
@ -6349,7 +6355,7 @@ pilgrimage.3001 = {
} }
right_portrait = { right_portrait = {
character = scope:zealous_priest character = scope:zealous_priest
animation = personality_zealous animation = debating
outfit_tags = { bishop_outfit } outfit_tags = { bishop_outfit }
} }
cooldown = { years = 15 } cooldown = { years = 15 }
@ -6362,6 +6368,7 @@ pilgrimage.3001 = {
random_dummy_gender_clergy_effect = yes random_dummy_gender_clergy_effect = yes
create_character = { create_character = {
age = 40 age = 40
dynasty = none
gender = scope:dummy_clergy_gender gender = scope:dummy_clergy_gender
location = root.location location = root.location
faith = root.faith faith = root.faith
@ -6490,6 +6497,7 @@ pilgrimage.3002 = {
immediate = { immediate = {
create_character = { create_character = {
age = 40 age = 40
dynasty = none
gender_female_chance = 50 gender_female_chance = 50
location = root.location location = root.location
faith = faith:adamites faith = faith:adamites
@ -6522,6 +6530,12 @@ pilgrimage.3002 = {
worldly_type_option_effect = yes worldly_type_option_effect = yes
add_piety = massive_piety_loss add_piety = massive_piety_loss
set_character_faith = faith:adamites set_character_faith = faith:adamites
if = {
limit = {
faith:adamites = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
add_to_entourage_court_and_activity_effect = { add_to_entourage_court_and_activity_effect = {
CHAR_TO_ADD = scope:naked_preacher CHAR_TO_ADD = scope:naked_preacher
NEW_COURT_OWNER = root NEW_COURT_OWNER = root
@ -6696,7 +6710,7 @@ pilgrimage.3004 = {
} }
right_portrait = { right_portrait = {
character = scope:doomsayer character = scope:doomsayer
animation = personality_zealous animation = debating
outfit_tags = { monk_outfit } outfit_tags = { monk_outfit }
} }
cooldown = { years = 15 } cooldown = { years = 15 }
@ -6709,6 +6723,7 @@ pilgrimage.3004 = {
random_dummy_gender_clergy_effect = yes random_dummy_gender_clergy_effect = yes
create_character = { create_character = {
age = 40 age = 40
dynasty = none
trait = devoted trait = devoted
gender = scope:dummy_clergy_gender gender = scope:dummy_clergy_gender
location = root.location location = root.location
@ -7094,6 +7109,7 @@ pilgrimage.3301 = {
random_dummy_gender_clergy_effect = yes random_dummy_gender_clergy_effect = yes
create_character = { create_character = {
age = 80 age = 80
dynasty = none
gender = scope:dummy_clergy_gender gender = scope:dummy_clergy_gender
location = root.location location = root.location
faith = root.faith faith = root.faith
@ -7187,6 +7203,7 @@ pilgrimage.3302 = {
immediate = { immediate = {
create_character = { create_character = {
age = 80 age = 80
dynasty = none
template = default_mystic_character template = default_mystic_character
location = root.location location = root.location
culture = root.location.county.culture culture = root.location.county.culture
@ -7200,7 +7217,7 @@ pilgrimage.3302 = {
factor = 2 factor = 2
OR = { #you're in a reflection journey OR = { #you're in a reflection journey
has_activity_intent = reflection_intent has_activity_intent = reflection_intent
scope:activity = { involved_activity = {
has_activity_option = { has_activity_option = {
category = special_type category = special_type
option = pilgrimage_type_pious option = pilgrimage_type_pious
@ -7226,7 +7243,7 @@ pilgrimage.3302 = {
} }
} }
} }
#Humble Relection #Humble Reflection
option = { option = {
name = pilgrimage.3302.b name = pilgrimage.3302.b
pious_type_option_effect = yes pious_type_option_effect = yes
@ -7315,7 +7332,7 @@ pilgrimage.3303 = {
factor = 2 factor = 2
OR = { #you're in a reflection journey OR = { #you're in a reflection journey
has_activity_intent = reflection_intent has_activity_intent = reflection_intent
scope:activity = { involved_activity = {
has_activity_option = { has_activity_option = {
category = special_type category = special_type
option = pilgrimage_type_pious option = pilgrimage_type_pious
@ -7491,7 +7508,7 @@ pilgrimage.3401 = {
factor = 2 factor = 2
OR = { #you're in a reflection journey OR = { #you're in a reflection journey
has_activity_intent = reflection_intent has_activity_intent = reflection_intent
scope:activity = { involved_activity = {
has_activity_option = { has_activity_option = {
category = special_type category = special_type
option = pilgrimage_type_pious option = pilgrimage_type_pious
@ -8180,6 +8197,7 @@ pilgrimage.6007 = {
immediate = { immediate = {
play_music_cue = "mx_cue_sacredrite" play_music_cue = "mx_cue_sacredrite"
create_character = { create_character = {
dynasty = none
location = root.location location = root.location
template = priest_character_template template = priest_character_template
faith = root.faith faith = root.faith
@ -10323,6 +10341,7 @@ pilgrimage.6530 = {
#template = peasant_villager_foundling_character #template = peasant_villager_foundling_character
location = root.location location = root.location
age = { 5 10 } age = { 5 10 }
dynasty = none
random_traits = yes random_traits = yes
culture = root.location.county.culture culture = root.location.county.culture
faith = root.location.county.faith faith = root.location.county.faith
@ -13891,6 +13910,9 @@ pilgrimage.6850 = {
#Improve your spymaster's secret discovery chance #Improve your spymaster's secret discovery chance
option = { option = {
name = pilgrimage.6850.b name = pilgrimage.6850.b
trigger = {
exists = cp:councillor_spymaster
}
add_learning_lifestyle_xp = medium_lifestyle_xp add_learning_lifestyle_xp = medium_lifestyle_xp
add_character_modifier = { add_character_modifier = {
modifier = spymaster_eyes_modifier modifier = spymaster_eyes_modifier

View file

@ -192,7 +192,7 @@ tour_grounds_events.6000 = {
trigger_if = { trigger_if = {
limit = { limit = {
NOT = { is_incestuous_trigger = yes } NOT = { is_incestuous_trigger = yes }
trait_is_criminal_in_faith_trigger = { TRAIT = incestuous FAITH = root.faith GENDER_CHARACTER = root } trait_is_criminal_in_faith_trigger = { TRAIT = trait:incestuous FAITH = root.faith GENDER_CHARACTER = root }
} }
NOT = { is_close_or_extended_family_of = scope:stop_host_scope } NOT = { is_close_or_extended_family_of = scope:stop_host_scope }
} }
@ -392,6 +392,8 @@ scripted_trigger tg_6100_location_has_cathedral_trigger = {
has_building_or_higher = holy_wisdom_01 has_building_or_higher = holy_wisdom_01
has_building_or_higher = duomo_florence_01 has_building_or_higher = duomo_florence_01
has_building_or_higher = wawel_cathedral_01 has_building_or_higher = wawel_cathedral_01
has_building_or_higher = holy_site_st_peters_basilica_01
has_building_or_higher = mont_st_michel_02
} }
} }
@ -404,6 +406,8 @@ scripted_trigger tg_6100_location_has_mosque_trigger = {
has_building_or_higher = holy_site_great_mosque_of_samarra_01 has_building_or_higher = holy_site_great_mosque_of_samarra_01
has_building_or_higher = holy_site_prophetic_mosque_01 has_building_or_higher = holy_site_prophetic_mosque_01
has_building_or_higher = damascus_mosque_01 has_building_or_higher = damascus_mosque_01
has_building_or_higher = qutb_minar_03
has_building_or_higher = yazd_mosque_01
} }
} }

View file

@ -2186,6 +2186,15 @@ cultural_festival.2060 = {
} }
any_character_artifact = { #you bring something with you any_character_artifact = { #you bring something with you
is_equipped = no is_equipped = no
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:stop_host_scope }
trigger_if = {
limit = {
scope:stop_host_scope = {
highest_held_title_tier > tier_kingdom #No point in giving a court artifact if this is a character without a court.
}
}
ep1_artifact_is_court_artifact_trigger = no
}
} }
} }
@ -2212,6 +2221,7 @@ cultural_festival.2060 = {
random_character_artifact = { random_character_artifact = {
limit = { limit = {
is_equipped = no is_equipped = no
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:stop_host_scope }
trigger_if = { trigger_if = {
limit = { limit = {
scope:stop_host_scope = { scope:stop_host_scope = {
@ -2236,6 +2246,7 @@ cultural_festival.2060 = {
} }
alternative_limit = { alternative_limit = {
is_equipped = no is_equipped = no
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:stop_host_scope }
trigger_if = { trigger_if = {
limit = { limit = {
scope:stop_host_scope = { scope:stop_host_scope = {
@ -2248,6 +2259,7 @@ cultural_festival.2060 = {
} }
alternative_limit = { alternative_limit = {
is_equipped = no is_equipped = no
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:stop_host_scope }
trigger_if = { trigger_if = {
limit = { limit = {
scope:stop_host_scope = { scope:stop_host_scope = {
@ -3551,7 +3563,7 @@ cultural_festival.2110 = {
trigger = { trigger = {
has_activity_intent = reduce_stress_intent has_activity_intent = reduce_stress_intent
} }
custom_tooltip = available_because_intent_tt reason = activity_intent
stress_impact = { stress_impact = {
base = major_stress_impact_loss #your reward base = major_stress_impact_loss #your reward
callous = minor_stress_impact_gain callous = minor_stress_impact_gain
@ -5371,6 +5383,7 @@ cultural_festival.3040 = {
artifact_type = dagger artifact_type = dagger
artifact_type = sword artifact_type = sword
} }
artifact_can_be_gift_advance_trigger = yes
} }
} }
@ -5384,6 +5397,7 @@ cultural_festival.3040 = {
artifact_type = dagger artifact_type = dagger
artifact_type = sword artifact_type = sword
} }
artifact_can_be_gift_advance_trigger = yes
} }
save_scope_as = sword_in_the_stone_scope save_scope_as = sword_in_the_stone_scope
} }
@ -8819,12 +8833,15 @@ cultural_festival.4300 = { #Vassal: Decide which gift to give
has_any_artifact = yes has_any_artifact = yes
any_character_artifact = { any_character_artifact = {
category = inventory category = inventory
NOT = { has_variable = historical_unique_artifact }
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:visiting_liege }
} }
} }
random_character_artifact = { random_character_artifact = {
limit = { limit = {
category = inventory category = inventory
NOT = { has_variable = historical_unique_artifact } NOT = { has_variable = historical_unique_artifact }
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:visiting_liege }
} }
save_scope_as = existing_artifact save_scope_as = existing_artifact
} }
@ -9171,21 +9188,20 @@ cultural_festival.4302 = { #Liege: Pick the gift for Vassal, mirror of cultural_
immediate = { immediate = {
if = { if = {
limit = { limit = {
root = { has_any_artifact = yes
has_any_artifact = yes any_character_artifact = {
any_character_artifact = { category = inventory
category = inventory NOT = { has_variable = historical_unique_artifact }
NOT = { has_variable = historical_unique_artifact } NOT = { has_variable = received_as_cultural_gift } #make sure you don't give back the thing you just got
NOT = { has_variable = received_as_cultural_gift } #make sure you don't give back the thing you just got artifact_can_be_gift_to_trigger = { RECIPIENT = scope:stop_host_scope }
}
} }
} }
random_character_artifact = { random_character_artifact = {
limit = { limit = {
category = inventory category = inventory
artifact_owner = root
NOT = { has_variable = historical_unique_artifact } NOT = { has_variable = historical_unique_artifact }
NOT = { has_variable = received_as_cultural_gift } NOT = { has_variable = received_as_cultural_gift }
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:stop_host_scope }
} }
save_scope_as = existing_artifact save_scope_as = existing_artifact
} }

View file

@ -1739,7 +1739,10 @@ tour_travel.3120 = {
chance = 50 chance = 50
set_variable = inn_artifact_var set_variable = inn_artifact_var
scope:vassal_inn = { scope:vassal_inn = {
random_character_artifact = { save_scope_as = vassal_artifact } random_character_artifact = {
limit = { artifact_can_be_gift_to_trigger = { RECIPIENT = root } }
save_scope_as = vassal_artifact
}
} }
} }
} }
@ -2043,7 +2046,7 @@ tour_travel.3130 = {
trigger = { trigger = {
has_activity_intent = justice_intent has_activity_intent = justice_intent
} }
custom_tooltip = available_because_intent_tt reason = activity_intent
capital_province.county = { capital_province.county = {
add_county_modifier = { add_county_modifier = {
modifier = peasant_influx_modifier modifier = peasant_influx_modifier
@ -2272,7 +2275,7 @@ tour_travel.3140 = {
} }
################################################## ##################################################
# Danger! Ghino di Tacco-ish local ruler invites you to a banquet before stealing from you, then he confesses there are not that many options here to survive and needs money for his family and subjects. Changed the story so much that's almost unrecognisible, apologies. # Danger! Ghino di Tacco-ish local ruler invites you to a banquet before stealing from you, then he confesses there are not that many options here to survive and needs money for his family and subjects. Changed the story so much that's almost unrecognizable, apologies.
# by Veronica Pazos # by Veronica Pazos
# 3110-3111 # 3110-3111
################################################## ##################################################

View file

@ -78,7 +78,7 @@ historical_artifacts.0023 = {
} }
# Court Artifacts: Buddhism # Court Artifacts: Buddhism
while = { while = {
count = 6 count = 12
random_character_with_royal_court = { random_character_with_royal_court = {
limit = { limit = {
faith.religion = religion:buddhism_religion faith.religion = religion:buddhism_religion
@ -351,6 +351,7 @@ historical_artifacts.0023 = {
limit = { limit = {
has_fp2_dlc_trigger = yes has_fp2_dlc_trigger = yes
current_date >= 997.1.1 current_date >= 997.1.1
current_date <= 1178.1.1
} }
title:c_toledo.holder = { title:c_toledo.holder = {
create_artifact_various_aquamanile_santiago = { OWNER = this } create_artifact_various_aquamanile_santiago = { OWNER = this }
@ -363,6 +364,23 @@ historical_artifacts.0023 = {
} }
} }
} }
if = {
# If we're after Almanzor's raid, then the bells go to c_toledo's holder.
limit = {
has_fp2_dlc_trigger = yes
current_date >= 1178.1.1
}
title:c_cordoba.holder = {
create_artifact_various_aquamanile_santiago = { OWNER = this }
# The bells have been morphed once.
scope:newly_created_artifact = {
set_variable = {
name = artefact_santiago_bells
value = 1
}
}
}
}
## Weapons (including decoratives) ## Weapons (including decoratives)
### Curtana ### Curtana
#### Not the *actual* Curtana, but at least occasionally traced as Edward the Confessor's sword (and then ascribed an even more mythic origin from there). #### Not the *actual* Curtana, but at least occasionally traced as Edward the Confessor's sword (and then ascribed an even more mythic origin from there).
@ -496,6 +514,165 @@ historical_artifacts.0023 = {
create_artifact_spear_of_the_prophet_effect = { OWNER = this } create_artifact_spear_of_the_prophet_effect = { OWNER = this }
} }
} }
### Banke no Hoken ~785
if = { # Chrysanthemum Throne
limit = {
has_dlc_feature = royal_court
current_date >= 867.1.1
exists = title:k_chrysanthemum_throne.holder
}
title:k_chrysanthemum_throne.holder = {
create_artifact_pedestal_sakanoue_sword_effect = { OWNER = this }
}
}
### Higekiri ~950
if = { # Seiwa
limit = {
current_date = 1066.9.15
exists = title:c_nf_minamoto_seiwa.holder
}
title:c_nf_minamoto_seiwa.holder = {
create_artifact_higekiri_sword_effect = { OWNER = this }
}
}
else_if = { # Kawachi
limit = {
current_date >= 1178.10.1
exists = title:c_nf_minamoto_kawachi.holder
}
title:c_nf_minamoto_kawachi.holder = {
create_artifact_higekiri_sword_effect = { OWNER = this }
}
}
### Hizamaru ~950
if = { # Kawachi
limit = {
current_date = 1066.9.15
exists = title:c_nf_minamoto_kawachi.holder
}
title:c_nf_minamoto_kawachi.holder = {
create_artifact_hizamaru_sword_effect = { OWNER = this }
}
}
else_if = { # Yoshitsune
limit = {
current_date >= 1178.10.1
exists = title:d_laamp_yoshitsune.holder
}
title:d_laamp_yoshitsune.holder = {
create_artifact_hizamaru_sword_effect = { OWNER = this }
}
}
### Dojigiri ~880
if = { # Uona
limit = {
current_date = 1066.9.15
exists = title:c_nf_fujiwara_uona.holder
}
title:c_nf_fujiwara_uona.holder = {
create_artifact_dojigiri_sword_effect = { OWNER = this }
}
}
else_if = { # Oshu
limit = {
current_date >= 1178.10.1
exists = title:c_nf_fujiwara_oshu.holder
}
title:c_nf_fujiwara_oshu.holder = {
create_artifact_dojigiri_sword_effect = { OWNER = this }
}
}
### Mikazuki Munechika ~980
if = { # Kan'in
limit = {
current_date = 1066.9.15
exists = title:c_nf_fujiwara_kanin.holder
}
title:c_nf_fujiwara_kanin.holder = {
create_artifact_mikazuki_munechika_sword_effect = { OWNER = this }
}
}
else_if = { # Tokudaiji
limit = {
current_date >= 1178.10.1
exists = title:c_nf_fujiwara_ashikaga.holder
}
title:c_nf_fujiwara_ashikaga.holder = {
create_artifact_mikazuki_munechika_sword_effect = { OWNER = this }
}
}
### Ōtenta ~1082
if = { # Kiso
limit = {
current_date >= 1178.10.1
exists = title:c_nf_minamoto_kiso.holder
}
title:c_nf_minamoto_kiso.holder = {
create_artifact_odenta_sword_effect = { OWNER = this }
}
}
### Hamayumi ~1145
if = { # Chrysanthemum Throne
limit = {
has_dlc_feature = royal_court
current_date >= 1178.1.1
exists = title:k_chrysanthemum_throne.holder
}
title:k_chrysanthemum_throne.holder = {
create_artifact_pedestal_hamayumi_bow_effect = { OWNER = this }
}
}
### Shichishitō <500
if = { # Chrysanthemum Throne
limit = {
current_date >= 867.1.1
exists = title:k_chrysanthemum_throne.holder
}
title:k_chrysanthemum_throne.holder = {
create_artifact_pedestal_seven_branched_sword_effect = { OWNER = this }
}
}
### Gyerim-ro dagger ~867
if = { # Silla
limit = {
current_date = 867.1.1 # Only 867
exists = title:k_silla.holder
}
title:k_silla.holder = {
create_artifact_pedestal_gyerimro_dagger_effect = { OWNER = this }
}
}
### Nukemaru ~1120
if = { # Taira
limit = {
current_date >= 1178.1.1
exists = title:c_nf_taira_kanmu.holder
}
title:c_nf_taira_kanmu.holder = {
create_artifact_nukemaru_sword_effect = { OWNER = this }
}
}
### Kogarasumaru ~945
if = { # Taira
limit = {
current_date >= 1066.9.15
exists = title:c_nf_taira_kanmu.holder
}
title:c_nf_taira_kanmu.holder = {
create_artifact_kogarasumaru_sword_effect = { OWNER = this }
}
}
## Armor
### Karakawa ~800
if = { # Taira
limit = {
current_date >= 867.1.1
exists = title:c_nf_taira_kanmu.holder
}
title:c_nf_taira_kanmu.holder = {
create_artifact_karakawa_armor_effect = { OWNER = this }
}
}
## Books, Scrolls, & Other Recorded Nerdery ## Books, Scrolls, & Other Recorded Nerdery
### Konagamana ### Konagamana
if = { if = {
@ -768,6 +945,84 @@ historical_artifacts.0023 = {
} }
} }
} }
#Imperial Seals
every_character_with_royal_court = {
limit = {
has_tgp_dlc_trigger = yes
is_independent_ruler = yes
government_allows = merit
}
create_artifact_dynastic_imperial_seal_effect = {
OWNER = this
SMITH = this
}
}
title:k_chrysanthemum_throne.holder ?= {
create_artifact_dynastic_imperial_seal_effect = {
OWNER = this
SMITH = this
}
}
#Heirloom Seal
#Only in 867
if = {
limit = {
has_tgp_dlc_trigger = yes
exists = title:h_china.holder
current_date <= 940.1.1
}
title:h_china.holder = {
create_artifact_heirloom_seal_effect = {
OWNER = this
}
}
}
#Armillary Sphere
if = {
limit = {
has_tgp_dlc_trigger = yes
}
title:h_china.holder = {
create_artifact_chinese_armillary_sphere_effect = {
OWNER = this
}
}
}
#Eight-Fold Chest
if = {
limit = {
has_tgp_dlc_trigger = yes
}
title:h_china.holder = {
create_artifact_eight_fold_chest_effect = {
OWNER = this
}
}
}
#Complete Military Classics
if = {
limit = {
has_tgp_dlc_trigger = yes
current_date > 1150.1.1 #Needs to be long past creation date for this to make sense
}
title:h_china.holder = {
create_artifact_military_classics_effect = {
OWNER = this
}
}
}
#Green Stone Amitabha Buddha Statue
if = {
limit = {
has_tgp_dlc_trigger = yes
current_date >= 1066.5.1
}
title:k_viet.holder = {
create_artifact_statue_viet_green_amitabha_buddha_effect = {
OWNER = this
}
}
}
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -1,292 +0,0 @@
#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
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -2929,22 +2929,24 @@ court_events.3120 = {
any_courtier_or_guest = { any_courtier_or_guest = {
is_available = yes is_available = yes
OR = { OR = {
AND = { inspiration ?= {
inspiration ?= { OR = {
NOR = { has_inspiration_type = weapon_inspiration
has_inspiration_type = adventure_inspiration has_inspiration_type = armor_inspiration
has_inspiration_type = alchemy_inspiration has_inspiration_type = smith_inspiration
has_inspiration_type = book_inspiration has_inspiration_type = weaver_inspiration
} has_inspiration_type = artisan_inspiration
} }
} }
AND = { AND = {
has_completed_inspiration = yes has_completed_inspiration = yes
var:created_artifact_type ?= { var:created_artifact_type ?= {
NOR = { OR = {
this = flag:adventure this = flag:weapon
this = flag:alchemy this = flag:armor
this = flag:book this = flag:smith
this = flag:weaver
this = flag:artisan
} }
} }
} }
@ -3025,23 +3027,24 @@ court_events.3120 = {
limit = { limit = {
is_available = yes is_available = yes
OR = { OR = {
AND = { inspiration ?= {
exists = inspiration OR = {
inspiration ?= { has_inspiration_type = weapon_inspiration
NOR = { has_inspiration_type = armor_inspiration
has_inspiration_type = adventure_inspiration has_inspiration_type = smith_inspiration
has_inspiration_type = alchemy_inspiration has_inspiration_type = weaver_inspiration
has_inspiration_type = book_inspiration has_inspiration_type = artisan_inspiration
}
} }
} }
AND = { AND = {
has_completed_inspiration = yes has_completed_inspiration = yes
var:created_artifact_type ?= { var:created_artifact_type ?= {
NOR = { OR = {
this = flag:adventure this = flag:weapon
this = flag:alchemy this = flag:armor
this = flag:book this = flag:smith
this = flag:weaver
this = flag:artisan
} }
} }
} }

View file

@ -2486,6 +2486,7 @@ court.3031 = {
option = { option = {
name = court.3031.c name = court.3031.c
every_sub_realm_county = { every_sub_realm_county = {
custom = every_culture_county_3031
limit = { limit = {
culture = scope:reference_county.culture culture = scope:reference_county.culture
} }
@ -8734,6 +8735,7 @@ court.8010 = {
limit = { limit = {
any_character_artifact = { any_character_artifact = {
count > 1 count > 1
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:underequipped }
artifact_slot_type = primary_armament artifact_slot_type = primary_armament
} }
} }
@ -8741,6 +8743,7 @@ court.8010 = {
limit = { limit = {
is_equipped = no is_equipped = no
artifact_slot_type = primary_armament artifact_slot_type = primary_armament
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:underequipped }
} }
order_by = { order_by = {
value = 0 value = 0
@ -13412,13 +13415,41 @@ court.9300 = {
} }
immediate = { immediate = {
random_courtier = {
limit = {
is_available_ai_adult = yes
has_court_event_flag = no
save_temporary_scope_as = another_courtier_check
root = {
any_courtier_or_guest = {
is_available_ai_adult = yes
has_court_event_flag = no
loves_food_trigger = yes
NOR = {
this = scope:another_courtier_check
is_of_major_interest_to_root_trigger = yes
}
is_of_minor_interest_to_root_trigger = yes
}
}
}
weight = {
base = 1
modifier = {
add = 100
is_knight = yes
}
}
save_scope_as = worried_courtier
court_event_character_flag_effect = yes
}
random_courtier_or_guest = { random_courtier_or_guest = {
limit = { limit = {
is_available_ai_adult = yes is_available_ai_adult = yes
has_court_event_flag = no has_court_event_flag = no
loves_food_trigger = yes loves_food_trigger = yes
NOR = { NOR = {
this = scope:another_courtier_check this = scope:worried_courtier
is_of_major_interest_to_root_trigger = yes is_of_major_interest_to_root_trigger = yes
} }
is_of_minor_interest_to_root_trigger = yes is_of_minor_interest_to_root_trigger = yes
@ -13439,21 +13470,6 @@ court.9300 = {
save_scope_as = overindulger_target save_scope_as = overindulger_target
court_event_character_flag_effect = yes court_event_character_flag_effect = yes
} }
random_courtier = {
limit = {
is_available_ai_adult = yes
this != scope:overindulger_target
}
weight = {
base = 1
modifier = {
add = 100
is_knight = yes
}
}
save_scope_as = worried_courtier
court_event_character_flag_effect = yes
}
} }
option = { # Stealing the King's treats, are we!? option = { # Stealing the King's treats, are we!?

View file

@ -706,10 +706,7 @@ court_events.1010 = {
scope:grander_ruler = { scope:grander_ruler = {
any_character_artifact = { any_character_artifact = {
ep1_artifact_is_court_artifact_trigger = yes ep1_artifact_is_court_artifact_trigger = yes
NOR = { artifact_can_be_gift_advance_trigger = yes
has_variable = banner_house
has_variable = banner_dynasty
}
} }
} }
} }
@ -717,10 +714,7 @@ court_events.1010 = {
random_character_artifact = { random_character_artifact = {
limit = { limit = {
ep1_artifact_is_court_artifact_trigger = yes ep1_artifact_is_court_artifact_trigger = yes
NOR = { artifact_can_be_gift_advance_trigger = yes
has_variable = banner_house
has_variable = banner_dynasty
}
} }
save_scope_as = coveted_artifact save_scope_as = coveted_artifact
} }

View file

@ -292,8 +292,7 @@ court_maintenance.0011 = {
# No owned house banner # No owned house banner
NOT = { NOT = {
any_character_artifact = { any_character_artifact = {
has_variable = banner_house var:banner_house ?= root.house
var:banner_house = root.house
} }
} }
AND = { AND = {
@ -302,15 +301,14 @@ court_maintenance.0011 = {
this = dynasty.dynast # Dynasty Head this = dynasty.dynast # Dynasty Head
any_parent = { # Parent landless any_parent = { # Parent landless
employer = prev employer = prev
dynasty = prev.dynasty dynasty ?= prev.dynasty
this = dynasty.dynast this = dynasty.dynast
} }
} }
# Dynasty banner does not exist # Dynasty banner does not exist
NOT = { NOT = {
any_character_artifact = { any_character_artifact = {
has_variable = banner_dynasty var:banner_dynasty ?= root.dynasty
var:banner_dynasty = root.dynasty
} }
} }
} }

View file

@ -30,12 +30,16 @@
#I united the western slavs #I united the western slavs
east_europe.0001 = { #by Mathilda Bjarnehed east_europe.0001 = { #by Mathilda Bjarnehed
type = character_event type = character_event
window = big_event_window
title = east_europe.0001.t title = east_europe.0001.t
desc = east_europe.0001.desc desc = east_europe.0001.desc
theme = realm theme = crown
override_effect_2d = { reference = legend_glow }
override_background = ep2_travel_farms
left_portrait = { left_portrait = {
character = scope:western_slav_uniter character = scope:western_slav_uniter
animation = personality_honorable animation = sword_coup_degrace
camera = camera_event_center_very_large
} }
immediate = { immediate = {
@ -116,10 +120,14 @@ east_europe.0010 = { #by Mathilda Bjarnehed
type = character_event type = character_event
title = east_europe.0010.t title = east_europe.0010.t
desc = east_europe.0010.desc desc = east_europe.0010.desc
theme = realm theme = crown
window = big_event_window
override_effect_2d = { reference = legend_glow }
override_background = courtyard
left_portrait = { left_portrait = {
character = scope:slav_uniter character = scope:slav_uniter
animation = personality_honorable animation = jockey_wave
camera = camera_event_horse_right
} }
immediate = { immediate = {
@ -550,6 +558,12 @@ east_europe.0034 = {
NOT = { religion = religion:magyar_religion } NOT = { religion = religion:magyar_religion }
} }
set_character_faith_with_conversion = faith:magyar_pagan set_character_faith_with_conversion = faith:magyar_pagan
if = {
limit = {
faith:magyar_pagan = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
} }
#Those who aren't pagans are probably horrified. #Those who aren't pagans are probably horrified.
@ -1480,6 +1494,12 @@ east_europe.0116 = {
#I'll just quietly convert by myself. #I'll just quietly convert by myself.
set_character_faith = scope:hof.faith set_character_faith = scope:hof.faith
if = {
limit = {
scope:hof.faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
#Costs you some piety, but easier to flip back from. #Costs you some piety, but easier to flip back from.
add_piety = minor_piety_loss add_piety = minor_piety_loss
#Set up scope:accuser loc. #Set up scope:accuser loc.
@ -1527,6 +1547,12 @@ east_europe.0116 = {
#The realm must join me! #The realm must join me!
set_character_faith_with_conversion = scope:hof.faith set_character_faith_with_conversion = scope:hof.faith
if = {
limit = {
scope:hof.faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
#A pious act, from the POV of your new faith. #A pious act, from the POV of your new faith.
add_piety = medium_piety_gain add_piety = medium_piety_gain
#Set up scope:accuser loc. #Set up scope:accuser loc.
@ -2584,7 +2610,7 @@ east_europe.0125 = {
#Default to yes. #Default to yes.
100 = { 100 = {
trigger_event = { trigger_event = {
id = east_europe.113 id = east_europe.0113
days = { 7 14 } days = { 7 14 }
} }

View file

@ -1459,6 +1459,12 @@ iberia_north_africa.0122 = {
} }
set_character_faith_with_conversion = scope:religious_leader.faith set_character_faith_with_conversion = scope:religious_leader.faith
if = {
limit = {
scope:religious_leader.faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
show_as_tooltip = { show_as_tooltip = {
scope:religious_leader = { scope:religious_leader = {
favour_the_countryside_basques_decision_generic_effects_scripted_effect = yes favour_the_countryside_basques_decision_generic_effects_scripted_effect = yes

View file

@ -1043,7 +1043,7 @@ mpo_greatest_of_khans.0001 = {
add_dynasty_prestige = fought_gok_alone_value add_dynasty_prestige = fought_gok_alone_value
} }
} }
mpo_add_golden_lineage_effect = { CHARACTER = root } mpo_add_golden_lineage_effect = yes
} }
option = { option = {
@ -1143,7 +1143,7 @@ mpo_greatest_of_khans.0002 = {
custom_tooltip = gok_threatening_powers_tt custom_tooltip = gok_threatening_powers_tt
custom_tooltip = mongol_invasion.1002.genghis_khan_tt custom_tooltip = mongol_invasion.1002.genghis_khan_tt
custom_tooltip = gok_time_limit_end_decision_other_players_tt custom_tooltip = gok_time_limit_end_decision_other_players_tt
mpo_add_golden_lineage_effect = { CHARACTER = scope:genghis_khan } mpo_add_golden_lineage_effect = yes
} }
if = { if = {
limit = { limit = {
@ -2493,7 +2493,7 @@ mpo_greatest_of_khans.1001 = {
custom_tooltip = genghis_khan_mongol_troops_tt custom_tooltip = genghis_khan_mongol_troops_tt
custom_tooltip = gok_threatening_powers_tt custom_tooltip = gok_threatening_powers_tt
custom_tooltip = mongol_invasion.1002.genghis_khan_tt custom_tooltip = mongol_invasion.1002.genghis_khan_tt
mpo_add_golden_lineage_effect = { CHARACTER = scope:temujin } mpo_add_golden_lineage_effect = yes
} }
if = { if = {

View file

@ -1218,6 +1218,12 @@ roman_restoration.0101 = {
} }
} }
set_character_faith = scope:mending_faith set_character_faith = scope:mending_faith
if = {
limit = {
scope:mending_faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
every_held_title = { every_held_title = {
title_tier = county title_tier = county
set_county_faith = scope:mending_faith set_county_faith = scope:mending_faith

View file

@ -4128,10 +4128,8 @@ scripted_trigger ach_coronation_0016_eligible_artifact = {
NOR = { NOR = {
artifact_slot_type = helmet artifact_slot_type = helmet
artifact_slot_type = regalia artifact_slot_type = regalia
has_variable = banner_house
has_variable = banner_dynasty
has_variable = 1025_treasure_map
} }
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:host }
artifact_durability > 10 artifact_durability > 10
} }
@ -4342,6 +4340,7 @@ ach_coronation.0016 = {
} }
} }
ordered_character_artifact = { # Try and give away the worst one first ordered_character_artifact = { # Try and give away the worst one first
limit = { artifact_can_be_gift_to_trigger = { RECIPIENT = scope:host } }
order_by = { order_by = {
value = 1 value = 1
if = { if = {
@ -5371,6 +5370,7 @@ scripted_trigger ach_coronation_0018_eligible_family_member_trigger = {
scripted_trigger ach_coronation_0018_grantable_title_trigger = { scripted_trigger ach_coronation_0018_grantable_title_trigger = {
tier = tier_county tier = tier_county
this != scope:host.capital_county this != scope:host.capital_county
is_landless_type_title = no
} }
scripted_effect ach_coronation_0018_choose_title_effect = { scripted_effect ach_coronation_0018_choose_title_effect = {
@ -6356,6 +6356,13 @@ ach_coronation.0020 = {
trigger = { trigger = {
involved_activity = { involved_activity = {
activity_host = {
any_held_title = {
tier = tier_county
this != prev.capital_county
is_landless_type_title = no
}
}
any_attending_character = { any_attending_character = {
ach_coronation_0018_eligible_family_member_trigger = yes ach_coronation_0018_eligible_family_member_trigger = yes
} }
@ -6708,11 +6715,9 @@ ach_coronation.0022 = {
# Ongoing plague # Ongoing plague
any_sub_realm_county = { any_sub_realm_county = {
count >= 3 count >= 3
any_county_province = { any_county_province_epidemic = {
any_province_epidemic = { count >= 1
count >= 1 outbreak_intensity > minor
outbreak_intensity > minor
}
} }
} }
} }
@ -6738,11 +6743,9 @@ ach_coronation.0022 = {
# Ongoing plague # Ongoing plague
any_sub_realm_county = { any_sub_realm_county = {
count >= 10 count >= 10
any_county_province = { any_county_province_epidemic = {
any_province_epidemic = { count >= 1
count >= 1 outbreak_intensity > minor
outbreak_intensity > minor
}
} }
} }
} }
@ -6755,11 +6758,9 @@ ach_coronation.0022 = {
# Ongoing plague # Ongoing plague
any_sub_realm_county = { any_sub_realm_county = {
count >= 3 count >= 3
any_county_province = { any_county_province_epidemic = {
any_province_epidemic = { count >= 1
count >= 1 outbreak_intensity > major
outbreak_intensity > major
}
} }
} }
} }
@ -6788,11 +6789,9 @@ ach_coronation.0022 = {
limit = { limit = {
any_sub_realm_county = { any_sub_realm_county = {
count >= 4 count >= 4
any_county_province = { any_county_province_epidemic = {
any_province_epidemic = { count >= 1
count >= 1 outbreak_intensity = apocalyptic
outbreak_intensity = apocalyptic
}
} }
} }
} }
@ -6913,7 +6912,6 @@ ach_coronation.0022 = {
} }
} }
} }
custom_tooltip = available_because_intent_tt
flavor = ach_coronation.0022.a.coronation_disrupt_loyalists.flavor flavor = ach_coronation.0022.a.coronation_disrupt_loyalists.flavor
reason = activity_intent reason = activity_intent
skill = diplomacy skill = diplomacy
@ -7022,7 +7020,7 @@ ach_coronation.0022 = {
option = { # It's not our goodly Host's fault! option = { # It's not our goodly Host's fault!
name = ach_coronation.0022.a.offer_support name = ach_coronation.0022.a.offer_support
trigger = { has_activity_intent = coronation_offer_support } trigger = { has_activity_intent = coronation_offer_support }
custom_tooltip = available_because_intent_tt reason = activity_intent
flavor = ach_coronation.0022.a.offer_support.flavor flavor = ach_coronation.0022.a.offer_support.flavor
add_piety = medium_piety_loss add_piety = medium_piety_loss

View file

@ -1,720 +0,0 @@
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
}
}

View file

@ -5791,7 +5791,6 @@ bp3_journey.2200 = {
is_available_healthy_ai_adult = yes is_available_healthy_ai_adult = yes
bodyguard_validity_trigger = { EMPLOYER = root } bodyguard_validity_trigger = { EMPLOYER = root }
} }
is_valid_to_hire_court_position_type = master_of_spoils_camp_officer
} }
random_pool_character = { random_pool_character = {
province = scope:location province = scope:location

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -90,6 +90,16 @@ epidemic_events.0100 = {
title = epidemic_events.0100.t title = epidemic_events.0100.t
desc = epidemic_events.0100.desc desc = epidemic_events.0100.desc
theme = plague theme = plague
override_background = {
trigger = {
NOT = {
capital_county = {
has_province_with_epidemic = { intensity = any }
}
}
}
reference = tavern
}
left_portrait = { left_portrait = {
character = root character = root
animation = fear animation = fear
@ -110,6 +120,16 @@ epidemic_events.0101 = {
title = epidemic_events.0101.t title = epidemic_events.0101.t
desc = epidemic_events.0101.desc desc = epidemic_events.0101.desc
theme = plague theme = plague
override_background = {
trigger = {
NOT = {
capital_county = {
has_province_with_epidemic = { intensity = any }
}
}
}
reference = courtyard
}
left_portrait = { left_portrait = {
character = root character = root
animation = personality_content animation = personality_content
@ -1833,7 +1853,7 @@ epidemic_events.1060 = {
20 = { 20 = {
trigger = { trigger = {
trait_is_shunned_or_criminal_in_faith_trigger = { trait_is_shunned_or_criminal_in_faith_trigger = {
TRAIT = witch TRAIT = trait:witch
FAITH = root.faith FAITH = root.faith
GENDER_CHARACTER = root GENDER_CHARACTER = root
} }
@ -2514,7 +2534,7 @@ epidemic_events.1063 = {
AND = { AND = {
is_witch_trigger = yes is_witch_trigger = yes
trait_is_shunned_or_criminal_in_faith_trigger = { trait_is_shunned_or_criminal_in_faith_trigger = {
TRAIT = witch TRAIT = trait:witch
FAITH = root.faith FAITH = root.faith
GENDER_CHARACTER = root GENDER_CHARACTER = root
} }
@ -2522,7 +2542,7 @@ epidemic_events.1063 = {
AND = { AND = {
is_incestuous_trigger = yes is_incestuous_trigger = yes
trait_is_shunned_or_criminal_in_faith_trigger = { trait_is_shunned_or_criminal_in_faith_trigger = {
TRAIT = incestuous TRAIT = trait:incestuous
FAITH = root.faith FAITH = root.faith
GENDER_CHARACTER = root GENDER_CHARACTER = root
} }
@ -6719,7 +6739,7 @@ epidemic_events.5007 = {
trigger = { trigger = {
is_available = yes is_available = yes
trait_is_shunned_or_criminal_in_faith_trigger = { trait_is_shunned_or_criminal_in_faith_trigger = {
TRAIT = witch TRAIT = trait:witch
FAITH = root.faith FAITH = root.faith
GENDER_CHARACTER = root GENDER_CHARACTER = root
} }
@ -6760,7 +6780,7 @@ epidemic_events.5007 = {
is_available_healthy_ai_adult = yes is_available_healthy_ai_adult = yes
is_ai = yes is_ai = yes
trait_is_shunned_or_criminal_in_faith_trigger = { trait_is_shunned_or_criminal_in_faith_trigger = {
TRAIT = witch TRAIT = trait:witch
FAITH = this.faith FAITH = this.faith
GENDER_CHARACTER = this GENDER_CHARACTER = this
} }

View file

@ -1,951 +0,0 @@
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
}
}
}
}

View file

@ -1,790 +0,0 @@
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
}
}

View file

@ -4460,7 +4460,7 @@ legend_spread_events.5230 = {
} }
# Just to ensure people are actually freaked out by this # Just to ensure people are actually freaked out by this
trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = {
TRAIT = cannibal TRAIT = trait:cannibal
GENDER_CHARACTER = root GENDER_CHARACTER = root
} }
} }
@ -6307,10 +6307,8 @@ legend_spread_events.5320 = {
random_character_artifact = { random_character_artifact = {
limit = { limit = {
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:vassal }
NOR = { NOR = {
#Ensure it's not trash
has_variable = unwanted_artifact
#And doesn't have a claim on it #And doesn't have a claim on it
any_artifact_claimant = { any_artifact_claimant = {
is_alive = no is_alive = no

File diff suppressed because it is too large Load diff

View file

@ -1,32 +0,0 @@
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
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,719 +0,0 @@
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
}
}
}

View file

@ -1,552 +0,0 @@
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
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -1033,6 +1033,16 @@ scripted_trigger fund_inspiration_0031_title_based_option_trigger = {
global_var:flag_created_siam_kingdom = root global_var:flag_created_siam_kingdom = root
NOT = { exists = scope:book_topic_creation } NOT = { exists = scope:book_topic_creation }
} }
AND = {
exists = global_var:flag_created_brunei_kingdom
global_var:flag_created_brunei_kingdom = root
NOT = { exists = scope:book_topic_creation }
}
AND = {
exists = global_var:flag_created_brunei_empire
global_var:flag_created_brunei_empire = root
NOT = { exists = scope:book_topic_creation }
}
AND = { AND = {
exists = global_var:flag_formed_rum_sultanate exists = global_var:flag_formed_rum_sultanate
global_var:flag_formed_rum_sultanate = root global_var:flag_formed_rum_sultanate = root
@ -2382,7 +2392,7 @@ fund_inspiration.0031 = {
if = { if = {
limit = { limit = {
NOT = { is_witch_trigger = yes } NOT = { is_witch_trigger = yes }
trait_is_criminal_in_faith_trigger = { TRAIT = witch FAITH = root.faith GENDER_CHARACTER = root } trait_is_criminal_in_faith_trigger = { TRAIT = trait:witch FAITH = root.faith GENDER_CHARACTER = root }
} }
if = { if = {
limit = { limit = {
@ -2489,19 +2499,19 @@ fund_inspiration.0031 = {
add = -70 add = -70
exists = scope:lifestyle_option_witch exists = scope:lifestyle_option_witch
NOT = { has_trait = witch } NOT = { has_trait = witch }
trait_is_criminal_in_faith_trigger = { TRAIT = witch FAITH = root.faith GENDER_CHARACTER = root } trait_is_criminal_in_faith_trigger = { TRAIT = trait:witch FAITH = root.faith GENDER_CHARACTER = root }
} }
modifier = { # If it's hidden secrets it's rare that they write about it modifier = { # If it's hidden secrets it's rare that they write about it
add = -70 add = -70
exists = scope:lifestyle_option_deviant exists = scope:lifestyle_option_deviant
NOT = { has_trait = deviant } NOT = { has_trait = deviant }
trait_is_criminal_in_faith_trigger = { TRAIT = deviant FAITH = root.faith GENDER_CHARACTER = root } trait_is_criminal_in_faith_trigger = { TRAIT = trait:deviant FAITH = root.faith GENDER_CHARACTER = root }
} }
modifier = { # If it's hidden secrets it's rare that they write about it modifier = { # If it's hidden secrets it's rare that they write about it
add = -70 add = -70
exists = scope:lifestyle_option_cannibal exists = scope:lifestyle_option_cannibal
NOT = { has_trait = cannibal } NOT = { has_trait = cannibal }
trait_is_criminal_in_faith_trigger = { TRAIT = cannibal FAITH = root.faith GENDER_CHARACTER = root } trait_is_criminal_in_faith_trigger = { TRAIT = trait:cannibal FAITH = root.faith GENDER_CHARACTER = root }
} }
modifier = { #However, the might if they're arrogant modifier = { #However, the might if they're arrogant
add = 50 add = 50
@ -3586,11 +3596,7 @@ fund_inspiration.0043 = {
} }
NOR = { NOR = {
any_artifact = { any_artifact = {
trigger_if = { var:banner_dynasty ?= root.dynasty
limit = { exists = var:banner_dynasty }
var:banner_dynasty = root.dynasty
}
trigger_else = { always = no }
OR = { OR = {
artifact_owner = root artifact_owner = root
artifact_owner = { in_diplomatic_range = root } artifact_owner = { in_diplomatic_range = root }
@ -6811,15 +6817,15 @@ fund_inspiration.1031 = {
OR = { OR = {
AND = { AND = {
scope:newly_created_artifact = { has_artifact_feature = book_subject_witch } scope:newly_created_artifact = { has_artifact_feature = book_subject_witch }
trait_is_criminal_in_faith_trigger = { TRAIT = witch FAITH = root.faith GENDER_CHARACTER = root } trait_is_criminal_in_faith_trigger = { TRAIT = trait:witch FAITH = root.faith GENDER_CHARACTER = root }
} }
AND = { AND = {
scope:newly_created_artifact = { has_artifact_feature = book_subject_cannibal } scope:newly_created_artifact = { has_artifact_feature = book_subject_cannibal }
trait_is_criminal_in_faith_trigger = { TRAIT = cannibal FAITH = root.faith GENDER_CHARACTER = root } trait_is_criminal_in_faith_trigger = { TRAIT = trait:cannibal FAITH = root.faith GENDER_CHARACTER = root }
} }
AND = { AND = {
scope:newly_created_artifact = { has_artifact_feature = book_subject_deviant } scope:newly_created_artifact = { has_artifact_feature = book_subject_deviant }
trait_is_criminal_in_faith_trigger = { TRAIT = deviant FAITH = root.faith GENDER_CHARACTER = root } trait_is_criminal_in_faith_trigger = { TRAIT = trait:deviant FAITH = root.faith GENDER_CHARACTER = root }
} }
} }
} }
@ -15002,7 +15008,7 @@ scripted_trigger fund_inspiration_3001_witch_topic_trigger = {
exists = scope:inspiration_owner.var:book_subject exists = scope:inspiration_owner.var:book_subject
scope:inspiration_owner.var:book_subject = flag:witch scope:inspiration_owner.var:book_subject = flag:witch
trait_is_shunned_or_criminal_in_faith_trigger = { trait_is_shunned_or_criminal_in_faith_trigger = {
TRAIT = witch TRAIT = trait:witch
GENDER_CHARACTER = root GENDER_CHARACTER = root
FAITH = root.faith FAITH = root.faith
} }
@ -15011,7 +15017,7 @@ scripted_trigger fund_inspiration_3001_cannibal_topic_trigger = {
exists = scope:inspiration_owner.var:book_subject exists = scope:inspiration_owner.var:book_subject
scope:inspiration_owner.var:book_subject = flag:cannibal scope:inspiration_owner.var:book_subject = flag:cannibal
trait_is_criminal_in_faith_trigger = { trait_is_criminal_in_faith_trigger = {
TRAIT = cannibal TRAIT = trait:cannibal
GENDER_CHARACTER = root GENDER_CHARACTER = root
FAITH = root.faith FAITH = root.faith
} }
@ -15020,7 +15026,7 @@ scripted_trigger fund_inspiration_3001_deviant_topic_trigger = {
exists = scope:inspiration_owner.var:book_subject exists = scope:inspiration_owner.var:book_subject
scope:inspiration_owner.var:book_subject = flag:deviant scope:inspiration_owner.var:book_subject = flag:deviant
trait_is_shunned_or_criminal_in_faith_trigger = { trait_is_shunned_or_criminal_in_faith_trigger = {
TRAIT = deviant TRAIT = trait:deviant
GENDER_CHARACTER = root GENDER_CHARACTER = root
FAITH = root.faith FAITH = root.faith
} }
@ -18427,8 +18433,8 @@ scripted_trigger homosexual_poet_trigger = {
has_sexuality = bisexual has_sexuality = bisexual
} }
OR = { OR = {
trait_is_shunned_in_faith_trigger = { TRAIT = sodomite FAITH = root.faith GENDER_CHARACTER = scope:inspiration_owner } trait_is_shunned_in_faith_trigger = { TRAIT = trait:sodomite FAITH = root.faith GENDER_CHARACTER = scope:inspiration_owner }
trait_is_criminal_in_faith_trigger = { TRAIT = sodomite FAITH = root.faith GENDER_CHARACTER = scope:inspiration_owner } trait_is_criminal_in_faith_trigger = { TRAIT = trait:sodomite FAITH = root.faith GENDER_CHARACTER = scope:inspiration_owner }
} }
} }
@ -18748,7 +18754,7 @@ fund_inspiration.6301 = {
} }
triggered_desc = { triggered_desc = {
trigger = { trigger = {
trait_is_criminal_in_faith_trigger = { TRAIT = sodomite FAITH = root.faith GENDER_CHARACTER = scope:inspiration_owner } trait_is_criminal_in_faith_trigger = { TRAIT = trait:sodomite FAITH = root.faith GENDER_CHARACTER = scope:inspiration_owner }
} }
desc = fund_inspiration.6301.crime_desc desc = fund_inspiration.6301.crime_desc
} }
@ -19898,7 +19904,7 @@ fund_inspiration.6513 = {
if = { if = {
limit = { limit = {
sex_same_as = scope:adventurer_lover sex_same_as = scope:adventurer_lover
trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = sodomite GENDER_CHARACTER = scope:inspiration_owner } trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = trait:sodomite GENDER_CHARACTER = scope:inspiration_owner }
} }
if = { if = {
limit = { limit = {
@ -19919,7 +19925,7 @@ fund_inspiration.6513 = {
if = { if = {
limit = { limit = {
sex_same_as = scope:inspiration_owner sex_same_as = scope:inspiration_owner
trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = sodomite GENDER_CHARACTER = scope:adventurer_lover } trait_is_shunned_or_criminal_in_my_or_lieges_faith_trigger = { TRAIT = trait:sodomite GENDER_CHARACTER = scope:adventurer_lover }
} }
if = { if = {
limit = { limit = {

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1081,7 +1081,7 @@ ep2_wedding_ewan.0001 = {
name = ep2_wedding_ewan.0001.c name = ep2_wedding_ewan.0001.c
flavor = ep2_wedding_ewan.0001.c.tt flavor = ep2_wedding_ewan.0001.c.tt
trigger = { has_activity_intent = murder_attendee_intent } trigger = { has_activity_intent = murder_attendee_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
scope:intent_target = { scope:intent_target = {
# They're unsettled by your staring. # They're unsettled by your staring.
@ -1899,7 +1899,7 @@ ep2_wedding_ewan.0011 = {
name = ep2_wedding_ewan.0011.c name = ep2_wedding_ewan.0011.c
# Check for target directly, rather than just the intent, because there isn't a pre-defined intent target and we may have failed to acquire someone suitable. # Check for target directly, rather than just the intent, because there isn't a pre-defined intent target and we may have failed to acquire someone suitable.
trigger = { exists = scope:intent_target } trigger = { exists = scope:intent_target }
custom_tooltip = available_because_intent_tt reason = activity_intent
# You try to trip a server onto someone. # You try to trip a server onto someone.
duel = { duel = {
@ -2744,7 +2744,7 @@ ep2_wedding_ewan.0021 = {
option = { option = {
name = ep2_wedding_ewan.0021.c name = ep2_wedding_ewan.0021.c
trigger = { has_activity_intent = woo_attendee_intent } trigger = { has_activity_intent = woo_attendee_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
# Sprinkle a bit of opinion in there. # Sprinkle a bit of opinion in there.
reverse_add_opinion = { reverse_add_opinion = {
@ -3246,7 +3246,7 @@ ep2_wedding_ewan.0031 = {
option = { option = {
name = ep2_wedding_ewan.0031.g name = ep2_wedding_ewan.0031.g
trigger = { has_activity_intent = reduce_stress_intent } trigger = { has_activity_intent = reduce_stress_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
# Decent middling prestige. # Decent middling prestige.
add_prestige = medium_prestige_gain add_prestige = medium_prestige_gain
@ -3463,7 +3463,7 @@ ep2_wedding_ewan.0041 = {
option = { option = {
name = ep2_wedding_ewan.0041.b name = ep2_wedding_ewan.0041.b
trigger = { has_activity_intent = reduce_stress_intent } trigger = { has_activity_intent = reduce_stress_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
# If you're the host, gain prestige. # If you're the host, gain prestige.
if = { if = {
@ -3499,7 +3499,7 @@ ep2_wedding_ewan.0041 = {
option = { option = {
name = ep2_wedding_ewan.0041.c name = ep2_wedding_ewan.0041.c
trigger = { has_activity_intent = murder_attendee_intent } trigger = { has_activity_intent = murder_attendee_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
scope:intent_target = { scope:intent_target = {
# They're a bit freaked out. # They're a bit freaked out.
@ -3531,7 +3531,7 @@ ep2_wedding_ewan.0041 = {
option = { option = {
name = ep2_wedding_ewan.0041.d name = ep2_wedding_ewan.0041.d
trigger = { has_activity_intent = woo_attendee_intent } trigger = { has_activity_intent = woo_attendee_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
# You try to keep it juuuuust about down-low. # You try to keep it juuuuust about down-low.
duel = { duel = {
@ -3624,7 +3624,7 @@ ep2_wedding_ewan.0041 = {
option = { option = {
name = ep2_wedding_ewan.0041.e name = ep2_wedding_ewan.0041.e
trigger = { has_activity_intent = diplomatic_intent } trigger = { has_activity_intent = diplomatic_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
# Try to give a big, impressive speech. # Try to give a big, impressive speech.
duel = { duel = {
@ -3694,7 +3694,7 @@ ep2_wedding_ewan.0041 = {
option = { option = {
name = ep2_wedding_ewan.0041.f name = ep2_wedding_ewan.0041.f
trigger = { has_activity_intent = matchmaking_intent } trigger = { has_activity_intent = matchmaking_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
# Gain opinion with scope:activity_intent. # Gain opinion with scope:activity_intent.
reverse_add_opinion = { reverse_add_opinion = {
@ -3729,7 +3729,7 @@ ep2_wedding_ewan.0041 = {
option = { option = {
name = ep2_wedding_ewan.0041.g name = ep2_wedding_ewan.0041.g
trigger = { has_activity_intent = banquet_mischief_intent } trigger = { has_activity_intent = banquet_mischief_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
# We take your highest of diplomacy or intrigue and let you duel against it. # We take your highest of diplomacy or intrigue and let you duel against it.
if = { if = {
@ -3840,7 +3840,7 @@ scripted_trigger ep2_wedding_ewan_0051_legal_rake_trigger = {
save_temporary_scope_as = char_temp save_temporary_scope_as = char_temp
NOT = { NOT = {
trait_is_criminal_in_faith_trigger = { trait_is_criminal_in_faith_trigger = {
TRAIT = adulterer TRAIT = trait:adulterer
FAITH = scope:char_temp.faith FAITH = scope:char_temp.faith
GENDER_CHARACTER = scope:char_temp GENDER_CHARACTER = scope:char_temp
} }
@ -5707,7 +5707,7 @@ ep2_wedding_ewan.0061 = {
option = { option = {
name = ep2_wedding_ewan.0061.d name = ep2_wedding_ewan.0061.d
trigger = { has_activity_intent = banquet_mischief_intent } trigger = { has_activity_intent = banquet_mischief_intent }
custom_tooltip = available_because_intent_tt reason = activity_intent
# Same as the .e rolls, but we remove the minor result and just roll between success & crit success. # Same as the .e rolls, but we remove the minor result and just roll between success & crit success.
duel = { duel = {

File diff suppressed because it is too large Load diff

View file

@ -2650,7 +2650,7 @@ ep3_decisions_event.2090 = {
remove_variable = confirmation_grace remove_variable = confirmation_grace
} }
# Refund any costs # Refund any costs
add_prestige = standard_activity_cost add_prestige = standard_activity_base_cost
} }
trigger_event = ep3_decisions_event.2080 trigger_event = ep3_decisions_event.2080
} }
@ -4429,6 +4429,12 @@ ep3_decisions_event.4022 = {
participants = { missionary = scope:evangelizer sender = scope:sender } participants = { missionary = scope:evangelizer sender = scope:sender }
} }
set_character_faith_with_conversion = scope:evangelizer.faith set_character_faith_with_conversion = scope:evangelizer.faith
if = {
limit = {
scope:evangelizer.faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
custom_tooltip = ep3_decisions_event.4022.a.tt custom_tooltip = ep3_decisions_event.4022.a.tt
custom_tooltip = negotiated_alliance_delay_tt custom_tooltip = negotiated_alliance_delay_tt
show_as_tooltip = { show_as_tooltip = {
@ -5171,6 +5177,23 @@ ep3_decisions_event.4060 = {
} }
add_character_modifier = { modifier = first_admin_emperor } add_character_modifier = { modifier = first_admin_emperor }
} }
# NF tooltip
if = {
limit = { exists = scope:new_title } # some gov types don't need to create a new title
get_title = scope:new_title
}
# Adopting vassal tooltip
every_powerful_vassal = {
limit = { has_same_government = root }
switch = {
trigger = has_government
japan_administrative_government = { change_government = japan_administrative_government }
celestial_government = { change_government = celestial_government }
meritocratic_government = { change_government = meritocratic_government }
steppe_admin_government = { change_government = steppe_admin_government }
fallback = { change_government = administrative_government }
}
}
} }
hidden_effect = { hidden_effect = {
ordered_vassal = { ordered_vassal = {
@ -6138,6 +6161,17 @@ ep3_decisions_event.4090 = {
desc = appointment_timeout_desc_retired_governor desc = appointment_timeout_desc_retired_governor
} }
} }
else_if = {
limit = {
government_is_japanese_trigger = yes
}
add_gold = major_gold_value
change_influence = major_influence_value
add_character_modifier = {
modifier = renounced_governorship_japan
years = 15
}
}
else = { else = {
add_gold = massive_gold_value add_gold = massive_gold_value
add_character_modifier = { add_character_modifier = {
@ -6766,14 +6800,14 @@ ep3_decisions_event.5020 = {
ordered_in_list = { ordered_in_list = {
list = available_heresies list = available_heresies
order_by = num_county_followers order_by = num_county_followers
position = 1 position = 0
save_scope_as = heresy_1 save_scope_as = heresy_1
} }
ordered_in_list = { ordered_in_list = {
list = available_heresies list = available_heresies
limit = { this != scope:heresy_1 } limit = { this != scope:heresy_1 }
order_by = num_county_followers order_by = num_county_followers
position = 1 position = 0
save_scope_as = heresy_2 save_scope_as = heresy_2
} }
ordered_in_list = { ordered_in_list = {
@ -6783,7 +6817,7 @@ ep3_decisions_event.5020 = {
this != scope:heresy_2 this != scope:heresy_2
} }
order_by = num_county_followers order_by = num_county_followers
position = 1 position = 0
save_scope_as = heresy_3 save_scope_as = heresy_3
} }
} }
@ -6791,6 +6825,12 @@ ep3_decisions_event.5020 = {
option = { option = {
name = ep3_decisions_event.5020.a name = ep3_decisions_event.5020.a
set_character_faith_with_conversion = scope:heresy_1 set_character_faith_with_conversion = scope:heresy_1
if = {
limit = {
scope:heresy_1 = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
add_heresiarch_trait_effect = yes add_heresiarch_trait_effect = yes
# Otherwise the conversion event will remove the trait # Otherwise the conversion event will remove the trait
add_character_flag = converted_by_heresy_decision add_character_flag = converted_by_heresy_decision
@ -6830,6 +6870,12 @@ ep3_decisions_event.5020 = {
exists = scope:heresy_2 exists = scope:heresy_2
} }
set_character_faith_with_conversion = scope:heresy_2 set_character_faith_with_conversion = scope:heresy_2
if = {
limit = {
scope:heresy_2 = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
add_heresiarch_trait_effect = yes add_heresiarch_trait_effect = yes
# Otherwise the conversion event will remove the trait # Otherwise the conversion event will remove the trait
add_character_flag = converted_by_heresy_decision add_character_flag = converted_by_heresy_decision
@ -6869,6 +6915,12 @@ ep3_decisions_event.5020 = {
exists = scope:heresy_3 exists = scope:heresy_3
} }
set_character_faith_with_conversion = scope:heresy_3 set_character_faith_with_conversion = scope:heresy_3
if = {
limit = {
scope:heresy_3 = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
add_heresiarch_trait_effect = yes add_heresiarch_trait_effect = yes
# Otherwise the conversion event will remove the trait # Otherwise the conversion event will remove the trait
add_character_flag = converted_by_heresy_decision add_character_flag = converted_by_heresy_decision
@ -6995,6 +7047,12 @@ ep3_decisions_event.5021 = {
root = { root = {
primary_title = { set_state_faith = scope:heresy } primary_title = { set_state_faith = scope:heresy }
set_character_faith_with_conversion = scope:heresy set_character_faith_with_conversion = scope:heresy
if = {
limit = {
scope:heresy = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
add_opinion = { add_opinion = {
target = scope:heretic target = scope:heretic
modifier = forced_state_heresy_opinion modifier = forced_state_heresy_opinion
@ -7376,9 +7434,22 @@ ep3_decisions_event.6001 = {
} }
} }
scope:liege = { save_scope_as = new_liege } scope:liege = { save_scope_as = new_liege }
location.duchy.holder ?= {
if = {
limit = {
this != scope:new_liege
can_set_relation_rival_trigger = { CHARACTER = root }
}
set_relation_rival = {
target = root
reason = seized_my_realm_crime
}
}
}
set_variable = separatist_uprising_decision_var set_variable = separatist_uprising_decision_var
set_variable = became_landed_through_separatist_uprising_var set_variable = became_landed_through_separatist_uprising_var
location.duchy = { location.duchy = {
save_scope_as = target
add_to_list = transfer_titles add_to_list = transfer_titles
# All De Jure Counties held by the liege will be moved over # All De Jure Counties held by the liege will be moved over
every_de_jure_county = { every_de_jure_county = {
@ -7475,11 +7546,12 @@ ep3_decisions_event.6001 = {
resolve_title_and_vassal_change = scope:heir_change resolve_title_and_vassal_change = scope:heir_change
} }
} }
ep3_become_landed_transfer_no_ennobled_modifier_effect = { ep3_become_landed_transfer_effect = {
TITLE_RECEIVER = root TITLE_RECEIVER = root
TITLE_LIST = transfer_titles TITLE_LIST = transfer_titles
TYPE = granted TYPE = granted
REASON = flag:culture_champion REASON = flag:culture_champion
ENNOBLED_ADVENTURER = flag:no
} }
hidden_effect = { hidden_effect = {
scope:old_heir ?= { scope:old_heir ?= {
@ -7536,7 +7608,14 @@ ep3_decisions_event.6001 = {
option = { # Let me think about it option = { # Let me think about it
name = ep3_decisions_event.6001.d name = ep3_decisions_event.6001.d
hidden_effect = {
send_interface_toast = {
title = champion_culture_costs_refunded
left_icon = root
add_prestige_no_experience = 2000
add_short_term_gold = 500
}
}
ai_chance = { ai_chance = {
base = 0 base = 0
} }

View file

@ -2,8 +2,8 @@
############################## ##############################
# EP3 Admin (Emperor) Events # # EP3 Admin (Emperor) Events #
# by Claudia Baldassi # # by Claudia Baldassi #
# 2000 - 2999 # # 2000 - 2999 #
############################## ##############################
# Byzantine-only: you have reconquered an important city of the long-lost Empire # Byzantine-only: you have reconquered an important city of the long-lost Empire
@ -161,13 +161,13 @@ ep3_emperor_yearly.2000 = {
limit = { limit = {
scope:county = title:c_tourraine scope:county = title:c_tourraine
} }
NOT = { exists = var:ep3_reconquered_tourraine } NOT = { exists = global_var:ep3_reconquered_tourraine }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_chandax scope:county = title:c_chandax
} }
NOT = { exists = var:ep3_reconquered_chandax } NOT = { exists = global_var:ep3_reconquered_chandax }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
@ -176,91 +176,91 @@ ep3_emperor_yearly.2000 = {
scope:county = title:c_northumberland scope:county = title:c_northumberland
} }
} }
NOT = { exists = var:ep3_reconquered_hadrian } NOT = { exists = global_var:ep3_reconquered_hadrian }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_trier scope:county = title:c_trier
} }
NOT = { exists = var:ep3_reconquered_trier } NOT = { exists = global_var:ep3_reconquered_trier }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_lombardia scope:county = title:c_lombardia
} }
NOT = { exists = var:ep3_reconquered_lombardia } NOT = { exists = global_var:ep3_reconquered_lombardia }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_murcia scope:county = title:c_murcia
} }
NOT = { exists = var:ep3_reconquered_murcia } NOT = { exists = global_var:ep3_reconquered_murcia }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_tangiers scope:county = title:c_tangiers
} }
NOT = { exists = var:ep3_reconquered_tangiers } NOT = { exists = global_var:ep3_reconquered_tangiers }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_tunis scope:county = title:c_tunis
} }
NOT = { exists = var:ep3_reconquered_tunis } NOT = { exists = global_var:ep3_reconquered_tunis }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_ravenna scope:county = title:c_ravenna
} }
NOT = { exists = var:ep3_reconquered_ravenna } NOT = { exists = global_var:ep3_reconquered_ravenna }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_roma scope:county = title:c_roma
} }
NOT = { exists = var:ep3_reconquered_roma } NOT = { exists = global_var:ep3_reconquered_roma }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_siracusa scope:county = title:c_siracusa
} }
NOT = { exists = var:ep3_reconquered_siracusa } NOT = { exists = global_var:ep3_reconquered_siracusa }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_bari scope:county = title:c_bari
} }
NOT = { exists = var:ep3_reconquered_bari } NOT = { exists = global_var:ep3_reconquered_bari }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_edessa scope:county = title:c_edessa
} }
NOT = { exists = var:ep3_reconquered_edessa } NOT = { exists = global_var:ep3_reconquered_edessa }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_abbadan scope:county = title:c_abbadan
} }
NOT = { exists = var:ep3_reconquered_abbadan } NOT = { exists = global_var:ep3_reconquered_abbadan }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_alexandria scope:county = title:c_alexandria
} }
NOT = { exists = var:ep3_reconquered_alexandria } NOT = { exists = global_var:ep3_reconquered_alexandria }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_jerusalem scope:county = title:c_jerusalem
} }
NOT = { exists = var:ep3_reconquered_jerusalem } NOT = { exists = global_var:ep3_reconquered_jerusalem }
} }
trigger_else_if = { trigger_else_if = {
limit = { limit = {
scope:county = title:c_antiocheia scope:county = title:c_antiocheia
} }
NOT = { exists = var:ep3_reconquered_antiocheia } NOT = { exists = global_var:ep3_reconquered_antiocheia }
} }
trigger_else = { trigger_else = {
always = no always = no
@ -268,6 +268,60 @@ ep3_emperor_yearly.2000 = {
} }
immediate = { immediate = {
switch = {
trigger = scope:county
title:c_antiocheia = {
set_global_variable = ep3_reconquered_antiocheia
}
title:c_jerusalem = {
set_global_variable = ep3_reconquered_jerusalem
}
title:c_alexandria = {
set_global_variable = ep3_reconquered_alexandria
}
title:c_abbadan = {
set_global_variable = ep3_reconquered_abbadan
}
title:c_edessa = {
set_global_variable = ep3_reconquered_edessa
}
title:c_bari = {
set_global_variable = ep3_reconquered_bari
}
title:c_siracusa = {
set_global_variable = ep3_reconquered_siracusa
}
title:c_roma = {
set_global_variable = ep3_reconquered_roma
}
title:c_ravenna = {
set_global_variable = ep3_reconquered_ravenna
}
title:c_tunis = {
set_global_variable = ep3_reconquered_tunis
}
title:c_tangiers = {
set_global_variable = ep3_reconquered_tangiers
}
title:c_murcia = {
set_global_variable = ep3_reconquered_murcia
}
title:c_lombardia = {
set_global_variable = ep3_reconquered_lombardia
}
title:c_trier = {
set_global_variable = ep3_reconquered_trier
}
title:c_northumberland = {
set_global_variable = ep3_reconquered_hadrian
}
title:c_chandax = {
set_global_variable = ep3_reconquered_chandax
}
title:c_tourraine = {
set_global_variable = ep3_reconquered_tourraine
}
}
change_influence = massive_influence_gain change_influence = massive_influence_gain
add_prestige = major_prestige_gain add_prestige = major_prestige_gain
} }
@ -408,112 +462,6 @@ ep3_emperor_yearly.2000 = {
} }
after = { after = {
if = {
limit = {
scope:county = title:c_antiocheia
}
set_global_variable = ep3_reconquered_antiocheia
}
else_if = {
limit = {
scope:county = title:c_jerusalem
}
set_global_variable = ep3_reconquered_jerusalem
}
else_if = {
limit = {
scope:county = title:c_alexandria
}
set_global_variable = ep3_reconquered_alexandria
}
else_if = {
limit = {
scope:county = title:c_abbadan
}
set_global_variable = ep3_reconquered_abbadan
}
else_if = {
limit = {
scope:county = title:c_edessa
}
set_global_variable = ep3_reconquered_edessa
}
else_if = {
limit = {
scope:county = title:c_bari
}
set_global_variable = ep3_reconquered_bari
}
else_if = {
limit = {
scope:county = title:c_siracusa
}
set_global_variable = ep3_reconquered_siracusa
}
else_if = {
limit = {
scope:county = title:c_roma
}
set_global_variable = ep3_reconquered_roma
}
else_if = {
limit = {
scope:county = title:c_ravenna
}
set_global_variable = ep3_reconquered_ravenna
}
else_if = {
limit = {
scope:county = title:c_tunis
}
set_global_variable = ep3_reconquered_tunis
}
else_if = {
limit = {
scope:county = title:c_tangiers
}
set_global_variable = ep3_reconquered_tangiers
}
else_if = {
limit = {
scope:county = title:c_murcia
}
set_global_variable = ep3_reconquered_murcia
}
else_if = {
limit = {
scope:county = title:c_lombardia
}
set_global_variable = ep3_reconquered_lombardia
}
else_if = {
limit = {
scope:county = title:c_trier
}
set_global_variable = ep3_reconquered_trier
}
else_if = {
limit = {
OR = {
scope:county = title:c_cumberland
scope:county = title:c_northumberland
}
}
set_global_variable = ep3_reconquered_hadrian
}
else_if = {
limit = {
scope:county = title:c_chandax
}
set_global_variable = ep3_reconquered_chandax
}
else_if = {
limit = {
scope:county = title:c_tourraine
}
set_global_variable = ep3_reconquered_tourraine
}
if = { if = {
limit = { limit = {
NOT = { NOT = {
@ -764,7 +712,7 @@ ep3_emperor_yearly.2020 = {
random_character_trait = { random_character_trait = {
limit = { limit = {
save_temporary_scope_as = temp_trait save_temporary_scope_as = temp_trait
scoped_trait_is_criminal_in_faith_trigger = { TRAIT = scope:temp_trait FAITH = root.faith GENDER_CHARACTER = root } trait_is_criminal_in_faith_trigger = { TRAIT = scope:temp_trait FAITH = root.faith GENDER_CHARACTER = root }
} }
save_scope_as = target_criminal_trait save_scope_as = target_criminal_trait
} }
@ -1518,7 +1466,7 @@ ep3_emperor_yearly.2050 = {
house = root.house house = root.house
this != root this != root
} }
position = 1 position = 0
save_scope_as = last_emperor save_scope_as = last_emperor
} }
} }
@ -4364,7 +4312,10 @@ ep3_emperor_yearly.2170 = {
years = 50 years = 50
} }
} }
change_influence = major_influence_gain if = {
limit = { government_has_flag = government_has_influence }
change_influence = major_influence_gain
}
stress_impact = { stress_impact = {
greedy = major_stress_impact_gain greedy = major_stress_impact_gain
paranoid = medium_stress_impact_gain paranoid = medium_stress_impact_gain
@ -6214,6 +6165,12 @@ ep3_emperor_yearly.2300 = {
faith != liege.primary_title.state_faith faith != liege.primary_title.state_faith
} }
set_character_faith = liege.primary_title.state_faith set_character_faith = liege.primary_title.state_faith
if = {
limit = {
liege.primary_title.state_faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
stress_impact = { stress_impact = {
zealous = major_stress_impact_gain zealous = major_stress_impact_gain
disloyal = major_stress_impact_gain disloyal = major_stress_impact_gain
@ -6364,6 +6321,12 @@ ep3_emperor_yearly.2310 = {
faith != top_liege.primary_title.state_faith faith != top_liege.primary_title.state_faith
} }
set_character_faith = top_liege.primary_title.state_faith set_character_faith = top_liege.primary_title.state_faith
if = {
limit = {
top_liege.primary_title.state_faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
change_influence = medium_influence_gain change_influence = medium_influence_gain
stress_impact = { stress_impact = {
zealous = major_stress_impact_gain zealous = major_stress_impact_gain
@ -6757,6 +6720,12 @@ ep3_emperor_yearly.2340 = {
option = { option = {
name = ep3_emperor_yearly.2340.a name = ep3_emperor_yearly.2340.a
set_character_faith = top_liege.primary_title.state_faith set_character_faith = top_liege.primary_title.state_faith
if = {
limit = {
top_liege.primary_title.state_faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
if = { if = {
limit = { limit = {
top_liege = this top_liege = this
@ -6958,7 +6927,7 @@ ep3_emperor_yearly.2410 = {
} }
send_interface_message = { send_interface_message = {
title = 2410_noble_family_tt title = 2410_noble_family_tt
type = msg_new_powerful_family type = msg_new_noble_family
left_icon = scope:noble_family_head left_icon = scope:noble_family_head
right_icon = scope:new_title right_icon = scope:new_title
desc = 2410_noble_family_tt_desc desc = 2410_noble_family_tt_desc
@ -7015,6 +6984,7 @@ ep3_emperor_yearly.2420 = {
title = 2420_noble_family_tt title = 2420_noble_family_tt
type = msg_new_powerful_family type = msg_new_powerful_family
left_icon = scope:noble_family_head left_icon = scope:noble_family_head
right_icon = scope:noble_family_head.house
desc = 2420_noble_family_tt_desc desc = 2420_noble_family_tt_desc
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -2236,8 +2236,8 @@ ep3_governor_yearly.3020 = {
NOT = { NOT = {
root = { is_incestuous_trigger = yes } root = { is_incestuous_trigger = yes }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = incestuous FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:incestuous FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp }
trait_is_criminal_in_faith_trigger = { TRAIT = incestuous FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:incestuous FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp }
} }
AND = { AND = {
has_trait = kinslayer has_trait = kinslayer
@ -2250,8 +2250,8 @@ ep3_governor_yearly.3020 = {
NOT = { NOT = {
root = { has_trait = adulterer } root = { has_trait = adulterer }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = adulterer FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:adulterer FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp }
trait_is_criminal_in_faith_trigger = { TRAIT = adulterer FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:adulterer FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp }
} }
AND = { AND = {
has_trait = fornicator has_trait = fornicator
@ -2263,24 +2263,24 @@ ep3_governor_yearly.3020 = {
} }
} }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = fornicator FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:fornicator FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp }
trait_is_criminal_in_faith_trigger = { TRAIT = fornicator FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:fornicator FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp }
} }
AND = { AND = {
has_trait = deviant has_trait = deviant
NOT = { NOT = {
root = { is_deviant_trigger = yes } root = { is_deviant_trigger = yes }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = deviant FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:deviant FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp }
trait_is_criminal_in_faith_trigger = { TRAIT = deviant FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:deviant FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp }
} }
AND = { AND = {
has_trait = witch has_trait = witch
NOT = { NOT = {
root = { is_witch_trigger = yes } root = { is_witch_trigger = yes }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = witch FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:witch FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp }
trait_is_criminal_in_faith_trigger = { TRAIT = witch FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:witch FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp }
} }
AND = { AND = {
has_trait = sodomite has_trait = sodomite
@ -2292,16 +2292,16 @@ ep3_governor_yearly.3020 = {
} }
} }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = sodomite FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:sodomite FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp }
trait_is_criminal_in_faith_trigger = { TRAIT = sodomite FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:sodomite FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp }
} }
AND = { AND = {
has_trait = cannibal has_trait = cannibal
NOT = { NOT = {
root = { is_cannibal_trigger = yes } root = { is_cannibal_trigger = yes }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = cannibal FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:cannibal FAITH = scope:emperor_temp.faith GENDER_CHARACTER = scope:emperor_temp }
trait_is_criminal_in_faith_trigger = { TRAIT = cannibal FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp } trait_is_criminal_in_faith_trigger = { TRAIT = trait:cannibal FAITH = root.faith GENDER_CHARACTER = scope:emperor_temp }
} }
AND = { AND = {
root.culture = { root.culture = {
@ -2346,8 +2346,8 @@ ep3_governor_yearly.3020 = {
NOT = { NOT = {
root = { is_incestuous_trigger = yes } root = { is_incestuous_trigger = yes }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = incestuous FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:incestuous FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor }
trait_is_criminal_in_faith_trigger = { TRAIT = incestuous FAITH = root.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:incestuous FAITH = root.faith GENDER_CHARACTER = scope:emperor }
} }
random_character_trait = { random_character_trait = {
limit = { limit = {
@ -2380,8 +2380,8 @@ ep3_governor_yearly.3020 = {
NOT = { NOT = {
root = { has_trait = adulterer } root = { has_trait = adulterer }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = adulterer FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:adulterer FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor }
trait_is_criminal_in_faith_trigger = { TRAIT = adulterer FAITH = root.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:adulterer FAITH = root.faith GENDER_CHARACTER = scope:emperor }
} }
random_character_trait = { random_character_trait = {
limit = { limit = {
@ -2401,8 +2401,8 @@ ep3_governor_yearly.3020 = {
} }
} }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = fornicator FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:fornicator FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor }
trait_is_criminal_in_faith_trigger = { TRAIT = fornicator FAITH = root.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:fornicator FAITH = root.faith GENDER_CHARACTER = scope:emperor }
} }
random_character_trait = { random_character_trait = {
limit = { limit = {
@ -2417,8 +2417,8 @@ ep3_governor_yearly.3020 = {
NOT = { NOT = {
root = { is_deviant_trigger = yes } root = { is_deviant_trigger = yes }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = deviant FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:deviant FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor }
trait_is_criminal_in_faith_trigger = { TRAIT = deviant FAITH = root.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:deviant FAITH = root.faith GENDER_CHARACTER = scope:emperor }
} }
random_character_trait = { random_character_trait = {
limit = { limit = {
@ -2433,8 +2433,8 @@ ep3_governor_yearly.3020 = {
NOT = { NOT = {
root = { is_witch_trigger = yes } root = { is_witch_trigger = yes }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = witch FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:witch FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor }
trait_is_criminal_in_faith_trigger = { TRAIT = witch FAITH = root.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:witch FAITH = root.faith GENDER_CHARACTER = scope:emperor }
} }
random_character_trait = { random_character_trait = {
limit = { limit = {
@ -2454,8 +2454,8 @@ ep3_governor_yearly.3020 = {
} }
} }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = sodomite FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:sodomite FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor }
trait_is_criminal_in_faith_trigger = { TRAIT = sodomite FAITH = root.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:sodomite FAITH = root.faith GENDER_CHARACTER = scope:emperor }
} }
random_character_trait = { random_character_trait = {
limit = { limit = {
@ -2470,8 +2470,8 @@ ep3_governor_yearly.3020 = {
NOT = { NOT = {
root = { is_cannibal_trigger = yes } root = { is_cannibal_trigger = yes }
} }
trait_is_criminal_in_faith_trigger = { TRAIT = cannibal FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:cannibal FAITH = scope:emperor.faith GENDER_CHARACTER = scope:emperor }
trait_is_criminal_in_faith_trigger = { TRAIT = cannibal FAITH = root.faith GENDER_CHARACTER = scope:emperor } trait_is_criminal_in_faith_trigger = { TRAIT = trait:cannibal FAITH = root.faith GENDER_CHARACTER = scope:emperor }
} }
random_character_trait = { random_character_trait = {
limit = { limit = {
@ -5386,7 +5386,7 @@ ep3_governor_yearly.3060 = {
trigger = { trigger = {
scope:emperor = { scope:emperor = {
capital_county = title:c_byzantion capital_county = title:c_byzantion
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } religion = religion:christianity_religion
NOT = { NOT = {
has_character_flag = ep3_new_emperor_afield has_character_flag = ep3_new_emperor_afield
} }
@ -5399,7 +5399,7 @@ ep3_governor_yearly.3060 = {
NOT = { NOT = {
scope:emperor = { scope:emperor = {
capital_county = title:c_byzantion capital_county = title:c_byzantion
OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } religion = religion:christianity_religion
} }
} }
scope:emperor = { scope:emperor = {
@ -5455,7 +5455,7 @@ ep3_governor_yearly.3060 = {
left_portrait = { left_portrait = {
character = scope:emperor character = scope:emperor
triggered_animation = { triggered_animation = {
trigger = { OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } } trigger = { religion = religion:christianity_religion }
animation = acknowledging # anim uses crucifix scepter animation = acknowledging # anim uses crucifix scepter
} }
animation = war_over_win animation = war_over_win
@ -5466,21 +5466,12 @@ ep3_governor_yearly.3060 = {
camera = camera_event_right_forward camera = camera_event_right_forward
} }
lower_right_portrait = scope:previous_holder lower_right_portrait = scope:previous_holder
trigger = {
exists = scope:emperor
scope:emperor = {
is_alive = yes
}
top_liege ?= {
this = scope:emperor
}
}
immediate = { immediate = {
play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Byzantine_Flavor/ep3_mx_sting_byzantineflavor_become_emperor" play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Byzantine_Flavor/ep3_mx_sting_byzantineflavor_become_emperor"
tgp_save_realm_ceremonial_liege_effect = yes tgp_save_realm_ceremonial_liege_effect = yes
if = { if = {
limit = { limit = {
scope:ceremonial_liege = scope:emperor scope:ceremonial_liege ?= scope:emperor
} }
clear_saved_scope = ceremonial_liege clear_saved_scope = ceremonial_liege
} }
@ -5494,7 +5485,7 @@ ep3_governor_yearly.3060 = {
is_in_army = yes is_in_army = yes
} }
#Is not at sea #Is not at sea
location = { location.county = {
exists = holder exists = holder
} }
} }
@ -6896,7 +6887,6 @@ ep3_governor_yearly.3070 = {
limit = { limit = {
ep3_governor_yearly_3070_close_governor_trigger = yes ep3_governor_yearly_3070_close_governor_trigger = yes
save_temporary_scope_as = temp_vassal save_temporary_scope_as = temp_vassal
ep3_governor_yearly_3070_close_governor_trigger = yes
"scope:liege.capital_province.squared_distance(scope:temp_vassal.capital_province)" < 25000 "scope:liege.capital_province.squared_distance(scope:temp_vassal.capital_province)" < 25000
} }
save_scope_as = close_governor save_scope_as = close_governor
@ -6959,10 +6949,16 @@ ep3_governor_yearly.3070 = {
trigger = { trigger = {
is_landed = no is_landed = no
} }
change_influence = medium_influence_gain custom_tooltip = {
domicile = { text = domicile_move_to_province.tt
move_domicile = scope:liege.capital_province
} }
change_influence = medium_influence_gain
hidden_effect = {
domicile = {
move_domicile = scope:liege.capital_province
}
}
house = { house = {
every_house_member = { every_house_member = {
custom = custom.every_house_member custom = custom.every_house_member

View file

@ -767,6 +767,7 @@ ep3_interactions_events.0031 = { # By Jason Cantalini
has_graphical_mena_culture_group_trigger = yes has_graphical_mena_culture_group_trigger = yes
has_graphical_african_culture_group_trigger = yes has_graphical_african_culture_group_trigger = yes
has_building_gfx = indian_building_gfx has_building_gfx = indian_building_gfx
has_building_gfx = tibetan_building_gfx
} }
} }
NOT = { government_has_flag = government_is_tribal } NOT = { government_has_flag = government_is_tribal }
@ -782,6 +783,7 @@ ep3_interactions_events.0031 = { # By Jason Cantalini
has_graphical_mena_culture_group_trigger = yes has_graphical_mena_culture_group_trigger = yes
has_graphical_african_culture_group_trigger = yes has_graphical_african_culture_group_trigger = yes
has_building_gfx = indian_building_gfx has_building_gfx = indian_building_gfx
has_building_gfx = tibetan_building_gfx
} }
} }
government_has_flag = government_is_tribal government_has_flag = government_is_tribal
@ -1549,6 +1551,13 @@ ep3_interactions_events.0111 = {
scope:actor.primary_title ?= this scope:actor.primary_title ?= this
scope:actor.capital_county.de_jure_liege ?= this scope:actor.capital_county.de_jure_liege ?= this
} }
any_de_jure_county = {
holder.top_liege = scope:actor
NOR = {
scope:actor.capital_county ?= this
scope:actor.primary_title ?= this
}
}
is_noble_family_title = no is_noble_family_title = no
is_landless_type_title = no is_landless_type_title = no
} }
@ -1562,16 +1571,26 @@ ep3_interactions_events.0111 = {
scope:actor.primary_title ?= this scope:actor.primary_title ?= this
scope:actor.capital_county.de_jure_liege ?= this scope:actor.capital_county.de_jure_liege ?= this
} }
any_de_jure_county = {
holder.top_liege = scope:actor
NOR = {
scope:actor.capital_county ?= this
scope:actor.primary_title ?= this
}
}
is_noble_family_title = no is_noble_family_title = no
is_landless_type_title = no is_landless_type_title = no
} }
add_to_list = purchased_titles add_to_list = purchased_titles
if = { every_de_jure_county = {
limit = { tier = tier_duchy } limit = {
every_de_jure_county = { holder.top_liege = scope:actor
limit = { ep3_purchase_land_valid_county_trigger = yes } NOR = {
add_to_list = purchased_titles scope:actor.capital_county ?= this
scope:actor.primary_title ?= this
}
} }
add_to_list = purchased_titles
} }
} }
} }
@ -1594,7 +1613,13 @@ ep3_interactions_events.0111 = {
if = { if = {
limit = { tier = tier_duchy } limit = { tier = tier_duchy }
every_de_jure_county = { every_de_jure_county = {
limit = { ep3_purchase_land_valid_county_trigger = yes } limit = {
holder.top_liege = scope:actor
NOR = {
scope:actor.capital_county ?= this
scope:actor.primary_title ?= this
}
}
add_to_list = purchased_titles add_to_list = purchased_titles
} }
} }
@ -1608,6 +1633,7 @@ ep3_interactions_events.0111 = {
is_landless_type_title = no is_landless_type_title = no
} }
save_scope_as = new_primary_title save_scope_as = new_primary_title
save_scope_as = target
} }
scope:actor = { scope:actor = {
@ -1617,6 +1643,7 @@ ep3_interactions_events.0111 = {
random_character_artifact = { random_character_artifact = {
limit = { limit = {
scope:recipient = { can_equip_artifact = prev } scope:recipient = { can_equip_artifact = prev }
artifact_can_be_gift_to_trigger = { RECIPIENT = scope:recipient }
} }
save_scope_as = actor_artifact save_scope_as = actor_artifact
} }
@ -1671,6 +1698,7 @@ ep3_interactions_events.0111 = {
TITLE_LIST = purchased_titles TITLE_LIST = purchased_titles
TYPE = granted TYPE = granted
REASON = flag:purchased REASON = flag:purchased
ENNOBLED_ADVENTURER = flag:yes
} }
} }
scope:actor = { scope:actor = {
@ -2025,6 +2053,34 @@ ep3_interactions_events.0111 = {
} }
} }
#Refuse all for 5 years
option = {
name = ep3_interactions_events.0111.refuse_5_years
scope:actor = {
send_interface_toast = {
left_icon = scope:actor
right_icon = scope:recipient
title = ep3_interactions_events.0111.refuse
scope:actor = {
add_opinion = {
target = scope:recipient
modifier = rejected_hiring_as_mercenaries
}
}
}
}
custom_tooltip = ep3_interactions_events.0111.refuse_5_years.tt
add_character_flag = {
flag = ai_hire_blocker
years = 5
}
ai_chance = {
base = 0
}
}
#Refuse #Refuse
option = { option = {
name = ep3_interactions_events.0111.f name = ep3_interactions_events.0111.f
@ -2110,6 +2166,7 @@ ep3_interactions_events.0112 = {
TITLE_LIST = purchased_titles TITLE_LIST = purchased_titles
TYPE = granted TYPE = granted
REASON = flag:purchased REASON = flag:purchased
ENNOBLED_ADVENTURER = flag:yes
} }
# Extra purchase land specific # Extra purchase land specific
scope:actor = { scope:actor = {
@ -2179,7 +2236,10 @@ ep3_interactions_events.0112 = {
add_defender = scope:recipient add_defender = scope:recipient
} }
scope:recipient = { scope:recipient = {
add_character_flag = joined_as_mercenary set_variable = {
name = joined_as_mercenary
value = scope:actor
}
} }
ai_chance = { ai_chance = {
@ -2373,7 +2433,10 @@ ep3_interactions_events.0112 = {
add_defender = scope:recipient add_defender = scope:recipient
} }
scope:recipient = { scope:recipient = {
add_character_flag = joined_as_mercenary set_variable = {
name = joined_as_mercenary
value = scope:actor
}
} }
ai_chance = { ai_chance = {
base = 1000 base = 1000
@ -2436,11 +2499,11 @@ ep3_interactions_events.0121 = {
limit = { limit = {
is_alive = yes is_alive = yes
} }
save_temporary_scope_as = laamp_temp save_scope_as = laamp_temp
scope:employer = { scope:employer = {
pay_treasury_or_gold = { pay_treasury_or_gold = {
target = prev target = prev
value = ep3_hire_laamp_mercs_payment_value value = scope:laamp_temp.ep3_hire_laamp_mercs_payment_value
} }
} }
if = { if = {
@ -2475,16 +2538,16 @@ ep3_interactions_events.0121 = {
limit = { limit = {
is_alive = yes is_alive = yes
} }
save_temporary_scope_as = laamp_temp save_temporary_scope_as = laamp_temp_b
save_scope_value_as = { save_scope_value_as = {
name = war_contribution_value name = war_contribution_value
value = "scope:war.war_contribution(scope:laamp_temp)" value = "scope:war.war_contribution(scope:laamp_temp_b)"
} }
scope:employer = { scope:employer = {
pay_treasury_or_gold = { pay_treasury_or_gold = {
target = prev target = prev
value = { value = {
add = ep3_hire_laamp_mercs_payment_value add = scope:laamp_temp_b.ep3_hire_laamp_mercs_payment_value
divide = 2 divide = 2
} }
} }
@ -2625,7 +2688,7 @@ ep3_interactions_events.0122 = {
scope:employer = { scope:employer = {
pay_treasury_or_gold = { pay_treasury_or_gold = {
target = prev target = prev
value = ep3_hire_laamp_mercs_payment_value value = scope:laamp_temp.ep3_hire_laamp_mercs_payment_value
} }
} }
} }
@ -2636,7 +2699,7 @@ ep3_interactions_events.0122 = {
pay_treasury_or_gold = { pay_treasury_or_gold = {
target = prev target = prev
value = { value = {
add = ep3_hire_laamp_mercs_payment_value add = scope:laamp_temp.ep3_hire_laamp_mercs_payment_value
divide = 2 divide = 2
} }
} }
@ -2899,10 +2962,10 @@ ep3_interactions_events.0500 = {
show_as_unavailable = { always = yes } show_as_unavailable = { always = yes }
custom_description_no_bullet = { custom_description_no_bullet = {
text = evict_adventurer_consequences_tt text = evict_adventurer_consequences_tt
object = scope:recipient object = scope:actor
subject = scope:actor subject = scope:recipient
} }
custom_tooltip = evict_adventurer_casus_belli_tt scope:actor = { custom_tooltip = evict_adventurer_casus_belli_tt }
show_as_tooltip = { show_as_tooltip = {
reverse_add_opinion = { reverse_add_opinion = {
target = scope:actor target = scope:actor
@ -2918,17 +2981,20 @@ ep3_interactions_events.0500 = {
} }
custom_description_no_bullet = { custom_description_no_bullet = {
text = evict_adventurer_consequences_tt text = evict_adventurer_consequences_tt
object = scope:recipient object = scope:actor
subject = scope:actor subject = scope:recipient
} }
custom_tooltip = evict_adventurer_forced_tt scope:actor = { custom_tooltip = evict_adventurer_casus_belli_tt }
custom_tooltip = evict_adventurer_forced_tt.part_2
show_as_tooltip = { show_as_tooltip = {
reverse_add_opinion = { reverse_add_opinion = {
target = scope:actor target = scope:actor
modifier = eviction_ignored_opinion modifier = eviction_ignored_opinion
} }
} }
scope:actor = {
custom_tooltip = evict_adventurer_forced_tt
custom_tooltip = evict_adventurer_forced_tt.part_2
}
} }
after = { trigger_event = ep3_interactions_events.0502 } after = { trigger_event = ep3_interactions_events.0502 }
@ -3006,7 +3072,7 @@ ep3_interactions_events.0501 = {
interaction = imprison_interaction interaction = imprison_interaction
actor = scope:expeller actor = scope:expeller
recipient = scope:adventurer recipient = scope:adventurer
execute_threshold = decline send_threshold = decline
} }
} }
} }
@ -4284,9 +4350,7 @@ ep3_interactions_events.0610 = {
ordered_succession_appointment_investors = { ordered_succession_appointment_investors = {
candidate = root candidate = root
limit = { limit = {
NOT = { NOT = { house ?= root.house }
house ?= root.house
}
is_alive = yes is_alive = yes
is_imprisoned = no is_imprisoned = no
NOR = { NOR = {
@ -4299,34 +4363,18 @@ ep3_interactions_events.0610 = {
} }
if = { if = {
limit = { limit = {
NOT = { NOT = { exists = scope:new_landed_admin }
exists = scope:new_landed_admin
}
} }
save_scope_as = new_landed_admin save_scope_as = new_landed_admin
} }
if = { if = {
limit = { limit = { scope:recipient.top_liege != this }
scope:recipient = { scope:recipient.top_liege = { save_scope_as = emperor }
top_liege != this
}
}
scope:recipient.top_liege = {
save_scope_as = emperor
}
} }
else = { else = {
scope:recipient = { scope:recipient = { save_scope_as = emperor }
save_scope_as = emperor
}
}
show_as_tooltip = {
get_title = primary_title
domicile = {
add_domicile_building = estate_main_01
}
} }
show_as_tooltip = { get_title = primary_title }
} }
#I'm a new kinda landless now #I'm a new kinda landless now

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,328 +0,0 @@
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
}
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,521 +0,0 @@
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
}
}
}

View file

@ -3405,6 +3405,7 @@ ep3_story_cycle_admin_eunuch.2060 = {
court_position_generator_effect = { court_position_generator_effect = {
VAR = target VAR = target
EMPLOYER = root EMPLOYER = root
ONLY_EMPTY = no
} }
} }
} }
@ -3520,6 +3521,7 @@ ep3_story_cycle_admin_eunuch.2061 = {
court_position_generator_effect = { court_position_generator_effect = {
VAR = target VAR = target
EMPLOYER = root EMPLOYER = root
ONLY_EMPTY = no
} }
} }
} }

View file

@ -526,6 +526,7 @@ grand_ambitions.0003 = {
immediate = { immediate = {
# Create Adventurer # Create Adventurer
save_scope_as = adventurer save_scope_as = adventurer
clear_saved_scope = lost_primary_title
hidden_effect = { hidden_effect = {
# Plus for our memory variable. # Plus for our memory variable.
scope:story.var:target_title = { save_scope_as = lost_primary_title } scope:story.var:target_title = { save_scope_as = lost_primary_title }

File diff suppressed because it is too large Load diff

View file

@ -47,6 +47,10 @@ ep3_story_cycle_violet_poet.0001 = {
modifier = double_moon_modifier modifier = double_moon_modifier
save_scope_as = double_moon_book save_scope_as = double_moon_book
} }
random_owned_story = {
type = story_cycle_violet_poet
set_variable = { name = artifact value = scope:double_moon_book }
}
hidden_effect = { hidden_effect = {
scope:double_moon_book = { scope:double_moon_book = {
set_artifact_rarity = illustrious set_artifact_rarity = illustrious

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -416,7 +416,7 @@ fp1_yearly.0001 = {
scripted_trigger offensive_courtier_candidate_trigger = { scripted_trigger offensive_courtier_candidate_trigger = {
#Filter out the basic miscs. #Filter out the basic miscs.
is_available_ai_adult = yes is_available_ai_adult = yes
#Have some commited some genuine malfeasance, or just be irritating to at least some people. #Have committed some genuine malfeasance, or just be irritating to at least some people.
OR = { OR = {
#Having committed murder by poison is a solid way to become a nithing; this might be a secret, but we assume local rumours about a shady buyer of poisons abound... #Having committed murder by poison is a solid way to become a nithing; this might be a secret, but we assume local rumours about a shady buyer of poisons abound...
has_character_flag = murdered_by_poison has_character_flag = murdered_by_poison
@ -2124,6 +2124,12 @@ fp1_yearly.0041 = {
add_courtier = scope:explorer add_courtier = scope:explorer
#Sort conversion. #Sort conversion.
set_character_faith_with_conversion = scope:explorer.faith set_character_faith_with_conversion = scope:explorer.faith
if = {
limit = {
scope:explorer.faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
#Get scope:sponsoring_liege as a friend, if possible. #Get scope:sponsoring_liege as a friend, if possible.
if = { if = {
limit = { limit = {
@ -14221,6 +14227,12 @@ fp1_yearly.1012 = {
#Perform the conversion. #Perform the conversion.
set_character_faith_with_conversion = scope:ms_faith set_character_faith_with_conversion = scope:ms_faith
if = {
limit = {
scope:ms_faith = { has_doctrine = doctrine_monotheist }
}
custom_description_no_bullet = { text = mandala_monotheist_warning_tt }
}
#Recoup lost piety, and get paid a little extra. #Recoup lost piety, and get paid a little extra.
custom_tooltip = fp1_yearly.1012.a.recoup_lost_piety.tt custom_tooltip = fp1_yearly.1012.a.recoup_lost_piety.tt
@ -14992,8 +15004,9 @@ fp1_yearly.1061 = {
# Germanic faith. # Germanic faith.
religion = religion:germanic_religion religion = religion:germanic_religion
# Shouldn't ever happen, but just in case, exempt sky burials so that the character is never buried twice. # Shouldn't ever happen, but just in case, exempt sky burials so that the character is never buried twice.
NOT = { NOR = {
faith = { has_doctrine_parameter = sky_burials_active } faith = { has_doctrine_parameter = sky_burials_active }
has_dead_character_variable = body_has_been_disposed
} }
# And we shouldn't really be erecting glorious mounds to long lives that were actually cut short too early. # And we shouldn't really be erecting glorious mounds to long lives that were actually cut short too early.
age >= 30 age >= 30
@ -15196,6 +15209,10 @@ fp1_yearly.1062 = {
is_available_even_at_war_adult = yes is_available_even_at_war_adult = yes
# Must still be the same faith as scope:ship_funeral_candidate, for ease of loc and such. # Must still be the same faith as scope:ship_funeral_candidate, for ease of loc and such.
faith = scope:ship_funeral_candidate.faith faith = scope:ship_funeral_candidate.faith
# Check that they haven't been buried already (e.g. via funeral activity)
scope:ship_funeral_candidate = {
NOT = { has_dead_character_variable = body_has_been_disposed }
}
} }
# A small stone ship. # A small stone ship.
@ -16072,6 +16089,11 @@ fp1_yearly.1063 = {
is_available_even_at_war_adult = yes is_available_even_at_war_adult = yes
# Must still be the same faith as scope:ship_funeral_candidate, for ease of loc and such. # Must still be the same faith as scope:ship_funeral_candidate, for ease of loc and such.
faith = scope:ship_funeral_candidate.faith faith = scope:ship_funeral_candidate.faith
# Check that they haven't been buried already (e.g. via funeral activity)
scope:ship_funeral_candidate = {
NOT = { has_dead_character_variable = body_has_been_disposed }
}
} }
on_trigger_fail = { on_trigger_fail = {
@ -16325,6 +16347,14 @@ fp1_yearly.1063 = {
} }
after = { after = {
scope:ship_funeral_candidate = {
set_dead_character_variable = {
name = body_has_been_disposed
value = yes
years = 5
}
}
# Clear up remaining values on the character. # Clear up remaining values on the character.
fp1_funeral_longship_clear_variables_effect = yes fp1_funeral_longship_clear_variables_effect = yes
} }

File diff suppressed because it is too large Load diff

View file

@ -1,552 +0,0 @@
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 }
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -554,7 +554,7 @@ fp2_struggle.0900 = { # Hostility
immediate = { immediate = {
# Add all involved rulers to a list, for ping event # Add all involved rulers to a list, for ping event
play_music_cue = "mx_Struggle_ending_hostility" play_music_cue = "mx_Struggle_ending_hostility"
fp2_stuggle_ending_involved_list_effect = yes fp2_struggle_ending_involved_list_effect = yes
give_nickname = nick_the_conquistador give_nickname = nick_the_conquistador
dynasty = { add_dynasty_prestige = 10000 } dynasty = { add_dynasty_prestige = 10000 }
} }
@ -838,7 +838,7 @@ fp2_struggle.0901 = { # Compromise
value = yes value = yes
} }
# Add all involved rulers to a list, for ping event # Add all involved rulers to a list, for ping event
fp2_stuggle_ending_involved_list_effect = yes fp2_struggle_ending_involved_list_effect = yes
} }
# Ok # Ok
@ -993,7 +993,7 @@ fp2_struggle.0902 = { # Conciliation
value = yes value = yes
} }
# Add all involved rulers to a list, for ping event # Add all involved rulers to a list, for ping event
fp2_stuggle_ending_involved_list_effect = yes fp2_struggle_ending_involved_list_effect = yes
# Add all involved cultures with counties to a list, for marriage and holy war checks # Add all involved cultures with counties to a list, for marriage and holy war checks
fp2_struggle_ending_culture_list_effect = yes fp2_struggle_ending_culture_list_effect = yes
@ -1763,7 +1763,7 @@ fp2_struggle.1001 = {
fp2_struggle.1001_weird_option_traits = no fp2_struggle.1001_weird_option_traits = no
trait_is_shunned_or_criminal_in_faith_trigger = { trait_is_shunned_or_criminal_in_faith_trigger = {
FAITH = faith FAITH = faith
TRAIT = adulterer TRAIT = trait:adulterer
GENDER_CHARACTER = dummy_female GENDER_CHARACTER = dummy_female
} }
} }
@ -2054,6 +2054,7 @@ scripted_trigger neighboring_ruler_proper_culture_trigger = {
culture = culture:baranis culture = culture:baranis
culture = culture:butr culture = culture:butr
culture = culture:levantine culture = culture:levantine
culture = culture:sephardi
} }
} }
@ -4093,7 +4094,10 @@ fp2_struggle.1020 = {
every_close_or_extended_family_member = { every_close_or_extended_family_member = {
custom = all_family_members custom = all_family_members
if = { if = {
limit = { is_ai = yes } limit = {
is_ai = yes
this != root
}
add_opinion = { add_opinion = {
target = root target = root
opinion = -20 opinion = -20
@ -6178,8 +6182,8 @@ fp2_struggle.2003 = {
add_prestige = medium_prestige_loss add_prestige = medium_prestige_loss
scope:fp2_2003_county_town = { scope:fp2_2003_county_town.title_province = {
add_county_modifier = { add_province_modifier = {
modifier = recently_looted_modifier modifier = recently_looted_modifier
years = 5 years = 5
} }
@ -6312,9 +6316,11 @@ fp2_struggle.2003 = {
modifier = fp2_local_garrison_slaughtered_modifier modifier = fp2_local_garrison_slaughtered_modifier
years = 5 years = 5
} }
add_county_modifier = { title_province = {
modifier = recently_looted_modifier add_province_modifier = {
years = 5 modifier = recently_looted_modifier
years = 5
}
} }
} }
} }
@ -6331,9 +6337,11 @@ fp2_struggle.2003 = {
years = 5 years = 5
} }
hidden_effect = { hidden_effect = {
add_county_modifier = { title_province = {
modifier = recently_looted_modifier add_province_modifier = {
years = 5 modifier = recently_looted_modifier
years = 5
}
} }
} }
} }
@ -6468,9 +6476,11 @@ fp2_struggle.2003 = {
title = fp2_struggle.2003.e.notif.a title = fp2_struggle.2003.e.notif.a
scope:fp2_2003_county_town = { scope:fp2_2003_county_town = {
add_county_modifier = { title_province = {
modifier = recently_looted_modifier add_province_modifier = {
years = 5 modifier = recently_looted_modifier
years = 5
}
} }
} }
} }
@ -7360,13 +7370,13 @@ fp2_struggle.2006 = {
if = { if = {
limit = { limit = {
trait_is_criminal_in_faith_trigger = { trait_is_criminal_in_faith_trigger = {
TRAIT = witch TRAIT = trait:witch
GENDER_CHARACTER = scope:fp2_2006_vassal_in_crisis GENDER_CHARACTER = scope:fp2_2006_vassal_in_crisis
FAITH = scope:fp2_2006_vassal_in_crisis.faith FAITH = scope:fp2_2006_vassal_in_crisis.faith
} }
NOT = { NOT = {
trait_is_criminal_in_faith_trigger = { trait_is_criminal_in_faith_trigger = {
TRAIT = witch TRAIT = trait:witch
GENDER_CHARACTER = scope:fp2_2006_vassal_in_crisis GENDER_CHARACTER = scope:fp2_2006_vassal_in_crisis
FAITH = scope:fp2_2006_foreign_faith FAITH = scope:fp2_2006_foreign_faith
} }
@ -10128,12 +10138,14 @@ fp2_struggle.2014 = {
any_character_artifact = { any_character_artifact = {
NOT = { has_variable = historical_unique_artifact } NOT = { has_variable = historical_unique_artifact }
artifact_high_rarity_trigger = yes artifact_high_rarity_trigger = yes
artifact_can_be_gift_to_trigger = { RECIPIENT = root }
} }
} }
random_character_artifact = { random_character_artifact = {
limit = { limit = {
NOT = { has_variable = historical_unique_artifact } NOT = { has_variable = historical_unique_artifact }
artifact_high_rarity_trigger = yes artifact_high_rarity_trigger = yes
artifact_can_be_gift_to_trigger = { RECIPIENT = root }
} }
set_owner = root # If it breaks, use set_artifact_owner set_owner = root # If it breaks, use set_artifact_owner
} }
@ -10198,12 +10210,14 @@ fp2_struggle.2014 = {
any_character_artifact = { any_character_artifact = {
NOT = { has_variable = historical_unique_artifact } NOT = { has_variable = historical_unique_artifact }
artifact_low_rarity_trigger = yes artifact_low_rarity_trigger = yes
artifact_can_be_gift_to_trigger = { RECIPIENT = root }
} }
} }
random_character_artifact = { random_character_artifact = {
limit = { limit = {
NOT = { has_variable = historical_unique_artifact } NOT = { has_variable = historical_unique_artifact }
artifact_low_rarity_trigger = yes artifact_low_rarity_trigger = yes
artifact_can_be_gift_to_trigger = { RECIPIENT = root }
} }
set_owner = root set_owner = root
} }

View file

@ -5,7 +5,7 @@
## 1001 - 1001 Chess Two by Daniel Moore ## 1001 - 1001 Chess Two by Daniel Moore
## 1002 - 1002 Compromising Position by Daniel Moore ## 1002 - 1002 Compromising Position by Daniel Moore
## 1003 - 1003 Tilting at Giants by Daniel Moore ## 1003 - 1003 Tilting at Giants by Daniel Moore
## 1004 - 1004 The Hawk of Quarysh by Daniel Moore ## 1004 - 1004 The Hawk of Quraysh by Daniel Moore
## 1005 - 1005 Lost Viking by Daniel Moore ## 1005 - 1005 Lost Viking by Daniel Moore
## 1006 - 1007 Viking Cheese by Daniel Moore ## 1006 - 1007 Viking Cheese by Daniel Moore
## 1008 - 1008 Consuming the Cheese by Daniel Moore ## 1008 - 1008 Consuming the Cheese by Daniel Moore
@ -364,7 +364,7 @@ fp2_yearly.1003 = {
} }
################################### ###################################
# The Hawk of Quarysh # The Hawk of Quraysh
# By Daniel Moore # By Daniel Moore
################################### ###################################
fp2_yearly.1004 = { fp2_yearly.1004 = {
@ -429,7 +429,7 @@ fp2_yearly.1004 = {
option = { #How he inspired soldiers option = { #How he inspired soldiers
name = fp2_yearly.1004.a name = fp2_yearly.1004.a
add_character_modifier = { add_character_modifier = {
modifier = fp2_hawk_of_quarysh_martial_modifier modifier = fp2_hawk_of_quraysh_martial_modifier
years = 10 years = 10
} }
@ -445,7 +445,7 @@ fp2_yearly.1004 = {
option = { #How diplomatic he was option = { #How diplomatic he was
name = fp2_yearly.1004.b name = fp2_yearly.1004.b
add_character_modifier = { add_character_modifier = {
modifier = fp2_hawk_of_quarysh_diplomacy_modifier modifier = fp2_hawk_of_quraysh_diplomacy_modifier
years = 10 years = 10
} }
@ -5915,6 +5915,709 @@ fp2_yearly.8006 = {
# Conversos and Jewish events # Conversos and Jewish events
# By James Beaumont # By James Beaumont
################################### ###################################
scripted_trigger valid_grantable_county_barony = {
title_province = {
geographical_region = world_europe_west_iberia
}
title_province = { has_building_or_higher = common_tradeport_01 }
is_holy_site = no
county.holder = {
any_held_title = { # Make sure it isn't revoking their last title
title_tier = county
count >= 2
}
}
}
fp2_yearly.9000 = {
type = character_event
title = fp2_james.0001.t
desc = fp2_james.0001.desc
theme = secret
override_background = {
reference = docks
}
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:fp2_james_0001_jewish_trader
animation = personality_bold
}
trigger = {
NOT = { root.religion = religion:judaism_religion }
highest_held_title_tier >= tier_county
any_sub_realm_barony = {
valid_grantable_county_barony = yes
}
}
immediate = {
random_sub_realm_barony = {
limit = {
valid_grantable_county_barony = yes
}
save_scope_as = fp2_james_0001_thriving_community
}
create_character = {
template = spanish_jewish_merchant_character
location = root.capital_province
save_scope_as = fp2_james_0001_jewish_trader
}
}
option = {
name = fp2_james.0001.a
scope:fp2_james_0001_thriving_community.county = {
add_county_modifier = {
modifier = fp2_jewish_community_denied_modifier
years = 10
}
}
scope:fp2_james_0001_jewish_trader.culture = {
change_cultural_acceptance = {
target = root.culture
value = low_negative_culture_acceptance
desc = cultural_acceptance_gain_conversos_tolerance
}
}
stress_impact = {
callous = minor_stress_impact_loss
greedy = minor_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_honor = -0.5
ai_greed = -0.5
ai_zeal = 1.5
}
}
}
option = {
name = fp2_james.0001.b
trigger = {
NOT = { # Prevent all of Iberia from converting
any_county_in_region = {
region = world_europe_west_iberia
culture = culture:sephardi
}
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:fp2_james_0001_thriving_community.county = {
change_title_holder = {
holder = scope:fp2_james_0001_jewish_trader
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
hidden_effect = {
add_opinion = {
target = scope:fp2_james_0001_jewish_trader
modifier = received_title_county
}
}
scope:fp2_james_0001_thriving_community.county = {
add_county_modifier = {
modifier = fp2_thriving_jewish_community_modifier
years = 10
}
set_county_culture = scope:fp2_james_0001_jewish_trader.culture
set_county_faith = scope:fp2_james_0001_jewish_trader.faith
}
scope:fp2_james_0001_jewish_trader.culture = {
change_cultural_acceptance = {
target = root.culture
value = medium_positive_culture_acceptance
desc = cultural_acceptance_gain_conversos_tolerance
}
}
stress_impact = {
compassionate = minor_stress_impact_loss
greedy = minor_stress_impact_loss
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_honor = 1.5
ai_greed = 1.5
ai_zeal = -0.5
}
}
}
option = {
name = fp2_james.0001.c
scope:fp2_james_0001_thriving_community.county = {
add_county_modifier = {
modifier = fp2_thriving_jewish_community_modifier
years = 10
}
}
scope:fp2_james_0001_jewish_trader.culture = {
change_cultural_acceptance = {
target = root.culture
value = low_positive_culture_acceptance
desc = cultural_acceptance_gain_conversos_tolerance
}
}
stress_impact = {
compassionate = minor_stress_impact_loss
greedy = minor_stress_impact_loss
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_honor = 1.5
ai_greed = 1.5
ai_zeal = -0.5
}
}
}
}
scripted_effect fp2_polish_should_heritage_israelite_get_upset_effect = {
if = {
limit = {
scope:fp2_james_0002_conversos_character = { culture = { has_cultural_pillar = heritage_israelite } }
}
scope:fp2_james_0002_conversos_character.culture = {
change_cultural_acceptance = {
target = root.culture
value = low_negative_culture_acceptance
desc = cultural_acceptance_loss_conversos_tolerance
}
}
}
}
# Suspect Conversos of secretly praciticing Judaism
fp2_yearly.9001 = {
type = character_event
title = fp2_james.0002.t
desc = fp2_james.0002.desc
theme = secret
override_background = {
reference = temple
}
left_portrait = {
character = root
animation = paranoia
}
right_portrait = {
character = scope:fp2_james_0002_conversos_character
animation = personality_cynical
}
trigger = {
root.religion = religion:christianity_religion
is_landed = yes
NOT = { faith = faith:conversos }
}
weight_multiplier = {
base = 1
modifier = {
add = 1
any_character_struggle = {
is_struggle_type = iberian_struggle
is_struggle_phase = struggle_iberia_phase_hostility
}
}
}
immediate = {
every_sub_realm_county = {
limit = {
faith = faith:conversos
holder = {
liege = { # Don't convert player-Conversos territory
OR = {
is_ai = yes
NOT = { faith = faith:conversos }
}
}
}
}
add_to_list = fp2_james_0002_conversos_county
}
# Try to find a Conversos vassal if one exists
if = {
limit = {
any_vassal = {
faith = faith:conversos
is_available_ai = yes
}
}
random_vassal = {
limit = {
faith = faith:conversos
is_available_ai = yes
}
save_scope_as = fp2_james_0002_conversos_character
}
}
# Otherwise find a pool character
else_if = {
limit = {
any_pool_character = {
province = root.capital_province
faith = faith:conversos
}
}
random_pool_character = {
province = root.capital_province
limit = {
faith = faith:conversos
}
save_scope_as = fp2_james_0002_conversos_character
}
}
# Otherwise create one
else = {
create_character = {
template = spanish_conversos_character
location = root.capital_province
save_scope_as = fp2_james_0002_conversos_character
}
}
scope:fp2_james_0002_conversos_character = {
random_list = {
50 = {
add_character_flag = is_secretly_jewish_flag
}
50 = {
}
}
}
# Get a religion for them to potentially be secretly praciticing
religion:judaism_religion = {
random_faith = {
limit = { is_mainstream_jewish_faith = yes }
save_scope_as = fp2_james_0002_jewish_faith
}
}
}
option = {
name = fp2_james.0002.a
custom_tooltip = fp2_james.0002.a.tt
hidden_effect = {
if = {
limit = {
scope:fp2_james_0002_conversos_character = { has_character_flag = is_secretly_jewish_flag }
}
send_interface_toast = {
type = event_toast_effect_good
title = fp2_james.0002.a.jewish_communities_thrive
every_in_list = {
list = fp2_james_0002_conversos_county
set_county_faith = scope:fp2_james_0002_jewish_faith
}
scope:fp2_james_0002_conversos_character = {
set_character_faith = scope:fp2_james_0002_jewish_faith
every_vassal = {
limit = {
faith = faith:conversos
is_available_ai = yes
}
set_character_faith = scope:fp2_james_0002_jewish_faith
}
}
}
}
else = {
send_interface_toast = {
type = event_toast_effect_good
title = fp2_james.0002.a.nothing_happened_toast
}
}
fp2_polish_should_heritage_israelite_get_upset_effect = yes
}
stress_impact = {
zealous = medium_stress_impact_gain
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_honor = -0.5
ai_zeal = 1.5
}
}
}
option = {
name = fp2_james.0002.b
duel = {
skill = intrigue
target = scope:fp2_james_0002_conversos_character
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
desc = fp2_james.0002.b.succesful_interrogation
if = {
limit = { scope:fp2_james_0002_conversos_character = { has_character_flag = is_secretly_jewish_flag } }
send_interface_message = { # Begrudgingly added "unecessary" polish
type = event_prison_good
title = fp2_james.0002.t
right_icon = scope:fp2_james_0002_conversos_character
rightfully_imprison_character_effect = {
TARGET = scope:fp2_james_0002_conversos_character
IMPRISONER = root
}
fp2_polish_should_heritage_israelite_get_upset_effect = yes
}
}
else = {
send_interface_message = {
type = event_intrigue_bad
title = fp2_james.0002.a.offended_conversos
right_icon = scope:fp2_james_0002_conversos_character
reverse_add_opinion = {
target = scope:fp2_james_0002_conversos_character
modifier = hate_opinion
opinion = -30
}
fp2_polish_should_heritage_israelite_get_upset_effect = yes
}
}
}
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
desc = fp2_james.0002.b.failed_interrogation
send_interface_message = {
type = event_intrigue_bad
title = fp2_james.0002.a.offended_conversos
right_icon = scope:fp2_james_0002_conversos_character
every_sub_realm_county = {
custom = fp2_james_0002.b.failed_interrogation.tt
limit = {
faith = {
religion = {
OR = {
this = religion:christianity_religion
this = religion:judaism_religion
}
}
}
}
add_county_modifier = {
modifier = fp2_conversos_persecution_modifier
years = 10
}
}
reverse_add_opinion = {
target = scope:fp2_james_0002_conversos_character
modifier = hate_opinion
opinion = -30
}
fp2_polish_should_heritage_israelite_get_upset_effect = yes
}
}
}
stress_impact = { compassionate = medium_stress_impact_gain }
ai_chance = {
base = 10
ai_value_modifier = {
ai_zeal = 0.5
}
}
}
option = { # Imprison the suspect without trial
name = fp2_james.0002.c
send_interface_message = {
type = event_prison_neutral
title = fp2_james.0002.t
right_icon = scope:fp2_james_0002_conversos_character
imprison_character_effect = {
TARGET = scope:fp2_james_0002_conversos_character
IMPRISONER = root
}
fp2_polish_should_heritage_israelite_get_upset_effect = yes
stress_impact = {
compassionate = medium_stress_impact_gain
diligent = medium_stress_impact_gain
just = medium_stress_impact_gain
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
zealous = minor_stress_impact_loss
}
}
ai_chance = {
base = 10
modifier = {
factor = 0
OR = {
has_trait = compassionate
has_trait = diligent
has_trait = just
}
}
modifier = {
factor = 2
OR = {
has_trait = callous
has_trait = sadistic
}
has_trait = zealous
}
}
}
}
# Jewish people come fleeing persecution from a nearby realm
fp2_yearly.9002 = {
type = character_event
title = fp2_james.0003.t
desc = fp2_james.0003.desc
theme = secret
override_background = {
reference = throne_room
}
left_portrait = {
character = root
animation = paranoia
}
right_portrait = {
character = scope:fp2_james_003_jewish_refugee_leader
animation = beg
}
trigger = {
NOT = { root.religion = religion:judaism_religion }
NOT = { faith = faith:conversos }
any_neighboring_and_across_water_top_liege_realm = { # There is someone to do persecuting
holder = {
is_ai = yes
NOT = { root.religion = religion:judaism_religion }
NOT = { faith = faith:conversos }
}
}
highest_held_title_tier >= tier_county
any_held_county = {
is_landless_type_title = no
title_province = {
geographical_region = world_europe_west_iberia
}
NOT = { # Don't give away the capital
this = this.holder.top_liege.capital_county
}
holder = {
any_held_title = {
title_tier = county
count >= 2
}
}
}
}
weight_multiplier = {
base = 1
modifier = {
add = 1
any_character_struggle = {
is_struggle_type = iberian_struggle
is_struggle_phase = struggle_iberia_phase_hostility
}
}
modifier = {
factor = 0.1
any_county_in_region = {
region = world_europe_west_iberia
culture = culture:sephardi
}
}
}
immediate = {
# Grab the neighbour for loc purposes
random_neighboring_and_across_water_top_liege_realm = {
limit = {
holder = {
is_ai = yes
NOT = { root.religion = religion:judaism_religion }
NOT = { faith = faith:conversos }
}
}
holder = { save_scope_as = fp2_james_003_intolerant_ruler }
}
# find a pool character
if = {
limit = {
any_pool_character = {
province = root.capital_province
religion = religion:judaism_religion
}
}
random_pool_character = {
province = root.capital_province
limit = {
religion = religion:judaism_religion
}
save_scope_as = fp2_james_003_jewish_refugee_leader
}
}
# Otherwise create one
else = {
create_character = {
template = spanish_jewish_merchant_character # May as well reuse the template
location = root.capital_province
save_scope_as = fp2_james_003_jewish_refugee_leader
}
}
# Get a religion for them to potentially be secretly praciticing
religion:judaism_religion = {
random_faith = {
limit = { is_mainstream_jewish_faith = yes }
save_scope_as = fp2_james_0003_jewish_faith
}
}
random_held_county = {
limit = {
is_landless_type_title = no
title_province = {
geographical_region = world_europe_west_iberia
}
NOT = { # Don't give away the capital
this = this.holder.top_liege.capital_county
}
holder = {
any_held_title = {
title_tier = county
count >= 2
}
}
}
weight = {
modifier = { # Low-dev counties should be more highly considered
add = 50
development_level <= medium_development_level
}
}
save_scope_as = fp2_james_0003_province_to_convert
}
}
option = { # Offer the community protection in your realm
name = fp2_james.0003.a
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:fp2_james_0003_province_to_convert.county = {
change_title_holder = {
holder = scope:fp2_james_003_jewish_refugee_leader
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
hidden_effect = {
add_opinion = {
target = scope:fp2_james_003_jewish_refugee_leader
modifier = received_title_county
}
}
scope:fp2_james_0003_province_to_convert.county = {
change_development_level = 1
if = {
limit = {
root = {
is_ai = no
}
NOT = {
any_county_in_region = {
region = world_europe_west_iberia
culture = culture:sephardi
}
}
}
set_county_culture = scope:fp2_james_003_jewish_refugee_leader.culture
set_county_faith = scope:fp2_james_003_jewish_refugee_leader.faith
add_county_modifier = {
modifier = fp2_thriving_jewish_community_modifier
years = 10
}
}
else = {
add_county_modifier = {
modifier = fp2_thriving_jewish_community_modifier
years = 10
}
}
}
scope:fp2_james_003_jewish_refugee_leader.culture = {
change_cultural_acceptance = {
target = root.culture
value = medium_positive_culture_acceptance
desc = cultural_acceptance_gain_conversos_tolerance
}
}
stress_impact = {
callous = minor_stress_impact_gain
greedy = minor_stress_impact_gain
compassionate = medium_stress_impact_loss
zealous = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_honor = 1.5
ai_zeal = -0.5
}
}
}
option = {
name = fp2_james.0003.b
scope:fp2_james_003_jewish_refugee_leader = { silent_disappearance_effect = yes }
stress_impact = {
paranoid = minor_stress_impact_loss
zealous = minor_stress_impact_loss
}
ai_chance = {
base = 10
ai_value_modifier = {
ai_honor = -0.5
ai_zeal = 1.5
}
}
}
}
################################### ###################################
# Toledan Nights # Toledan Nights
# By James Beaumont # By James Beaumont

View file

@ -426,7 +426,7 @@ fp3_yearly.8020 = {
#premise checks - we need ROOT's faith to not have been reformed into a matriarchal faith for this historical context #premise checks - we need ROOT's faith to not have been reformed into a matriarchal faith for this historical context
OR = { OR = {
has_religion = religion:islam_religion has_religion = religion:islam_religion
OR = { has_religion = religion:eastern_orthodox_religion has_religion = religion:catholic_religion has_religion = religion:protestant_religion } has_religion = religion:christianity_religion
} }
has_game_rule = default_gender_equality #this triggers an error. Suspected code issue. has_game_rule = default_gender_equality #this triggers an error. Suspected code issue.
@ -2380,7 +2380,7 @@ fp3_yearly.8032 = {
trigger = { trigger = {
OR = { OR = {
has_religion = religion:islam_religion has_religion = religion:islam_religion
OR = { has_religion = religion:eastern_orthodox_religion has_religion = religion:catholic_religion has_religion = religion:protestant_religion } has_religion = religion:christianity_religion
} }
} }
@ -2415,7 +2415,7 @@ fp3_yearly.8032 = {
has_trait = zealous has_trait = zealous
} }
AND = { AND = {
OR = { has_religion = religion:eastern_orthodox_religion has_religion = religion:catholic_religion has_religion = religion:protestant_religion } has_religion = religion:christianity_religion
has_trait = zealous has_trait = zealous
} }
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,153 +0,0 @@
namespace = fp3_story_cycle_seljuks_invasion_events
### RISE OF THE SELJUKS #############################################
## 0001 Leader and Story Cycle Creation by Maxence Voleau
## 0002 The First Settlers by Hugo Cortell
#####################################################################
###################################
# Setup: we create the leader and start the story cycle
# By Maxence Voleau
###################################
fp3_story_cycle_seljuks_invasion_events.0001 = {
scope = none
hidden = yes
immediate = {
spawn_seljuk_character_effect = yes
scope:lead_seljuk = {
create_story = story_seljuk_invasion
}
}
}
###################################
# The First Settlers
# By Hugo Cortell
###################################
fp3_story_cycle_seljuks_invasion_events.0002 = {
type = character_event
title = fp3_story_cycle_seljuks_invasion_events.0001.t
desc = {
desc = fp3_story_cycle_seljuks_invasion_events.0001.desc
first_valid = {
triggered_desc = {
trigger = { highest_held_title_tier > tier_duchy }
desc = fp3_story_cycle_seljuks_invasion_events.0001.desc_vassal
}
desc = fp3_story_cycle_seljuks_invasion_events.0001.desc_independent
}
}
theme = realm
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:lead_seljuk
animation = personality_honorable
}
immediate = {
save_scope_as = seljuk_victim
random_sub_realm_county = {
limit = {
any_neighboring_county = {
exists = holder
holder.top_liege != scope:seljuk_victim
}
de_jure_liege = scope:fp3_seljuk_settle_target
}
alternative_limit = {
any_neighboring_county = {
exists = holder
holder.top_liege != scope:seljuk_victim
}
any_neighboring_county = { de_jure_liege = scope:fp3_seljuk_settle_target }
}
alternative_limit = {
any_neighboring_county = {
exists = holder
holder.top_liege != scope:seljuk_victim
}
}
random_county_province = {
limit = {
this != scope:fp3_seljuk_settle_target.title_capital_county.title_province
}
save_scope_as = spawn_location
}
}
save_scope_value_as = {
name = victim_strength_modifier
value = {
value = current_military_strength
divide = 10000
add = 1.25
}
}
scope:lead_seljuk = {
#move to the army spawn location, so it's less confusing when you want to see where they are
set_location = scope:spawn_location
var:seljuk_birthplace = { save_scope_as = seljuk_birthplace }
}
}
option = { # Yes - Serve me well!
name = fp3_story_cycle_seljuks_invasion_events.0001.a_liege
fp3_story_cycle_seljuks_invasion_events_grant_seljuks_land_effect = yes
scope:lead_seljuk = {
add_trait = loyal
culture = {
change_cultural_acceptance = {
target = scope:seljuk_victim.culture
value = 30
desc = STEWARD_PROMOTE_CULTURE_ALLOWED_NOMAD_SETTLEMENT
}
}
}
create_seljuk_army_at_peace_effect = yes
debug_log = "Seljuk got the land and were vassalized"
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = -0.5
ai_compassion = 0.2
ai_greed = -0.5
ai_energy = -0.5
ai_rationality = 0.3
ai_sociability = 0.3
}
}
}
option = { # No - To war with you!
name = fp3_story_cycle_seljuks_invasion_events.0001.b
# Start war
scope:lead_seljuk = {
start_war = {
casus_belli = fp3_seljuk_invasion_cb
target = root
target_title = scope:fp3_seljuk_settle_target
}
random_character_war = { save_scope_as = war }
}
create_seljuk_army_effect = yes
debug_log = "Seljuk have to win a war"
ai_chance = {
base = 50
ai_value_modifier = {
ai_boldness = 0.5
ai_greed = 0.5
ai_energy = 0.5
ai_vengefulness = 0.5
}
}
}
}

View file

@ -1,726 +0,0 @@
namespace = fp3_story_cycle_zanj_rebellion_events
### Ali Ibn Muhammad and Zanj Rebellion Setup
fp3_story_cycle_zanj_rebellion_events.0001 = {
scope = none
hidden = yes
immediate = {
spawn_zanj_leader_character_effect = yes
scope:zanj_leader = {
save_scope_as = story_owner
create_story = story_zanj_rebellion
give_nickname = nick_albaghid
}
title:c_basra.holder = {
add_visiting_courtier = scope:zanj_leader
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0002
}
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0005
days = { 60 120 }
}
}
}
}
### Ali Ibn Muhammad riling up locals in Basra
fp3_story_cycle_zanj_rebellion_events.0002 = {
type = character_event
theme = intrigue
override_background = { reference = wilderness_wetlands }
title = fp3_story_cycle_zanj_rebellion_events.0002.t
desc = fp3_story_cycle_zanj_rebellion_events.0002.desc
left_portrait = {
character = root
animation = marshal
}
right_portrait = {
character = scope:zanj_leader
animation = scheme
}
immediate = {
scope:zanj_leader = {
save_scope_as = outspoken_rebel
}
}
#Try to arrest Ali
option = {
name = fp3_story_cycle_zanj_rebellion_events.0002.a
duel = {
skill = intrigue
target = scope:outspoken_rebel
50 = {
# You arrest Ali Ibn Muhammad
desc = fp3_story_cycle_zanj_rebellion_events.0002.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = fp3_story_cycle_zanj_rebellion_events.0002.a.success
left_icon = root
right_icon = scope:outspoken_rebel
rightfully_imprison_character_effect = {
TARGET = scope:outspoken_rebel
IMPRISONER = root
}
}
inherit_zanj_rebellion_effect = yes
}
50 = {
# Ali Ibn Muhammad escapes
desc = fp3_story_cycle_zanj_rebellion_events.0002.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = fp3_story_cycle_zanj_rebellion_events.0002.a.failure
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
custom_tooltip = fp3_story_cycle_zanj_rebellion_leaves_for_baghdad
left_icon = root
right_icon = scope:outspoken_rebel
}
hidden_effect = {
scope:zanj_leader = {
change_variable = {
name = zanj_rebellion_strength_score
add = 4
}
}
title:c_baghdad.holder = {
hidden_effect = {
title:c_baghdad.holder = {
add_visiting_courtier = scope:outspoken_rebel
}
}
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0003
days = { 30 60 }
}
}
}
}
}
root = {
progress_towards_rival_effect = {
REASON = fp3_zanj_rebellion_opressed_me
CHARACTER = scope:outspoken_rebel
OPINION = default_rival_opinion
}
}
stress_impact = {
paranoid = medium_stress_impact_loss
just = minor_stress_impact_loss
callous = minor_stress_impact_loss
sadistic = minor_stress_impact_loss
trusting = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = trusting
has_trait = forgiving
has_trait = compassionate
}
}
}
}
#Ignore Ali
option = {
name = fp3_story_cycle_zanj_rebellion_events.0002.c
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
scope:zanj_leader = {
change_variable = {
name = zanj_rebellion_strength_score
add = 2
}
}
custom_tooltip = fp3_story_cycle_zanj_rebellion_leaves_for_baghdad
hidden_effect = {
title:c_baghdad.holder = {
add_visiting_courtier = scope:outspoken_rebel
}
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0003
days = { 30 60 }
}
}
stress_impact = {
paranoid = medium_stress_impact_gain
just = minor_stress_impact_gain
callous = minor_stress_impact_gain
sadistic = medium_stress_impact_gain
trusting = medium_stress_impact_loss
forgiving = medium_stress_impact_loss
compassionate = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = paranoid
has_trait = just
has_trait = callous
has_trait = sadistic
}
}
}
}
}
### Setup to find correct scope for event 0004 and check if Ali is dead or imprisoned
fp3_story_cycle_zanj_rebellion_events.0003 = {
scope = none
hidden = yes
immediate = {
if ={
#check if Ali is still alive and not in prison and is not an inheritor of the rebellion
limit = {
scope:zanj_leader = {
AND = {
is_alive = yes
is_imprisoned = no
NOT = { has_character_flag = new_zanj_leader }
}
}
}
title:c_baghdad.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0004
}
}
}
}
}
### Ali Ibn Muhammad claims divinity
fp3_story_cycle_zanj_rebellion_events.0004 = {
type = character_event
theme = faith
title = fp3_story_cycle_zanj_rebellion_events.0004.t
desc = fp3_story_cycle_zanj_rebellion_events.0004.desc
left_portrait = {
character = root
animation = dismissal
}
right_portrait = {
character = scope:zanj_leader
animation = personality_zealous
}
#Contest Ali Ibn Muhammad's claims
option = {
name = fp3_story_cycle_zanj_rebellion_events.0004.a
duel = {
skill = learning
target = scope:zanj_leader
50 = {
# You disprove Ali's claims
desc = fp3_story_cycle_zanj_rebellion_events.0004.a.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = fp3_story_cycle_zanj_rebellion_events.0004.a.success
add_piety = medium_piety_gain
add_prestige = minor_prestige_gain
left_icon = root
right_icon = scope:zanj_leader
}
}
50 = {
# Ali Ibn Muhammad validates his claims
desc = fp3_story_cycle_zanj_rebellion_events.0004.a.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
send_interface_toast = {
title = fp3_story_cycle_zanj_rebellion_events.0004.a.failure
left_icon = root
right_icon = scope:zanj_leader
scope:zanj_leader = {
add_trait = sayyid
add_pressed_claim = title:e_arabia
change_variable = {
name = zanj_rebellion_strength_score
add = 4
}
}
}
}
}
root = {
progress_towards_rival_effect = {
REASON = fp3_zanj_rebellion_opressed_me
CHARACTER = scope:zanj_leader
OPINION = default_rival_opinion
}
}
stress_impact = {
paranoid = minor_stress_impact_loss
just = minor_stress_impact_loss
zealous = medium_stress_impact_loss
trusting = medium_stress_impact_gain
forgiving = medium_stress_impact_gain
cynical = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = cynical
has_trait = trusting
has_trait = forgiving
}
}
}
}
#Ignore Ali
option = {
name = fp3_story_cycle_zanj_rebellion_events.0004.b
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
scope:zanj_leader = {
add_trait = sayyid
add_pressed_claim = title:e_arabia
change_variable = {
name = zanj_rebellion_strength_score
add = 2
}
}
stress_impact = {
paranoid = minor_stress_impact_gain
just = minor_stress_impact_gain
zealous = medium_stress_impact_gain
trusting = minor_stress_impact_loss
forgiving = medium_stress_impact_loss
cynical = medium_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = paranoid
has_trait = just
has_trait = zealous
}
}
}
}
}
### Setup event to find the correct scope and check if Ali or the current Zanj Leader is dead or imprisoned
fp3_story_cycle_zanj_rebellion_events.0005 = {
scope = none
hidden = yes
immediate = {
if = {
limit = {
scope:zanj_leader = {
OR = {
is_imprisoned = yes
is_alive = no
is_landed = yes
}
}
}
inherit_zanj_rebellion_effect = yes
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0006
}
}
}
}
### A Zanj Steps Forth
fp3_story_cycle_zanj_rebellion_events.0006 = {
type = character_event
theme = corruption
title = fp3_story_cycle_zanj_rebellion_events.0006.t
desc = {
desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.a
triggered_desc = {
trigger = { scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader } } }
desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.b
}
desc = fp3_story_cycle_zanj_rebellion_events.0006.desc.c
}
left_portrait = {
character = root
animation = eyeroll
}
right_portrait = {
character = scope:outspoken_rebel
animation = worry
}
lower_left_portrait = {
trigger = { scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader } } }
character = scope:zanj_leader
}
immediate = {
if = {
limit = { scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader } } }
spawn_zanj_representative_character_effect = yes
scope:zanj_representative = { save_scope_as = outspoken_rebel }
}
else = {
scope:zanj_leader = { save_scope_as = outspoken_rebel }
}
}
#Give Basra to the Zanj
option = {
name = fp3_story_cycle_zanj_rebellion_events.0006.a
create_title_and_vassal_change = {
type = independency
save_scope_as = change
add_claim_on_loss = no
}
title:c_basra = {
set_county_culture = culture:east_bantu
set_county_faith = faith:azariqa
}
show_as_tooltip = { # UI/UX
title:c_basra = {
change_title_holder = {
holder = scope:outspoken_rebel
change = scope:change
}
}
}
scope:outspoken_rebel = {
becomes_independent = {
change = scope:change
}
add_truce_both_ways = {
character = root
years = 10
name = fp3_landed_zanj_reason
}
}
if = {
limit = {
NOT = { title:c_basra.holder = root }
}
add_tyranny = 30
set_relation_rival = {
reason = fp3_rival_gave_title_away
target = title:c_basra.holder
}
}
hidden_effect = {
title:c_basra = {
change_title_holder = {
holder = scope:outspoken_rebel
change = scope:change
}
every_de_jure_county = {
change_title_holder = {
holder = scope:outspoken_rebel
change = scope:change
}
}
}
scope:zanj_leader = {
random_owned_story = {
type = story_zanj_rebellion
end_story = yes
}
}
}
resolve_title_and_vassal_change = scope:change
stress_impact = {
compassionate = medium_stress_impact_loss
just = minor_stress_impact_loss
forgiving = minor_stress_impact_loss
generous = medium_stress_impact_loss
content = medium_stress_impact_loss
callous = medium_stress_impact_gain
sadistic = major_stress_impact_gain
ambitious = medium_stress_impact_gain
greedy = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = callous
has_trait = sadistic
has_trait = ambitious
has_trait = greedy
}
}
}
}
#Make minor concessions to the Zanj
option = {
name = fp3_story_cycle_zanj_rebellion_events.0006.b
scope:zanj_leader = {
change_variable = {
name = zanj_rebellion_strength_score
add = 3
}
}
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_strengthened_tt
hidden_effect = {
title:c_basra.holder = {
if = {
limit = { scope:zanj_leader != scope:outspoken_rebel}
add_visiting_courtier = scope:zanj_leader
}
add_visiting_courtier = scope:outspoken_rebel
}
}
if = {
limit = {
NOT = { title:c_basra.holder = root }
}
progress_towards_rival_effect = {
REASON = fp3_zanj_rebellion_interfered_with_my_workers
CHARACTER = title:c_basra.holder
OPINION = default_rival_opinion
}
}
title:c_basra = {
add_county_modifier = {
modifier = fp3_zanj_rebellion_work_concessions_modifier
years = 5
}
}
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0007
days = { 30 60 }
}
stress_impact = {
compassionate = minor_stress_impact_loss
just = minor_stress_impact_loss
forgiving = minor_stress_impact_loss
generous = minor_stress_impact_loss
content = minor_stress_impact_loss
callous = minor_stress_impact_gain
sadistic = medium_stress_impact_gain
ambitious = minor_stress_impact_gain
greedy = minor_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = callous
has_trait = sadistic
has_trait = ambitious
has_trait = greedy
}
}
}
}
#Ignore the Zanj
option = {
name = fp3_story_cycle_zanj_rebellion_events.0006.c
scope:zanj_leader = {
change_variable = {
name = zanj_rebellion_strength_score
add = 5
}
}
custom_tooltip = fp3_story_cycle_zanj_rebellion_events_cause_greatly_strengthened_tt
hidden_effect = {
title:c_basra.holder = {
add_visiting_courtier = scope:zanj_leader
add_visiting_courtier = scope:zanj_representative
}
}
if = {
limit = {
NOT = { title:c_basra.holder = root }
}
progress_towards_friend_effect = {
REASON = fp3_rival_stayed_out_of_my_business
CHARACTER = title:c_basra.holder
OPINION = default_friend_opinion
}
}
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0007
days = { 30 60 }
}
stress_impact = {
compassionate = minor_stress_impact_gain
just = minor_stress_impact_gain
forgiving = minor_stress_impact_gain
generous = minor_stress_impact_gain
content = minor_stress_impact_gain
callous = minor_stress_impact_loss
sadistic = medium_stress_impact_loss
ambitious = minor_stress_impact_loss
greedy = minor_stress_impact_loss
}
ai_chance = {
base = 100
modifier = {
factor = 0.5
OR = {
has_trait = compassionate
has_trait = just
has_trait = forgiving
has_trait = generous
}
}
}
}
}
fp3_story_cycle_zanj_rebellion_events.0007 = {
scope = none
hidden = yes
immediate = {
if = {
limit = {
scope:zanj_leader = {
OR = {
is_imprisoned = yes
is_alive = no
is_landed = yes
}
}
}
inherit_zanj_rebellion_effect = yes
}
title:c_basra.holder.top_liege = {
trigger_event = {
id = fp3_story_cycle_zanj_rebellion_events.0008
}
}
}
}
### The Zanj Rebellion
fp3_story_cycle_zanj_rebellion_events.0008 = {
type = character_event
theme = battle
override_background = { reference = wilderness_wetlands }
title = fp3_story_cycle_zanj_rebellion_events.0008.t
desc = {
desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.a
triggered_desc = {
trigger = {
scope:zanj_leader = { NOT = { has_character_flag = new_zanj_leader}}
}
desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.b
}
triggered_desc = {
trigger = {
scope:zanj_leader = { has_character_flag = new_zanj_leader }
}
desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.c
}
desc = fp3_story_cycle_zanj_rebellion_events.0008.desc.d
}
left_portrait = {
character = root
animation = shock
}
right_portrait = {
character = scope:zanj_leader
animation = celebrate_sword
}
immediate = {
scope:zanj_leader = {
give_nickname = nick_chief_of_the_zanj
hidden_effect = {
random_owned_story = {
type = story_zanj_rebellion
end_story = yes
}
}
}
hidden_effect = {
fp3_start_zanj_rebellion_effect = {
TARGET_COUNTY = title:c_basra
REBEL_LEADER = scope:zanj_leader
}
create_zanj_courtier_effect = {
EMPLOYER = scope:zanj_leader
LOCATION = scope:zanj_leader.location
}
create_zanj_courtier_effect = {
EMPLOYER = scope:zanj_leader
LOCATION = scope:zanj_leader.location
}
create_zanj_courtier_effect = {
EMPLOYER = scope:zanj_leader
LOCATION = scope:zanj_leader.location
}
create_zanj_courtier_effect = {
EMPLOYER = scope:zanj_leader
LOCATION = scope:zanj_leader.location
}
}
}
option = {
name = fp3_story_cycle_zanj_rebellion_events.0008.a
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,286 +0,0 @@
namespace = fp3_h_yearly
###################################
# You have pissed off your ulema and you're a drunkard
# By Hugo Cortell
# Rewritten by Henrik Lohmander
###################################
fp3_h_yearly.0001 = {
type = character_event
title = fp3_h_yearly.0001.t
desc = {
triggered_desc = {
trigger = { always = yes }
desc = fp3_h_yearly.0001.desc.main
}
}
theme = feast_activity
override_background = { reference = throne_room }
left_portrait = {
character = root
animation = drink_goblet
}
right_portrait = {
character = scope:ulema_member
animation = disapproval
}
cooldown = { years = 10 }
weight_multiplier = {
base = 1
modifier = {
exists = cp:councillor_court_chaplain
cp:councillor_court_chaplain = { has_trait = drunkard }
factor = 0.4
}
modifier = {
any_character_struggle = {
is_struggle_type = persian_struggle
}
add = 0.5
}
modifier = {
has_trait = fp3_struggle_supporter
add = -0.5
}
modifier = {
has_trait = fp3_struggle_detractor
add = 0.5
}
}
trigger = {
has_fp3_dlc_trigger = yes
has_trait = drunkard
NOT = { has_character_modifier = ulema_displeased_drinking }
exists = cp:councillor_court_chaplain
NOT = {
has_hook = cp:councillor_court_chaplain
}
cp:councillor_court_chaplain = {
is_ai = yes
faith = { trait_is_sin = drunkard }
trigger_if = {
limit = { exists = house }
house != root.house
}
NOT = {
has_trait = lifestyle_mystic
}
OR = {
opinion = { # They will not do this unless they have reason to dislike you
target = root
value < -25
}
has_relation_rival = root
}
}
}
immediate = {
cp:councillor_court_chaplain = { save_scope_as = ulema_member }
save_scope_as = actor
scope:ulema_member = { save_scope_as = recipient }
}
option = { #Deflection (They are a drunkard too) Look who is talking!
name = fp3_h_yearly.0001.a
trigger = { scope:ulema_member = { has_trait = drunkard } }
#No duel, this deflection always succeeds.
stress_impact = {
craven = minor_stress_gain
deceitful = minor_stress_loss
callous = minor_stress_loss
}
add_prestige = medium_prestige_gain
reverse_add_opinion = {
target = scope:ulema_member
modifier = ignored_concerns
}
}
option = { #Deflection - Argue that drinking is healthy to the human spirit
name = fp3_h_yearly.0001.b
trigger = {
OR = {
has_trait = scholar
has_trait = theologian
has_trait = whole_of_body
has_trait = lifestyle_physician
has_trait = lifestyle_poet
faith = { trait_is_virtue = drunkard }
}
}
reverse_add_opinion = {
target = scope:ulema_member
modifier = ignored_concerns
}
duel = {
desc = fp3_h_yearly.0001.b.desc
skill = learning
target = scope:annoying_clergy
35 = { #Success
desc = fp3_h_yearly.0001.b.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
type = event_toast_effect_good
title = fp3_h_yearly.0001.b.success
left_icon = root
add_prestige = minor_prestige_gain
}
}
65 = {
desc = fp3_h_yearly.0001.b.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = fp3_h_yearly.0001.b.failure
left_icon = root
add_piety = medium_piety_loss
add_character_modifier = {
modifier = ulema_displeased_drinking
years = 10
}
}
}
}
stress_impact = {
honest = minor_stress_gain
humble = minor_stress_gain
callous = minor_stress_loss
deceitful = minor_stress_loss
}
}
option = { # You do not get to speak to me in this way!
name = fp3_h_yearly.0001.e
add_dread = medium_dread_gain
imprison_court_chaplain_consequences_effect = yes
imprison_character_effect = {
TARGET = scope:recipient
IMPRISONER = scope:actor
}
stress_impact = {
just = medium_stress_gain
zealous = medium_stress_gain
deceitful = minor_stress_loss
callous = minor_stress_loss
}
}
option = { #Bribery - Offer a generous donation
name = fp3_h_yearly.0001.c
trigger = { NOT = { scope:ulema_member = { has_trait = drunkard } } } #If you can deflect we don't show this option
custom_tooltip = fp3_h_yearly.0001.c.tt
pay_short_term_gold = {
target = scope:ulema_member
gold = medium_gold_value
}
random_list = {
75 = {
modifier = {
scope:ulema_member = {
has_trait = greedy
}
factor = 2
}
modifier = {
scope:ulema_member = {
has_trait = deceitful
}
factor = 2
}
modifier = {
scope:ulema_member = {
has_trait = ambitious
}
factor = 2
}
desc = fp3_h_yearly.0001.c.success
send_interface_toast = {
title = fp3_h_yearly.0001.c.success
left_icon = root
add_prestige = minor_prestige_gain
}
}
25 = {
modifier = {
scope:ulema_member = {
has_trait = zealous
}
factor = 2
}
modifier = {
scope:ulema_member = {
has_trait = honest
}
factor = 2
}
modifier = {
scope:ulema_member = {
has_trait = just
}
factor = 2
}
desc = fp3_h_yearly.0001.c.failure
send_interface_toast = {
title = fp3_h_yearly.0001.c.failure
left_icon = root
add_piety = medium_piety_loss
add_character_modifier = {
modifier = ulema_displeased_drinking
years = 10
}
reverse_add_opinion = {
target = scope:ulema_member
modifier = ignored_concerns
}
}
}
}
stress_impact = {
just = medium_stress_gain
greedy = minor_stress_gain
honest = minor_stress_gain
callous = minor_stress_loss
deceitful = minor_stress_loss
}
}
option = { # There is nothing I can do!
name = fp3_h_yearly.0001.d
add_piety = minor_piety_loss
add_character_modifier = {
modifier = ulema_displeased_drinking
years = 5
}
stress_impact = {
arrogant = minor_stress_gain
deceitful = minor_stress_gain
drunkard = minor_stress_gain
honest = minor_stress_loss
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,824 +0,0 @@
namespace = fp3_yearly
scripted_trigger not_steppe_nomad_trigger = {
culture = {
NOR = {
has_cultural_pillar = heritage_mongolic
has_cultural_pillar = heritage_turkic
has_cultural_tradition = tradition_horse_lords
}
}
}
scripted_trigger suitable_nomad_settling_province_trigger = {
has_holding_type = castle_holding
barony = {
is_under_holy_order_lease = no
#is_capital_barony = no
}
}
fp3_yearly.8888 = { #Nomads story cycle
type = character_event
title = fp3_yearly.8888.t
desc = fp3_yearly.8888.desc
theme = vassal
left_portrait = {
character = scope:upset_vassal
animation = anger
}
right_portrait = {
character = root
animation = personality_rational
triggered_animation = {
trigger = {
diplomacy >= decent_skill_rating
}
animation = personality_honorable
}
}
lower_left_portrait = {
character = scope:possibly_capable_marshal
}
lower_right_portrait = {
character = scope:turkic_leader
}
trigger = {
#standard checks
has_fp3_dlc_trigger = yes
root.capital_province = { geographical_region = world_persian_empire }
is_available_at_peace_adult = yes
#event fluff triggers
not_steppe_nomad_trigger = yes
NOT = { has_character_flag = had_turkic_tribe_story } #since this event starts the story
exists = cp:councillor_marshal
cp:councillor_marshal = {
NOT = { has_trait = craven }
is_ai = yes
}
any_vassal = {
not_steppe_nomad_trigger = yes
is_ai = yes
NOT = {
this = root.cp:councillor_marshal
}
any_held_county = {
any_county_province = {
geographical_region = dlc_fp3_eastern_persian_frontier_regions
NOT = { terrain = steppe }
}
}
}
any_held_county = { any_county_province = { suitable_nomad_settling_province_trigger = yes } }
}
cooldown = { years = 50 }
immediate = {
random_vassal = {
limit = {
not_steppe_nomad_trigger = yes
is_ai = yes
NOT = {
this = root.cp:councillor_marshal
}
any_held_county = {
any_county_province = {
geographical_region = dlc_fp3_eastern_persian_frontier_regions
NOT = { terrain = steppe }
}
}
}
save_scope_as = upset_vassal
random_held_county = {
limit = {
any_county_province = {
geographical_region = dlc_fp3_eastern_persian_frontier_regions
NOT = { terrain = steppe }
}
}
save_scope_as = nomads_county
}
}
random_held_county = {
limit = {
any_county_province = { suitable_nomad_settling_province_trigger = yes }
}
save_scope_as = nomads_new_county #for use in the claim the former_master might get
}
scope:nomads_new_county = {
random_county_province = {
limit = { suitable_nomad_settling_province_trigger = yes }
barony = { save_scope_as = nomads_barony }
}
}
cp:councillor_marshal = { save_scope_as = possibly_capable_marshal }
scope:nomads_county = {
add_county_modifier = {
modifier = fp3_nomad_friction_county_modifier
years = 50
}
}
create_character = {
location = root.capital_province
template = fp3_turko-mongol_leader
save_scope_as = turkic_leader
}
}
option = {
name = fp3_yearly.8888.a
duel = {
skill = diplomacy
value = average_skill_rating
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
root = {
custom_tooltip = fp3_treating_with_turks.success.tt
trigger_event = {
id = fp3_yearly.8889
days = { 2 3 }
}
}
}
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
custom_tooltip = fp3_treating_with_turks.failure.tt
send_interface_toast = {
title = fp3_treating_with_turks_toast.failure
left_icon = root
}
}
}
scope:upset_vassal = {
if = {
limit = {
OR = { #if he's diplomatically minded, he'll appreciate this
has_trait = forgiving
has_trait = trusting
has_trait = compassionate
has_diplomacy_lifestyle_trait_trigger = yes
}
}
add_opinion = {
target = root
opinion = 20
modifier = respect_opinion
}
}
else = {
add_opinion = { #but otherwise, they're not on board
target = root
opinion = -10
modifier = fp3_treats_with_barbarians_opinion
}
}
}
scope:possibly_capable_marshal = {
add_opinion = {
target = root
opinion = -10
modifier = disappointed_opinion
}
}
stress_impact = {
craven = medium_stress_impact_gain
lazy = medium_stress_impact_gain
shy = medium_stress_impact_gain
gregarious = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.5
ai_boldness = 1
ai_compassion = 0.5
}
}
}
option = {
name = fp3_yearly.8888.b
scope:upset_vassal = {
add_opinion = {
target = root
opinion = 20
modifier = grateful_opinion
}
}
scope:possibly_capable_marshal = {
add_opinion = {
target = root
opinion = 10
modifier = trusted_me_opinion
}
}
scope:possibly_capable_marshal = {
duel = {
skill = martial
value = average_skill_rating
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = 2
}
root = {
custom_tooltip = fp3_fighting_turks.success.tt
trigger_event = {
id = fp3_yearly.8890
days = { 2 3 }
}
}
}
20 = {
compare_modifier = {
value = scope:duel_value
multiplier = -1
}
root = {
custom_tooltip = fp3_fighting_turks.failure.tt
send_interface_toast = {
title = fp3_fighting_turks_toast.failure
left_icon = scope:possibly_capable_marshal
}
}
}
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 1
ai_vengefulness = 0.5
}
}
}
option = { #Ignore the issue
name = fp3_yearly.8888.c
scope:upset_vassal = {
add_opinion = {
target = root
opinion = -20
modifier = angry_opinion
}
}
scope:possibly_capable_marshal = {
add_opinion = {
target = root
opinion = -10
modifier = disappointed_opinion
}
}
stress_impact = {
ambitious = minor_stress_impact_gain
diligent = minor_stress_impact_gain
just = minor_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_energy = -1
}
}
}
}
fp3_yearly.8889 = { #Nomads story cycle
type = character_event
title = fp3_yearly.8889.t
desc = fp3_yearly.8889.desc
theme = vassal
left_portrait = {
character = scope:turkic_leader
animation = disapproval
}
right_portrait = {
character = root
animation = drink_goblet
triggered_animation = {
trigger = {
diplomacy >= decent_skill_rating
NOR = {
has_trait = callous
has_trait = wrathful
has_trait = vengeful
}
}
animation = personality_compassionate
}
}
lower_left_portrait = {
character = scope:upset_vassal
}
override_background = { reference = wilderness }
trigger = {
#standard checks
is_available_adult = yes
#event not breaking sanity triggers
exists = scope:upset_vassal
scope:upset_vassal = { is_alive = yes }
exists = scope:turkic_leader
scope:turkic_leader = { is_alive = yes }
exists = scope:nomads_county
exists = scope:nomads_new_county
}
option = {
name = fp3_yearly.8889.a
if = {
limit = {
scope:upset_vassal = {
NOT = {
has_relation_rival = root
has_relation_nemesis = root
}
}
}
root = {
progress_towards_rival_effect = {
CHARACTER = scope:upset_vassal
REASON = rival_let_hostile_nomads_roam_free
OPINION = -20
}
}
}
else = {
scope:upset_vassal = {
add_opinion = {
target = root
opinion = -40
modifier = hate_opinion
}
}
}
add_courtier = scope:turkic_leader
spawn_army = {
men_at_arms = {
type = horse_archers
stacks = 1
}
location = root.capital_province
war_keep_on_attacker_victory = yes
uses_supply = yes
inheritable = no
save_scope_as = horsemen_army
name = turkic_tribal_event_troops
}
#This is needed to make the story cycle able to pick up the scopes
set_variable = {
name = turkic_leader
value = scope:turkic_leader
}
set_variable = {
name = upset_vassal
value = scope:upset_vassal
}
set_variable = {
name = nomads_county
value = scope:nomads_county
}
set_variable = {
name = nomads_new_county
value = scope:nomads_new_county
}
create_story = turkic_tribe_story
stress_impact = {
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.4
ai_boldness = 0.7
ai_vengefulness = 0.3
}
}
}
option = {
name = fp3_yearly.8889.b
scope:upset_vassal = {
add_opinion = {
target = root
opinion = -10
modifier = disappointed_opinion
}
}
add_courtier = scope:turkic_leader
spawn_army = {
men_at_arms = {
type = horse_archers
stacks = 1
}
location = root.capital_province
war_keep_on_attacker_victory = yes
uses_supply = yes
inheritable = no
save_scope_as = horsemen_army
name = turkic_tribal_event_troops
}
#This is needed to make the story cycle able to pick up the scopes
set_variable = {
name = turkic_leader
value = scope:turkic_leader
}
set_variable = {
name = upset_vassal
value = scope:upset_vassal
}
set_variable = {
name = nomads_county
value = scope:nomads_county
}
set_variable = {
name = nomads_new_county
value = scope:nomads_new_county
}
create_story = turkic_tribe_story
scope:nomads_county = {
remove_county_modifier = fp3_nomad_friction_county_modifier
}
scope:nomads_new_county = {
add_county_modifier = {
modifier = fp3_nomad_friction_county_modifier
years = 30
}
}
stress_impact = {
generous = medium_stress_impact_loss
content = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_sociability = 0.6
ai_boldness = 1
ai_compassion = 0.2
}
}
}
option = { #no deal
name = fp3_yearly.8889.c
scope:upset_vassal = {
add_opinion = {
target = root
opinion = 20
modifier = pleased_opinion
}
}
stress_impact = {
ambitious = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_greed = -0.5
ai_vengefulness = 0.5
}
}
}
}
fp3_yearly.8890 = { #Nomads story cycle
type = character_event
title = fp3_yearly.8890.t
desc = {
desc = fp3_yearly.8890.desc_beginning
first_valid = {
triggered_desc = {
trigger = {
scope:upset_vassal = {
AND = {
ai_compassion < medium_positive_ai_value
ai_vengefulness > medium_positive_ai_value
}
}
}
desc = fp3_yearly.8890_brutal_demands
}
desc = fp3_yearly.8890_nonbrutal_demands
}
desc = fp3_yearly.8890.desc_ending
}
theme = vassal
left_portrait = {
character = scope:turkic_leader
animation = prisonhouse
}
right_portrait = {
character = root
animation = personality_rational
triggered_animation = {
trigger = {
diplomacy < high_skill_rating
NOR = {
has_trait = compassionate
has_trait = forgiving
has_trait = just
}
}
animation = personality_callous
}
}
lower_left_portrait = {
character = scope:upset_vassal
}
lower_right_portrait = {
character = scope:possibly_capable_marshal
}
trigger = {
#standard checks
is_available_adult = yes
#event not breaking sanity triggers
exists = scope:upset_vassal
scope:upset_vassal = { is_alive = yes }
exists = scope:turkic_leader
scope:turkic_leader = { is_alive = yes }
exists = scope:nomads_county
exists = scope:nomads_new_county
}
option = {
name = fp3_yearly.8890.a
scope:upset_vassal = {
add_opinion = {
target = root
opinion = -15
modifier = fp3_suspicious_motives_opinion
}
}
add_courtier = scope:turkic_leader
add_hook = {
type = indebted_hook
target = scope:turkic_leader
}
spawn_army = {
men_at_arms = {
type = horse_archers
stacks = 1
}
location = root.capital_province
war_keep_on_attacker_victory = yes
uses_supply = yes
inheritable = no
save_scope_as = horsemen_army
name = turkic_tribal_event_troops
}
#This is needed to make the story cycle able to pick up the scopes
set_variable = {
name = turkic_leader
value = scope:turkic_leader
}
set_variable = {
name = upset_vassal
value = scope:upset_vassal
}
set_variable = {
name = nomads_county
value = scope:nomads_county
}
set_variable = {
name = nomads_new_county
value = scope:nomads_new_county
}
create_story = turkic_tribe_story
scope:nomads_county = {
remove_county_modifier = fp3_nomad_friction_county_modifier
}
scope:nomads_new_county = {
add_county_modifier = {
modifier = fp3_nomad_friction_county_modifier
years = 30
}
}
stress_impact = {
content = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_boldness = 0.5
ai_rationality = 0.5
}
}
}
option = { #execute the nomad leader
name = fp3_yearly.8890.b
add_dread = medium_dread_gain
scope:upset_vassal = {
if = {
limit = {
AND = { #if they're cruel, he'll enjoy this
ai_compassion < 0
ai_vengefulness > medium_positive_ai_value
}
}
add_opinion = {
target = root
opinion = 30
modifier = fp3_very_very_pleased_opinion
}
}
else = {
add_opinion = { #but otherwise, they're not on board
target = root
opinion = -10
modifier = fp3_went_too_far_opinion
}
}
}
scope:turkic_leader = {
death = {
death_reason = death_execution
killer = root
}
}
random_list = {
50 = {
send_interface_toast = {
title = nomad_friction_gone.tt
left_icon = root
scope:nomads_county = { remove_county_modifier = fp3_nomad_friction_county_modifier }
}
}
50 = {
send_interface_toast = {
title = nomad_friction_active.tt
left_icon = root
scope:nomads_county = {
add_county_modifier = {
modifier = fp3_vengeful_nomads_county_modifier
years = 10
}
}
}
}
}
stress_impact = {
compassionate = medium_stress_impact_gain
just = medium_stress_impact_gain
arbitrary = medium_stress_impact_loss
sadistic = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_compassion = -1
}
}
}
option = {
name = fp3_yearly.8890.c
add_dread = minor_dread_gain
scope:turkic_leader = {
hard_imprison_character_effect = {
TARGET = this
IMPRISONER = root
}
}
scope:upset_vassal = {
add_opinion = {
target = root
opinion = 20
modifier = pleased_opinion
}
}
random = {
chance = 75
send_interface_toast = {
title = nomad_friction_gone.tt
left_icon = root
scope:nomads_county = { remove_county_modifier = fp3_nomad_friction_county_modifier }
}
}
stress_impact = {
compassionate = minor_stress_impact_gain
just = minor_stress_impact_gain
arbitrary = minor_stress_impact_loss
cynical = minor_stress_impact_loss
}
ai_chance = {
base = 100
ai_value_modifier = {
ai_vengefulness = 0.5
ai_rationality = 1
ai_compassion = -0.5
}
}
}
}

View file

@ -1,307 +0,0 @@
namespace = court_astrologer_events
#Triggered by the "Consult the Skies" decision
court_astrologer_events.0001 = {
type = character_event
title = court_astrologer_events.0001.t
desc = court_astrologer_events.0001.desc
theme = faith
override_effect_2d = {
reference = legend_glow
}
left_portrait = {
character = root
triggered_animation = {
trigger = {
has_trait = zealous
}
animation = beg
}
triggered_animation = {
trigger = {
OR = {
has_trait = craven
has_trait = paranoid
}
}
animation = worry
}
triggered_animation = {
trigger = {
OR = {
has_trait = cynical
has_trait = arrogant
}
}
animation = boredom
}
animation = prayer
}
right_portrait = {
character = scope:astrologer
animation = holding_staff
}
immediate = {
random_courtier = {
limit = { has_court_position = court_astrologer_court_position }
save_scope_as = astrologer
}
}
option = { # Tell me about my love life
name = court_astrologer_events.0001.a
random_list = {
50 = {
desc = court_astrologer_events.0001.a.success
send_interface_toast = {
title = court_astrologer_events.0001.a.success
left_icon = root
custom_tooltip = court_astrologer_events.0001.a.success.tt
if = {
limit = {
culture ?= { has_cultural_pillar = ethos_spiritual }
}
add_character_modifier = {
modifier = mpo_divination_love_spiritual_modifier
years = 5
}
}
else = {
add_character_modifier = {
modifier = mpo_divination_love_modifier
years = 5
}
}
}
}
50 = {
desc = court_astrologer_events.0001.a.failure
send_interface_toast = {
title = court_astrologer_events.0001.a.failure
left_icon = root
add_stress = minor_stress_loss
}
}
}
stress_impact = {
paranoid = miniscule_stress_impact_gain
cynical = miniscule_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Tell me about war
name = court_astrologer_events.0001.b
random_list = {
50 = {
desc = court_astrologer_events.0001.b.success
send_interface_toast = {
title = court_astrologer_events.0001.b.success
left_icon = root
if = {
limit = {
culture ?= { has_cultural_pillar = ethos_spiritual }
}
add_character_modifier = {
modifier = mpo_divination_war_spiritual_modifier
years = 5
}
}
else = {
add_character_modifier = {
modifier = mpo_divination_war_modifier
years = 5
}
}
}
}
50 = {
desc = court_astrologer_events.0001.a.failure
send_interface_toast = {
title = court_astrologer_events.0001.a.failure
left_icon = root
add_stress = minor_stress_loss
}
}
}
stress_impact = {
paranoid = miniscule_stress_impact_gain
cynical = miniscule_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Just tell me about life
name = court_astrologer_events.0001.c
random_list = {
50 = {
desc = court_astrologer_events.0001.c.success
send_interface_toast = {
title = court_astrologer_events.0001.c.success
left_icon = root
if = {
limit = {
culture ?= { has_cultural_pillar = ethos_spiritual }
}
add_character_modifier = {
modifier = mpo_divination_life_spiritual_modifier
years = 5
}
}
else = {
add_character_modifier = {
modifier = mpo_divination_life_modifier
years = 5
}
}
}
}
50 = {
desc = court_astrologer_events.0001.a.failure
send_interface_toast = {
title = court_astrologer_events.0001.a.failure
left_icon = root
add_stress = minor_stress_loss
}
}
}
stress_impact = {
paranoid = miniscule_stress_impact_gain
cynical = miniscule_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Actually, not right now
name = court_astrologer_events.0001.d
remove_decision_cooldown = mpo_divination_decision
ai_chance = {
base = 0
}
}
}
# Migration Suggestion
scripted_trigger court_astrologer_events_0002_neighbour_trigger = {
government_has_flag = government_is_nomadic
current_domain_fertility >= root.current_domain_fertility
is_independent_ruler = yes
}
court_astrologer_events.0002 = {
type = character_event
title = court_astrologer_events.0002.t
desc = {
desc = court_astrologer_events.0002.desc.intro
first_valid = {
triggered_desc = {
trigger = {
location.county.county_fertility <= bad_county_fertility_level
}
desc = court_astrologer_events.0002.desc.bad
}
desc = court_astrologer_events.0002.desc.meh
}
desc = court_astrologer_events.0002.desc.outro
}
theme = nomads
override_background = { reference = mpo_steppe_evening }
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:astrologer
animation = holding_staff
}
lower_center_portrait = scope:target_realm_owner
cooldown = { years = 5 }
trigger = {
has_mpo_dlc_trigger = yes
government_has_flag = government_is_nomadic
is_available = yes
employs_court_position = court_astrologer_court_position
court_position:court_astrologer_court_position = { is_available = yes }
any_neighboring_realm_same_rank_owner = {
court_astrologer_events_0002_neighbour_trigger = yes
}
}
weight_multiplier = {
base = 1
modifier = {
current_domain_fertility <= bad_county_fertility_level
factor = 2
}
}
immediate = {
court_position:court_astrologer_court_position = {
save_scope_as = astrologer
get_quirk_character_effect = yes
}
ordered_neighboring_realm_same_rank_owner = {
limit = {
court_astrologer_events_0002_neighbour_trigger = yes
}
order_by = current_domain_fertility
save_scope_as = target_realm_owner
primary_title = { save_scope_as = target_realm }
}
}
option = { # Sounds like a great idea
name = court_astrologer_events.0002.a
custom_tooltip = court_astrologer_events.0002.a.tt
set_variable = {
name = astrologer_desired_area
value = scope:target_realm
years = 5
}
stress_impact = {
paranoid = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Thank you for your feedback
name = court_astrologer_events.0002.b
scope:astrologer = {
add_opinion = {
target = root
modifier = respect_opinion
opinion = 20
}
}
stress_impact = {
paranoid = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # I'm good
name = court_astrologer_events.0002.c
add_prestige = minor_prestige_gain
stress_impact = {
paranoid = medium_stress_impact_gain
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,453 +0,0 @@
namespace = mpo_flavor_events_settled
# mpo_flavor_events_settled.0001 - You hear of a Havsarsan Zud
# mpo_flavor_events_settled.0010 - Horse Lord at your door
#######################
# You hear of a Havsarsan Zud
#######################
mpo_flavor_events_settled.0001 = {
type = character_event
title = mpo_flavor_events_settled.0001.t
desc = mpo_flavor_events_settled.0001.desc
theme = nomads
override_background = { reference = ep3_city_gate }
left_portrait = {
character = root
triggered_animation = {
trigger = {
OR = {
has_trait = callous
has_trait = sadistic
}
}
animation = schadenfreude
}
triggered_animation = {
trigger = {
OR = {
has_trait = brave
has_trait = arrogant
}
}
animation = dismissal
}
animation = worry
}
right_portrait = {
character = scope:nomad
animation = horse_exhausted
camera = camera_event_horse_right
}
widget = {
gui = "event_window_widget_vfx_snowstorm"
container = "foreground_shader_vfx_container"
}
cooldown = { years = 10 }
trigger = {
has_mpo_dlc_trigger = yes
NOT = { government_has_flag = government_is_nomadic }
OR = {
any_character_situation = { # You are a settled ruler in the Great Steppe
any_participant_group = {
participant_group_type = settled_rulers
participant_group_has_character = root
}
any_situation_sub_region = {
sub_region_current_phase = situation_steppe_havsarsan_zud_season
}
}
any_sub_realm_county = { # You are neighbouring the Great Steppe
any_neighboring_county = {
holder != root
any_county_situation = {
situation:the_great_steppe ?= this
any_situation_sub_region = {
sub_region_current_phase = situation_steppe_havsarsan_zud_season
}
}
}
}
}
}
immediate = {
if = {
limit = {
any_neighboring_top_liege_realm_owner = {
government_has_flag = government_is_nomadic
}
}
random_neighboring_top_liege_realm_owner = {
limit = { government_has_flag = government_is_nomadic }
save_scope_as = nomad_lord
}
}
else = {
random_ruler = {
limit = {
in_diplomatic_range = root
government_has_flag = government_is_nomadic
}
save_scope_as = nomad_lord
}
}
create_character = {
location = root.location
template = nomadic_hunter_template
faith = scope:nomad_lord.faith
culture = scope:nomad_lord.culture
save_scope_as = nomad
}
scope:nomad = { add_trait = nomadic_philosophy }
}
option = { # Get out
name = mpo_flavor_events_settled.0001.aa
reason = faith
add_internal_flag = special
trigger = {
faith = {
trait_is_virtue = callous
}
}
add_piety = medium_piety_gain
stress_impact = {
callous = major_stress_impact_loss
generous = medium_stress_impact_gain
paranoid = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
factor = 2
has_trait = callous
}
modifier = {
factor = 0
OR = {
has_trait = generous
has_trait = paranoid
}
}
}
}
option = { # Let's prepare
name = mpo_flavor_events_settled.0001.a
remove_short_term_gold = medium_gold_value
every_sub_realm_county = {
limit = { holder = root }
add_county_modifier = {
modifier = mpo_settled_preparations_war_county_modifier
years = 15
}
}
stress_impact = {
wrathful = medium_stress_impact_loss
brave = medium_stress_impact_loss
craven = medium_stress_impact_gain
greedy = medium_stress_impact_gain
avaricious = medium_stress_impact_gain
}
ai_chance = {
base = 100
modifier = {
OR = {
has_trait = wrathful
has_trait = brave
}
factor = 0
}
modifier = {
OR = {
short_term_gold <= major_gold_value
has_trait = greedy
has_trait = avaricious
has_trait = craven
}
factor = 0
}
}
}
option = { # We should focus on building
name = mpo_flavor_events_settled.0001.b
every_sub_realm_county = {
limit = { holder = root }
add_county_modifier = {
modifier = mpo_settled_preparations_building_county_modifier
years = 10
}
}
stress_impact = {
compassionate = major_stress_impact_loss
greedy = medium_stress_impact_gain
avaricious = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Recruit this guy
name = mpo_flavor_events_settled.0001.c
trigger = {
NOT = {
faith = {
trait_is_virtue = callous
}
}
}
add_courtier = scope:nomad
if = {
limit = {
faith = { trait_is_virtue = compassionate }
}
add_piety = major_piety_gain
}
else = {
add_piety = medium_piety_gain
}
stress_impact = {
compassionate = major_stress_impact_loss
callous = major_stress_impact_gain
}
ai_chance = {
base = 100
}
}
after = {
custom_tooltip = mpo_flavor_events_settled.0001.tt
if = {
limit = { is_ai = yes }
scope:nomad = { silent_disappearance_effect = yes }
}
}
}
#######################
# Horse Lord at your door
#######################
scripted_trigger mpo_flavor_events_settled_0010_valid_nomad_lord_trigger = {
government_has_flag = government_is_nomadic
NOR = {
is_close_family_of = root
is_vassal_of = root
is_tributary_of = root
this = root.liege
this = root.suzerain
}
any_character_situation = {
situation:the_great_steppe ?= this
}
}
mpo_flavor_events_settled.0010 = {
type = character_event
title = mpo_flavor_events_settled.0010.t
desc = mpo_flavor_events_settled.0010.desc
theme = nomads
override_background = { reference = ep3_city_gate }
left_portrait = {
character = root
animation = anger
}
right_portrait = {
character = scope:nomad
animation = horse_conversing_left
camera = camera_event_horse_right
}
lower_right_portrait = scope:nomad_lord
cooldown = { years = 10 }
trigger = {
has_mpo_dlc_trigger = yes
NOT = { government_has_flag = government_is_nomadic }
any_neighboring_top_liege_realm_owner = {
mpo_flavor_events_settled_0010_valid_nomad_lord_trigger = yes
}
}
weight_multiplier = {
base = 1
modifier = {
any_neighboring_top_liege_realm_owner = {
government_has_flag = government_is_nomadic
highest_held_title_tier >= tier_kingdom
}
factor = 2
}
}
immediate = {
random_neighboring_top_liege_realm_owner = {
limit = { mpo_flavor_events_settled_0010_valid_nomad_lord_trigger = yes }
weight = {
base = 1
modifier = {
highest_held_title_tier >= tier_kingdom
add = 5
}
}
save_scope_as = nomad_lord
}
create_character = {
location = root.location
template = nomadic_commander_template
faith = scope:nomad_lord.faith
culture = scope:nomad_lord.culture
save_scope_as = nomad
}
hidden_effect = {
scope:nomad = { add_trait = nomadic_philosophy }
scope:nomad_lord = { add_courtier = scope:nomad }
}
}
option = { # Pay tribute
name = mpo_flavor_events_settled.0010.a
trigger = {
OR = {
scope:nomad_lord.primary_title.tier > root.primary_title.tier
scope:nomad_lord.current_military_strength > root.current_military_strength
}
}
start_tributary_interaction_effect = {
TRIBUTARY = root
SUZERAIN = scope:nomad_lord
}
scope:nomad_lord = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 25
}
}
add_prestige = medium_prestige_gain
stress_impact = {
vengeful = major_stress_impact_loss
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 0
}
}
option = { # Pay to get truce
name = mpo_flavor_events_settled.0010.b
trigger = {
NOR = {
scope:nomad_lord.primary_title.tier > root.primary_title.tier
scope:nomad_lord.current_military_strength > root.current_military_strength
}
}
if = {
limit = {
has_perk = defensive_measures_perk
}
custom_tooltip = mpo_flavor_events_settled.0010.b_perk_tt
pay_short_term_gold = {
target = scope:nomad_lord
gold = root.purchase_truce_interaction_small_sum
}
add_truce_both_ways = {
character = scope:nomad_lord
days = purchase_truce_interaction_truce_days_medium_value
name = TRUCE_PURCHASED
}
}
else = {
pay_short_term_gold = {
target = scope:nomad_lord
gold = root.purchase_truce_interaction_medium_sum
}
add_truce_both_ways = {
character = scope:nomad_lord
days = purchase_truce_interaction_truce_days_medium_value
name = TRUCE_PURCHASED
}
}
stress_impact = {
brave = medium_stress_impact_gain
ambitious = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
}
ai_chance = {
base = 50
modifier = {
OR = {
has_trait = content
has_trait = craven
}
factor = 2
}
modifier = {
OR = {
has_trait = brave
has_trait = ambitious
has_trait = arrogant
has_trait = greedy
gold <= root.purchase_truce_interaction_major_sum
}
factor = 0
}
}
}
option = { # Offend them
name = mpo_flavor_events_settled.0010.c
add_dread = medium_dread_value
scope:nomad_lord = {
progress_towards_rival_effect = {
CHARACTER = root
OPINION = -40
REASON = rival_disrespected_envoy
}
}
stress_impact = {
callous = major_stress_impact_loss
craven = major_stress_impact_gain
vengeful = major_stress_impact_gain
}
ai_chance = {
base = 0
modifier = {
add = 150
has_trait = callous
current_military_strength > scope:nomad_lord.current_military_strength
}
}
}
option = { # Let's just be friends
name = mpo_flavor_events_settled.0010.d
add_diplomacy_lifestyle_xp = minor_lifestyle_xp
scope:nomad_lord = {
add_opinion = {
target = root
modifier = pleased_opinion
opinion = 5
}
}
stress_impact = {
gregarious = medium_stress_impact_loss
}
ai_chance = {
base = 200
}
}
after = {
if = {
limit = { is_ai = yes }
scope:nomad = { silent_disappearance_effect = yes }
}
}
}

View file

@ -1,450 +0,0 @@
namespace = mpo_jamukha_flavor
#######################
# Become Blood Brothers with Temujin
#######################
mpo_jamukha_flavor.0001 = {
type = character_event
title = mpo_jamukha_flavor.0001.t
desc = mpo_jamukha_flavor.0001.desc
theme = nomads
override_background = {
reference = mpo_campfire_steppe
}
left_portrait = {
character = root
animation = happiness
camera = camera_event_very_left
}
right_portrait = {
character = scope:temujin
animation = inspect_weapon
}
trigger = {
scope:temujin = {
is_alive = yes
NOR = {
has_relation_blood_brother = root
has_relation_rival = root
}
}
is_alive = yes
}
immediate = {
play_music_cue = "mx_cue_touching_moment"
scope:temujin = {
save_scope_as = blood_bro
}
}
option = { # Yay
name = mpo_jamukha_flavor.0001.a
name = mpo_jamukha_flavor.0001.a.tt
scope:temujin = {
set_relation_blood_brother = {
target = scope:jamukha
reason = blood_brother_temujin_jamukha
}
}
if = {
limit = {
NOR = {
has_character_flag = had_warhorse_story
any_owned_story = {
story_type = story_cycle_martial_lifestyle_warhorse
exists = var:story_cycle_horse_name
}
}
scope:jamukha = {
NOR = {
has_character_flag = had_warhorse_story
any_owned_story = {
story_type = story_cycle_martial_lifestyle_warhorse
exists = var:story_cycle_horse_name
}
}
}
}
custom_tooltip = temujin_warhorse_jamukha_tt
custom_tooltip = jamukha_warhorse_jamukha_tt
hidden_effect = {
start_warhorse_story_cycle_effect = yes
scope:temujin = {
start_warhorse_story_cycle_effect = yes
}
}
}
custom_tooltip = blood_brother_gains_hook_tt
custom_tooltip = blood_brother_gains_hook_other_tt
add_character_modifier = blood_brother_warrior_modifier
scope:temujin = {
add_character_modifier = blood_brother_warrior_modifier
}
stress_impact = {
gregarious = medium_stress_impact_loss
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Not a chance
name = mpo_jamukha_flavor.0001.b
add_dread = minor_dread_gain
add_prestige = minor_prestige_gain
scope:temujin = {
add_opinion = {
target = root
modifier = disappointed_opinion
opinion = -25
}
}
stress_impact = {
base = minor_stress_impact_gain
callous = medium_stress_impact_loss
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 0
}
}
}
#######################
# You consider breaking free from Temujin
#######################
scripted_effect mpo_jamukha_flavor_0010_jamukha_leaving_effect = {
if = {
limit = { is_vassal_of = scope:temujin }
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
}
else = {
end_tributary = yes
}
add_truce_both_ways = {
character = scope:temujin
years = 5
name = temujin_jamukha_truce
}
if = {
limit = {
current_military_strength < scope:temujin.current_military_strength
}
domicile ?= {
change_herd = {
value = scope:temujin.domicile.herd
multiply = 0.5
}
}
}
if = {
limit = {
exists = scope:togrul
}
show_as_tooltip = {
custom_tooltip = negotiate_togrul_alliance_effect_tooltip
create_alliance = {
target = scope:togrul
allied_through_owner = root
allied_through_target = scope:togrul
}
scope:togrul = {
add_opinion = {
target = scope:jamukha
modifier = event_negotiated_alliance_opinion
}
}
}
}
custom_tooltip = jamukha_temujin_response_warning_tt
}
scripted_trigger mpo_jamukha_flavor_0010_togrul_trigger = {
is_ai = yes
is_at_war = no
is_alive = yes
is_ruler = yes
NOR = {
is_at_war_with = root
has_relation_rival = root
is_vassal_of = scope:temujin
}
in_diplomatic_range = root
NOT = {
government_has_flag = government_is_herder
}
}
mpo_jamukha_flavor.0010 = {
type = character_event
title = mpo_jamukha_flavor.0010.t
desc = {
desc = mpo_jamukha_flavor.0010.desc
triggered_desc = {
trigger = {
exists = scope:togrul
}
desc = mpo_jamukha_flavor.0010.desc_togrul
}
}
theme = nomads
override_background = {
reference = mpo_steppe_evening
}
left_portrait = {
character = root
animation = war_attacker
camera = camera_event_very_left
}
right_portrait = {
character = scope:temujin
animation = dismissal
camera = camera_event_very_right
}
lower_right_portrait = scope:togrul
trigger = {
character:125501 = {
has_variable = had_mpo_temujin_flavor_0001
}
is_alive = yes
is_ruler = yes
character:125501 = {
is_alive = yes
is_available = yes
}
OR = {
is_vassal_of = character:125501
is_tributary_of = character:125501
}
NOT = {
is_at_war_with = character:125501
}
}
immediate = {
save_scope_as = jamukha
character:125501 = {
save_scope_as = temujin
}
if = {
limit = {
character:303211 = {
mpo_jamukha_flavor_0010_togrul_trigger = yes
}
}
character:303211 = {
save_scope_as = togrul
}
}
else_if = {
limit = {
character:303211.house ?= {
any_house_member = {
mpo_jamukha_flavor_0010_togrul_trigger = yes
}
}
}
character:303211.house ?= {
ordered_house_member = {
order_by = current_military_strength
limit = {
mpo_jamukha_flavor_0010_togrul_trigger = yes
}
save_scope_as = togrul
}
}
}
else = {
capital_county.empire ?= {
ordered_de_jure_county_holder = {
order_by = current_military_strength
limit = {
highest_held_title_tier <= tier_duchy
mpo_jamukha_flavor_0010_togrul_trigger = yes
}
save_scope_as = togrul
}
}
}
}
#I want to leave Temujin and take Togrul as an ally
option = {
name = mpo_jamukha_flavor.0010.a
show_as_tooltip = {
mpo_jamukha_flavor_0010_jamukha_leaving_effect = yes
}
scope:temujin = {
trigger_event = mpo_temujin_flavor.0010
add_opinion = {
target = root
modifier = betrayal_opinion
opinion = -40
}
}
ai_chance = {
base = 100
}
}
#I want to stay with Temujin and be friends forever
option = {
name = mpo_jamukha_flavor.0010.b
add_character_modifier = {
modifier = jamukha_chose_loyalty_modifier
years = 5
}
scope:temujin = {
add_opinion = {
target = root
modifier = loyalty_opinion
opinion = 30
}
}
stress_impact = {
base = miniscule_stress_impact_gain
}
ai_chance = {
base = 0
}
}
on_trigger_fail = { # Jamukha becomes your rival anyways if you've migrated away
if = {
limit = {
is_independent_ruler = yes
NOT = { is_tributary_of = scope:temujin }
}
hidden_effect = {
scope:temujin = {
trigger_event = {
days = { 360 420 }
id = mpo_temujin_flavor.0020
}
}
}
}
}
}
#######################
# Temujin becomes your rival -- now you must kill him
#######################
mpo_jamukha_flavor.0020 = {
type = character_event
title = mpo_jamukha_flavor.0020.t
desc = mpo_jamukha_flavor.0020.desc
theme = nomads
override_background = {
reference = mpo_campfire_steppe
}
left_portrait = {
character = root
animation = threatening
camera = camera_event_very_left
}
right_portrait = {
character = scope:temujin
animation = aggressive_sword
outfit_tags = { nightgown }
camera = camera_event_very_right
}
window = scheme_successful_event_no_text
immediate = {
play_music_cue = "mx_cue_murder"
custom_tooltip = jamukha_temujin_no_more_positive_tt
custom_tooltip = jamukha_temujin_rivals_tt
custom_tooltip = mpo_temujin_flavor.0020.cb.tt
if = {
limit = {
current_military_strength < scope:temujin.current_military_strength
}
domicile ?= {
change_herd = {
value = scope:temujin.domicile.herd
multiply = 1.5
}
}
add_prestige = major_prestige_gain # For MAA maintenance, mainly
custom_tooltip = jamukha_gain_from_defectors_tt
}
}
option = { # You who I once called brother
name = mpo_jamukha_flavor.0020.a
reason = blood_brother
add_internal_flag = special
trigger = { has_character_flag = was_temujins_bro }
custom_tooltip = {
text = mpo_jamukha_flavor.0020.a_war_win
set_variable = temujin_jamukha_war_var
}
add_character_modifier = {
modifier = temujin_jamukha_war_modifier
years = 5
}
stress_impact = {
base = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Murderrrrrrr
name = mpo_jamukha_flavor.0020.b
custom_tooltip = {
text = mpo_jamukha_flavor.0020.b_murder
set_variable = {
name = temujin_jamukha_murder_var
value = scope:temujin
}
}
stress_impact = {
deceitful = massive_stress_impact_loss
sadistic = massive_stress_impact_loss
}
ai_chance = {
base = 0
}
}
option = { # I'm going to crush your skull
name = mpo_jamukha_flavor.0020.c
trigger = {
NOT = { has_relation_blood_brother = scope:jamukha }
}
add_character_modifier = {
modifier = temujin_jamukha_war_smaller_modifier
years = 5
}
stress_impact = {
wrathful = massive_stress_impact_loss
vengeful = massive_stress_impact_loss
}
ai_chance = {
base = 100
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -916,6 +916,14 @@ mpo_migration_travel_events.0050 = {
random_courtier = { random_courtier = {
limit = { limit = {
is_eligible_courtier_0050 = yes is_eligible_courtier_0050 = yes
save_temporary_scope_as = courtier_temp_im
location = {
any_character_in_location = {
is_eligible_local_0050 = yes
can_set_relation_lover_trigger = { CHARACTER = scope:courtier_temp_im }
is_similar_age_trigger = { CHARACTER = scope:courtier_temp_im }
}
}
} }
weight = { weight = {
base = 10 base = 10

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,835 +0,0 @@
namespace = mpo_temujin_flavor
# mpo_temujin_flavor.0001 - Become Blood Brothers with Jamukha
# mpo_temujin_flavor.0010 - Jamukha stops being your vassal
# mpo_temujin_flavor.0020 - Jamukha becomes your rival
# mpo_temujin_flavor.0030 - Borte announces she's pregnant
#######################
# Become Blood Brothers with Jamukha
#######################
mpo_temujin_flavor.0001 = {
type = character_event
title = mpo_temujin_flavor.0001.t
desc = mpo_temujin_flavor.0001.desc
theme = nomads
override_background = {
reference = mpo_campfire_steppe
}
left_portrait = {
character = root
animation = aggressive_dagger
}
right_portrait = {
character = scope:jamukha
animation = celebrate_dagger
}
trigger = {
NOR = {
has_variable = had_mpo_temujin_flavor_0001
has_variable = had_mpo_temujin_flavor_0010
has_variable = had_mpo_temujin_flavor_0020
}
is_physically_able = yes
character:mpo_mongol_1 = {
is_alive = yes
is_physically_able = yes
NOR = {
has_relation_blood_brother = root
has_relation_rival = root
}
}
}
immediate = {
play_music_cue = "mx_cue_touching_moment"
set_variable = had_mpo_temujin_flavor_0001
character:mpo_mongol_1 = {
save_scope_as = jamukha
save_scope_as = blood_bro
}
}
option = { # Yay
name = mpo_temujin_flavor.0001.a
if = {
limit = {
NOR = {
has_character_flag = had_warhorse_story
any_owned_story = {
story_type = story_cycle_martial_lifestyle_warhorse
exists = var:story_cycle_horse_name
}
}
scope:jamukha = {
NOR = {
has_character_flag = had_warhorse_story
any_owned_story = {
story_type = story_cycle_martial_lifestyle_warhorse
exists = var:story_cycle_horse_name
}
}
}
}
custom_tooltip = temujin_warhorse_tt
custom_tooltip = jamukha_warhorse_tt
if = {
limit = {
scope:jamukha = {
is_ai = yes
}
}
hidden_effect = {
start_warhorse_story_cycle_effect = yes
}
}
if = {
limit = {
scope:jamukha = {
is_ai = yes
}
}
hidden_effect = {
scope:jamukha = {
start_warhorse_story_cycle_effect = yes
}
}
}
}
if = {
limit = {
scope:jamukha = {
is_ai = yes
}
}
set_relation_blood_brother = {
target = scope:jamukha
reason = blood_brother_temujin_jamukha
}
add_character_modifier = blood_brother_warrior_modifier
scope:jamukha = {
add_character_modifier = blood_brother_warrior_modifier
}
}
else = {
custom_tooltip = jamukha_choose_blood_brother_tt
save_scope_as = temujin
scope:jamukha = {
trigger_event = mpo_jamukha_flavor.0001
}
show_as_tooltip = {
add_character_modifier = blood_brother_warrior_modifier
scope:jamukha = {
add_character_modifier = blood_brother_warrior_modifier
}
}
}
custom_tooltip = blood_brother_gains_hook_tt
custom_tooltip = blood_brother_gains_hook_other_tt
stress_impact = {
gregarious = medium_stress_impact_loss
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Not a chance
name = mpo_temujin_flavor.0001.b
add_dread = minor_dread_gain
add_prestige = minor_prestige_gain
set_variable = rejected_jamukha_var
scope:jamukha = {
add_opinion = {
target = root
modifier = insult_opinion
opinion = -25
}
}
stress_impact = {
base = minor_stress_impact_gain
callous = medium_stress_impact_loss
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 0
}
}
after = {
hidden_effect = {
scope:jamukha = {
trigger_event = {
days = { 180 360 }
id = mpo_jamukha_flavor.0010
}
}
}
}
}
#######################
# Jamukha stops being your vassal
#######################
scripted_effect mpo_temujin_flavor_0010_jamukha_leaving_effect = {
if = {
limit = { scope:jamukha = { is_vassal_of = root } }
scope:jamukha = {
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
}
}
else = {
scope:jamukha = { end_tributary = yes }
}
add_truce_both_ways = {
character = scope:jamukha
years = 5
name = temujin_jamukha_truce
}
hidden_effect = { # This will put him closer to Temujin
scope:jamukha = {
if = {
limit = {
current_military_strength < scope:temujin.current_military_strength
}
domicile ?= {
change_herd = {
value = scope:temujin.domicile.herd
multiply = 0.5
}
}
}
}
}
if = {
limit = {
exists = scope:togrul
}
scope:jamukha = {
custom_tooltip = negotiate_togrul_alliance_effect_tooltip
create_alliance = {
target = scope:togrul
allied_through_owner = scope:jamukha
allied_through_target = scope:togrul
}
hidden_effect = {
scope:togrul = {
add_opinion = {
target = scope:jamukha
modifier = event_negotiated_alliance_opinion
}
}
}
}
}
}
mpo_temujin_flavor.0010 = {
type = character_event
title = mpo_temujin_flavor.0010.t
desc = {
desc = mpo_temujin_flavor.0010.desc.intro
first_valid = {
triggered_desc = {
trigger = { has_variable = rejected_jamukha_var }
desc = mpo_temujin_flavor.0010.desc.rejected
}
triggered_desc = {
trigger = { has_relation_blood_brother = scope:jamukha }
desc = mpo_temujin_flavor.0010.desc.blood_brothers
}
desc = mpo_temujin_flavor.0010.desc.fallback
}
}
theme = nomads
override_background = {
reference = mpo_campfire_steppe
}
left_portrait = {
character = root
animation = personality_vengeful
}
right_portrait = {
character = scope:jamukha
animation = schadenfreude
}
lower_right_portrait = scope:togrul
trigger = {
has_variable = had_mpo_temujin_flavor_0001
NOR = {
has_variable = had_mpo_temujin_flavor_0010
has_variable = had_mpo_temujin_flavor_0020
}
is_alive = yes
is_ruler = yes
character:mpo_mongol_1 = {
is_alive = yes
OR = {
is_vassal_of = root
is_tributary_of = root
}
}
}
immediate = {
set_variable = {
name = had_mpo_temujin_flavor_0010
value = character:mpo_mongol_1
}
character:mpo_mongol_1 = {
save_scope_as = jamukha
}
mpo_temujin_flavor_0010_jamukha_leaving_effect = yes
}
option = { # I will kill you
name = mpo_temujin_flavor.0010.aa
trigger = { dread >= 100 }
if = {
limit = {
has_relation_blood_brother = scope:jamukha
}
custom_tooltip = {
text = mpo_temujin_flavor.0010.aa_remove_blood_brother
remove_relation_blood_brother = scope:jamukha
}
}
scope:jamukha = {
add_dread = major_dread_loss
add_prestige = medium_prestige_loss
}
every_vassal = {
limit = {
has_vassal_stance = belligerent
is_obedient = no
}
custom = every_belligerent_vassal
add_opinion = {
modifier = obedience_opinion
target = root
}
}
every_courtier = {
limit = {
is_obedient = no
NOR = {
has_trait = brave
has_trait = compassionate
}
}
custom = every_non_brave_compassionate_courtier
add_opinion = {
modifier = obedience_opinion
target = root
}
}
stress_impact = {
gregarious = medium_stress_impact_loss
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Look at this clown
name = mpo_temujin_flavor.0010.a
duel = {
skill = diplomacy
target = scope:jamukha
50 = { # Your people are impressed
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
min = 5
desc = mpo_temujin_flavor.0010.a.tt.success
send_interface_toast = {
title = mpo_temujin_flavor.0010.a.tt.success
left_icon = root
right_icon = scope:jamukha
add_prestige = medium_prestige_gain
scope:jamukha = { add_prestige = medium_prestige_loss }
}
}
50 = { # No one is impressed
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
min = 5
desc = mpo_temujin_flavor.0010.a.tt.failure
send_interface_toast = {
title = mpo_temujin_flavor.0010.a.tt.failure
left_icon = root
add_prestige = minor_prestige_loss
}
}
}
stress_impact = {
gregarious = medium_stress_impact_loss
callous = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Try to force him to stay
name = mpo_temujin_flavor.0010.b
add_dread = minor_dread_gain
scope:jamukha = {
add_opinion = {
target = root
modifier = hurt_opinion
opinion = -30
}
}
stress_impact = {
callous = medium_stress_impact_loss
gregarious = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Let him go
name = mpo_temujin_flavor.0010.c
scope:jamukha = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
stress_impact = {
generous = medium_stress_impact_loss
callous = major_stress_impact_gain
}
ai_chance = {
base = 100
}
}
after = {
hidden_effect = {
trigger_event = {
days = { 360 420 }
id = mpo_temujin_flavor.0020
}
}
}
}
#######################
# Jamukha becomes your rival -- now you must kill him
#######################
mpo_temujin_flavor.0020 = {
type = character_event
title = mpo_temujin_flavor.0020.t
desc = {
desc = mpo_temujin_flavor.0020.desc.intro
first_valid = {
triggered_desc = {
trigger = { has_relation_blood_brother = scope:jamukha }
desc = mpo_temujin_flavor.0020.desc.blood_brothers
}
triggered_desc = {
trigger = { has_relation_friend = scope:jamukha }
desc = mpo_temujin_flavor.0020.desc.friend
}
triggered_desc = {
trigger = { has_relation_rival = scope:jamukha }
desc = mpo_temujin_flavor.0020.desc.rival
}
desc = mpo_temujin_flavor.0020.desc.fallback
}
desc = mpo_temujin_flavor.0020.desc.outro
}
theme = nomads
override_background = {
reference = mpo_campfire_steppe
}
left_portrait = {
character = root
animation = anger
outfit_tags = { nightgown }
camera = camera_event_very_left
}
right_portrait = {
character = scope:jamukha
animation = horse_conversing_left
camera = camera_event_horse_right
}
window = scheme_successful_event_no_text
trigger = {
NOT = { has_variable = had_mpo_temujin_flavor_0020 }
OR = {
has_variable = had_mpo_temujin_flavor_0010
AND = {
NOT = { has_variable = had_mpo_temujin_flavor_0010 }
character:mpo_mongol_1 = {
NOR = {
is_vassal_of = root
is_tributary = root
}
}
}
}
is_alive = yes
is_ruler = yes
character:mpo_mongol_1 = {
is_alive = yes
in_diplomatic_range = root
is_ruler = yes
}
}
immediate = {
save_scope_as = temujin
play_music_cue = "mx_cue_murder"
set_variable = {
name = had_mpo_temujin_flavor_0020
value = character:mpo_mongol_1
}
character:mpo_mongol_1 = {
save_scope_as = jamukha
}
if = {
limit = {
current_military_strength < scope:jamukha.current_military_strength
}
domicile ?= {
change_herd = {
value = scope:jamukha.domicile.herd
multiply = 1.5
}
}
add_prestige = major_prestige_gain # For MAA maintenance, mainly
custom_tooltip = temujin_gain_from_defectors_tt
}
if = {
limit = {
has_relation_blood_brother = scope:jamukha
}
scope:jamukha = {
add_character_flag = {
flag = was_temujins_bro
years = 30
}
}
}
}
option = { # You who I once called brother
name = mpo_temujin_flavor.0020.a
reason = blood_brother
add_internal_flag = special
trigger = { has_relation_blood_brother = scope:jamukha }
custom_tooltip = {
text = mpo_temujin_flavor.0020.a_war_win
set_variable = temujin_jamukha_war_var
}
add_character_modifier = {
modifier = temujin_jamukha_war_modifier
years = 5
}
stress_impact = {
base = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # Murderrrrrrr
name = mpo_temujin_flavor.0020.b
custom_tooltip = {
text = mpo_temujin_flavor.0020.b_murder
set_variable = {
name = temujin_jamukha_murder_var
value = scope:jamukha
}
}
stress_impact = {
deceitful = massive_stress_impact_loss
sadistic = massive_stress_impact_loss
}
ai_chance = {
base = 0
}
}
option = { # I'm going to crush your skull
name = mpo_temujin_flavor.0020.c
trigger = {
NOT = { has_relation_blood_brother = scope:jamukha }
}
add_character_modifier = {
modifier = temujin_jamukha_war_smaller_modifier
years = 5
}
stress_impact = {
wrathful = massive_stress_impact_loss
vengeful = massive_stress_impact_loss
}
ai_chance = {
base = 100
}
}
after = {
if = { # Remove hooks
limit = {
scope:jamukha = {
has_hook = root
}
}
scope:jamukha = { remove_hook = { target = root } }
}
if = {
limit = {
has_hook = scope:jamukha
}
remove_hook = { target = scope:jamukha }
}
if = { # Remove Truce
limit = {
any_truce_target = { this = scope:jamukha }
}
cancel_truce_both_ways = scope:jamukha
}
custom_tooltip = mpo_temujin_flavor.0020.jamukha_gok_requirement
if = {
limit = { has_relation_blood_brother = scope:jamukha }
custom_tooltip = {
text = mpo_temujin_flavor.0010.aa_remove_blood_brother
remove_relation_blood_brother = scope:jamukha
}
}
else_if = {
limit = { has_relation_friend = scope:jamukha }
custom_tooltip = {
text = mpo_temujin_flavor.0020.remove_friend
remove_relation_friend = scope:jamukha
}
}
if = {
limit = { NOT = { has_relation_rival = scope:jamukha } }
set_relation_rival = {
target = scope:jamukha
reason = rival_temujin_jamukha
}
}
else_if = {
limit = { has_relation_rival = scope:jamukha }
set_relation_nemesis = {
target = scope:jamukha
reason = rival_temujin_jamukha
}
}
else = {
add_opinion = {
target = root
modifier = hate_opinion
opinion = -100
}
}
custom_tooltip = {
text = mpo_temujin_flavor.0020.cb.tt
add_to_variable_list = {
name = retaliation_cb_var_list
target = scope:jamukha
}
scope:jamukha = {
add_to_variable_list = {
name = retaliation_cb_var_list
target = root
}
}
}
scope:jamukha = {
trigger_event = mpo_jamukha_flavor.0020
}
}
}
#######################
# Borte announces she's pregnant
#######################
mpo_temujin_flavor.0030 = {
type = character_event
title = mpo_temujin_flavor.0030.t
desc = mpo_temujin_flavor.0030.desc
theme = pregnancy
left_portrait = {
character = root
animation = anger
}
right_portrait = {
character = scope:borte
animation = worry
}
lower_right_portrait = scope:mergid
trigger = {
NOT = { has_variable = had_mpo_temujin_flavor_0030 } # To make sure it triggers even if you migrate straight away and lose the event time window
character:172004 = {
is_alive = yes
is_spouse_of = root
is_pregnant = no
}
any_neighboring_top_liege_realm_owner = {
NOT = { has_relation_rival = root }
}
}
immediate = {
play_music_cue = "mx_cue_personal_negative"
set_variable = had_mpo_temujin_flavor_0030
character:172004 = {
save_scope_as = borte
}
if = {
limit = {
character:303116 = {
is_alive = yes
NOT = { has_relation_rival = root }
}
}
character:303116 = {
save_scope_as = mergid
}
}
else_if = {
limit = {
any_ruler = {
dynasty = dynasty:2001144
NOT = { has_relation_rival = root }
}
}
random_ruler = {
limit = {
dynasty = dynasty:2001144
NOT = { has_relation_rival = root }
}
save_scope_as = mergid
}
}
else = {
random_neighboring_top_liege_realm_owner = {
limit = { NOT = { has_relation_rival = root } }
save_scope_as = mergid
}
}
scope:borte = {
custom_tooltip = mpo_temujin_flavor.0030.pregnancy_tt
hidden_effect = {
make_pregnant = {
father = scope:mergid
}
}
set_variable = borte_first_child_var
}
}
option = { # I hate those guys
name = mpo_temujin_flavor.0030.a
set_relation_rival = {
target = scope:mergid
reason = rival_temujin_mergid
}
custom_tooltip = {
text = mpo_temujin_flavor.0030.a.tt
add_to_variable_list = {
name = retaliation_cb_var_list
target = scope:mergid
}
}
add_dread = medium_dread_gain
stress_impact = {
vengeful = major_stress_impact_loss
compassionate = medium_stress_impact_gain
}
ai_chance = {
base = 0 # To prevent AI Temüjin from being murdered immediately
}
}
option = { # Let's forget about that, you are more important
name = mpo_temujin_flavor.0030.b
if = {
limit = {
NOT = { has_relation_lover = scope:borte }
}
set_relation_lover = {
target = scope:borte
reason = lover_temujin_borte
}
}
else = {
scope:borte = {
add_opinion = {
target = root
modifier = grateful_opinion
opinion = 20
}
}
}
set_relation_wedding_very_good_fertility = scope:borte
stress_impact = {
compassionate = major_stress_impact_loss
vengeful = medium_stress_impact_gain
}
ai_chance = {
base = 100
}
}
option = { # I could not care less
name = mpo_temujin_flavor.0030.c
scope:borte = {
add_opinion = {
target = root
modifier = upset_opinion
opinion = -25
}
}
stress_impact = {
callous = major_stress_impact_loss
compassionate = major_stress_impact_gain
vengeful = major_stress_impact_gain
}
ai_chance = {
base = 0
}
}
}

View file

@ -1,198 +0,0 @@
#Events for error suppression. Please make sure we don't need these.
namespace = error_suppression
#Show relation event
error_suppression.0001 = {
hidden = yes
orphan = yes
trigger = {
is_married = yes
}
option = {
name = OK_BUTTON
add_character_modifier = {
modifier = matilda_of_canossa_modifier
}
add_character_modifier = {
modifier = ep3_master_todor_modifier
}
add_character_modifier = {
modifier = police_chief_of_baghdad_modifier
}
add_character_modifier = {
modifier = guiscard_modifier
}
# "Variable 'has_scripted_appearance' is used but is never set"
# It's used in history, but we read the history after we check for these unused variable errors.
add_character_flag = easteregg
add_character_flag = has_scripted_appearance
add_character_flag = has_scripted_weight
add_character_flag = has_scripted_clothes
add_character_flag = no_headgear
add_character_flag = no_drunkard_visual
add_character_flag = lady_in_shadows
if = { limit = {
# "Variable 'has_scripted_appearance' is set but is never used"
# In no-graphics we never read the portrait script that uses these flags, so then the above fix causes issues.
has_character_flag = easteregg
has_character_flag = has_scripted_appearance
has_character_flag = has_scripted_weight
has_character_flag = has_scripted_clothes
has_character_flag = no_headgear
has_character_flag = no_drunkard_visual
has_character_flag = lady_in_shadows
is_target_in_variable_list = {
name = artifact_rewards
target = root
}
is_target_in_variable_list = {
name = trait_rewards
target = root
}
exists = var:reichskrone
exists = var:pope_hat
has_variable = show_historical_gui
has_variable = nerge_activity
title:e_japan = {
has_variable = administrative_ui_special_title
}
title:e_goryeo = {
has_variable = administrative_ui_special_title
}
scope:poem_tune = flag:riverside_city
scope:poem_tune = flag:spring_in_the_han_palace
scope:poem_tune = flag:winds_between_pine_trees
scope:poem_tune = flag:memories_of_the_past_at_red_cliff
scope:poem_tune = flag:my_wrath_bristles_through_my_helmet
scope:poem_tune = flag:thinking_of_the_past_at_beigu_pavilion
scope:poem_tune = flag:dream_song
scope:poem_tune = flag:as_in_a_dream
scope:poem_tune = flag:immortal_by_the_river
scope:poem_tune = flag:longing_for_qin_e
scope:poem_tune = flag:new_chrysanthemum_flowers
scope:poem_tune = flag:poluomen_son
scope:poem_tune = flag:pouring_out_deep_emotions
scope:poem_tune = flag:rain_hits_a_bell
scope:poem_tune = flag:spring_in_the_tower_of_jade
scope:poem_tune = flag:drunk_in_the_fairyland
scope:poem_tune = flag:anxiety_of_a_beauty
scope:poem_tune = flag:writing_of_my_sorrow
scope:poem_tune = flag:sad_remembrance
scope:poem_tune = flag:on_the_advent_of_spring
scope:poem_tune = flag:silk_washing_stream
scope:poem_tune = flag:at_an_inn_in_xinshi
scope:poem_tune = flag:on_red_lotus_petals
scope:poem_tune = flag:pusa_man
scope:poem_tune = flag:a_quiet_night
scope:poem_tune = flag:huanxi_sand
scope:poem_tune = flag:overlapping_golden_light_of_small_hills
scope:poem_tune = flag:the_road_is_difficult
scope:poem_tune = flag:phoenix_hairpin
scope:poem_tune = flag:boating_on_tai_lake
scope:poem_tune = flag:prelude_to_the_water_song
scope:poem_tune = flag:rambling_young_man
scope:poem_tune = flag:king_of_lanling
scope:poem_tune = flag:washing_creek_sands
scope:poem_tune = flag:magnolia_blossoms
scope:poem_tune = flag:petals_falling_in_the_river
scope:poem_tune = flag:my_way_passed_ancient_tombs
scope:poem_tune = flag:dreaming_of_the_south_side_of_the_river
scope:poem_tune = flag:beautiful_barbarian
scope:poem_tune = flag:missing_the_emperors_hometown
scope:poem_tune = flag:daoist_priestess
scope:poem_tune = flag:a_bushel_of_pearls
scope:poem_tune = flag:bodhisattva_barbarian
scope:poem_tune = flag:clear_and_even_music
scope:poem_tune = flag:lost_battle
scope:poem_tune = flag:beauty_yu
scope:poem_tune = flag:crows_cry_at_night
scope:poem_tune = flag:phoenix_perched_on_the_parasol_tree
scope:poem_tune = flag:imperial_avenue_procession
scope:poem_tune = flag:rain_hits_a_bell
scope:poem_tune = flag:divination_song
scope:poem_tune = flag:attached_to_her_skirt
scope:poem_tune = flag:partridge_sky
scope:poem_tune = flag:mountain_hawthorn
scope:poem_tune = flag:the_song_of_tangduo
scope:poetry_theme = flag:love
scope:poetry_theme = flag:nature
scope:poetry_theme = flag:longing
scope:poetry_theme = flag:separation
scope:poetry_theme = flag:sadness_and_pain
scope:poetry_theme = flag:philosophy
scope:poetry_theme = flag:mythological_events
scope:poetry_theme = flag:daily_chores
scope:poetry_theme = flag:historical_events
} }
}
}
# EP1 achievement variable erroring from not being used outside of ep1_achievements.txt
error_suppression.0002 = {
hidden = yes
orphan = yes
trigger = {
any_character_artifact = {
exists = var:last_person_to_steal
}
}
option = {
name = OK_BUTTON
}
}
# Memory events to make sure they appear in the right order chronologically
error_suppression.0003 = {
hidden = yes
immediate = {
create_character_memory = {
type = imprisoned_other
participants = {
imprisoned = scope:prisoner_memory
}
}
}
option = {
name = OK_BUTTON
}
}
#Suppression of legend properties
error_suppression.0004 = {
hidden = yes
orphan = yes
trigger = {
var:dummy ?= flag:kumari_kandam
var:dummy ?= flag:prester_john_kingdom
var:dummy ?= flag:china
var:dummy ?= flag:bald_mountain
var:dummy ?= flag:olympus
var:dummy ?= flag:beyul
var:dummy ?= flag:hindustan
var:dummy ?= flag:irum
var:dummy ?= flag:atlantis
var:dummy ?= flag:himavanta
var:dummy ?= flag:mahishmati
var:dummy ?= flag:albion
}
option = {
name = OK_BUTTON
set_variable = {
name = dummy
value = 1
}
}
}

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more